// separated test out so that other tests can call it. /// <exception cref="System.Exception"/> public static void TestProtoBufRpc(TestProtoBufRpc.TestRpcService client) { // Test ping method TestProtos.EmptyRequestProto emptyRequest = ((TestProtos.EmptyRequestProto)TestProtos.EmptyRequestProto .NewBuilder().Build()); client.Ping(null, emptyRequest); // Test echo method TestProtos.EchoRequestProto echoRequest = ((TestProtos.EchoRequestProto)TestProtos.EchoRequestProto .NewBuilder().SetMessage("hello").Build()); TestProtos.EchoResponseProto echoResponse = client.Echo(null, echoRequest); Assert.Equal(echoResponse.GetMessage(), "hello"); // Test error method - error should be thrown as RemoteException try { client.Error(null, emptyRequest); NUnit.Framework.Assert.Fail("Expected exception is not thrown"); } catch (ServiceException e) { RemoteException re = (RemoteException)e.InnerException; RpcServerException rse = (RpcServerException)re.UnwrapRemoteException(typeof(RpcServerException )); NUnit.Framework.Assert.IsNotNull(rse); Assert.True(re.GetErrorCode().Equals(RpcHeaderProtos.RpcResponseHeaderProto.RpcErrorCodeProto .ErrorRpcServer)); } }
/// <exception cref="System.Exception"/> public virtual void TestProtoBufRandomException() { TestProtoBufRpc.TestRpcService client = GetClient(); TestProtos.EmptyRequestProto emptyRequest = ((TestProtos.EmptyRequestProto)TestProtos.EmptyRequestProto .NewBuilder().Build()); try { client.Error2(null, emptyRequest); } catch (ServiceException se) { Assert.True(se.InnerException is RemoteException); RemoteException re = (RemoteException)se.InnerException; Assert.True(re.GetClassName().Equals(typeof(URISyntaxException) .FullName)); Assert.True(re.Message.Contains("testException")); Assert.True(re.GetErrorCode().Equals(RpcHeaderProtos.RpcResponseHeaderProto.RpcErrorCodeProto .ErrorApplication)); } }