MCPcopy Create free account
hub / github.com/CPChain/chain / testServerMethodExecution

Function testServerMethodExecution

api/rpc/server_test.go:104–154  ·  view source on GitHub ↗
(t *testing.T, method string)

Source from the content-addressed store, hash-verified

102}
103
104func testServerMethodExecution(t *testing.T, method string) {
105 server := NewServer()
106 service := new(Service)
107
108 if err := server.RegisterName("test", service); err != nil {
109 t.Fatalf("%v", err)
110 }
111
112 stringArg := "string arg"
113 intArg := 1122
114 argsArg := &Args{"abcde"}
115 params := []interface{}{stringArg, intArg, argsArg}
116
117 request := map[string]interface{}{
118 "id": 12345,
119 "method": "test_" + method,
120 "version": "2.0",
121 "params": params,
122 }
123
124 clientConn, serverConn := net.Pipe()
125 defer clientConn.Close()
126
127 go server.ServeCodec(NewJSONCodec(serverConn), OptionMethodInvocation)
128
129 out := json.NewEncoder(clientConn)
130 in := json.NewDecoder(clientConn)
131
132 if err := out.Encode(request); err != nil {
133 t.Fatal(err)
134 }
135
136 response := jsonSuccessResponse{Result: &Result{}}
137 if err := in.Decode(&response); err != nil {
138 t.Fatal(err)
139 }
140
141 if result, ok := response.Result.(*Result); ok {
142 if result.String != stringArg {
143 t.Errorf("expected %s, got : %s\n", stringArg, result.String)
144 }
145 if result.Int != intArg {
146 t.Errorf("expected %d, got %d\n", intArg, result.Int)
147 }
148 if !reflect.DeepEqual(result.Args, argsArg) {
149 t.Errorf("expected %v, got %v\n", argsArg, result)
150 }
151 } else {
152 t.Fatalf("invalid response: expected *Result - got: %T", response.Result)
153 }
154}
155
156func TestServerMethodExecution(t *testing.T) {
157 testServerMethodExecution(t, "echo")

Callers 2

TestServerMethodWithCtxFunction · 0.85

Calls 6

RegisterNameMethod · 0.95
ServeCodecMethod · 0.95
NewServerFunction · 0.85
NewJSONCodecFunction · 0.85
CloseMethod · 0.65
FatalMethod · 0.65

Tested by

no test coverage detected