protected override void HandleNewSpec(BeginNewSpec newSpec) { if (UseTestCoordinator) { TestCoordinatorActorRef.Tell(newSpec); } }
public void Should_save_TestRunTree_as_JSON() { var testRunStore = new JsonPersistentTestRunStore(); var testRunCoordinator = Sys.ActorOf(Props.Create<TestRunCoordinator>()); var nodeIndexes = Enumerable.Range(1, 4).ToArray(); var nodeTests = NodeMessageHelpers.BuildNodeTests(nodeIndexes); var beginSpec = new BeginNewSpec(nodeTests.First().TypeName, nodeTests.First().MethodName, nodeTests); //begin a new spec testRunCoordinator.Tell(beginSpec); // create some messages for each node, the test runner, and some result messages // just like a real MultiNodeSpec var allMessages = NodeMessageHelpers.GenerateMessageSequence(nodeIndexes, 300); var runnerMessages = NodeMessageHelpers.GenerateTestRunnerMessageSequence(20); allMessages.UnionWith(runnerMessages); foreach (var message in allMessages) testRunCoordinator.Tell(message); //end the spec testRunCoordinator.Tell(new EndTestRun(), TestActor); var testRunData = ExpectMsg<TestRunTree>(); //save the test run var file = Path.GetTempFileName(); testRunStore.SaveTestRun(file, testRunData).ShouldBeTrue("Should have been able to save test run"); }
protected override void HandleNewSpec(BeginNewSpec beginNewSpec) { _teamCityFlowWriter = _teamCityTestSuiteWriter.OpenFlow(); _teamCityTestWriter = _teamCityFlowWriter.OpenTest($"{beginNewSpec.ClassName}.{beginNewSpec.MethodName}"); base.HandleNewSpec(beginNewSpec); }
public void TestRunCoordinator_should_publish_FactData_to_Subscribers_when_Specs_complete() { var testRunCoordinator = Sys.ActorOf(Props.Create<TestRunCoordinator>()); var nodeIndexes = Enumerable.Range(1, 4).ToArray(); var nodeTests = NodeMessageHelpers.BuildNodeTests(nodeIndexes); var beginSpec = new BeginNewSpec(nodeTests.First().TypeName, nodeTests.First().MethodName, nodeTests); //register the TestActor as a subscriber for FactData announcements testRunCoordinator.Tell(new TestRunCoordinator.SubscribeFactCompletionMessages(TestActor)); //begin a new spec testRunCoordinator.Tell(beginSpec); // create some messages for each node, the test runner, and some result messages // just like a real MultiNodeSpec var allMessages = NodeMessageHelpers.GenerateMessageSequence(nodeIndexes, 300); var runnerMessages = NodeMessageHelpers.GenerateTestRunnerMessageSequence(20); var passMessages = NodeMessageHelpers.GenerateResultMessage(nodeIndexes, true); allMessages.UnionWith(runnerMessages); allMessages.UnionWith(passMessages); foreach (var message in allMessages) testRunCoordinator.Tell(message); //end the spec testRunCoordinator.Tell(new EndSpec()); var factData = ExpectMsg<FactData>(); Assert.True(factData.Passed.Value, "Spec should have passed"); Assert.True(factData.NodeFacts.All(x => x.Value.Passed.Value), "All individual nodes should have reported test pass"); }
public void TestCoordinatorEnabledMessageSink_should_receive_TestRunTree_when_EndTestRun_is_received() { var consoleMessageSink = Sys.ActorOf(Props.Create(() => new ConsoleMessageSinkActor(true))); var nodeIndexes = Enumerable.Range(1, 4).ToArray(); var nodeTests = NodeMessageHelpers.BuildNodeTests(nodeIndexes); var beginSpec = new BeginNewSpec(nodeTests.First().TypeName, nodeTests.First().MethodName, nodeTests); consoleMessageSink.Tell(beginSpec); // create some messages for each node, the test runner, and some result messages // just like a real MultiNodeSpec var allMessages = NodeMessageHelpers.GenerateMessageSequence(nodeIndexes, 300); var runnerMessages = NodeMessageHelpers.GenerateTestRunnerMessageSequence(20); var passMessages = NodeMessageHelpers.GenerateResultMessage(nodeIndexes, true); allMessages.UnionWith(runnerMessages); allMessages.UnionWith(passMessages); foreach (var message in allMessages) consoleMessageSink.Tell(message); //end the spec consoleMessageSink.Tell(new EndSpec()); //end the test run... var sinkReadyToTerminate = consoleMessageSink.AskAndWait<MessageSinkActor.SinkCanBeTerminated>(new EndTestRun(), TimeSpan.FromSeconds(3)); Assert.NotNull(sinkReadyToTerminate); }
public void TestRunCoordinator_should_start_and_route_messages_to_SpecRunCoordinator() { var testRunCoordinator = Sys.ActorOf(Props.Create<TestRunCoordinator>()); var nodeIndexes = Enumerable.Range(1, 4).ToArray(); var nodeTests = NodeMessageHelpers.BuildNodeTests(nodeIndexes); var beginSpec = new BeginNewSpec(nodeTests.First().TypeName, nodeTests.First().MethodName, nodeTests); //begin a new spec testRunCoordinator.Tell(beginSpec); // create some messages for each node, the test runner, and some result messages // just like a real MultiNodeSpec var allMessages = NodeMessageHelpers.GenerateMessageSequence(nodeIndexes, 300); var runnerMessages = NodeMessageHelpers.GenerateTestRunnerMessageSequence(20); allMessages.UnionWith(runnerMessages); foreach(var message in allMessages) testRunCoordinator.Tell(message); //end the spec testRunCoordinator.Tell(new EndTestRun(), TestActor); var testRunData = ExpectMsg<TestRunTree>(); Assert.Equal(1, testRunData.Specs.Count()); var specMessages = new SortedSet<MultiNodeMessage>(); foreach (var spec in testRunData.Specs) { specMessages.UnionWith(spec.RunnerMessages); foreach(var fact in spec.NodeFacts) specMessages.UnionWith(fact.Value.EventStream); } Assert.True(allMessages.SetEquals(specMessages)); }
protected override void HandleNewSpec(BeginNewSpec newSpec) { WriteSpecMessage(string.Format("Beginning spec {0}.{1} on {2} nodes", newSpec.ClassName, newSpec.MethodName, newSpec.Nodes.Count)); base.HandleNewSpec(newSpec); }
protected abstract void HandleNewSpec(BeginNewSpec newSpec);
private void ReceiveBeginSpecRun(BeginNewSpec spec) { if (_currentSpecRunActor != null) throw new InvalidOperationException("EndSpec has not been called for previous run yet. Cannot begin next run."); //Create the new spec run actor _currentSpecRunActor = Context.ActorOf( Props.Create(() => new SpecRunCoordinator(spec.ClassName, spec.MethodName, spec.Nodes))); }
private void ReceiveBeginSpecRun(BeginNewSpec spec) { Guard.Assert(_currentSpecRunActor == null, "EndSpec has not been called for previous run yet. Cannot begin next run."); //Create the new spec run actor _currentSpecRunActor = Context.ActorOf( Props.Create(() => new SpecRunCoordinator(spec.ClassName, spec.MethodName, spec.Nodes))); }