Esempio n. 1
0
        public void TestWithThreads(int numServices, int numRequestsPerService)
        {
            var ipcProvider = new IpcProviderWithMemoization(IpcFactory.GetProvider());
            var ipcMonikers = Enumerable
                              .Range(0, numServices)
                              .Select(_ => ipcProvider.RenderConnectionString(ipcProvider.CreateNewMoniker()))
                              .ToList();

            var serverThreads = ipcMonikers
                                .Select(moniker => CreateThreadForCommand($"{StartNoDropCmd.Name} --{Moniker.LongName} " + moniker, null))
                                .ToList();

            Start(serverThreads);

            Thread.Sleep(100);

            var clientThreads = GetClientThreads(ipcProvider, ipcMonikers, numServices, numRequestsPerService, $"{PingDaemonCmd.Name} --{Moniker.LongName} <moniker>");

            Start(clientThreads);
            Join(clientThreads);

            var serverShutdownThreads = GetClientThreads(ipcProvider, ipcMonikers, numServices, 1, $"{StopDaemonCmd.Name} --{Moniker.LongName} <moniker>");

            Start(serverShutdownThreads);
            Join(serverShutdownThreads);

            Join(serverThreads);
        }
Esempio n. 2
0
        public async Task TestWithThreadsAsync(int numServices, int numRequestsPerService)
        {
            var ipcProvider = new IpcProviderWithMemoization(IpcFactory.GetProvider());
            var ipcMonikers = Enumerable
                              .Range(0, numServices)
                              .Select(_ => ipcProvider.RenderConnectionString(ipcProvider.CreateNewMoniker()))
                              .ToList();

            var serverTasks = ipcMonikers
                              .Select(moniker => CreateTaskForCommand($"{StartNoDropCmd.Name} --{Moniker.LongName} " + moniker, null))
                              .ToList();

            // make sure that the daemons are running
            await Task.Delay(200);

            var clientThreads = GetClientTasks(ipcProvider, ipcMonikers, numRequestsPerService, $"{PingDaemonCmd.Name} --{Moniker.LongName} <moniker>");

            await Task.WhenAll(clientThreads);

            var serverShutdownThreads = GetClientTasks(ipcProvider, ipcMonikers, 1, $"{StopDaemonCmd.Name} --{Moniker.LongName} <moniker>");

            await Task.WhenAll(serverShutdownThreads);

            await Task.WhenAll(serverTasks);
        }
Esempio n. 3
0
        public void TestCreateMoniker()
        {
            var mockProvider = new MockProvider();

            using (var provider = new IpcProviderWithMemoization(mockProvider))
            {
                // create some monikers
                var moniker1 = provider.CreateNewMoniker();
                var moniker2 = provider.CreateNewMoniker();

                // assert they are not equal and that no underlying moniker was created
                Assert.NotEqual(moniker1, moniker2);
                Assert.Equal(0, mockProvider.NumCreateMonikerCalls);

                // serialize those monikers
                provider.RenderConnectionString(moniker1);
                provider.RenderConnectionString(moniker2);

                // assert that exactly 2 underlying monikers were created
                Assert.Equal(2, mockProvider.NumCreateMonikerCalls);
                Assert.Equal(2, mockProvider.NumRenderConnectionStringCalls);
            }
        }
Esempio n. 4
0
        public void TestLoadMoniker()
        {
            var mockProvider = new MockProvider();

            using (var provider = new IpcProviderWithMemoization(mockProvider))
            {
                // load some monikers
                var id       = Guid.NewGuid().ToString();
                var moniker1 = provider.LoadOrCreateMoniker(id);
                var moniker2 = provider.LoadOrCreateMoniker(id);

                // assert they are equal and that no underlying moniker was created
                Assert.Equal(moniker1, moniker2);
                Assert.Equal(0, mockProvider.NumCreateMonikerCalls);

                // serialize those monikers
                provider.RenderConnectionString(moniker1);
                provider.RenderConnectionString(moniker2);

                // assert that exactly 1 underlying moniker was created
                Assert.Equal(1, mockProvider.NumCreateMonikerCalls);
                Assert.Equal(1, mockProvider.NumRenderConnectionStringCalls);
            }
        }