Update messages.proto and add a new test

pull/8735/head
Muxi Yan 8 years ago
parent aa50f2e6a7
commit 59af1bf468
  1. 48
      src/objective-c/tests/InteropTests.m
  2. 71
      src/objective-c/tests/RemoteTestClient/messages.proto

@ -321,6 +321,54 @@
[self waitForExpectationsWithTimeout:4 handler:nil]; [self waitForExpectationsWithTimeout:4 handler:nil];
} }
- (void)testErroneousPingPongRPC {
XCTAssertNotNil(self.class.host);
__weak XCTestExpectation *expectation = [self expectationWithDescription:@"PingPong"];
NSArray *requests = @[@27182, @8, @1828, @45904];
NSArray *responses = @[@31415, @9, @2653, @58979];
GRXBufferedPipe *requestsBuffer = [[GRXBufferedPipe alloc] init];
__block int index = 0;
RMTStreamingOutputCallRequest *request =
[RMTStreamingOutputCallRequest messageWithPayloadSize:requests[index]
requestedResponseSize:responses[index]];
[requestsBuffer writeValue:request];
[_service fullDuplexCallWithRequestsWriter:requestsBuffer
eventHandler:^(BOOL done,
RMTStreamingOutputCallResponse *response,
NSError *error) {
if (index == 0) {
XCTAssertNil(error, @"Finished with unexpected error: %@", error);
XCTAssertNotNil(response, @"Event handler called without an event.");
XCTAssertFalse(done);
id expected = [RMTStreamingOutputCallResponse messageWithPayloadSize:responses[index]];
XCTAssertEqualObjects(response, expected);
index += 1;
RMTStreamingOutputCallRequest *request =
[RMTStreamingOutputCallRequest messageWithPayloadSize:requests[index]
requestedResponseSize:responses[index]];
RMTEchoStatus *status = [RMTEchoStatus message];
status.code = 7;
status.message = @"Error message!";
request.responseStatus = status;
[requestsBuffer writeValue:request];
} else {
XCTAssertNil(response);
XCTAssertNotNil(error);
[expectation fulfill];
}
}];
[self waitForExpectationsWithTimeout:4 handler:nil];
}
#ifndef GRPC_COMPILE_WITH_CRONET #ifndef GRPC_COMPILE_WITH_CRONET
// TODO(makdharma@): Fix this test // TODO(makdharma@): Fix this test
- (void)testEmptyStreamRPC { - (void)testEmptyStreamRPC {

@ -1,4 +1,5 @@
// Copyright 2015, Google Inc.
// Copyright 2015-2016, Google Inc.
// All rights reserved. // All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
@ -35,34 +36,45 @@ package grpc.testing;
option objc_class_prefix = "RMT"; option objc_class_prefix = "RMT";
// TODO(dgq): Go back to using well-known types once
// https://github.com/grpc/grpc/issues/6980 has been fixed.
// import "google/protobuf/wrappers.proto";
message BoolValue {
// The bool value.
bool value = 1;
}
// DEPRECATED, don't use. To be removed shortly.
// The type of payload that should be returned. // The type of payload that should be returned.
enum PayloadType { enum PayloadType {
// Compressable text format. // Compressable text format.
COMPRESSABLE = 0; COMPRESSABLE = 0;
// Uncompressable binary format.
UNCOMPRESSABLE = 1;
// Randomly chosen from all other formats defined in this enum.
RANDOM = 2;
} }
// A block of data, to simply increase gRPC message size. // A block of data, to simply increase gRPC message size.
message Payload { message Payload {
// DEPRECATED, don't use. To be removed shortly.
// The type of data in body. // The type of data in body.
PayloadType type = 1; PayloadType type = 1;
// Primary contents of payload. // Primary contents of payload.
bytes body = 2; bytes body = 2;
} }
// A protobuf representation for grpc status. This is used by test
// clients to specify a status that the server should attempt to return.
message EchoStatus {
int32 code = 1;
string message = 2;
}
// Unary request. // Unary request.
message SimpleRequest { message SimpleRequest {
// DEPRECATED, don't use. To be removed shortly.
// Desired payload type in the response from the server. // Desired payload type in the response from the server.
// If response_type is RANDOM, server randomly chooses one from other formats. // If response_type is RANDOM, server randomly chooses one from other formats.
PayloadType response_type = 1; PayloadType response_type = 1;
// Desired payload size in the response from the server. // Desired payload size in the response from the server.
// If response_type is COMPRESSABLE, this denotes the size before compression.
int32 response_size = 2; int32 response_size = 2;
// Optional input payload sent along with the request. // Optional input payload sent along with the request.
@ -73,6 +85,18 @@ message SimpleRequest {
// Whether SimpleResponse should include OAuth scope. // Whether SimpleResponse should include OAuth scope.
bool fill_oauth_scope = 5; bool fill_oauth_scope = 5;
// Whether to request the server to compress the response. This field is
// "nullable" in order to interoperate seamlessly with clients not able to
// implement the full compression tests by introspecting the call to verify
// the response's compression status.
BoolValue response_compressed = 6;
// Whether server should return a given status
EchoStatus response_status = 7;
// Whether the server should expect this request to be compressed.
BoolValue expect_compressed = 8;
} }
// Unary response, as configured by the request. // Unary response, as configured by the request.
@ -91,6 +115,12 @@ message StreamingInputCallRequest {
// Optional input payload sent along with the request. // Optional input payload sent along with the request.
Payload payload = 1; Payload payload = 1;
// Whether the server should expect this request to be compressed. This field
// is "nullable" in order to interoperate seamlessly with servers not able to
// implement the full compression tests by introspecting the call to verify
// the request's compression status.
BoolValue expect_compressed = 2;
// Not expecting any payload from the response. // Not expecting any payload from the response.
} }
@ -103,16 +133,22 @@ message StreamingInputCallResponse {
// Configuration for a particular response. // Configuration for a particular response.
message ResponseParameters { message ResponseParameters {
// Desired payload sizes in responses from the server. // Desired payload sizes in responses from the server.
// If response_type is COMPRESSABLE, this denotes the size before compression.
int32 size = 1; int32 size = 1;
// Desired interval between consecutive responses in the response stream in // Desired interval between consecutive responses in the response stream in
// microseconds. // microseconds.
int32 interval_us = 2; int32 interval_us = 2;
// Whether to request the server to compress the response. This field is
// "nullable" in order to interoperate seamlessly with clients not able to
// implement the full compression tests by introspecting the call to verify
// the response's compression status.
BoolValue compressed = 3;
} }
// Server-streaming request. // Server-streaming request.
message StreamingOutputCallRequest { message StreamingOutputCallRequest {
// DEPRECATED, don't use. To be removed shortly.
// Desired payload type in the response from the server. // Desired payload type in the response from the server.
// If response_type is RANDOM, the payload from each response in the stream // If response_type is RANDOM, the payload from each response in the stream
// might be of different types. This is to simulate a mixed type of payload // might be of different types. This is to simulate a mixed type of payload
@ -124,6 +160,9 @@ message StreamingOutputCallRequest {
// Optional input payload sent along with the request. // Optional input payload sent along with the request.
Payload payload = 3; Payload payload = 3;
// Whether server should return a given status
EchoStatus response_status = 7;
} }
// Server-streaming response, as configured by the request and parameters. // Server-streaming response, as configured by the request and parameters.
@ -131,3 +170,17 @@ message StreamingOutputCallResponse {
// Payload to increase response size. // Payload to increase response size.
Payload payload = 1; Payload payload = 1;
} }
// For reconnect interop test only.
// Client tells server what reconnection parameters it used.
message ReconnectParams {
int32 max_reconnect_backoff_ms = 1;
}
// For reconnect interop test only.
// Server tells client whether its reconnects are following the spec and the
// reconnect backoffs it saw.
message ReconnectInfo {
bool passed = 1;
repeated int32 backoff_ms = 2;
}

Loading…
Cancel
Save