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);
        }
 public void TestDifferentIpcProvidersWithMemoizationReturnClientsWithExclusiveConnection()
 {
     using (var provider1 = new IpcProviderWithMemoization(new MultiplexingSocketBasedIpcProvider()))
         using (var provider2 = new IpcProviderWithMemoization(new MultiplexingSocketBasedIpcProvider()))
         {
             var connectionString = provider1.CreateNewConnectionString();
             var config1          = new ClientConfig {
                 MaxConnectRetries = 1
             };
             var config2 = new ClientConfig {
                 MaxConnectRetries = 2
             };
             var client1 = provider1.GetClient(connectionString, config1);
             var client2 = provider2.GetClient(connectionString, config2);
             Assert.Equal(config1, client1.Config);
             Assert.Equal(config2, client2.Config);
         }
 }
 public void TestIpcProviderWithMemoizationReturnsSameClientsForSameMoniker()
 {
     using (var provider = new IpcProviderWithMemoization(new MultiplexingSocketBasedIpcProvider()))
     {
         var connectionString = provider.CreateNewConnectionString();
         var config1          = new ClientConfig {
             MaxConnectRetries = 1
         };
         var config2 = new ClientConfig {
             MaxConnectRetries = 2
         };
         var client1 = provider.GetClient(connectionString, config1);
         var client2 = provider.GetClient(connectionString, config2);
         Assert.Equal(config1, client1.Config);
         Assert.Equal(config1, client2.Config);
         Assert.Equal(client1, client2);
     }
 }
Esempio n. 5
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. 6
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);
            }
        }