public virtual void TestVersion0ClientVersion1Server() { // old client vs new server // create a server with two handlers TestRPCCompatibility.TestImpl1 impl = new TestRPCCompatibility.TestImpl1(); server = new RPC.Builder(conf).SetProtocol(typeof(TestRPCCompatibility.TestProtocol1 )).SetInstance(impl).SetBindAddress(Address).SetPort(0).SetNumHandlers(2).SetVerbose (false).Build(); server.AddProtocol(RPC.RpcKind.RpcWritable, typeof(TestRPCCompatibility.TestProtocol0 ), impl); server.Start(); addr = NetUtils.GetConnectAddress(server); proxy = RPC.GetProtocolProxy <TestRPCCompatibility.TestProtocol0>(TestRPCCompatibility.TestProtocol0 .versionID, addr, conf); TestRPCCompatibility.TestProtocol0 proxy0 = (TestRPCCompatibility.TestProtocol0)proxy .GetProxy(); proxy0.Ping(); }
public virtual void TestVersion2ClientVersion1Server() { // Compatible new client & old server // create a server with two handlers TestRPCCompatibility.TestImpl1 impl = new TestRPCCompatibility.TestImpl1(); server = new RPC.Builder(conf).SetProtocol(typeof(TestRPCCompatibility.TestProtocol1 )).SetInstance(impl).SetBindAddress(Address).SetPort(0).SetNumHandlers(2).SetVerbose (false).Build(); server.AddProtocol(RPC.RpcKind.RpcWritable, typeof(TestRPCCompatibility.TestProtocol0 ), impl); server.Start(); addr = NetUtils.GetConnectAddress(server); TestRPCCompatibility.Version2Client client = new TestRPCCompatibility.Version2Client (this); client.Ping(); Assert.Equal("hello", client.Echo("hello")); // echo(int) is not supported by server, so returning 3 // This verifies that echo(int) and echo(String)'s hash codes are different Assert.Equal(3, client.Echo(3)); }
public virtual void TestProtocolMetaInfoSSTranslatorPB() { TestRPCCompatibility.TestImpl1 impl = new TestRPCCompatibility.TestImpl1(); server = new RPC.Builder(conf).SetProtocol(typeof(TestRPCCompatibility.TestProtocol1 )).SetInstance(impl).SetBindAddress(Address).SetPort(0).SetNumHandlers(2).SetVerbose (false).Build(); server.AddProtocol(RPC.RpcKind.RpcWritable, typeof(TestRPCCompatibility.TestProtocol0 ), impl); server.Start(); ProtocolMetaInfoServerSideTranslatorPB xlator = new ProtocolMetaInfoServerSideTranslatorPB (server); ProtocolInfoProtos.GetProtocolSignatureResponseProto resp = xlator.GetProtocolSignature (null, CreateGetProtocolSigRequestProto(typeof(TestRPCCompatibility.TestProtocol1 ), RPC.RpcKind.RpcProtocolBuffer)); //No signatures should be found Assert.Equal(0, resp.GetProtocolSignatureCount()); resp = xlator.GetProtocolSignature(null, CreateGetProtocolSigRequestProto(typeof( TestRPCCompatibility.TestProtocol1), RPC.RpcKind.RpcWritable)); Assert.Equal(1, resp.GetProtocolSignatureCount()); ProtocolInfoProtos.ProtocolSignatureProto sig = resp.GetProtocolSignatureList()[0 ]; Assert.Equal(TestRPCCompatibility.TestProtocol1.versionID, sig .GetVersion()); bool found = false; int expected = ProtocolSignature.GetFingerprint(typeof(TestRPCCompatibility.TestProtocol1 ).GetMethod("echo", typeof(string))); foreach (int m in sig.GetMethodsList()) { if (expected == m) { found = true; break; } } Assert.True(found); }