public StressTestRunner( StressTestServer server, ITest test, IMessageBus messageBus, Type testClass, object[] constructorArguments, MethodInfo testMethod, object[] testMethodArguments, string skipReason, IReadOnlyList <BeforeAfterTestAttribute> beforeAfterAttributes, ExceptionAggregator aggregator, CancellationTokenSource cancellationTokenSource) : base( test, messageBus, testClass, constructorArguments, testMethod, testMethodArguments, skipReason, beforeAfterAttributes, aggregator, cancellationTokenSource) { _server = server; }
private XunitTestRunner CreateRunner(StressTestServer server, StressTestCase testCase) { var name = DisplayName; return(new StressTestRunner( server, new XunitTest(TestCase, name), MessageBus, TestClass, ConstructorArguments, TestMethod, TestMethodArguments, SkipReason, BeforeAfterAttributes, Aggregator, CancellationTokenSource)); }
protected override async Task <RunSummary> RunTestAsync() { var runSummary = new StressRunSummary { TestClassFullName = TestCase.TestMethod.TestClass.Class.Name, TestClass = TestCase.TestMethod.TestClass.Class.Name.Split('.').Last(), TestMethod = TestCase.TestMethodName, Variation = TestCase.Variation, RunStarted = DateTime.UtcNow, MachineName = _machineName, Framework = _framework, Architecture = IntPtr.Size > 4 ? "x64" : "x86", Iterations = TestCase.Iterations, }; // Warmup var server = new StressTestServer( TestCase.ServerType, TestCase.TestApplicationName, TestCase.TestMethodName, port: 5000, metricCollector: TestCase.MetricCollector); using (server) { var startResult = await server.StartAsync(); if (!startResult.SuccessfullyStarted) { _diagnosticMessageSink.OnMessage( new XunitDiagnosticMessage("Failed to start application server.")); return(new RunSummary() { Total = 1, Failed = 1 }); } else { using (startResult.ServerHandle) { await(Task) TestCase.WarmupMethod?.ToRuntimeMethod().Invoke(null, new[] { server.ClientFactory() }); TestCase.MetricCollector.Reset(); var runner = CreateRunner(server, TestCase); runSummary.Aggregate(await runner.RunAsync()); } } } if (runSummary.Failed != 0) { _diagnosticMessageSink.OnMessage( new XunitDiagnosticMessage($"No valid results for {TestCase.DisplayName}. {runSummary.Failed} of {TestCase.Iterations} iterations failed.")); } else { runSummary.PopulateMetrics(TestCase.MetricCollector); _diagnosticMessageSink.OnMessage(new XunitDiagnosticMessage(runSummary.ToString())); runSummary.PublishOutput(TestCase, MessageBus); } return(runSummary); }