public void DuplexService_WithInstanceContext_TriggersCallback()
        {
            var resetEvent = new AutoResetEvent(false);

            var serviceHost = InProcTestFactory.CreateHost <IDuplexService>(new DuplexService());

            var callback = Substitute.For <IDuplexServiceCallback>();

            callback
            .TestCallback(Arg.Any <string>())
            .Returns(m => m.Arg <string>())
            .AndDoes(_ => resetEvent.Set());

            InstanceContext <IDuplexServiceCallback> ctx = new InstanceContext <IDuplexServiceCallback>(callback);
            var proxy = WcfClientProxy.Create <IDuplexService>(c =>
            {
                c.SetEndpoint(serviceHost.Binding, serviceHost.EndpointAddress, ctx);
            });

            proxy.Test("test");

            if (!resetEvent.WaitOne(TimeSpan.FromSeconds(10)))
            {
                Assert.Fail("Callback not entered");
            }
        }
Beispiel #2
0
 private void BuildGenericManager<T>(){
 
 if (systemLogger == null)
             {
                 LoggerSetup.Configure(Constants.ModuleNameForLogging);
                 systemLogger = new Log4NetLoggingAdapter(LogManager.GetLogger(typeof(RequestManager)));
             }
             proxy = WcfClientProxy.Create<T>(c =>
             {
                 c.SetEndpoint("BasicHttpBinding_IRequestService");
 
                 c.OnCallBegin += (sender, args) => { };
 
                 c.OnBeforeInvoke += (sender, args) =>
                 {
                     systemLogger.Write(string.Format("{0}.{1} called with parameters: {2}", args.ServiceType.Name, args.InvokeInfo.MethodName, string.Join(", ", args.InvokeInfo.Parameters)), Core.EventSeverity.Verbose);
                 };
 
                 c.OnAfterInvoke += (sender, args) =>
                 {
                     systemLogger.Write(string.Format("{0}.{1} returned value: {2}", args.ServiceType.Name, args.InvokeInfo.MethodName, args.InvokeInfo.ReturnValue), Core.EventSeverity.Verbose);
                 };
 
                 c.OnCallSuccess += (sender, args) =>
                 {
                     systemLogger.Write(string.Format("{0}.{1} completed successfully", args.ServiceType.Name, args.InvokeInfo.MethodName));
                 };
 
                 c.OnException += (sender, args) =>
                 {
                     systemLogger.Write(string.Format("Exception during service call to {0}.{1}: {2}", args.ServiceType.Name, args.InvokeInfo.MethodName, args.Exception.Message), args.Exception, Core.EventSeverity.Error);
                 };
             });
         }
Beispiel #3
0
        public async Task ServiceContractDefinedAsyncMethod_WithNoReturnValue()
        {
            var resetEvent = new AutoResetEvent(false);

            var mockService = new Mock <IAsyncTestInterface>();

            mockService
            .Setup(m => m.VoidMethodDefinedAsync("test"))
            .Returns(Task.FromResult(true))
            .Callback(() =>
            {
                Console.WriteLine("Callback thread: " + Thread.CurrentThread.ManagedThreadId);
                resetEvent.Set();
            });

            var serviceHost = InProcTestFactory.CreateHost <IAsyncTestInterface>(new AsyncTestInterfaceImpl(mockService));

            var proxy = WcfClientProxy.Create <IAsyncTestInterface>(c =>
                                                                    c.SetEndpoint(serviceHost.Binding, serviceHost.EndpointAddress));

            Console.WriteLine("Caller thread: " + Thread.CurrentThread.ManagedThreadId);

            await proxy.VoidMethodDefinedAsync("test");

            Console.WriteLine("Contination thread: " + Thread.CurrentThread.ManagedThreadId);

            if (!resetEvent.WaitOne(TimeSpan.FromSeconds(2)))
            {
                Assert.Fail("Callback never called");
            }
        }
