Пример #1
0
        public void Medaitor_1AddLatransMedaitor()
        {
            var servicesWebApp = new Microsoft.Extensions.DependencyInjection.ServiceCollection();
            var b = servicesWebApp.AddLatransMedaitor();

            //b.Build();
            Assert.Contains(servicesWebApp, sd => typeof(IMediatorClientFactory) == sd.ServiceType);
            Assert.Contains(servicesWebApp, sd => typeof(IMediatorClient) == sd.ServiceType);
            Assert.Contains(servicesWebApp, sd => typeof(IMediatorService) == sd.ServiceType);
        }
Пример #2
0
        public void Medaitor_2AddHandler()
        {
            var servicesWebApp   = new Microsoft.Extensions.DependencyInjection.ServiceCollection();
            var servicesMediator = new Microsoft.Extensions.DependencyInjection.ServiceCollection();
            var b = servicesWebApp.AddLatransMedaitor();

            b.AddActivityHandler <TestActivityHandler1>()
            .Build();

            Assert.Contains(b.Services, sd => typeof(IActivityHandler <TestRequest1, TestResponse1>) == sd.ServiceType);
        }
Пример #3
0
        public async Task Medaitor_9Monitor()
        {
            var servicesWebApp   = new Microsoft.Extensions.DependencyInjection.ServiceCollection();
            var servicesMediator = new Microsoft.Extensions.DependencyInjection.ServiceCollection();

            servicesWebApp.AddLatransMedaitor()
            .AddActivityHandler <TestActivityHandler5>()
            .Build();

            ActivityId activityId = ActivityId.NewId();

            using (var serviceProviderMediator = servicesMediator.BuildServiceProvider()) {
                using (var serviceProviderWebApp = servicesWebApp.BuildServiceProvider()) {
                    using (var scopeWebApp2 = serviceProviderWebApp.CreateScope()) {
                        var scopedProviderWebApp2 = scopeWebApp2.ServiceProvider;
                        var medaitorClient2       = scopedProviderWebApp2.GetRequiredService <IMediatorClientFactory>().GetMedaitorClient();


                        using (var scopeWebApp1 = serviceProviderWebApp.CreateScope()) {
                            var scopedProviderWebApp1 = scopeWebApp1.ServiceProvider;
                            var medaitorClient1       = scopedProviderWebApp1.GetRequiredService <IMediatorClientFactory>().GetMedaitorClient();

                            var activityExecutionConfiguration1 = scopedProviderWebApp1.GetRequiredService <ActivityExecutionConfigurationDefaults>().ForQueryCancelable;
                            var request5 = new TestRequest5()
                            {
                                A = 6, B = 7
                            };
                            var connectedClient = await medaitorClient1.ConnectAsync(
                                activityId,
                                request5,
                                activityExecutionConfiguration1,
                                CancellationToken.None);

                            //

                            //medaitorClient2.
                            //
                            var activityResponse = await connectedClient.WaitForAsync(activityExecutionConfiguration1, CancellationToken.None);

                            Assert.NotNull(activityResponse);
                            Assert.NotNull(activityResponse as OkResultActivityResponse <TestResponse5>);
                            Assert.Equal(6 * 7 + 1, ((OkResultActivityResponse <TestResponse5>)activityResponse).Result.R);
                        }
                    }
                }
            }
        }
Пример #4
0
        public async Task Medaitor_4WaitForAsync()
        {
            var servicesWebApp   = new Microsoft.Extensions.DependencyInjection.ServiceCollection();
            var servicesMediator = new Microsoft.Extensions.DependencyInjection.ServiceCollection();

            servicesWebApp.AddLatransMedaitor()
            .AddActivityHandler <TestActivityHandler1>()
            .AddActivityHandler <TestActivityHandler2>()
            .Build();

            ActivityId activityId = ActivityId.NewId();

            using (var serviceProviderMediator = servicesMediator.BuildServiceProvider()) {
                using (var serviceProviderWebApp = servicesWebApp.BuildServiceProvider()) {
                    using (var scopeWebApp = serviceProviderWebApp.CreateScope()) {
                        var scopedProviderWebApp = scopeWebApp.ServiceProvider;
                        var medaitorClient       = scopedProviderWebApp.GetRequiredService <IMediatorClientFactory>().GetMedaitorClient();

                        var activityExecutionConfiguration = scopedProviderWebApp.GetRequiredService <ActivityExecutionConfigurationDefaults>().ForQueryCancelable;
                        var request = new TestRequest1()
                        {
                            A = 6, B = 7
                        };
                        var connectedClient = await medaitorClient.ConnectAndSendAsync(
                            activityId,
                            request,
                            activityExecutionConfiguration,
                            CancellationToken.None);

                        var activityResponse = await connectedClient.WaitForAsync(activityExecutionConfiguration, CancellationToken.None);

                        var status = await connectedClient.GetStatusAsync();

                        Assert.Equal(ActivityStatus.Completed, status.Status);
                        Assert.NotNull(activityResponse);
                        Assert.NotNull(activityResponse as OkResultActivityResponse <TestResponse1>);
                        Assert.Equal(6 * 7 + 1, ((OkResultActivityResponse <TestResponse1>)activityResponse).Result.R);
                    }
                }
            }
        }
