本文整理汇总了Golang中go/uber/org/yarpc.NewReqMeta函数的典型用法代码示例。如果您正苦于以下问题:Golang NewReqMeta函数的具体用法?Golang NewReqMeta怎么用?Golang NewReqMeta使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewReqMeta函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestCallOnewayFailure
func TestCallOnewayFailure(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
ctx := context.Background()
caller := "caller"
service := "service"
procedure := "procedure"
body := []byte{1, 2, 3}
outbound := transporttest.NewMockOnewayOutbound(mockCtrl)
client := New(channel.MultiOutbound(caller, service,
transport.Outbounds{
Oneway: outbound,
}))
outbound.EXPECT().CallOneway(gomock.Any(),
transporttest.NewRequestMatcher(t,
&transport.Request{
Service: service,
Caller: caller,
Procedure: procedure,
Encoding: Encoding,
Body: bytes.NewReader(body),
}),
).Return(nil, errors.New("some error"))
_, err := client.CallOneway(
ctx,
yarpc.NewReqMeta().Procedure(procedure),
body)
assert.Error(t, err)
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:35,代码来源:outbound_test.go
示例2: TestRecording
func TestRecording(t *testing.T) {
tMock := testingTMock{t, 0}
dir, err := ioutil.TempDir("", "yarpcgorecorder")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir) // clean up
recorder := NewRecorder(&tMock, RecordMode(Append), RecordsPath(dir))
withConnectedClient(t, recorder, func(client raw.Client) {
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
rbody, _, err := client.Call(ctx, yarpc.NewReqMeta().Procedure("hello"), []byte("Hello"))
require.NoError(t, err)
assert.Equal(t, []byte("Hello, World"), rbody)
})
recordPath := path.Join(dir, refRecordFilename)
_, err = os.Stat(recordPath)
require.NoError(t, err)
recordContent, err := ioutil.ReadFile(recordPath)
require.NoError(t, err)
assert.Equal(t, refRecordContent, string(recordContent))
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:28,代码来源:recorder_test.go
示例3: Handle
func (h *multiHopHandler) Handle(ctx context.Context, reqMeta yarpc.ReqMeta, body interface{}) (interface{}, yarpc.ResMeta, error) {
if h.phoneClient == nil {
panic("call SetClient() and SetTransport() first")
}
assertBaggageMatches(ctx, h.t, h.wantBaggage)
span := opentracing.SpanFromContext(ctx)
for key, value := range h.addBaggage {
span.SetBaggageItem(key, value)
}
ctx = opentracing.ContextWithSpan(ctx, span)
var resp js.RawMessage
phoneResMeta, err := h.phoneClient.Call(
ctx,
yarpc.NewReqMeta().Procedure("phone").Headers(reqMeta.Headers()),
&server.PhoneRequest{
Service: "ctxclient",
Procedure: h.phoneCallTo,
Transport: h.phoneCallTransport,
Body: &js.RawMessage{'{', '}'},
}, &resp)
resMeta := yarpc.NewResMeta().Headers(phoneResMeta.Headers())
return map[string]interface{}{}, resMeta, err
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:27,代码来源:behavior.go
示例4: JSON
// JSON starts an http run using JSON encoding
func JSON(t crossdock.T, dispatcher yarpc.Dispatcher) {
fatals := crossdock.Fatals(t)
client := json.New(dispatcher.Channel("oneway-test"))
token := getRandomID()
ack, err := client.CallOneway(
context.Background(),
yarpc.NewReqMeta().Procedure("echo/json"),
&jsonToken{Token: token},
)
// ensure channel hasn't been filled yet
select {
case <-serverCalledBack:
fatals.FailNow("oneway json test failed", "client waited for server to fill channel")
default:
}
fatals.NoError(err, "call to oneway/json failed: %v", err)
fatals.NotNil(ack, "ack is nil")
serverToken := <-serverCalledBack
fatals.Equal(token, string(serverToken), "Client/Server token mismatch")
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:26,代码来源:json.go
示例5: TestEndToEnd
func TestEndToEnd(t *testing.T) {
tMock := testingTMock{t, 0}
dir, err := ioutil.TempDir("", "yarpcgorecorder")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir) // clean up
// First we double check that our cache is empty.
recorder := NewRecorder(&tMock, RecordMode(Replay), RecordsPath(dir))
withDisconnectedClient(t, recorder, func(client raw.Client) {
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
require.Panics(t, func() {
client.Call(ctx, yarpc.NewReqMeta().Procedure("hello"), []byte("Hello"))
})
assert.Equal(t, tMock.fatalCount, 1)
})
// Now let's record our call.
recorder = NewRecorder(&tMock, RecordMode(Overwrite), RecordsPath(dir))
withConnectedClient(t, recorder, func(client raw.Client) {
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
rbody, _, err := client.Call(ctx, yarpc.NewReqMeta().Procedure("hello"), []byte("Hello"))
require.NoError(t, err)
assert.Equal(t, rbody, []byte("Hello, World"))
})
// Now replay the call.
recorder = NewRecorder(&tMock, RecordMode(Replay), RecordsPath(dir))
withDisconnectedClient(t, recorder, func(client raw.Client) {
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
rbody, _, err := client.Call(ctx, yarpc.NewReqMeta().Procedure("hello"), []byte("Hello"))
require.NoError(t, err)
assert.Equal(t, rbody, []byte("Hello, World"))
})
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:46,代码来源:recorder_test.go
示例6: runYARPCClient
func runYARPCClient(b *testing.B, c raw.Client) {
for i := 0; i < b.N; i++ {
ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond)
defer cancel()
_, _, err := c.Call(ctx, yarpc.NewReqMeta().Procedure("echo"), _reqBody)
require.NoError(b, err, "request %d failed", i+1)
}
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:8,代码来源:bench_test.go
示例7: echoEcho
func (h handler) echoEcho(ctx context.Context) error {
var resBody echoResBody
_, err := h.client.Call(
ctx,
yarpc.NewReqMeta().Procedure("echoecho"),
&echoReqBody{},
&resBody,
)
return err
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:10,代码来源:tracer_test.go
示例8: set
func set(ctx context.Context, c json.Client, k string, v string) error {
var response setResponse
ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)
defer cancel()
_, err := c.Call(
ctx,
yarpc.NewReqMeta().Procedure("set"),
&setRequest{Key: k, Value: v},
&response,
)
return err
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:12,代码来源:main.go
示例9: rawCall
func rawCall(dispatcher yarpc.Dispatcher, headers yarpc.Headers, procedure string,
token []byte) ([]byte, yarpc.CallResMeta, error) {
client := raw.New(dispatcher.Channel(serverName))
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
reqMeta := yarpc.NewReqMeta().Procedure(procedure).Headers(headers)
resBody, resMeta, err := client.Call(ctx, reqMeta, token)
return resBody, resMeta, err
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:12,代码来源:raw.go
示例10: get
func get(ctx context.Context, c json.Client, k string) (string, error) {
var response getResponse
ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)
defer cancel()
_, err := c.Call(
ctx,
yarpc.NewReqMeta().Procedure("get"),
&getRequest{Key: k},
&response,
)
return response.Value, err
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:12,代码来源:main.go
示例11: jsonCall
func jsonCall(dispatcher yarpc.Dispatcher, headers yarpc.Headers, token string) (string, yarpc.CallResMeta, error) {
client := json.New(dispatcher.Channel(serverName))
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
reqMeta := yarpc.NewReqMeta().Procedure("echo").Headers(headers)
reqBody := &jsonEcho{Token: token}
var resBody jsonEcho
resMeta, err := client.Call(ctx, reqMeta, reqBody, &resBody)
return resBody.Token, resMeta, err
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:13,代码来源:json.go
示例12: Call
func (c rawCaller) Call(h yarpc.Headers) (yarpc.Headers, error) {
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
_, res, err := c.c.Call(
ctx,
yarpc.NewReqMeta().Headers(h).Procedure("echo/raw"),
[]byte("hello"))
if err != nil {
return yarpc.Headers{}, err
}
return res.Headers(), nil
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:14,代码来源:behavior.go
示例13: handleEchoEcho
func (h handler) handleEchoEcho(ctx context.Context, reqMeta yarpc.ReqMeta, reqBody *echoReqBody) (*echoResBody, yarpc.ResMeta, error) {
h.assertBaggage(ctx)
var resBody echoResBody
_, err := h.client.Call(
ctx,
yarpc.NewReqMeta().Procedure("echo"),
reqBody,
&resBody,
)
if err != nil {
return nil, nil, err
}
return &resBody, nil, nil
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:14,代码来源:tracer_test.go
示例14: call
func call(client helloclient.Interface, message string) (*echo.EchoResponse, yarpc.Headers) {
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
resBody, resMeta, err := client.Echo(
ctx,
yarpc.NewReqMeta().Headers(yarpc.NewHeaders().With("from", "self")),
&echo.EchoRequest{Message: message, Count: 1},
)
if err != nil {
log.Fatal(err)
}
return resBody, resMeta.Headers()
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:15,代码来源:main.go
示例15: thriftCall
func thriftCall(dispatcher yarpc.Dispatcher, headers yarpc.Headers, token string) (string, yarpc.CallResMeta, error) {
client := echoclient.New(dispatcher.Channel(serverName))
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
reqMeta := yarpc.NewReqMeta().Headers(headers)
ping := &echo.Ping{Beep: token}
resBody, resMeta, err := client.Echo(ctx, reqMeta, ping)
if err != nil {
return "", nil, err
}
return resBody.Boop, resMeta, err
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:15,代码来源:thrift.go
示例16: Phone
// Phone implements the phone procedure
func Phone(ctx context.Context, reqMeta yarpc.ReqMeta, body *PhoneRequest) (*PhoneResponse, yarpc.ResMeta, error) {
var outbound transport.UnaryOutbound
switch {
case body.Transport.HTTP != nil:
t := body.Transport.HTTP
url := fmt.Sprintf("http://%s:%d", t.Host, t.Port)
outbound = ht.NewOutbound(url)
case body.Transport.TChannel != nil:
t := body.Transport.TChannel
hostport := fmt.Sprintf("%s:%d", t.Host, t.Port)
ch, err := tchannel.NewChannel("yarpc-test-client", nil)
if err != nil {
return nil, nil, fmt.Errorf("failed to build TChannel: %v", err)
}
outbound = tch.NewOutbound(ch, tch.HostPort(hostport))
default:
return nil, nil, fmt.Errorf("unconfigured transport")
}
if err := outbound.Start(transport.NoDeps); err != nil {
return nil, nil, err
}
defer outbound.Stop()
// TODO use reqMeta.Service for caller
client := json.New(channel.MultiOutbound("yarpc-test", body.Service, transport.Outbounds{
Unary: outbound,
}))
resBody := PhoneResponse{
Service: "yarpc-test", // TODO use reqMeta.Service
Procedure: reqMeta.Procedure(),
}
ctx, cancel := context.WithTimeout(ctx, 500*time.Millisecond)
defer cancel()
_, err := client.Call(
ctx,
yarpc.NewReqMeta().Procedure(body.Procedure),
body.Body,
&resBody.Body)
if err != nil {
return nil, nil, err
}
return &resBody, nil, nil
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:48,代码来源:phone.go
示例17: Raw
// Raw implements the 'raw' behavior.
func Raw(t crossdock.T) {
t = createEchoT("raw", t)
fatals := crossdock.Fatals(t)
dispatcher := disp.Create(t)
fatals.NoError(dispatcher.Start(), "could not start Dispatcher")
defer dispatcher.Stop()
client := raw.New(dispatcher.Channel("yarpc-test"))
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
token := random.Bytes(5)
resBody, _, err := client.Call(ctx, yarpc.NewReqMeta().Procedure("echo/raw"), token)
crossdock.Fatals(t).NoError(err, "call to echo/raw failed: %v", err)
crossdock.Assert(t).True(bytes.Equal(token, resBody), "server said: %v", resBody)
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:19,代码来源:raw.go
示例18: TestEmptyReplay
func TestEmptyReplay(t *testing.T) {
tMock := testingTMock{t, 0}
dir, err := ioutil.TempDir("", "yarpcgorecorder")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir) // clean up
recorder := NewRecorder(&tMock, RecordMode(Replay), RecordsPath(dir))
withDisconnectedClient(t, recorder, func(client raw.Client) {
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
require.Panics(t, func() {
client.Call(ctx, yarpc.NewReqMeta().Procedure("hello"), []byte("Hello"))
})
assert.Equal(t, tMock.fatalCount, 1)
})
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:21,代码来源:recorder_test.go
示例19: runRaw
// runRaw tests if a yarpc client returns a remote timeout error behind the
// TimeoutError interface when a remote http handler returns a handler timeout.
func runRaw(t crossdock.T, disp yarpc.Dispatcher) {
assert := crossdock.Assert(t)
fatals := crossdock.Fatals(t)
ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond)
defer cancel()
ch := raw.New(disp.Channel("yarpc-test"))
_, _, err := ch.Call(ctx, yarpc.NewReqMeta().Procedure("handlertimeout/raw"), nil)
fatals.Error(err, "expected an error")
if transport.IsBadRequestError(err) {
t.Skipf("handlertimeout/raw method not implemented: %v", err)
return
}
assert.True(transport.IsTimeoutError(err), "returns a TimeoutError: %T", err)
form := strings.HasPrefix(err.Error(),
`Timeout: call to procedure "handlertimeout/raw" of service "service" from caller "caller" timed out after`)
assert.True(form, "must be a remote handler timeout: %q", err.Error())
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:24,代码来源:behavior.go
示例20: Run
// Run tests if a yarpc client returns correctly a client timeout error behind
// the TimeoutError interface when the context deadline is reached while the
// server is taking too long to respond.
func Run(t crossdock.T) {
assert := crossdock.Assert(t)
fatals := crossdock.Fatals(t)
ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond)
defer cancel()
dispatcher := disp.Create(t)
fatals.NoError(dispatcher.Start(), "could not start Dispatcher")
defer dispatcher.Stop()
ch := raw.New(dispatcher.Channel("yarpc-test"))
_, _, err := ch.Call(ctx, yarpc.NewReqMeta().Procedure("sleep/raw"), nil)
fatals.Error(err, "expected a failure for timeout")
if transport.IsBadRequestError(err) {
t.Skipf("sleep/raw method not implemented: %v", err)
return
}
assert.True(transport.IsTimeoutError(err), "returns a TimeoutError: %T", err)
trans := t.Param(params.Transport)
switch trans {
case "http":
form := strings.HasPrefix(err.Error(),
`client timeout for procedure "sleep/raw" of service "yarpc-test" after`)
assert.True(form, "should be a client timeout: %q", err.Error())
case "tchannel":
form := strings.HasPrefix(err.Error(), `timeout`)
assert.True(form,
"should be a remote timeout (we cant represent client timeout with tchannel): %q",
err.Error())
default:
fatals.Fail("", "unknown transport %q", trans)
}
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:40,代码来源:behavior.go
注:本文中的go/uber/org/yarpc.NewReqMeta函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论