public void TryEmitTraces_should_output_the_artifact_of_the_test_to_the_specified_directory() { // Arrange var configuration = Configuration.Create().WithNumberOfIterations(200). WithMaxSchedulingSteps(200). WithParallelBugFindingTasks(5). WithRandomSchedulingSeed(); var testArtifact = configuration.CreateTestArtifact(MethodBase.GetCurrentMethod(), new DateTime(2017, 10, 10)); var engine = new CompositeBugFindingEngine(configuration, runtimeHost => { var m1 = runtimeHost.New(MachineInterface.Sender <M1.ISender>().Bundler <M1.IBundler>().Receiver <M1.BugReceiver>()); m1.Configure(new Notify()); }); engine.Run(); // Act engine.TryEmitTraces(testArtifact.Directory, testArtifact.TraceNameBase); // Assert Assert.GreaterOrEqual(engine.TestReport.NumOfFoundBugs, 1); var traceFileInfos = new DirectoryInfo(testArtifact.Directory).EnumerateFiles(); Assert.IsTrue(traceFileInfos.Any(_ => Regex.IsMatch(_.Name, $@"{ testArtifact.TraceNameBase }_\d+_\d+\.pstrace"))); Assert.IsTrue(traceFileInfos.Any(_ => Regex.IsMatch(_.Name, $@"{ testArtifact.TraceNameBase }_\d+_\d+\.schedule"))); Assert.IsTrue(traceFileInfos.Any(_ => Regex.IsMatch(_.Name, $@"{ testArtifact.TraceNameBase }_\d+_\d+\.txt"))); }
public void TryEmitTraces_should_output_replayable_results() { // Arrange var bugFindingConfig = Configuration.Create().WithNumberOfIterations(200). WithMaxSchedulingSteps(200). WithParallelBugFindingTasks(5). WithRandomSchedulingSeed(); var testArtifact = bugFindingConfig.CreateTestArtifact(MethodBase.GetCurrentMethod(), new DateTime(2017, 10, 10)); var action = default(Action <RuntimeHost>); action = runtimeHost => { var m1 = runtimeHost.New(MachineInterface.Sender <M1.ISender>().Bundler <M1.IBundler>().Receiver <M1.BugReceiver>()); m1.Configure(new Notify()); }; var bugFindingEngine = new CompositeBugFindingEngine(bugFindingConfig, action); bugFindingEngine.Run(); // Act bugFindingEngine.TryEmitTraces(testArtifact.Directory, testArtifact.TraceNameBase); // Assert var reproTracePath = bugFindingEngine.EmittedTraceInfos.First().EmittedReproducableTracePath; var replayConfig = Configuration.Create().WithVerbosityEnabled(2);//. //WithAttachingDebuggerEnabled(); replayConfig.ScheduleFile = reproTracePath; var replayEngine = new CompositeReplayEngine(replayConfig, action); replayEngine.Run(); Assert.GreaterOrEqual(replayEngine.TestReport.NumOfFoundBugs, 1); }