MCPcopy Create free account
hub / github.com/dank/rlapi / TestPsyNetRPC_SendRequestAsync

Function TestPsyNetRPC_SendRequestAsync

psynetrpc_test.go:148–190  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

146}
147
148func TestPsyNetRPC_SendRequestAsync(t *testing.T) {
149 // Setup mock server
150 mockServer := NewMockWSServer()
151 defer mockServer.Close()
152
153 // Create PsyNet instance and establish connection
154 psyNet := NewPsyNet()
155 rpc, err := psyNet.establishSocket(mockServer.URL(), "test-token", "test-session", "test-player")
156 if err != nil {
157 t.Fatalf("Failed to establish socket: %v", err)
158 }
159
160 go rpc.readMessages()
161 rpc.schedulePing()
162 defer rpc.Close()
163
164 // Setup expected response
165 expectedResponse := &PsyResponse{
166 Result: json.RawMessage(`{"Result":{"async": "test"}}`),
167 }
168 mockServer.SetResponse("PsyNetMessage_X_0", expectedResponse)
169
170 // Test async request
171 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
172 defer cancel()
173
174 respCh, err := rpc.sendRequestAsync(ctx, "Test/AsyncService", map[string]interface{}{})
175 if err != nil {
176 t.Fatalf("sendRequestAsync failed: %v", err)
177 }
178
179 // Wait for response
180 var result map[string]interface{}
181 err = rpc.awaitResponse(ctx, respCh, &result)
182 if err != nil {
183 t.Fatalf("awaitResponse failed: %v", err)
184 }
185
186 // Verify result
187 if async, ok := result["async"]; !ok || async != "test" {
188 t.Error("Expected 'async': 'test' in response")
189 }
190}
191
192func TestPsyNetRPC_ConcurrentRequests(t *testing.T) {
193 // Setup mock server

Callers

nothing calls this directly

Calls 11

CloseMethod · 0.95
establishSocketMethod · 0.95
URLMethod · 0.95
SetResponseMethod · 0.95
NewMockWSServerFunction · 0.85
NewPsyNetFunction · 0.85
readMessagesMethod · 0.80
schedulePingMethod · 0.80
sendRequestAsyncMethod · 0.80
awaitResponseMethod · 0.80
ErrorMethod · 0.80

Tested by

no test coverage detected