public void ReturnTupleTest()
        {
            var callsCount        = 0;
            var serviceInstance   = new TestService(() => callsCount++);
            var serializerFactory = new MessagePackSerializerFactory();
            var serviceDispatcher = new ServiceDispatcher <ITestService>(serializerFactory, new LoggerStub());

            var argumentsData = new byte[2][];

            argumentsData[0] = serializerFactory.CreateSerializer <int>().Serialize(0);
            argumentsData[1] = serializerFactory.CreateSerializer <int>().Serialize(2);

            var result = serviceDispatcher.Dispatch(serviceInstance, new RpcMessage()
            {
                ServiceCode   = typeof(ITestService).FullName.GetHashCode(),
                OperationCode = 3,
                ArgumentsData = argumentsData
            });

            Assert.NotNull(result);
            Assert.True(result.HasReturnValue);
            var resultTuple = serializerFactory.CreateSerializer <(int count, SerializableObject[] objects)>()
                              .Deserialize(result.ReturnValue);

            Assert.Equal(2, resultTuple.count);
            Assert.Equal(SerializableObject.TestInt, resultTuple.objects[0].IntProperty);
            Assert.Equal(SerializableObject.TestString, resultTuple.objects[0].StringProperty);
            Assert.Equal(
                SerializableObject.TestDouble,
                resultTuple.objects[0].NestedObject.DoubleProperty);
        }
        public void Test()
        {
            ServiceRegistry.Register <CalculteService>();

            int expected = 5;
            int actual   = ServiceDispatcher.Dispatch <int>("Calculte", "Add", new { a = 2, b = 3 });

            Assert.AreEqual(expected, actual);
        }
        public void Test()
        {
            ServiceRegistry.Register <DemoService>();

            string expected = "hello abc";
            string actual   = ServiceDispatcher.Dispatch <string>("Demo", "hello", new { name = expected });

            Assert.AreEqual(expected, actual);
        }
        public void Dispatch_ServiceShouldReturnValue()
        {
            ServiceDispatcher serviceDispatcher = new ServiceDispatcher(new TestPlatformProvider());

            serviceDispatcher.Initialize();

            Service1 service1 = new Service1();

            serviceDispatcher.Subscribe <IService1>(service1);
            Assert.Equal(3, serviceDispatcher.Dispatch <IService1, int>(s => s.ServiceMethod3(1, 2)).Single());
        }
        public void DispatchReflection_ServiceShouldReturnValue()
        {
            ServiceDispatcher serviceDispatcher = new ServiceDispatcher(new TestPlatformProvider());

            serviceDispatcher.Initialize();

            Service1 service1 = new Service1();

            serviceDispatcher.Subscribe <IService1>(service1);
            Assert.Equal(3, serviceDispatcher.Dispatch("service1", "serviceMethod3", new object[] { 1, 2 }).Cast <int>().Single());
        }
        public void DispatchReflection_ServiceShouldHaveBeenCalledWithDifferentParameterType()
        {
            ServiceDispatcher serviceDispatcher = new ServiceDispatcher(new TestPlatformProvider());

            serviceDispatcher.Initialize();

            Service1 service1 = new Service1();

            serviceDispatcher.Subscribe <IService1>(service1);
            serviceDispatcher.Dispatch("service1", "serviceMethod2", new object[] { 42L });

            Assert.Equal(42, service1.ServiceMethod2Result);
        }
        public void Dispatch_NamedService_ServiceShouldReturnValue()
        {
            ServiceDispatcher serviceDispatcher = new ServiceDispatcher(new TestPlatformProvider());

            serviceDispatcher.Initialize();

            Service1 instance1 = new Service1("Instance1");
            Service1 instance2 = new Service1("Instance2");

            serviceDispatcher.Subscribe <IService1>(instance1);
            serviceDispatcher.Subscribe <IService1>(instance2);
            Assert.Equal(3, serviceDispatcher.Dispatch <IService1, int>("Instance1", s => s.ServiceMethod3(1, 2)));
        }
        public void DispatchReflection_NamedService_ServiceShouldReturnValue()
        {
            ServiceDispatcher serviceDispatcher = new ServiceDispatcher(new TestPlatformProvider());

            serviceDispatcher.Initialize();

            Service1 instance1 = new Service1("Instance1");
            Service1 instance2 = new Service1("Instance2");

            serviceDispatcher.Subscribe <IService1>(instance1);
            serviceDispatcher.Subscribe <IService1>(instance2);
            Assert.Equal(3, Convert.ToInt32(serviceDispatcher.Dispatch("service1", "Instance1", "serviceMethod3", new object[] { 1, 2 })));
        }
        public void Dispatch_ServiceShouldHaveBeenCalledWithParameter()
        {
            ServiceDispatcher serviceDispatcher = new ServiceDispatcher(new TestPlatformProvider());

            serviceDispatcher.Initialize();

            Service1 service1 = new Service1();

            serviceDispatcher.Subscribe <IService1>(service1);
            serviceDispatcher.Dispatch <IService1>(s => s.ServiceMethod2(42));

            Assert.Equal(42, service1.ServiceMethod2Result);
        }
        public void DispatchReflection_ServiceShouldHaveBeenCalled()
        {
            ServiceDispatcher serviceDispatcher = new ServiceDispatcher(new TestPlatformProvider());

            serviceDispatcher.Initialize();

            Service1 service1 = new Service1();

            serviceDispatcher.Subscribe <IService1>(service1);
            serviceDispatcher.Dispatch("service1", "serviceMethod1", null);

            Assert.True(service1.ServiceMethod1Called);
        }
        public void Dispatch_NoSubscribedService_ServiceShouldNotHaveBeenCalled()
        {
            ServiceDispatcher serviceDispatcher = new ServiceDispatcher(new TestPlatformProvider());

            serviceDispatcher.Initialize();

            Service1 service1 = new Service1();

            serviceDispatcher.Subscribe <IService1>(service1);
            serviceDispatcher.Unsubscribe <IService1>(service1);
            serviceDispatcher.Dispatch <IService1>(s => s.ServiceMethod1());

            Assert.False(service1.ServiceMethod1Called);
        }
        public void DispatchReflection_NamedService_ServiceShouldHaveBeenCalled()
        {
            ServiceDispatcher serviceDispatcher = new ServiceDispatcher(new TestPlatformProvider());

            serviceDispatcher.Initialize();

            Service1 instance1 = new Service1("Instance1");
            Service1 instance2 = new Service1("Instance2");

            serviceDispatcher.Subscribe <IService1>(instance1);
            serviceDispatcher.Subscribe <IService1>(instance2);
            serviceDispatcher.Dispatch("service1", "Instance1", "serviceMethod1", null);

            Assert.True(instance1.ServiceMethod1Called);
            Assert.False(instance2.ServiceMethod1Called);
        }
