Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…nto sql-migrator
  • Loading branch information
ItalyPaleAle committed Sep 18, 2023
2 parents 637bf85 + 616da76 commit 5132ede
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 4 deletions.
2 changes: 1 addition & 1 deletion bindings/wasm/output.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ func (out *outputBinding) Init(ctx context.Context, metadata bindings.Metadata)
_ = out.runtime.Close(context.Background())
return fmt.Errorf("can not instantiate wasi-http with strict sandbox")
}
err = wasi_http.Instantiate(ctx, out.runtime)
err = wasi_http.MakeWasiHTTP().Instantiate(ctx, out.runtime)
}
if err != nil {
_ = out.runtime.Close(context.Background())
Expand Down
40 changes: 40 additions & 0 deletions bindings/wasm/output_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@ import (
"bytes"
"context"
_ "embed"
"fmt"
"io"
"net/http"
"net/http/httptest"
"sync"
"testing"

"github.com/stretchr/testify/require"
Expand Down Expand Up @@ -268,3 +270,41 @@ func Test_InvokeHttp(t *testing.T) {
})
}
}

func TestEnsureConcurrency(t *testing.T) {
l := logger.NewLogger(t.Name())
var buf bytes.Buffer
l.SetOutput(&buf)

s := httptest.NewServer(&handler{})
defer s.Close()

meta := metadata.Base{Properties: map[string]string{"url": urlHTTPFile}}

output := NewWasmOutput(l)
defer output.(io.Closer).Close()

ctx := context.Background()

err := output.Init(ctx, bindings.Metadata{Base: meta})
require.NoError(t, err)

// Wasm is running in goroutine, use wait group to ensure all goroutines are finished
wg := sync.WaitGroup{}
// 100 is enough to trigger concurrency, and wasm should be executed run fast enough to not consuming too much time
for i := 0; i < 100; i++ {
wg.Add(1)
go func(i int) {
request := &bindings.InvokeRequest{
Metadata: map[string]string{"args": fmt.Sprintf("%s/%d", s.URL, i)},
Operation: ExecuteOperation,
}
expectedResp := fmt.Sprintf("Status: 200\nBody: \n/%d\n", i)
resp, err := output.Invoke(ctx, request)
require.NoError(t, err)
require.Equal(t, expectedResp, string(resp.Data))
wg.Done()
}(i)
}
wg.Wait()
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ require (
github.com/sendgrid/sendgrid-go v3.13.0+incompatible
github.com/sijms/go-ora/v2 v2.7.17
github.com/spf13/cast v1.5.1
github.com/stealthrocket/wasi-go v0.7.6-0.20230718231108-c3d30af59057
github.com/stealthrocket/wasi-go v0.8.1-0.20230912180546-8efbab50fb58
github.com/stretchr/testify v1.8.4
github.com/supplyon/gremcos v0.1.40
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.732
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1852,8 +1852,8 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An
github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU=
github.com/stealthrocket/wasi-go v0.7.6-0.20230718231108-c3d30af59057 h1:BaBBX206PM1+qF5WQx7Ug7mbKqzizBONDMv4ST5EVNg=
github.com/stealthrocket/wasi-go v0.7.6-0.20230718231108-c3d30af59057/go.mod h1:PJ5oVs2E1ciOJnsTnav4nvTtEcJ4D1jUZAewS9pzuZg=
github.com/stealthrocket/wasi-go v0.8.1-0.20230912180546-8efbab50fb58 h1:mTC4gyv3lcJ1XpzZMAckqkvWUqeT5Bva4RAT1IoHAAA=
github.com/stealthrocket/wasi-go v0.8.1-0.20230912180546-8efbab50fb58/go.mod h1:ZAYCOqLJkc9P6fcq14TV4cf+gJ2fHthp9kCGxBViagE=
github.com/stealthrocket/wazergo v0.19.1 h1:BPrITETPgSFwiytwmToO0MbUC/+RGC39JScz1JmmG6c=
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
Expand Down

0 comments on commit 5132ede

Please sign in to comment.