/// <summary> /// Initializes a new instance of the <see cref="LivenessCheckingStrategy"/> class. /// </summary> internal LivenessCheckingStrategy(Configuration configuration, SpecificationEngine specificationEngine, SystematicStrategy strategy) { this.Configuration = configuration; this.SpecificationEngine = specificationEngine; this.SchedulingStrategy = strategy; }
/// <summary> /// Initializes a new instance of the <see cref="ReplayStrategy"/> class. /// </summary> internal ReplayStrategy(Configuration configuration, SystematicStrategy suffixStrategy) { this.Configuration = configuration; this.ScheduleTrace = ScheduleTrace.Deserialize(configuration, out bool isFair); this.StepCount = 0; this.IsSchedulerFair = isFair; this.IsReplaying = true; this.SuffixStrategy = suffixStrategy; this.ErrorText = string.Empty; }
/// <summary> /// Creates a <see cref="SystematicStrategy"/> from the specified configuration. /// </summary> internal static SystematicStrategy Create(Configuration configuration, IRandomValueGenerator generator) { SystematicStrategy strategy = null; if (configuration.SchedulingStrategy is "replay") { strategy = new ReplayStrategy(configuration); } else if (configuration.SchedulingStrategy is "random") { strategy = new RandomStrategy(configuration.MaxFairSchedulingSteps, generator); } else if (configuration.SchedulingStrategy is "pct") { strategy = new PCTStrategy(configuration.MaxUnfairSchedulingSteps, configuration.StrategyBound, generator); } else if (configuration.SchedulingStrategy is "fairpct") { var prefixLength = configuration.SafetyPrefixBound is 0 ? configuration.MaxUnfairSchedulingSteps : configuration.SafetyPrefixBound; var prefixStrategy = new PCTStrategy(prefixLength, configuration.StrategyBound, generator); var suffixStrategy = new RandomStrategy(configuration.MaxFairSchedulingSteps, generator); strategy = new ComboStrategy(prefixStrategy, suffixStrategy); } else if (configuration.SchedulingStrategy is "probabilistic") { strategy = new ProbabilisticRandomStrategy(configuration.MaxFairSchedulingSteps, configuration.StrategyBound, generator); } else if (configuration.SchedulingStrategy is "rl") { strategy = new QLearningStrategy(configuration.MaxUnfairSchedulingSteps, generator); } else if (configuration.SchedulingStrategy is "dfs") { strategy = new DFSStrategy(configuration.MaxUnfairSchedulingSteps); } if (configuration.SchedulingStrategy != "replay" && configuration.ScheduleFile.Length > 0) { strategy = new ReplayStrategy(configuration, strategy); } return(strategy); }
/// <summary> /// Initializes a new instance of the <see cref="TemperatureCheckingStrategy"/> class. /// </summary> internal TemperatureCheckingStrategy(Configuration configuration, SystematicStrategy strategy) : base(configuration, strategy) { }
/// <summary> /// Initializes a new instance of the <see cref="TemperatureCheckingStrategy"/> class. /// </summary> internal TemperatureCheckingStrategy(Configuration configuration, SpecificationEngine specificationEngine, SystematicStrategy strategy) : base(configuration, specificationEngine, strategy) { }
/// <summary> /// Initializes a new instance of the <see cref="ComboStrategy"/> class. /// </summary> internal ComboStrategy(SystematicStrategy prefixStrategy, SystematicStrategy suffixStrategy) { this.PrefixStrategy = prefixStrategy; this.SuffixStrategy = suffixStrategy; }
/// <summary> /// Initializes a new instance of the <see cref="LivenessCheckingStrategy"/> class. /// </summary> internal LivenessCheckingStrategy(Configuration configuration, SystematicStrategy strategy) { this.Configuration = configuration; this.SchedulingStrategy = strategy; }