Exemple #13
0
        public void Test()
        {
            var dict = new Dictionary <string, object>();

            dict["books[0].key"] = "key0";
            dict["books[1].key"] = "key1";

            dict["books[0].value.BookId"]            = "0";
            dict["books[1].value.BookId"]            = "1";
            dict["books[0].value.BookName"]          = "BookName_00";
            dict["books[1].value.BookName"]          = "BookName_11";
            dict["books[0].value.Author.AuthorId"]   = "0";
            dict["books[1].value.Author.AuthorId"]   = "1";
            dict["books[0].value.Author.AuthorName"] = "AuthorName0";
            dict["books[1].value.Author.AuthorName"] = "AuthorName1";
            dict["books[0].value.Author.Nation"]     = "Nation0";
            dict["books[1].value.Author.Nation"]     = "Nation1";

            ServiceRegistry.Register <BookService>();

            var result = ServiceDispatcher
                         .Dispatch <IDictionary <string, Book> >("book", "save", dict);

            Assert.AreEqual(2, result.Count);
            Assert.IsTrue(result.ContainsKey("key0"));
            Assert.IsTrue(result.ContainsKey("key1"));

            Assert.AreEqual(0, result["key0"].BookId);
            Assert.AreEqual(1, result["key1"].BookId);

            Assert.AreEqual("BookName_00", result["key0"].BookName);
            Assert.AreEqual("BookName_11", result["key1"].BookName);

            Assert.AreEqual(0, result["key0"].Author.AuthorId);
            Assert.AreEqual(1, result["key1"].Author.AuthorId);

            Assert.AreEqual("AuthorName0", result["key0"].Author.AuthorName);
            Assert.AreEqual("AuthorName1", result["key1"].Author.AuthorName);

            Assert.AreEqual("Nation0", result["key0"].Author.Nation);
            Assert.AreEqual("Nation1", result["key1"].Author.Nation);
        }
        public void DispatchReflection_ServiceShouldBeCalledWithVariousDataTypes()
        {
            DataTypeTest dataTypeTest = new DataTypeTest("StringValue", 1L, 2.2f, 3.3d, new string[] { "1", "2", "3" }, new long[] { 1, 2, 3 }, new List <string>()
            {
                "1", "2", "3"
            }, new List <long>()
            {
                1, 2, 3
            }, new Dictionary <string, string>()
            {
                { "Key1", "Value1" }, { "Key2", "Value2" }
            });

            ServiceDispatcher serviceDispatcher = new ServiceDispatcher(new TestPlatformProvider());

            serviceDispatcher.Initialize();

            Service1 service1 = new Service1();

            serviceDispatcher.Subscribe <IService1>(service1);
            serviceDispatcher.Dispatch("service1", "serviceMethod4", new object[] { dataTypeTest.StringValue, dataTypeTest.LongValue, dataTypeTest.FloatValue, dataTypeTest.DoubleValue, dataTypeTest.StringArray, dataTypeTest.LongArray, dataTypeTest.StringEnumerable, dataTypeTest.LongEnumerable, dataTypeTest.StringDictionary });
            Assert.Equal(dataTypeTest, service1.ServiceMethod4Result);
        }
        public void Test()
        {
            var dict = new Dictionary <string, object>();

            dict["books[0].BookId"]            = "0";
            dict["books[1].BookId"]            = "1";
            dict["books[0].BookName"]          = "BookName_00";
            dict["books[1].BookName"]          = "BookName_11";
            dict["books[0].Author.AuthorId"]   = "0";
            dict["books[1].Author.AuthorId"]   = "1";
            dict["books[0].Author.AuthorName"] = "AuthorName0";
            dict["books[1].Author.AuthorName"] = "AuthorName1";
            dict["books[0].Author.Nation"]     = "Nation0";
            dict["books[1].Author.Nation"]     = "Nation1";

            ServiceRegistry.Register <BookService>();

            var result = ServiceDispatcher
                         .Dispatch <IEnumerable <Book> >("book", "save", dict)
                         .ToArray();

            Assert.AreEqual(2, result.Length);
            Assert.AreEqual(0, result[0].BookId);
            Assert.AreEqual(1, result[1].BookId);

            Assert.AreEqual("BookName_00", result[0].BookName);
            Assert.AreEqual("BookName_11", result[1].BookName);

            Assert.AreEqual(0, result[0].Author.AuthorId);
            Assert.AreEqual(1, result[1].Author.AuthorId);

            Assert.AreEqual("AuthorName0", result[0].Author.AuthorName);
            Assert.AreEqual("AuthorName1", result[1].Author.AuthorName);

            Assert.AreEqual("Nation0", result[0].Author.Nation);
            Assert.AreEqual("Nation1", result[1].Author.Nation);
        }
 protected override void Run()
 {
     Resp = ServiceDispatcher.Dispatch(Req);
     this.CaughtException = Resp.Exception;
 }
