func testBadCall( c *gc.C, client *rpc.Conn, serverNotifier *notifier, req rpc.Request, expectedErr string, expectedErrCode string, requestKnown bool, ) { serverNotifier.reset() err := client.Call(req, nil, nil) msg := expectedErr if expectedErrCode != "" { msg += " (" + expectedErrCode + ")" } c.Assert(err, gc.ErrorMatches, regexp.QuoteMeta(msg)) // From docs on ServerRequest: // If the request was not recognized or there was // an error reading the body, body will be nil. var expectBody interface{} if requestKnown { expectBody = struct{}{} } c.Assert(serverNotifier.serverRequests[0], gc.DeepEquals, requestEvent{ hdr: rpc.Header{ RequestId: client.ClientRequestID(), Request: req, Version: 1, }, body: expectBody, }) // Test that there was a notification for the server reply. c.Assert(serverNotifier.serverReplies, gc.HasLen, 1) serverReply := serverNotifier.serverReplies[0] c.Assert(serverReply, gc.DeepEquals, replyEvent{ hdr: rpc.Header{ RequestId: client.ClientRequestID(), Error: expectedErr, ErrorCode: expectedErrCode, Version: 1, }, req: req, body: struct{}{}, }) }
func closeClient(c *gc.C, client *rpc.Conn, srvDone <-chan error) { err := client.Close() c.Assert(err, jc.ErrorIsNil) err = chanReadError(c, srvDone, "server done") c.Assert(err, jc.ErrorIsNil) }