Beispiel #4
0
        public void DuplexService_OneWayOperation_TriggersCallback()
        {
            var resetEvent = new AutoResetEvent(false);

            var serviceHost = InProcTestFactory.CreateHost <IDuplexService>(new DuplexService());

            var callback = new Mock <IDuplexServiceCallback>();

            callback
            .Setup(m => m.OneWayCallback(It.IsAny <string>()))
            .Callback((string input) =>
            {
                resetEvent.Set();
            });

            var proxy = WcfClientProxy.Create <IDuplexService>(c =>
            {
                c.SetEndpoint(serviceHost.Binding, serviceHost.EndpointAddress, callback.Object);
            });

            proxy.OneWay("test");

            if (!resetEvent.WaitOne(TimeSpan.FromSeconds(10)))
            {
                Assert.Fail("Callback not entered");
            }
        }
        public void Test()
        {
            var service     = Substitute.For <ITestService>();
            var serviceHost = InProcTestFactory.CreateHost <ITestService>(service);

            Assert.DoesNotThrow(() => WcfClientProxy.Create <IIssue25Service>(
                                    c => c.SetEndpoint(serviceHost.Binding, serviceHost.EndpointAddress)));
        }
        public static TServiceInterface StartHostAndProxy <TServiceInterface>(this TServiceInterface serviceInstance, Action <IRetryingProxyConfigurator> configurator = null)
            where TServiceInterface : class
        {
            var host = serviceInstance.StartHost();

            return(WcfClientProxy.Create <TServiceInterface>(c =>
            {
                c.SetEndpoint(host.Binding, host.EndpointAddress);
                configurator?.Invoke(c);
            }));
        }
        public void DuplexService_OneWayOperation_TriggersCallback()
        {
            var resetEvent = new AutoResetEvent(false);

            var serviceHost = InProcTestFactory.CreateHost <IDuplexService>(new DuplexService());

            var callback = Substitute.For <IDuplexServiceCallback>();

            callback
            .When(m => m.OneWayCallback(Arg.Any <string>()))
            .Do(_ => resetEvent.Set());

            var proxy = WcfClientProxy.Create <IDuplexService>(c =>
            {
                c.SetEndpoint(serviceHost.Binding, serviceHost.EndpointAddress, callback);
            });

            proxy.OneWay("test");

            if (!resetEvent.WaitOne(TimeSpan.FromSeconds(10)))
            {
                Assert.Fail("Callback not entered");
            }
        }
Beispiel #8
0
        private static void RunClientTB1()
        {
            bool   bContinue = true;
            string command   = "";

            IApplicationInterfaceService proxy = WcfClientProxy.Create <IApplicationInterfaceService>(c =>
            {
                c.SetEndpoint("netNamedPipeBinding_SvpApi");
            });

            while (bContinue)
            {
                Console.WriteLine("コマンドを入力してください");
                Console.Write("> ");
                command = Console.ReadLine();

                switch (command)
                {
                case "login":
                    proxy.Login();
                    Console.WriteLine("Loginコマンドを実行しました");
                    break;

                case "cc1":
                    var newCategory = new SVP.CIL.Domain.Category
                    {
                        Name    = "新規カテゴリ",
                        Comment = "コメントです"
                    };
                    var rsp_cc1 = proxy.CategoryCrud(new SVP.CIL.Request.RequestCategoryCrud
                    {
                        Crud   = SVP.CIL.Request.CrudType.CREATE,
                        Target = newCategory
                    });
                    Console.WriteLine("カテゴリ({0})を作成しました。", rsp_cc1.Data.Id);
                    break;

                case "cd1":
                    Console.Write("削除ID:");
                    string deleteId = Console.ReadLine();
                    var    rsp_cd1  = proxy.CategoryCrud(new SVP.CIL.Request.RequestCategoryCrud
                    {
                        Crud   = SVP.CIL.Request.CrudType.DELETE,
                        Target = new SVP.CIL.Domain.Category {
                            Id = long.Parse(deleteId)
                        }
                    });
                    if (rsp_cd1.Success)
                    {
                        Console.WriteLine("削除しました");
                    }
                    else
                    {
                        Console.WriteLine("削除できませんでした");
                    }
                    break;

                case "cu1":
                    var rsp_cu1_1 = proxy.CategoryCrud(new SVP.CIL.Request.RequestCategoryCrud
                    {
                        Crud   = SVP.CIL.Request.CrudType.READ,
                        Target = new SVP.CIL.Domain.Category {
                            Id = 2L
                        }
                    });

                    var updatedDomainCategory = rsp_cu1_1.Data;
                    Console.Write("新しいタイトル名:");
                    string newTitle = Console.ReadLine();
                    updatedDomainCategory.Name = newTitle;
                    var rsp_cu1 = proxy.CategoryCrud(new SVP.CIL.Request.RequestCategoryCrud
                    {
                        Crud   = SVP.CIL.Request.CrudType.UPDATE,
                        Target = updatedDomainCategory
                    });
                    break;

                case "clist1":
                    var rsp_clist1 = proxy.CategoryLoadList(new SVP.CIL.Request.RequestCategoryLoadList
                    {
                        ParentTarget = new SVP.CIL.Domain.Category {
                            Id = 10L
                        }
                    });

                    if (rsp_clist1.Success)
                    {
                        foreach (var item in rsp_clist1.Datas)
                        {
                            Console.WriteLine("ID:{0} Name:{1}", item.Id, item.Name);
                        }
                    }
                    else
                    {
                        Console.WriteLine("API実行に失敗しました");
                    }
                    break;

                case "e":
                    bContinue = false;
                    break;
                }
            }
        }