Exemple #17
0
 public void Should_be_not_match_b2_With_Action2()
 {
     ServiceDispatcher.Dispatch(ServiceRequest.Create("demo", "action", new { b2 = 0 }));
 }
Exemple #18
0
 //[ExpectedException(typeof(AmbiguousMatchException))]
 public void Should_be_not_match_b2_With_Action2()
 {
     var resp = ServiceDispatcher.Dispatch(ServiceRequest.Create("demo", "action1", new { b2 = 0 }));
     //if (resp.Exception != null)
     //    throw resp.Exception;
 }
Exemple #19
0
 public void Should_be__match_b1_With_Action1()
 {
     ServiceDispatcher.Dispatch(ServiceRequest.Create("demo", "action1", new { b1 = 0 }));
 }
        public void ServiceTest()
        {
            var callsCount        = 0;
            var serviceInstance   = new TestService(() => callsCount++);
            var serializerFactory = new MessagePackSerializerFactory();
            var testObject        = SerializableObject.GetTestInstance();
            var argumentsData     = new byte[1][];

            argumentsData[0] = serializerFactory.CreateSerializer <SerializableObject>().Serialize(testObject);

            var serviceDispatcher = new ServiceDispatcher <ITestService>(serializerFactory, new LoggerStub());

            Assert.Equal(serviceDispatcher.ServicePort, TestService.ServicePort);
            var result = serviceDispatcher.Dispatch(serviceInstance, new RpcMessage
            {
                ServiceCode   = typeof(ITestService).FullName.GetHashCode(),
                OperationCode = 0,
                ArgumentsData = argumentsData
            });

            Assert.NotNull(result);
            Assert.True(result.HasReturnValue);
            Assert.Equal(
                testObject.IntProperty,
                serializerFactory.CreateSerializer <int>().Deserialize(result.ReturnValue));

            argumentsData    = new byte[3][];
            argumentsData[0] = serializerFactory.CreateSerializer <int>()
                               .Serialize(SerializableObject.TestInt);
            argumentsData[1] = serializerFactory.CreateSerializer <string>()
                               .Serialize(SerializableObject.TestString);
            argumentsData[2] = serializerFactory.CreateSerializer <double>()
                               .Serialize(SerializableObject.TestDouble);

            result = serviceDispatcher.Dispatch(serviceInstance, new RpcMessage
            {
                ServiceCode   = typeof(ITestService).FullName.GetHashCode(),
                OperationCode = 1,
                ArgumentsData = argumentsData
            });

            Assert.NotNull(result);
            Assert.True(result.HasReturnValue);
            var resultObject = serializerFactory.CreateSerializer <SerializableObject>()
                               .Deserialize(result.ReturnValue);

            Assert.NotNull(resultObject);
            Assert.Equal(testObject.IntProperty, resultObject.IntProperty);
            Assert.Equal(testObject.StringProperty, resultObject.StringProperty);
            Assert.Equal(
                testObject.NestedObject.DoubleProperty,
                resultObject.NestedObject.DoubleProperty);

            argumentsData    = new byte[1][];
            argumentsData[0] = serializerFactory.CreateSerializer <string>()
                               .Serialize(SerializableObject.TestString);

            result = serviceDispatcher.Dispatch(serviceInstance, new RpcMessage
            {
                ServiceCode   = typeof(ITestService).FullName.GetHashCode(),
                OperationCode = 2,
                ArgumentsData = argumentsData
            });

            Assert.NotNull(result);
            Assert.False(result.HasReturnValue);
            Assert.Equal(1, callsCount);
        }