代码拉取完成,页面将自动刷新
package yomo
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/yomorun/yomo/core"
"github.com/yomorun/yomo/core/ylog"
"github.com/yomorun/yomo/serverless"
)
var (
mockTargetString = "targetString"
)
func TestStreamFunction(t *testing.T) {
t.Parallel()
sfn := NewStreamFunction(
"sfn-async-log-events",
"localhost:9000",
WithSfnCredential("token:<CREDENTIAL>"),
WithSfnLogger(ylog.Default()),
WithSfnQuicConfig(core.DefaultClientQuicConfig),
WithSfnTLSConfig(nil),
)
sfn.SetObserveDataTags(0x21)
time.AfterFunc(time.Second, func() {
sfn.Close()
})
// set error handler
sfn.SetErrorHandler(func(err error) {})
// set handler
sfn.SetHandler(func(ctx serverless.Context) {
t.Logf("unittest sfn receive <- (%d)", len(ctx.Data()))
assert.Equal(t, uint32(0x21), ctx.Tag())
assert.Equal(t, []byte("test"), ctx.Data())
err := ctx.WriteWithTarget(0x22, []byte("message from sfn"), mockTargetString)
assert.Nil(t, err)
})
// connect to server
err := sfn.Connect()
assert.Nil(t, err)
sfn.Wait()
}
func TestSfnWantedTarget(t *testing.T) {
t.Parallel()
sfn := NewStreamFunction("sfn-handler", "localhost:9000", WithSfnCredential("token:<CREDENTIAL>"))
sfn.SetObserveDataTags(0x22)
sfn.SetWantedTarget(mockTargetString)
time.AfterFunc(time.Second, func() {
sfn.Close()
})
// set handler
sfn.SetHandler(func(ctx serverless.Context) {
t.Logf("unittest handler sfn receive <- (%d)", len(ctx.Data()))
assert.Equal(t, uint32(0x22), ctx.Tag())
assert.Contains(t, []string{"message from source", "message from sfn"}, string(ctx.Data()))
})
err := sfn.Connect()
assert.Nil(t, err)
sfn.Wait()
}
func TestSfnInit(t *testing.T) {
sfn := NewStreamFunction(
"test-sfn",
"localhost:9000",
)
var total int64
err := sfn.Init(func() error {
total++
return nil
})
assert.Nil(t, err)
assert.Equal(t, int64(1), total)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。