/// <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;
 }
Пример #2
0
 /// <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;
 }
Пример #3
0
        /// <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)
 {
 }
Пример #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TemperatureCheckingStrategy"/> class.
 /// </summary>
 internal TemperatureCheckingStrategy(Configuration configuration, SpecificationEngine specificationEngine,
                                      SystematicStrategy strategy)
     : base(configuration, specificationEngine, strategy)
 {
 }
Пример #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ComboStrategy"/> class.
 /// </summary>
 internal ComboStrategy(SystematicStrategy prefixStrategy, SystematicStrategy suffixStrategy)
 {
     this.PrefixStrategy = prefixStrategy;
     this.SuffixStrategy = suffixStrategy;
 }
Пример #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LivenessCheckingStrategy"/> class.
 /// </summary>
 internal LivenessCheckingStrategy(Configuration configuration, SystematicStrategy strategy)
 {
     this.Configuration      = configuration;
     this.SchedulingStrategy = strategy;
 }