/// <summary> /// Initializes a new instance of the <see cref="TestingEngine"/> class. /// </summary> private TestingEngine(Configuration configuration, TestMethodInfo testMethodInfo) { this.Configuration = configuration; this.TestMethodInfo = testMethodInfo; this.DefaultLogger = new ConsoleLogger() { LogLevel = configuration.LogLevel }; this.Logger = this.DefaultLogger; this.Profiler = new Profiler(); this.PerIterationCallbacks = new HashSet <Action <uint> >(); this.TestReport = new TestReport(configuration); this.ReadableTrace = string.Empty; this.ReproducibleTrace = string.Empty; this.CancellationTokenSource = new CancellationTokenSource(); this.PrintGuard = 1; if (configuration.IsDebugVerbosityEnabled) { IO.Debug.IsEnabled = true; } // Do some sanity checking. string error = string.Empty; if (configuration.IsSystematicFuzzingEnabled && (configuration.SchedulingStrategy is "replay" || configuration.ScheduleFile.Length > 0)) { error = "Replaying a bug trace is not currently supported in systematic fuzzing."; } if (!string.IsNullOrEmpty(error)) { Error.Report(error); throw new InvalidOperationException(error); } this.Scheduler = OperationScheduler.Setup(configuration); TelemetryClient = TelemetryClient.GetOrCreate(this.Configuration); }