mirror of
https://github.com/fumiama/terasu-cloudflared.git
synced 2026-06-28 16:10:27 +08:00
TUN-528: Move cloudflared into a separate repo
This commit is contained in:
91
vendor/zombiezen.com/go/capnproto2/rpc/embargo_test.go
generated
vendored
Normal file
91
vendor/zombiezen.com/go/capnproto2/rpc/embargo_test.go
generated
vendored
Normal file
@@ -0,0 +1,91 @@
|
||||
package rpc_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"golang.org/x/net/context"
|
||||
"zombiezen.com/go/capnproto2"
|
||||
"zombiezen.com/go/capnproto2/rpc"
|
||||
"zombiezen.com/go/capnproto2/rpc/internal/logtransport"
|
||||
"zombiezen.com/go/capnproto2/rpc/internal/pipetransport"
|
||||
"zombiezen.com/go/capnproto2/rpc/internal/testcapnp"
|
||||
)
|
||||
|
||||
func TestEmbargo(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
p, q := pipetransport.New()
|
||||
if *logMessages {
|
||||
p = logtransport.New(nil, p)
|
||||
}
|
||||
log := testLogger{t}
|
||||
c := rpc.NewConn(p, rpc.ConnLog(log))
|
||||
echoSrv := testcapnp.Echoer_ServerToClient(new(Echoer))
|
||||
d := rpc.NewConn(q, rpc.MainInterface(echoSrv.Client), rpc.ConnLog(log))
|
||||
defer d.Wait()
|
||||
defer c.Close()
|
||||
client := testcapnp.Echoer{Client: c.Bootstrap(ctx)}
|
||||
localCap := testcapnp.CallOrder_ServerToClient(new(CallOrder))
|
||||
|
||||
earlyCall := callseq(ctx, client.Client, 0)
|
||||
echo := client.Echo(ctx, func(p testcapnp.Echoer_echo_Params) error {
|
||||
return p.SetCap(localCap)
|
||||
})
|
||||
pipeline := echo.Cap()
|
||||
call0 := callseq(ctx, pipeline.Client, 0)
|
||||
call1 := callseq(ctx, pipeline.Client, 1)
|
||||
_, err := earlyCall.Struct()
|
||||
if err != nil {
|
||||
t.Errorf("earlyCall error: %v", err)
|
||||
}
|
||||
call2 := callseq(ctx, pipeline.Client, 2)
|
||||
_, err = echo.Struct()
|
||||
if err != nil {
|
||||
t.Errorf("echo.Get() error: %v", err)
|
||||
}
|
||||
call3 := callseq(ctx, pipeline.Client, 3)
|
||||
call4 := callseq(ctx, pipeline.Client, 4)
|
||||
call5 := callseq(ctx, pipeline.Client, 5)
|
||||
|
||||
check := func(promise testcapnp.CallOrder_getCallSequence_Results_Promise, n uint32) {
|
||||
r, err := promise.Struct()
|
||||
if err != nil {
|
||||
t.Errorf("call%d error: %v", n, err)
|
||||
}
|
||||
if r.N() != n {
|
||||
t.Errorf("call%d = %d; want %d", n, r.N(), n)
|
||||
}
|
||||
}
|
||||
check(call0, 0)
|
||||
check(call1, 1)
|
||||
check(call2, 2)
|
||||
check(call3, 3)
|
||||
check(call4, 4)
|
||||
check(call5, 5)
|
||||
}
|
||||
|
||||
func callseq(c context.Context, client capnp.Client, n uint32) testcapnp.CallOrder_getCallSequence_Results_Promise {
|
||||
return testcapnp.CallOrder{Client: client}.GetCallSequence(c, func(p testcapnp.CallOrder_getCallSequence_Params) error {
|
||||
p.SetExpected(n)
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
type CallOrder struct {
|
||||
n uint32
|
||||
}
|
||||
|
||||
func (co *CallOrder) GetCallSequence(call testcapnp.CallOrder_getCallSequence) error {
|
||||
call.Results.SetN(co.n)
|
||||
co.n++
|
||||
return nil
|
||||
}
|
||||
|
||||
type Echoer struct {
|
||||
CallOrder
|
||||
}
|
||||
|
||||
func (*Echoer) Echo(call testcapnp.Echoer_echo) error {
|
||||
call.Results.SetCap(call.Params.Cap())
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user