public void RoutingDriverStressTest(int queryCount) { const int taskCount = 5; var startTime = DateTime.Now; Output.WriteLine($"[{startTime:HH:mm:ss.ffffff}] Started"); var workItem = new SoakRunWorkItem(_driver, _metrics, Output); ConnectionTerminator(); var tasks = new List <Task>(); for (var i = 0; i < taskCount; i++) { tasks.Add(workItem.RunWithRetries(queryCount / taskCount)); } Task.WaitAll(tasks.ToArray()); _cancellationTokenSource.Cancel(); var endTime = DateTime.Now; Output.WriteLine($"[{endTime:HH:mm:ss.ffffff}] Finished"); Output.WriteLine($"Total time spent: {endTime - startTime}"); PrintStatistics(); _driver.Dispose(); }
public async Task RoutingDriverStressTestAsync(int queryCount) { const int taskCount = 5; var startTime = DateTime.Now; Output.WriteLine($"[{startTime:HH:mm:ss.ffffff}] Started"); var workItem = new SoakRunWorkItem(_driver, _metrics, Output); var terminationTask = ConnectionTerminatorAsync(); var tasks = new List <Task>(); for (var i = 0; i < taskCount; i++) { tasks.Add(workItem.RunWithRetriesAsync(queryCount / taskCount)); } await Task.WhenAll(tasks); _cancellationTokenSource.Cancel(); await terminationTask; var endTime = DateTime.Now; Output.WriteLine($"[{endTime:HH:mm:ss.ffffff}] Finished"); Output.WriteLine($"Total time spent: {endTime - startTime}"); PrintStatistics(); await _driver.CloseAsync(); }
public async void SoakRunAsync(int threadCount) { var driver = GraphDatabase.Driver(RoutingServer, AuthToken, new Config { MetricsFactory = new DefaultMetricsFactory(), ConnectionTimeout = Config.InfiniteInterval, EncryptionLevel = EncryptionLevel.Encrypted, MaxConnectionPoolSize = 100, ConnectionAcquisitionTimeout = TimeSpan.FromMinutes(5) }); try { var startTime = DateTime.Now; Output.WriteLine($"[{startTime:HH:mm:ss.ffffff}] Started"); var metrics = ((Internal.Driver)driver).GetMetrics(); var workItem = new SoakRunWorkItem(driver, metrics, Output); var tasks = new List <Task>(); for (var i = 0; i < threadCount; i++) { tasks.Add(workItem.RunAsync()); } await Task.WhenAll(tasks); var poolMetrics = metrics.ConnectionPoolMetrics; Output.WriteLine(poolMetrics.ToContentString()); var endTime = DateTime.Now; Output.WriteLine($"[{endTime:HH:mm:ss.ffffff}] Finished"); Output.WriteLine($"Total time spent: {endTime - startTime}"); foreach (var value in poolMetrics) { var st = value.Value; st.Creating.Should().Be(0); st.Closing.Should().Be(0); st.InUse.Should().Be(0); st.Idle.Should().Be((int)(st.Created - st.Closed + st.FailedToCreate)); } } finally { await driver.CloseAsync(); } }