Beispiel #1
0
        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")));
        }
Beispiel #2
0
        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);
        }