Configuration class

The Coyote runtime and testing configuration.

public class Configuration

Public Members

name description
static Create() Creates a new configuration with default values.
DeadlockTimeout { get; } Value that controls how much time the deadlock monitor should wait during concurrency testing before reporting a potential deadlock. This value is in milliseconds.
MaxFairSchedulingSteps { get; } The maximum scheduling steps to explore for fair schedulers. By default this is set to 100,000 steps.
MaxFuzzingDelay { get; } Value that controls the maximum time an operation might get delayed during systematic fuzzing.
MaxUnfairSchedulingSteps { get; } The maximum scheduling steps to explore for unfair schedulers. By default this is set to 10,000 steps.
RandomGeneratorSeed { get; } Custom seed to be used by the random value generator. By default, this value is null indicating that no seed has been set.
TestingIterations { get; } Number of testing iterations.
TimeoutDelay { get; } Value that controls the probability of triggering a timeout during systematic testing. Decrease the value to increase the frequency of timeouts (e.g. a value of 1 corresponds to a 50% probability), or increase the value to decrease the frequency (e.g. a value of 10 corresponds to a 10% probability).
VerbosityLevel { get; } The level of verbosity to use during logging.
WithActivityCoverageReported(…) Updates the configuration to enable or disable reporting activity coverage.
WithAtomicOperationRaceCheckingEnabled(…) Updates the configuration with race checking for atomic operations enabled or disabled. If this race checking strategy is enabled, then the runtime will explore interleavings when invoking atomic operations, such as Interlocked methods.
WithCollectionAccessRaceCheckingEnabled(…) Updates the configuration with race checking for collection accesses enabled or disabled. If this race checking strategy is enabled, then the runtime will explore interleavings when concurrent operations try to access collections.
WithConsoleLoggingEnabled(…) Updates the configuration to log all runtime messages to the console, unless overridden by a custom ILogger.
WithCoverageInfoSerialized(…) Updates the configuration to enable or disable serializing the coverage information.
WithDeadlockTimeout(…) Updates the value that controls how much time the background deadlock monitor should wait during concurrency testing before reporting a potential deadlock.
WithDelayBoundingStrategy(…) Updates the configuration to use the delay-bounding exploration strategy during systematic testing. You can specify if you want to enable liveness checking, which is disabled by default, and an upper bound of possible delays, which by default can be up to 10.
WithLivenessTemperatureThreshold(…) Updates the configuration with the specified liveness temperature threshold during systematic testing. If this value is 0 it disables liveness checking. It is not recommended to explicitly set this value, instead use the default value which is assigned to MaxFairSchedulingSteps / 2.
WithLockAccessRaceCheckingEnabled(…) Updates the configuration with race checking for lock accesses enabled or disabled. If this race checking strategy is enabled, then the runtime will explore interleavings when concurrent operations try to access lock-based synchronization primitives.
WithMaxFuzzingDelay(…) Updates the value that controls the maximum time an operation might get delayed during systematic fuzzing.
WithMaxSchedulingSteps(…) Updates the configuration with the specified number of maximum scheduling steps to explore per iteration during systematic testing. The MaxUnfairSchedulingSteps is assigned the maxSteps value, whereas the MaxFairSchedulingSteps is assigned a value using the default heuristic, which is 10 * maxSteps. (2 methods)
WithNoBugTraceRepro(…) Updates the configuration with the ability to reproduce bug traces enabled or disabled. Disabling reproducibility allows skipping errors due to uncontrolled concurrency, for example when the program is only partially rewritten, or there is external concurrency that is not mocked, or when the program uses an API that is not yet supported.
WithPartiallyControlledConcurrencyAllowed(…) Updates the configuration with partially controlled concurrency allowed or disallowed.
WithPartiallyControlledDataNondeterminismAllowed(…) Updates the configuration with partially controlled data non-determinism allowed or disallowed.
WithPotentialDeadlocksReportedAsBugs(…) Updates the value that controls if potential deadlocks should be reported as bugs.
WithPrioritizationStrategy(…) Updates the configuration to use the priority-based exploration strategy during systematic testing. You can specify if you want to enable liveness checking, which is disabled by default, and an upper bound of possible priority changes, which by default can be up to 10.
WithProbabilisticStrategy(…) Updates the configuration to use the probabilistic exploration strategy during systematic testing. You can specify a value controlling the probability of each scheduling decision. This value is specified as the integer N in the equation 0.5 to the power of N. So for N=1, the probability is 0.5, for N=2 the probability is 0.25, N=3 you get 0.125, etc. By default, this value is 3.
WithQLearningStrategy() Updates the configuration to use the Q-learning exploration strategy during systematic testing.
WithRandomGeneratorSeed(…) Updates the seed used by the random value generator during systematic testing.
WithRandomStrategy() Updates the configuration to use the random exploration strategy during systematic testing.
WithReproducibleTrace(…) Updates the configuration to try reproduce the specified trace during systematic testing.
WithScheduleCoverageReported(…) Updates the configuration to enable or disable reporting schedule coverage.
WithSharedStateReductionEnabled(…) Updates the configuration with shared state reduction enabled or disabled. If this reduction strategy is enabled, then the runtime will attempt to reduce the schedule space by taking into account any ‘READ’ and ‘WRITE’ operations declared by invoking Read and Write.
WithSystematicFuzzingEnabled(…) Updates the configuration with systematic fuzzing enabled or disabled.
WithSystematicFuzzingFallbackEnabled(…) Updates the configuration with systematic fuzzing fallback enabled or disabled.
WithTelemetryEnabled(…) Updates the configuration with telemetry enabled or disabled.
WithTestingIterations(…) Updates the configuration with the specified number of iterations to run during systematic testing.
WithTestingTimeout(…) Updates the configuration with the specified systematic testing timeout in seconds.
WithTimeoutDelay(…) Updates the value that controls the probability of triggering a timeout during systematic testing.
WithTraceVisualizationEnabled(…) Updates the configuration with trace visualization enabled or disabled. If enabled, the testing engine can produce a DGML graph representing an execution leading up to a bug.
WithUncontrolledConcurrencyResolutionTimeout(…) Updates the values that control how much time the runtime should wait for each instance of uncontrolled concurrency to resolve before continuing exploration. The attempts parameter controls how many times to check if uncontrolled concurrency has resolved, whereas the delay parameter controls how long the runtime waits between each retry.
WithUncontrolledInvocationStackTraceLoggingEnabled(…) Updates the configuration with stack trace logging for uncontrolled invocations enabled or disabled.
WithVerbosityEnabled(…) Updates the configuration to use the specified verbosity level, or Info, if no level is specified. The default verbosity level is Error.
WithXmlLogEnabled(…) Updates the configuration with XML log generation enabled or disabled.

Protected Members

name description
Configuration() Initializes a new instance of the Configuration class.

See Also