Пример #5
0
        public async Task Medaitor_3ConnectAsync()
        {
            var servicesWebApp   = new Microsoft.Extensions.DependencyInjection.ServiceCollection();
            var servicesMediator = new Microsoft.Extensions.DependencyInjection.ServiceCollection();

            servicesWebApp.AddLatransMedaitor()
            .AddActivityHandler <TestActivityHandler1>()
            .AddActivityHandler <TestActivityHandler2>()
            .Build();

            IMediatorClientConnected <TestRequest1> connectedClient = null;
            MediatorClientConnected <TestRequest1, TestResponse1> testConnectedClient = null;

            using (var serviceProviderMediator = servicesMediator.BuildServiceProvider()) {
                using (var serviceProviderWebApp = servicesWebApp.BuildServiceProvider()) {
                    using (var scopeWebApp = serviceProviderWebApp.CreateScope()) {
                        var scopedProviderWebApp = scopeWebApp.ServiceProvider;
                        var medaitorClient       = scopedProviderWebApp.GetRequiredService <IMediatorClientFactory>().GetMedaitorClient();

                        var request = new TestRequest1()
                        {
                            A = 6, B = 7
                        };
                        connectedClient = await medaitorClient.ConnectAndSendAsync(
                            ActivityId.NewId(),
                            request,
                            null,
                            CancellationToken.None);

                        Assert.False(connectedClient.GetActivityContext().IsDisposed);
                        Assert.NotNull(connectedClient);
                        testConnectedClient = (MediatorClientConnected <TestRequest1, TestResponse1>)connectedClient;
                        Assert.False(testConnectedClient.IsDisposed());
                    }
                }
            }
            Assert.True(testConnectedClient.IsDisposed());
        }
Пример #6
0
        public async Task Medaitor_6Cancel()
        {
            var servicesWebApp   = new Microsoft.Extensions.DependencyInjection.ServiceCollection();
            var servicesMediator = new Microsoft.Extensions.DependencyInjection.ServiceCollection();

            servicesWebApp.AddLatransMedaitor()
            .AddActivityHandler <TestActivityHandler6>()
            .Build();

            ActivityId activityId = ActivityId.NewId();

            using (var serviceProviderMediator = servicesMediator.BuildServiceProvider()) {
                using (var serviceProviderWebApp = servicesWebApp.BuildServiceProvider()) {
                    using (var scopeWebApp1 = serviceProviderWebApp.CreateScope()) {
                        var scopedProviderWebApp1 = scopeWebApp1.ServiceProvider;
                        var medaitorClient1       = scopedProviderWebApp1.GetRequiredService <IMediatorClientFactory>().GetMedaitorClient();

                        using (var scopeWebApp2 = serviceProviderWebApp.CreateScope()) {
                            var scopedProviderWebApp2 = scopeWebApp2.ServiceProvider;
                            var medaitorClient2       = scopedProviderWebApp2.GetRequiredService <IMediatorClientFactory>().GetMedaitorClient();

                            var activityExecutionConfiguration1 = scopedProviderWebApp2.GetRequiredService <ActivityExecutionConfigurationDefaults>().ForQueryCancelable;
                            var request6 = new TestRequest6()
                            {
                                A = 6, B = 7
                            };
                            var cts = new CancellationTokenSource();
                            var taskConnectedClient1 = medaitorClient1.ConnectAndSendAsync(
                                activityId,
                                request6,
                                activityExecutionConfiguration1,
                                cts.Token);
                            //

                            var connectedClient2 = await medaitorClient2.ConnectAsync(activityId, CancellationToken.None);

                            var status = await connectedClient2.GetStatusAsync();

                            Assert.Equal(ActivityStatus.Running, status.Status);
                            cts.Cancel();
                            IMediatorClientConnected <TestRequest6> connectedClient1;
                            try {
                                connectedClient1 = await taskConnectedClient1;
                            } catch {
                                connectedClient1 = null;
                            }
                            //
                            if (connectedClient1 is null)
                            {
                                //
                            }
                            else
                            {
                                var activityResponse = await connectedClient1.WaitForAsync(activityExecutionConfiguration1, CancellationToken.None);

                                Assert.NotNull(activityResponse);
                                Assert.True(activityResponse is CanceledActivityResponse);
                            }
                        }
                    }
                }
            }
        }