This commit is contained in:
Pantazis Deligiannis 2024-03-15 22:17:56 -06:00 коммит произвёл GitHub
Родитель 4294bd4417
Коммит 4d2f9dd4e0
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
6 изменённых файлов: 265 добавлений и 197 удалений

2
.config/dotnet-tools.json поставляемый
Просмотреть файл

@ -21,7 +21,7 @@
]
},
"microsoft.coyote.cli": {
"version": "1.7.10",
"version": "1.7.11",
"commands": [
"coyote"
]

Просмотреть файл

@ -9,7 +9,7 @@ authors:
- family-names: "Lal"
given-names: "Akash"
title: "Coyote"
version: 1.7.10
version: 1.7.11
date-released: 2020-02-28
url: "https://github.com/microsoft/coyote"
preferred-citation:

Просмотреть файл

@ -2,7 +2,7 @@
<!-- This file may be overwritten by automation. Only values allowed here are VersionPrefix and VersionSuffix. -->
<Project>
<PropertyGroup>
<VersionPrefix>1.7.10</VersionPrefix>
<VersionPrefix>1.7.11</VersionPrefix>
<VersionSuffix></VersionSuffix>
</PropertyGroup>
</Project>

444
History.md поставляемый
Просмотреть файл

@ -1,48 +1,57 @@
## vNext
## v1.7.11
- Added support for the `net8.0` target framework.
- Added support to optionally explore a race condition when using the
`AutoResetEvent.Reset` method.
## v1.7.10
- Fixed an issue with `Actor` not halting as expected in certain scenarios after explicitly raising
a `HaltEvent` event.
- Fixed an issue with `Actor` not halting as expected in certain scenarios after
explicitly raising a `HaltEvent` event.
## v1.7.9
- Added the `Microsoft.Coyote.Rewriting.SkipRewriting` attribute that allows skipping the rewriting
of a user-specified type.
- The `coyote` command line tool can now invoke non-static xUnit tests that have no parameters and
their declaring type has a constructor without parameters or only has the
`Xunit.Abstractions.ITestOutputHelper` as parameter.
- Added the `Microsoft.Coyote.Rewriting.SkipRewriting` attribute that allows
skipping the rewriting of a user-specified type.
- The `coyote` command line tool can now invoke non-static xUnit tests that have
no parameters and their declaring type has a constructor without parameters or
only has the `Xunit.Abstractions.ITestOutputHelper` as parameter.
- Fixed a bug with not reporting correctly actor coverage.
## v1.7.8
- Added rewriting support for fine-grained race-checking at memory-access and control-flow branching
locations. Race-checking at memory-access locations can be enabled during testing by setting the
`Configuration.WithMemoryAccessRaceCheckingEnabled` option, whereas race-checking at control-flow
branching locations can be enabled during testing by setting the
`Configuration.WithControlFlowRaceCheckingEnabled` option. Rewriting is enabled by default to
support both features, which adds extra instructions in the rewritten DLLs, but this can be
disabled by setting the `IsRewritingMemoryLocations` rewriting option to `false`.
- Added rewriting support for fine-grained race-checking at memory-access and
control-flow branching locations. Race-checking at memory-access locations can
be enabled during testing by setting the
`Configuration.WithMemoryAccessRaceCheckingEnabled` option, whereas
race-checking at control-flow branching locations can be enabled during
testing by setting the `Configuration.WithControlFlowRaceCheckingEnabled`
option. Rewriting is enabled by default to support both features, which adds
extra instructions in the rewritten DLLs, but this can be disabled by setting
the `IsRewritingMemoryLocations` rewriting option to `false`.
## v1.7.7
- Added rewriting support for `System.Threading.SpinWait` methods.
## v1.7.6
- Exposed the `ConsoleLogger` as public so that users can conveniently use it to write runtime logs
to the console.
- Exposed the `ConsoleLogger` as public so that users can conveniently use it to
write runtime logs to the console.
- Implemented more fake methods in the `ActorTestKit` class.
- Added a method for setting a custom logger when using the `ActorTestKit` class.
- Added a method for setting a custom logger when using the `ActorTestKit`
class.
- Added rewriting support for `System.Threading.Volatile` methods.
- Fixed a bug where merging coverage info could result in a rare race condition.
## v1.7.5
- Added support for controlling user-created `Thread` instances during testing.
- Added support for controlling `WaitHandle` and related APIs during testing.
- Added the `ActorTestKit` class for unit-testing actors and state machines in isolation.
- Disabled the automated fallback to randomized fuzzing during testing, if systematic testing fails.
- Added the `ActorTestKit` class for unit-testing actors and state machines in
isolation.
- Disabled the automated fallback to randomized fuzzing during testing, if
systematic testing fails.
- Fixed a bug in bug trace reporting.
## v1.7.4
- Added support for visualizing traces from testing task-based programs in DGML format.
- Implemented various runtime optimizations for more efficient coverage during testing.
- Added support for visualizing traces from testing task-based programs in DGML
format.
- Implemented various runtime optimizations for more efficient coverage during
testing.
- Optimized the modeling of various lock APIs during testing.
- Fixed a rewriting bug occurring when methods return task arrays.
@ -51,241 +60,289 @@
## v1.7.2
- Added support for fully controlling the `SemaphoreSlim` type during testing.
- Added support for detecting the `System.Guid` and `System.DateTime` APIs as sources of
uncontrolled data non-determinism during testing.
- Added the `Configuration.WithPartiallyControlledDataNondeterminismAllowed` API (and
`--partial-control <MODE>` CLI option) for configuring how uncontrolled data non-determinism
should be handled during testing.
- Added the `Configuration.WithScheduleCoverageReported` API (and `--schedule-coverage` CLI option)
for dumping coverage statistics and stack traces for scheduling decisions.
- Added the `Specification.RegisterStateHashingFunction` API for registering custom program state
hashing functions, which can be used to compute an approximation of the program state during
testing, as well as reporting it in the test statistics.
- Improved replay traces by registering the scheduling point type alongside each scheduling
decision.
- Fixed missing `net462` dependency in the `Microsoft.Coyote.Tool` NuGet package.
- Added support for detecting the `System.Guid` and `System.DateTime` APIs as
sources of uncontrolled data non-determinism during testing.
- Added the `Configuration.WithPartiallyControlledDataNondeterminismAllowed` API
(and `--partial-control <MODE>` CLI option) for configuring how uncontrolled
data non-determinism should be handled during testing.
- Added the `Configuration.WithScheduleCoverageReported` API (and
`--schedule-coverage` CLI option) for dumping coverage statistics and stack
traces for scheduling decisions.
- Added the `Specification.RegisterStateHashingFunction` API for registering
custom program state hashing functions, which can be used to compute an
approximation of the program state during testing, as well as reporting it in
the test statistics.
- Improved replay traces by registering the scheduling point type alongside each
scheduling decision.
- Fixed missing `net462` dependency in the `Microsoft.Coyote.Tool` NuGet
package.
## v1.7.1
- Added support for operation grouping for `Task` continuations.
- Added support for the delay-bounding exploration strategy.
- Added support for rewriting the `Thread.Yield` and `Interlocked` APIs.
- Updated the runtime to not fail with a potential deadlock when the debugger is attached, and
instead add a breakpoint, to avoid spurious failures when debugging.
- Hardened the `SchedulingPoint.Suppress` and `SchedulingPoint.Resume` methods so that they do not
resume scheduling earlier than expected when they are used in a nested manner.
- Updated the runtime to not fail with a potential deadlock when the debugger is
attached, and instead add a breakpoint, to avoid spurious failures when
debugging.
- Hardened the `SchedulingPoint.Suppress` and `SchedulingPoint.Resume` methods
so that they do not resume scheduling earlier than expected when they are used
in a nested manner.
- Fixed a runtime memory leak when test iterations terminated early.
- Fixed a rare stack-overflow exception when popping states during a `StateMachine` execution.
- Fixed a few cases of internally spawned tasks considered to be uncontrolled by the runtime.
- Fixed a rare stack-overflow exception when popping states during a
`StateMachine` execution.
- Fixed a few cases of internally spawned tasks considered to be uncontrolled by
the runtime.
## v1.7.0
- Updated the default `random` exploration strategy with a `portfolio` testing mode that uses a
tuned set of different exploration strategies to increase coverage for different bug patterns. The
portfolio will be transparently enhanced over time as new exploration strategies become available
inside Coyote. The Portfolio can be set to fair or unfair using `Configuration.WithPortfolioMode`
or the `--portfolio-mode` command-line option. The portfolio mode can be disabled and explicitly
set to one of the available exploration strategies by setting a strategy-related option such as
- Updated the default `random` exploration strategy with a `portfolio` testing
mode that uses a tuned set of different exploration strategies to increase
coverage for different bug patterns. The portfolio will be transparently
enhanced over time as new exploration strategies become available inside
Coyote. The Portfolio can be set to fair or unfair using
`Configuration.WithPortfolioMode` or the `--portfolio-mode` command-line
option. The portfolio mode can be disabled and explicitly set to one of the
available exploration strategies by setting a strategy-related option such as
`Configuration.WithRandomStrategy` or `-s <STRATEGY>`.
- Refactored the NuGet packages, by moving `Microsoft.Coyote.Actors` to its own dedicated package,
introducing a new `Microsoft.Coyote.Tool` package that contains the self-contained `coyote`
command-line tool (for users that do not want to manage `coyote` via the `Microsoft.Coyote.CLI`
.NET tool), introducing a new `Microsoft.Coyote.Core` package that only contains the core runtime
library of Coyote, and converting the `Microsoft.Coyote` NuGet package into a meta-package that
pulls all non-tool packages.
- Refactored the NuGet packages, by moving `Microsoft.Coyote.Actors` to its own
dedicated package, introducing a new `Microsoft.Coyote.Tool` package that
contains the self-contained `coyote` command-line tool (for users that do not
want to manage `coyote` via the `Microsoft.Coyote.CLI` .NET tool), introducing
a new `Microsoft.Coyote.Core` package that only contains the core runtime
library of Coyote, and converting the `Microsoft.Coyote` NuGet package into a
meta-package that pulls all non-tool packages.
- Moved the actor `Event` type under the `Microsoft.Coyote.Actors` namespace.
- Introduced a `Monitor.Event` type (nested in the `Microsoft.Coyote.Specifications.Monitor` class),
which must now be used for declaring specification monitor events, instead of the original `Event`
type above.
- Enhanced and streamlined the logging API and built-in loggers, which are now available in the
`Microsoft.Coyote.Logging` namespace, instead of `Microsoft.Coyote.IO`.
- Introduced a `Monitor.Event` type (nested in the
`Microsoft.Coyote.Specifications.Monitor` class), which must now be used for
declaring specification monitor events, instead of the original `Event` type
above.
- Enhanced and streamlined the logging API and built-in loggers, which are now
available in the `Microsoft.Coyote.Logging` namespace, instead of
`Microsoft.Coyote.IO`.
- Removed support for the end-of-life `net5.0` target framework.
## v1.6.2
- Exposed new `IActorRuntime.GetCurrentActorIds()` API that returns the `ActorId` for each active
actor managed by the runtime, as well as an `IActorRuntime.GetCurrentActorTypes()` API that
returns the `Type` of each active actor managed by the runtime. These APIs are not thread-safe and
should only be used for gathering statistics and debugging purposes.
- Exposed new `IActorRuntime.GetCurrentActorIds()` API that returns the
`ActorId` for each active actor managed by the runtime, as well as an
`IActorRuntime.GetCurrentActorTypes()` API that returns the `Type` of each
active actor managed by the runtime. These APIs are not thread-safe and should
only be used for gathering statistics and debugging purposes.
## v1.6.1
- Exposed new `IActorRuntime.GetActorExecutionStatus(id)` API that enables querying the actor
runtime for the current execution status of the actor with the specified id, as well as an
`IActorRuntime.GetCurrentActorCount()` API that returns the number of active actors managed by the
runtime. These APIs are not thread-safe and should only be used for gathering statistics and
- Exposed new `IActorRuntime.GetActorExecutionStatus(id)` API that enables
querying the actor runtime for the current execution status of the actor with
the specified id, as well as an `IActorRuntime.GetCurrentActorCount()` API
that returns the number of active actors managed by the runtime. These APIs
are not thread-safe and should only be used for gathering statistics and
debugging purposes.
- Exposed new `IActorRuntime.OnActorHalted` callback which is triggered when an actor has halted and
the runtime has stopped managing it.
- Exposed new `IActorRuntime.OnActorHalted` callback which is triggered when an
actor has halted and the runtime has stopped managing it.
## v1.6.0
- Exposed new `Operation` API that enables instrumenting, controlling and scheduling custom
concurrent operations.
- Exposed new `SchedulingPoint.SetCheckpoint` API that allows to capture all non-deterministic
decisions in the currently explored execution path and try replay them in subsequent test
iterations to optimize coverage of a subset of the state space.
- Exposed new `Operation` API that enables instrumenting, controlling and
scheduling custom concurrent operations.
- Exposed new `SchedulingPoint.SetCheckpoint` API that allows to capture all
non-deterministic decisions in the currently explored execution path and try
replay them in subsequent test iterations to optimize coverage of a subset of
the state space.
- Added support for intercepting and controlling asynchronous locks.
- Added support for rewriting the `SemaphoreSlim` type.
- The `Configuration.WithReplayStrategy` method was renamed to `Configuration.WithReproducibleTrace`
to make it more explicit that setting this option allows reproducing the specified trace.
- The `Configuration.WithReplayStrategy` method was renamed to
`Configuration.WithReproducibleTrace` to make it more explicit that setting
this option allows reproducing the specified trace.
- Various runtime improvements and bug fixes.
## v1.5.9
- Improved the runtime to try enforce atomicity when invoking a specification `Monitor`.
- Improved the runtime to try enforce atomicity when invoking a specification
`Monitor`.
## v1.5.8
- Fixed a bug in `coyote rewrite` related to rewriting nested types.
## v1.5.7
- Fixed a bug where a thrown exception was not propagating properly when invoking `Task.WaitAll`
during systematic testing.
- Fixed a bug where a thrown exception was not propagating properly when
invoking `Task.WaitAll` during systematic testing.
- Fixed a bug in `coyote rewrite` related to return types with nested generics.
## v1.5.6
- Fixed a bug in `coyote rewrite` when checking uncontrolled tasks from methods with a nested
generic return type.
- Fixed a bug in `coyote rewrite` when checking uncontrolled tasks from methods
with a nested generic return type.
## v1.5.5
- Added support in `coyote rewrite` for rewriting types with a required modifier (`modreq`).
- Added support in `coyote rewrite` for rewriting types with a required modifier
(`modreq`).
## v1.5.4
- Significantly improved runtime performance during partially-controlled concurrency testing.
- Significantly improved runtime performance during partially-controlled
concurrency testing.
## v1.5.3
- Improved the assembly loading logic when using the `coyote` tool.
- Fixed rare deadlock in test execution paths that exhibit partially-controlled concurrency.
- Fixed rare deadlock in test execution paths that exhibit partially-controlled
concurrency.
- Various other runtime improvements.
## v1.5.2
- Introduced new command-line interface for the `coyote` tool that builds on top of the
`System.CommandLine` library. This brings an improved and more robust user experience (e.g. better
CLI error messages), as well as other enhancements such as CLI option grouping.
- The `--coverage code` CLI option is not supported anymore as it was only supported on Windows and
has been superseded by the official .NET cross-platform code coverage infrastructure. See
[here](https://docs.microsoft.com/en-us/dotnet/core/additional-tools/dotnet-coverage) and
- Introduced new command-line interface for the `coyote` tool that builds on top
of the `System.CommandLine` library. This brings an improved and more robust
user experience (e.g. better CLI error messages), as well as other
enhancements such as CLI option grouping.
- The `--coverage code` CLI option is not supported anymore as it was only
supported on Windows and has been superseded by the official .NET
cross-platform code coverage infrastructure. See
[here](https://docs.microsoft.com/en-us/dotnet/core/additional-tools/dotnet-coverage)
and
[here](https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-code-coverage?tabs=windows).
The `--coverage` (or `-c`) CLI option is now used to enable activity coverage (replacing
`--coverage activity`), as discussed [here](https://microsoft.github.io/coyote/#how-to/coverage).
- The `--parallel N` CLI option is not supported anymore to bring the `coyote` tool experience in
line with the programmatic way of running Coyote tests (via the `TestingEngine` API), which did
not support built-in parallel testing. If needed, running parallel tests can still be achieved by
invoking multiple Coyote testing processes in parallel (e.g. via a script).
The `--coverage` (or `-c`) CLI option is now used to enable activity coverage
(replacing `--coverage activity`), as discussed
[here](https://microsoft.github.io/coyote/#how-to/coverage).
- The `--parallel N` CLI option is not supported anymore to bring the `coyote`
tool experience in line with the programmatic way of running Coyote tests (via
the `TestingEngine` API), which did not support built-in parallel testing. If
needed, running parallel tests can still be achieved by invoking multiple
Coyote testing processes in parallel (e.g. via a script).
## v1.5.1
- Simplified the `coyote` tool ASP.NET dependency.
- Partially controlled concurrency is now allowed by default during systematic testing. Disable via
the `--no-partial-control` command line option (or
- Partially controlled concurrency is now allowed by default during systematic
testing. Disable via the `--no-partial-control` command line option (or
`Configuration.WithPartiallyControlledConcurrencyAllowed(false)`).
- Added support for schedule space reduction based on read and write operations. Enable via the
`--reduce-shared-state` command line option (or `Configuration.WithSharedStateReductionEnabled`).
- Improved support for detecting potential deadlocks during partially controlled concurrency.
- Added support for schedule space reduction based on read and write operations.
Enable via the `--reduce-shared-state` command line option (or
`Configuration.WithSharedStateReductionEnabled`).
- Improved support for detecting potential deadlocks during partially controlled
concurrency.
- Binary rewriting improvements and fixes.
## v1.5.0
- Added runtime and rewriting support for testing ASP.NET controllers in the presence of
partially-controlled concurrency.
- Added support for rewriting the `HttpClient` type targeting ASP.NET controllers.
- Added runtime and rewriting support for testing ASP.NET controllers in the
presence of partially-controlled concurrency.
- Added support for rewriting the `HttpClient` type targeting ASP.NET
controllers.
- Improved runtime support for partially-controlled concurrency during testing.
- New option for skipping potential deadlocks in the presence of partially-controlled concurrency.
- The actor logging method `LogExceptionThrown` is now only called if the exception was not handled.
The `LogExceptionHandled` method can be used instead for handled exceptions.
- New option for skipping potential deadlocks in the presence of
partially-controlled concurrency.
- The actor logging method `LogExceptionThrown` is now only called if the
exception was not handled. The `LogExceptionHandled` method can be used
instead for handled exceptions.
- Various other runtime improvements and fixes.
## v1.4.3
- Added support for the `netstandard2.0` target framework.
- Added support for rewriting the non-generic `TaskCompletionSource` type.
- Added support for rewriting the `ValueTask` type (but `IValueTaskSource` is not supported).
- Added support for rewriting the `ValueTask` type (but `IValueTaskSource` is
not supported).
- Improvements to systematic fuzzing, especially for actor-based programs.
- Improvements to how thread interrupts are handled at the end of each test iteration.
- Tests now report the degree of concurrency and number of controlled operations.
- Improvements to how thread interrupts are handled at the end of each test
iteration.
- Tests now report the degree of concurrency and number of controlled
operations.
## v1.4.2
- Added support for the `net6.0` target framework.
- The `TestingEngine` is now giving a warning if the DLL being tested has not been rewritten.
- The number of controlled operations are now reported as part of test statistics.
- The `TestingEngine` is now giving a warning if the DLL being tested has not
been rewritten.
- The number of controlled operations are now reported as part of test
statistics.
- Improvements, optimizations and bug-fixes in binary rewriting.
- Added support for dumping the rewritten IL diff to a file through `--dump-il-diff`.
- Added support for dumping the rewritten IL diff to a file through
`--dump-il-diff`.
## v1.4.1
- Enabled automated fallback to systematic fuzzing upon detecting uncontrolled concurrency during
testing to increase usability. This feature is enabled by default and can be disabled via the
`no-fuzzing-fallback` command line option (or
`Configuration.WithSystematicFuzzingFallbackEnabled`).
- Added a new JSON test report that lists any detected invocations of uncontrolled methods.
- The `TestingEngine.TryEmitTraces` method was renamed to `TestingEngine.TryEmitReports` to reflect
that the reports do not include only traces.
- Enabled automated fallback to systematic fuzzing upon detecting uncontrolled
concurrency during testing to increase usability. This feature is enabled by
default and can be disabled via the `no-fuzzing-fallback` command line option
(or `Configuration.WithSystematicFuzzingFallbackEnabled`).
- Added a new JSON test report that lists any detected invocations of
uncontrolled methods.
- The `TestingEngine.TryEmitTraces` method was renamed to
`TestingEngine.TryEmitReports` to reflect that the reports do not include only
traces.
- The `IActorRuntimeLog.OnStrategyDescription` method was removed.
## v1.4.0
- Redesigned the systematic testing runtime to significantly improve its performance and simplicity.
- Redesigned the systematic testing runtime to significantly improve its
performance and simplicity.
- An `ActorId` of a halted actor can now be reused.
- The `coyote` tool can now resolve `aspnet`.
## v1.3.1
- Added rewriting support for testing race conditions with several `System.Collections.Concurrent`
data structures.
- Added rewriting support for testing `System.Collections.Generic.HashSet<T>` data races.
- Added the `SchedulingPoint.Suppress` and `SchedulingPoint.Resume` methods for suppressing and
resuming interleavings of enabled operations, accordingly.
- Added rewriting support for testing race conditions with several
`System.Collections.Concurrent` data structures.
- Added rewriting support for testing `System.Collections.Generic.HashSet<T>`
data races.
- Added the `SchedulingPoint.Suppress` and `SchedulingPoint.Resume` methods for
suppressing and resuming interleavings of enabled operations, accordingly.
- Fixed a memory leak in the testing engine.
## v1.3.0
- Improved the binary rewriting engine and fixed various rewriting bugs.
- Removed the deprecated `Microsoft.Coyote.Tasks` namespace. Testing task-based code should now only
be done via binary rewriting, instead of using a custom task type.
- Removed the `net48` target framework, can instead just use the `net462` target framework for
legacy .NET Framework projects.
- Removed the deprecated `Microsoft.Coyote.Tasks` namespace. Testing task-based
code should now only be done via binary rewriting, instead of using a custom
task type.
- Removed the `net48` target framework, can instead just use the `net462` target
framework for legacy .NET Framework projects.
## v1.2.8
- Improved the strategies used for systematic fuzzing.
- Fixed a rewriting bug related to the `TaskAwaiter` type.
## v1.2.7
- Added the `--no-repro` command line option (enabled also via `Configuration.WithNoBugTraceRepro`),
which disables the ability to reproduce buggy traces to allow 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.
- The uncontrolled concurrency errors have been updated to be more informative and point to the
documentation for further reading.
- Added the `--no-repro` command line option (enabled also via
`Configuration.WithNoBugTraceRepro`), which disables the ability to reproduce
buggy traces to allow 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.
- The uncontrolled concurrency errors have been updated to be more informative
and point to the documentation for further reading.
## v1.2.6
- Added an experimental rewriting pass that adds assertion checks to find data races in uses of the
`System.Collections.Generic.List<T>` and `System.Collections.Generic.Dictionary<TKey, TValue>`
collections.
- Added an experimental rewriting pass that adds assertion checks to find data
races in uses of the `System.Collections.Generic.List<T>` and
`System.Collections.Generic.Dictionary<TKey, TValue>` collections.
- Added support for the `net462` target framework.
## v1.2.5
- Added the `SchedulingPoint` static class that exposes methods for adding manual scheduling points
during systematic testing.
- Added an experimental systematic testing strategy that uses reinforcement learning. This is
enabled using the `--sch-rl` command line option or the `Configuration.WithRLStrategy` method.
- Added an experimental systematic fuzzing testing mode that uses delay injection instead of
systematic testing to find bugs. This can be enabled using the `--systematic-fuzzing` command
line option or the `Configuration.WithSystematicFuzzingEnabled` method.
- Added the `IActorRuntimeLog.OnEventHandlerTerminated` actor log callback that is called when an
event handler terminates.
- Fixed a bug where the `IActorRuntimeLog.OnHandleRaisedEvent` actor log callback was not invoked in
production.
- Added the `SchedulingPoint` static class that exposes methods for adding
manual scheduling points during systematic testing.
- Added an experimental systematic testing strategy that uses reinforcement
learning. This is enabled using the `--sch-rl` command line option or the
`Configuration.WithRLStrategy` method.
- Added an experimental systematic fuzzing testing mode that uses delay
injection instead of systematic testing to find bugs. This can be enabled
using the `--systematic-fuzzing` command line option or the
`Configuration.WithSystematicFuzzingEnabled` method.
- Added the `IActorRuntimeLog.OnEventHandlerTerminated` actor log callback that
is called when an event handler terminates.
- Fixed a bug where the `IActorRuntimeLog.OnHandleRaisedEvent` actor log
callback was not invoked in production.
## v1.2.4
- Improved how `coyote test` resolves ambiguous test method names.
- Fixed a bug where awaiting a task from a previous test iteration that was canceled due to
`ExecutionCanceledException` would hang the tester.
- Fixed a bug where awaiting a task from a previous test iteration that was
canceled due to `ExecutionCanceledException` would hang the tester.
## v1.2.3
- Exposed the `TextWriterLogger` type.
- Fixed a configuration bug where the `fairpct` strategy would be picked instead of `probabilistic`.
- Fixed a configuration bug where the `fairpct` strategy would be picked instead
of `probabilistic`.
## v1.2.2
- Added the `Specification.IsEventuallyCompletedSuccessfully` API for checking if a task eventually
completes successfully.
- Added the `Configuration.WithTestingTimeout` API for specifying a systematic testing timeout
instead of iterations.
- Added the `Specification.IsEventuallyCompletedSuccessfully` API for checking
if a task eventually completes successfully.
- Added the `Configuration.WithTestingTimeout` API for specifying a systematic
testing timeout instead of iterations.
- Optimized state space exploration in programs using `Task.Delay`.
- Added support for the `net5.0` target framework.
- Removed the `net47` target framework.
## v1.2.1
- Added the `OnEventIgnored` and `OnEventDeferred` callbacks in the `Actor` type.
- Added the `OnEventIgnored` and `OnEventDeferred` callbacks in the `Actor`
type.
## v1.2.0
- Added support for systematically testing actors and tasks together using rewriting.
- Added support for systematically testing actors and tasks together using
rewriting.
- Hardened the systematic testing runtime.
## v1.1.5
@ -293,22 +350,27 @@ concurrent operations.
- Added detection of invoking unsupported APIs during systematic testing.
## v1.1.4
- Added missing `coyote rewrite` dependencies in the `Microsoft.Coyote.Test` package.
- Added missing `coyote rewrite` dependencies in the `Microsoft.Coyote.Test`
package.
## v1.1.3
- Optimizations and fixes in binary rewriting.
## v1.1.2
- Added basic support for the `System.Threading.Tasks.Parallel` type during rewriting.
- Fixed a bug in `coyote rewrite` that was incorrectly copying dependencies after rewriting.
- Added basic support for the `System.Threading.Tasks.Parallel` type during
rewriting.
- Fixed a bug in `coyote rewrite` that was incorrectly copying dependencies
after rewriting.
## v1.1.1
- Renamed `TestingEngine.ReproducibleTrace` to fix typo in the API name.
- Fixed some bugs in `coyote rewrite`.
## v1.1.0
- Added experimental support for testing unmodified task-based programs using binary rewriting.
- Added support for log severity in the logger and converted to an `ILogger` interface.
- Added experimental support for testing unmodified task-based programs using
binary rewriting.
- Added support for log severity in the logger and converted to an `ILogger`
interface.
- Optimized various internals of the task testing runtime.
## v1.0.17
@ -320,46 +382,49 @@ concurrent operations.
- Optimized various internals of the task testing runtime.
## v1.0.15
- Fixed the `Task.WhenAny` and `Task.WhenAll` APIs so that they execute asynchronously during
systematic testing.
- Fixed the `Task.WhenAny` and `Task.WhenAll` APIs so that they throw the proper argument exceptions
during systematic testing.
- Fixed the `Task.WhenAny` and `Task.WhenAll` APIs so that they execute
asynchronously during systematic testing.
- Fixed the `Task.WhenAny` and `Task.WhenAll` APIs so that they throw the proper
argument exceptions during systematic testing.
## v1.0.14
- Added missing `Task<TResult>.UncontrolledTask` API.
- Fixed a bug in the testing runtime for controlled tasks.
## v1.0.13
- Fixed a bug in the testing runtime for controlled tasks that could lead to a stack overflow.
- Fixed a bug in the testing runtime for controlled tasks that could lead to a
stack overflow.
- Optimized various internals of the testing runtime.
## v1.0.12
- Introduced a new `EventGroup` API for actors, which replaces operation groups, that allows
improved tracing and awaiting of long running actor operations.
- The `Task.Yield` API can now be used to de-prioritize the executing operation during testing.
- Introduced a new `EventGroup` API for actors, which replaces operation groups,
that allows improved tracing and awaiting of long running actor operations.
- The `Task.Yield` API can now be used to de-prioritize the executing operation
during testing.
- Added missing APIs in the `Microsoft.Coyote.Tasks.Semaphore` type.
- Fixed two bugs in the systematic testing scheduler.
## v1.0.11
- Fixed an issue that did not allow systematic and non-systematic unit tests to run on the same
process.
- Fixed an issue that did not allow systematic and non-systematic unit tests to
run on the same process.
- Fixed a bug in the `TestingEngine` logger.
## v1.0.10
- Fixed the NuGet symbol packages.
## v1.0.9
- Introduced a new `Microsoft.Coyote.Test` package that contains the `Test` attribute and the
`TestingEngine` type for writing unit tests.
- The core `Microsoft.Coyote` does not contain anymore `Test` and `TestingEngine`, which were moved
to the `Microsoft.Coyote.Test` package.
- Introduced a new `Microsoft.Coyote.Test` package that contains the `Test`
attribute and the `TestingEngine` type for writing unit tests.
- The core `Microsoft.Coyote` does not contain anymore `Test` and
`TestingEngine`, which were moved to the `Microsoft.Coyote.Test` package.
- Added support for optional anonymized telemetry in the `TestingEngine`.
- Optimized various internals of the systematic testing scheduler.
- Fixed some issues in the scripts.
## v1.0.8
- The core `Microsoft.Coyote` project is now targeting only .NET Standard, allowing it to be
consumed by any project that supports `netstandard2.0` and above.
- The core `Microsoft.Coyote` project is now targeting only .NET Standard,
allowing it to be consumed by any project that supports `netstandard2.0` and
above.
- Removed the `net46` target.
- Fixed bug in using the global dotnet tool.
@ -370,36 +435,39 @@ concurrent operations.
- Fixed a bug in the `SynchronizedBlock` type.
## v1.0.6
- Added a `SynchronizedBlock` type to model the semantics of the C# `lock` statement.
- Simplified the `Configuration` APIs for setting max-steps and liveness related heuristics.
- Added a `SynchronizedBlock` type to model the semantics of the C# `lock`
statement.
- Simplified the `Configuration` APIs for setting max-steps and liveness related
heuristics.
- Fixed code coverage and added support for code coverage on `netcoreapp3.1`.
## v1.0.5
- Added a --version argument to the `coyote` command line tool.
- Added a dotnet tool package called `Microsoft.Coyote.CLI` to install the `coyote` command line
tool and running it without an explicit path.
- Added a dotnet tool package called `Microsoft.Coyote.CLI` to install the
`coyote` command line tool and running it without an explicit path.
- Exposed the `ReadableTrace` and `ReproducibleTrace` members of
`Microsoft.Coyote.SystematicTesting.TestingEngine` as public.
- Fixed a bug in activity coverage reporting for `netcoreapp3.1`.
- Fixed some bugs in parallel testing.
## v1.0.4
- Added new `Microsoft.Coyote.Configuration.WithReplayStrategy` method for programmatically
assigning a trace to replay.
- Added new `Microsoft.Coyote.Configuration.WithReplayStrategy` method for
programmatically assigning a trace to replay.
- Added support for the `netstandard2.1`, `netcoreapp3.1` and `net48` targets.
- Removed support for the `netcoreapp2.2` target, which reached end of life.
- Fixed various bugs in the documentation.
## v1.0.3
- Fixed an issue when invoking `Microsoft.Coyote.Tasks.Task.ExploreContextSwitch` during a
production run.
- Fixed an issue when invoking
`Microsoft.Coyote.Tasks.Task.ExploreContextSwitch` during a production run.
## v1.0.2
- Made ActorRuntimeLogGraphBuilder public.
- Added CreateStateMachine to IActorRuntimeLog.
## v1.0.1
- Fixed an issue in the runtime (there should always be a default task runtime instance).
- Fixed an issue in the runtime (there should always be a default task runtime
instance).
## v1.0.0
- The initial release of the Coyote set of libraries and test tools.

2
Scripts/encode_nuget_sign_certificate.ps1 поставляемый
Просмотреть файл

@ -22,7 +22,7 @@ az keyvault secret download --file $result_file --encoding base64 --id $url
$file_content_bytes = Get-Content $result_file -AsByteStream
$base64_value = [System.Convert]::ToBase64String($file_content_bytes)
$base64_value | clip
Set-Clipboard $base64_value
Remove-Item $result_file

10
Tests/compare-rewriting-diff-logs.ps1 поставляемый
Просмотреть файл

@ -13,11 +13,11 @@ $targets = [ordered]@{
}
$expected_hashes = [ordered]@{
"rewriting" = "4CDA15D6A718DA0290489A50906F1B2364E9B4562F72D48A59284299B783C5BF"
"rewriting-helpers" = "676906904C5AB80B10069113CA70F5D5EA26A0C2BFB8D6B4EAE46E602BF1AEAE"
"testing" = "786F4C49E4C7361F9D91BA0DC61E05F33E3E04BB284ACF204BB9DBD73498AFEB"
"actors" = "492A23570BEDA4A9DF0D55DBCD7DB7B5D43A7FA1E9906BFF0CF98E477BBBBF55"
"actors-testing" = "C9E531EC9C367CFA9E44DCC1F9524D2D92F026E0744CC7C65FE016B621E5B659"
"rewriting" = "F5A50C959279CCC2A472B54B483D96488BD93C941B357F638C49B4B3462081E7"
"rewriting-helpers" = "DF8CF299C162ECA5392793BF5E3E6D7C8B61A75E029501ED6F41C1DD1AD3183B"
"testing" = "60F9D004CB61985FCFE111D2E25912124353FB3A97F25A75F301F5B647E7136B"
"actors" = "11AAFFA693116B24EB3EA152EE96757D8E9F7C57FFD3213ED02CDF1E9180D3D7"
"actors-testing" = "492B76D5ADE4E6EEA94A4AD1A37AD9DF911C81660600609FA1E9DF5D1B7AD860"
}
Write-Comment -prefix "." -text "Comparing the test rewriting diff logs" -color "yellow"