diff --git a/src/objective-c/examples/Sample/Podfile.lock b/src/objective-c/examples/Sample/Podfile.lock deleted file mode 100644 index ccf5aa0f06b2e982c4cbabf01b7636486614084f..0000000000000000000000000000000000000000 --- a/src/objective-c/examples/Sample/Podfile.lock +++ /dev/null @@ -1,44 +0,0 @@ -PODS: - - gRPC (0.0.1): - - gRPC/C-Core (= 0.0.1) - - gRPC/GRPCClient (= 0.0.1) - - gRPC/ProtoRPC (= 0.0.1) - - gRPC/RxLibrary (= 0.0.1) - - gRPC/C-Core (0.0.1): - - OpenSSL (~> 1.0.200) - - gRPC/GRPCClient (0.0.1): - - gRPC/C-Core - - gRPC/RxLibrary - - gRPC/ProtoRPC (0.0.1): - - gRPC/GRPCClient - - gRPC/RxLibrary - - gRPC/RxLibrary (0.0.1) - - OpenSSL (1.0.201) - - ProtocolBuffers (1.9.8) - - RemoteTest (0.0.1): - - gRPC (~> 0.0) - - ProtocolBuffers (~> 1.9) - - Route_guide (0.0.1): - - ProtocolBuffers (~> 1.9) - -DEPENDENCIES: - - gRPC (from `../../../..`) - - RemoteTest (from `RemoteTestClient`) - - Route_guide (from `RouteGuideClient`) - -EXTERNAL SOURCES: - gRPC: - :path: ../../../.. - RemoteTest: - :path: RemoteTestClient - Route_guide: - :path: RouteGuideClient - -SPEC CHECKSUMS: - gRPC: f6c1bf5dde59ab543e4bd1d5e2ea56da4a9a0253 - OpenSSL: 4e990d04b14015c49c800c400b86ae44a4818a5c - ProtocolBuffers: 9a4a171c0c7cc8f21dd29aeca4f9ac775d84a880 - RemoteTest: 021a51c04d5795f286b379ca5ef14d0be5b2fb9b - Route_guide: a277da8eef182774abb050d7b81109f5878f8652 - -COCOAPODS: 0.36.0 diff --git a/src/objective-c/examples/Sample/SampleTests/RemoteProtoTests.m b/src/objective-c/examples/Sample/SampleTests/RemoteProtoTests.m index 6c5de812770d038b09b9157cde60f44ec4f6cff1..2ef6a6e4ab9aaf33abb0641b68ce767ce01f5af1 100644 --- a/src/objective-c/examples/Sample/SampleTests/RemoteProtoTests.m +++ b/src/objective-c/examples/Sample/SampleTests/RemoteProtoTests.m @@ -34,6 +34,7 @@ #import <UIKit/UIKit.h> #import <XCTest/XCTest.h> +#import <gRPC/GRXWriter+Immediate.h> #import <RemoteTest/Messages.pb.h> #import <RemoteTest/Test.pb.h> @@ -48,43 +49,85 @@ _service = [[RMTTestService alloc] initWithHost:@"grpc-test.sandbox.google.com"]; } -- (void)testEmptyRPC { - __weak XCTestExpectation *noRPCError = [self expectationWithDescription:@"RPC succeeded."]; - __weak XCTestExpectation *responded = [self expectationWithDescription:@"Response received."]; +// Tests as described here: https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md - [_service emptyCallWithRequest:[RMTEmpty defaultInstance] - handler:^(RMTEmpty *response, NSError *error) { +- (void)testEmptyUnaryRPC { + __weak XCTestExpectation *expectation = [self expectationWithDescription:@"EmptyUnary"]; + + RMTEmpty *request = [RMTEmpty defaultInstance]; + + [_service emptyCallWithRequest:request handler:^(RMTEmpty *response, NSError *error) { XCTAssertNil(error, @"Finished with unexpected error: %@", error); - [noRPCError fulfill]; - XCTAssertNotNil(response, @"nil response received."); - [responded fulfill]; + + id expectedResponse = [RMTEmpty defaultInstance]; + XCTAssertEqualObjects(response, expectedResponse); + + [expectation fulfill]; }]; [self waitForExpectationsWithTimeout:2. handler:nil]; } -- (void)testSimpleProtoRPC { - __weak XCTestExpectation *noRPCError = [self expectationWithDescription:@"RPC succeeded."]; - __weak XCTestExpectation *responded = [self expectationWithDescription:@"Response received."]; - __weak XCTestExpectation *validResponse = [self expectationWithDescription:@"Valid response."]; +- (void)testLargeUnaryRPC { + __weak XCTestExpectation *expectation = [self expectationWithDescription:@"EmptyUnary"]; RMTSimpleRequest *request = [[[[[[RMTSimpleRequestBuilder alloc] init] - setResponseSize:100] - setFillUsername:YES] - setFillOauthScope:YES] + setResponseType:RMTPayloadTypeCompressable] + setResponseSize:314159] + setPayloadBuilder:[[[RMTPayloadBuilder alloc] init] + setBody:[NSMutableData dataWithLength:271828]]] build]; + [_service unaryCallWithRequest:request handler:^(RMTSimpleResponse *response, NSError *error) { XCTAssertNil(error, @"Finished with unexpected error: %@", error); - [noRPCError fulfill]; - XCTAssertNotNil(response, @"nil response received."); - [responded fulfill]; - // We expect empty strings, not nil: - XCTAssertNotNil(response.username, @"Response's username is nil."); - XCTAssertNotNil(response.oauthScope, @"Response's OAuth scope is nil."); - [validResponse fulfill]; + + id expectedResponse = [[[[RMTSimpleResponseBuilder alloc] init] + setPayloadBuilder:[[[[RMTPayloadBuilder alloc] init] + setType:RMTPayloadTypeCompressable] + setBody:[NSMutableData dataWithLength:314159]]] + build]; + XCTAssertEqualObjects(response, expectedResponse); + + [expectation fulfill]; }]; - [self waitForExpectationsWithTimeout:2. handler:nil]; + [self waitForExpectationsWithTimeout:4. handler:nil]; +} + +- (void)testClientStreamingRPC { + __weak XCTestExpectation *expectation = [self expectationWithDescription:@"EmptyUnary"]; + + id request1 = [[[[RMTStreamingInputCallRequestBuilder alloc] init] + setPayloadBuilder:[[[RMTPayloadBuilder alloc] init] + setBody:[NSMutableData dataWithLength:27182]]] + build]; + id request2 = [[[[RMTStreamingInputCallRequestBuilder alloc] init] + setPayloadBuilder:[[[RMTPayloadBuilder alloc] init] + setBody:[NSMutableData dataWithLength:8]]] + build]; + id request3 = [[[[RMTStreamingInputCallRequestBuilder alloc] init] + setPayloadBuilder:[[[RMTPayloadBuilder alloc] init] + setBody:[NSMutableData dataWithLength:1828]]] + build]; + id request4 = [[[[RMTStreamingInputCallRequestBuilder alloc] init] + setPayloadBuilder:[[[RMTPayloadBuilder alloc] init] + setBody:[NSMutableData dataWithLength:45904]]] + build]; + id<GRXWriter> writer = [GRXWriter writerWithContainer:@[request1, request2, request3, request4]]; + + [_service streamingInputCallWithRequestsWriter:writer + handler:^(RMTStreamingInputCallResponse *response, NSError *error) { + XCTAssertNil(error, @"Finished with unexpected error: %@", error); + + id expectedResponse = [[[[RMTStreamingInputCallResponseBuilder alloc] init] + setAggregatedPayloadSize:74922] + build]; + XCTAssertEqualObjects(response, expectedResponse); + + [expectation fulfill]; + }]; + + [self waitForExpectationsWithTimeout:4. handler:nil]; } @end