diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index fd3a04477..3be1c5ee5 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,19 +3,19 @@ "isRoot": true, "tools": { "dotnet-counters": { - "version": "6.0.351802", + "version": "8.0.452401", "commands": [ "dotnet-counters" ] }, "dotnet-dump": { - "version": "6.0.351802", + "version": "8.0.452401", "commands": [ "dotnet-dump" ] }, "dotnet-ilverify": { - "version": "7.0.0", + "version": "8.0.0", "commands": [ "ilverify" ] diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 34b3d7c97..3c5c097b8 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -26,10 +26,10 @@ jobs: uses: NuGet/setup-nuget@v1 with: nuget-version: '6.x' - - name: Setup .NET 7.0 SDK + - name: Setup .NET 8.0 SDK uses: actions/setup-dotnet@v1 with: - dotnet-version: '7.0.x' + dotnet-version: '8.0.x' - name: Set environment variables run: echo "COYOTE_CLI_TELEMETRY_OPTOUT=1" >> $GITHUB_ENV # Initializes the CodeQL tools for scanning. diff --git a/.github/workflows/test-coyote.yml b/.github/workflows/test-coyote.yml index a48f02906..e143c7ddd 100644 --- a/.github/workflows/test-coyote.yml +++ b/.github/workflows/test-coyote.yml @@ -30,18 +30,14 @@ jobs: uses: NuGet/setup-nuget@v1 with: nuget-version: '6.x' - - name: Setup .NET 7.0 SDK - uses: actions/setup-dotnet@v1 - with: - dotnet-version: '7.0.x' - - name: Setup .NET 6.0 SDK - uses: actions/setup-dotnet@v1 - with: - dotnet-version: '6.0.x' - - name: Setup .NET Core 3.1 SDK - uses: actions/setup-dotnet@v1 + - name: Setup .NET SDK + uses: actions/setup-dotnet@v3 with: - dotnet-version: '3.1.x' + dotnet-version: | + 3.1.x + 6.0.x + 7.0.x + 8.0.x - name: Setup debugging tools if: ${{ matrix.platform == 'windows-latest' }} run: | diff --git a/.github/workflows/test-performance.yml b/.github/workflows/test-performance.yml index 271f0f38b..3482ef588 100644 --- a/.github/workflows/test-performance.yml +++ b/.github/workflows/test-performance.yml @@ -23,10 +23,10 @@ jobs: uses: NuGet/setup-nuget@v1 with: nuget-version: '6.x' - - name: Setup .NET 7.0 SDK + - name: Setup .NET 8.0 SDK uses: actions/setup-dotnet@v1 with: - dotnet-version: '7.0.x' + dotnet-version: '8.0.x' - name: Setup Powershell run: ./Scripts/install-pwsh.cmd - name: Build Coyote projects diff --git a/Common/build.props b/Common/build.props index a146c2cb6..07f418cd2 100644 --- a/Common/build.props +++ b/Common/build.props @@ -16,6 +16,9 @@ LICENSE $(MSBuildThisFileDirectory)/../bin/nuget + 10.0 @@ -48,10 +51,15 @@ false true true - net7.0 + true + false + true + true + net8.0 $(TargetFrameworks);netstandard2.0 $(TargetFrameworks);netcoreapp3.1 $(TargetFrameworks);net6.0 + $(TargetFrameworks);net7.0 $(TargetFrameworks);net462 diff --git a/Samples/CloudMessaging/run-mock.cmd b/Samples/CloudMessaging/run-mock.cmd index 8baeb9389..54bad474d 100644 --- a/Samples/CloudMessaging/run-mock.cmd +++ b/Samples/CloudMessaging/run-mock.cmd @@ -1,2 +1,2 @@ cd %~dp0 -dotnet ..\..\bin\net7.0\coyote.dll test /../bin/net7.0/Raft.Mocking.dll -i 1000 -ms 500 -graph-bug +dotnet ..\..\bin\net8.0\coyote.dll test /../bin/net8.0/Raft.Mocking.dll -i 1000 -ms 500 -graph-bug diff --git a/Samples/CloudMessaging/run-nondeterminism.cmd b/Samples/CloudMessaging/run-nondeterminism.cmd index 6917ef129..3c201ef3c 100644 --- a/Samples/CloudMessaging/run-nondeterminism.cmd +++ b/Samples/CloudMessaging/run-nondeterminism.cmd @@ -1,2 +1,2 @@ cd %~dp0 -dotnet ..\..\bin\net7.0\coyote.dll test ../bin/net7.0/Raft.Nondeterminism.dll -i 1000 -ms 500 -graph-bug +dotnet ..\..\bin\net8.0\coyote.dll test ../bin/net8.0/Raft.Nondeterminism.dll -i 1000 -ms 500 -graph-bug diff --git a/Samples/CloudMessaging/run.cmd b/Samples/CloudMessaging/run.cmd index 15eb9ba91..087d83c94 100644 --- a/Samples/CloudMessaging/run.cmd +++ b/Samples/CloudMessaging/run.cmd @@ -1 +1 @@ -dotnet %~dp0\..\bin\net7.0\Raft.Azure.dll --connection-string %CONNECTION_STRING% --topic-name rafttopic --num-requests 5 --local-cluster-size 5 +dotnet %~dp0\..\bin\net8.0\Raft.Azure.dll --connection-string %CONNECTION_STRING% --topic-name rafttopic --num-requests 5 --local-cluster-size 5 diff --git a/Samples/Common/TestDriver/rewrite.coyote.json b/Samples/Common/TestDriver/rewrite.coyote.json index 9a1028ab7..a4aa0a6f4 100644 --- a/Samples/Common/TestDriver/rewrite.coyote.json +++ b/Samples/Common/TestDriver/rewrite.coyote.json @@ -1,5 +1,5 @@ { - "AssembliesPath": "../bin/net7.0", + "AssembliesPath": "../bin/net8.0", "Assemblies": [ "AccountManager.dll", "AccountManager.ETags.dll", diff --git a/Samples/Common/build.props b/Samples/Common/build.props index cc18b0450..17f17cdd9 100644 --- a/Samples/Common/build.props +++ b/Samples/Common/build.props @@ -4,8 +4,8 @@ CoyoteSamples Microsoft Corporation Copyright © Microsoft Corporation. - 10.0 - net7.0 + 12.0 + net8.0 False False True diff --git a/Samples/Scripts/run-tests.ps1 b/Samples/Scripts/run-tests.ps1 index 760099863..0d9e3cec0 100644 --- a/Samples/Scripts/run-tests.ps1 +++ b/Samples/Scripts/run-tests.ps1 @@ -7,7 +7,7 @@ CheckPSVersion Write-Comment -prefix "." -text "Testing the Coyote samples" -color "yellow" -$framework = "net7.0" +$framework = "net8.0" $tests = "$PSScriptRoot/../Common/bin/$framework/TestDriver.dll" if (-not (Test-Path $tests)) { Write-Error "tests for the Coyote samples not found." diff --git a/Samples/WebApps/ImageGalleryAspNet/ImageGallery/design.dgml b/Samples/WebApps/ImageGalleryAspNet/ImageGallery/design.dgml index b6d3d0596..0d6d6e9b1 100644 --- a/Samples/WebApps/ImageGalleryAspNet/ImageGallery/design.dgml +++ b/Samples/WebApps/ImageGalleryAspNet/ImageGallery/design.dgml @@ -617,7 +617,7 @@ - + @@ -869,13 +869,13 @@ - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/Samples/WebApps/ImageGalleryAspNet/rewrite.coyote.json b/Samples/WebApps/ImageGalleryAspNet/rewrite.coyote.json index 14ce638a7..6beb421ac 100644 --- a/Samples/WebApps/ImageGalleryAspNet/rewrite.coyote.json +++ b/Samples/WebApps/ImageGalleryAspNet/rewrite.coyote.json @@ -1,5 +1,5 @@ { - "AssembliesPath": "./bin/net7.0", + "AssembliesPath": "./bin/net8.0", "OutputPath": "./bin/coyote", "Assemblies": [ "ImageGalleryService.dll", diff --git a/Samples/WebApps/PetImagesAspNet/PetImages.Tests/rewrite.coyote.json b/Samples/WebApps/PetImagesAspNet/PetImages.Tests/rewrite.coyote.json index b7cc8ff97..2cef38260 100644 --- a/Samples/WebApps/PetImagesAspNet/PetImages.Tests/rewrite.coyote.json +++ b/Samples/WebApps/PetImagesAspNet/PetImages.Tests/rewrite.coyote.json @@ -1,5 +1,5 @@ { - "AssembliesPath": "./bin/net7.0", + "AssembliesPath": "./bin/net8.0", "Assemblies": [ "PetImages.dll", "PetImages.Tests.dll" diff --git a/Scripts/CI/azure-nuget-sign-publish.yml b/Scripts/CI/azure-nuget-sign-publish.yml index 205f322f9..a552c9165 100644 --- a/Scripts/CI/azure-nuget-sign-publish.yml +++ b/Scripts/CI/azure-nuget-sign-publish.yml @@ -7,6 +7,11 @@ steps: inputs: versionSpec: 6.x +- task: UseDotNet@2 + displayName: 'Install .NET 8.0 SDK' + inputs: + version: 8.0.x + - task: UseDotNet@2 displayName: 'Install .NET 7.0 SDK' inputs: @@ -38,6 +43,36 @@ steps: failOnStderr: true pwsh: true +- task: EsrpCodeSigning@2 + displayName: 'ESRP CodeSigning .NET 8.0' + inputs: + ConnectedServiceName: CoyoteNugetSign + FolderPath: bin\net8.0 + signConfigType: inlineSignParams + inlineOperation: | + [ + { + "KeyCode": "CP-230012", + "OperationCode": "SigntoolSign", + "Parameters": { + "OpusName": "Microsoft.Coyote", + "OpusInfo": "https://github.com/Microsoft/Coyote", + "FileDigest": "/fd \"SHA256\"", + "PageHash": "/PH", + "TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" + }, + "ToolName": "sign", + "ToolVersion": "1.0" + }, + { + "KeyCode": "CP-230012", + "OperationCode": "SigntoolVerify", + "Parameters": {}, + "ToolName": "sign", + "ToolVersion": "1.0" + } + ] + - task: EsrpCodeSigning@2 displayName: 'ESRP CodeSigning .NET 7.0' inputs: diff --git a/Scripts/common.psm1 b/Scripts/common.psm1 index fe1876210..3cf2b6e3d 100644 --- a/Scripts/common.psm1 +++ b/Scripts/common.psm1 @@ -23,7 +23,7 @@ function Invoke-CoyoteTool([String]$cmd, [String]$dotnet, [String]$framework, [S $command = "$coyote $cmd $target" } - if ($command -eq "rewrite" -and $framework -ne "netcoreapp3.1" -and $framework -ne "net6.0" -and $framework -ne "net7.0" -and $IsWindows) { + if ($command -eq "rewrite" -and $framework -ne "netcoreapp3.1" -and $framework -ne "net6.0" -and $framework -ne "net7.0" -and $framework -ne "net8.0" -and $IsWindows) { # NOTE: Mono.Cecil cannot sign assemblies on unix platforms. $command = "$command -snk $key" } diff --git a/Scripts/gen-docs.ps1 b/Scripts/gen-docs.ps1 index abba4e023..271f8f3fa 100644 --- a/Scripts/gen-docs.ps1 +++ b/Scripts/gen-docs.ps1 @@ -3,7 +3,7 @@ $root_dir = "$PSScriptRoot\.." $packages_path = "$root_dir\packages" -$framework = "net7.0" +$framework = "net8.0" Import-Module $PSScriptRoot\common.psm1 -Force diff --git a/Scripts/run-benchmark-history.ps1 b/Scripts/run-benchmark-history.ps1 index 758c5fe30..d4717ad32 100644 --- a/Scripts/run-benchmark-history.ps1 +++ b/Scripts/run-benchmark-history.ps1 @@ -41,7 +41,7 @@ function RestoreBenchmark() { Invoke-Expression "sed -i 's/\\Performance.Tests.csproj/\\Microsoft.Coyote.Performance.Tests.csproj/' $RootDir\Coyote.sln" } -$benchmarks_dir = "$RootDir/Tools/BenchmarkRunner/bin/net7.0" +$benchmarks_dir = "$RootDir/Tools/BenchmarkRunner/bin/net8.0" $benchmark_runner = "BenchmarkRunner.exe" $index = 0 diff --git a/Scripts/run-benchmarks.ps1 b/Scripts/run-benchmarks.ps1 index c59c2c935..f3e2cc786 100644 --- a/Scripts/run-benchmarks.ps1 +++ b/Scripts/run-benchmarks.ps1 @@ -30,7 +30,7 @@ if ($local -eq ""){ } $current_dir = (Get-Item -Path "./").FullName -$benchmarks_dir = "$PSScriptRoot/../Tools/BenchmarkRunner/bin/net7.0" +$benchmarks_dir = "$PSScriptRoot/../Tools/BenchmarkRunner/bin/net8.0" $benchmark_runner = "BenchmarkRunner.exe" $artifacts_dir = "$current_dir/benchmark_$commit" diff --git a/Scripts/run-tests.ps1 b/Scripts/run-tests.ps1 index bfdba5788..46c978b8c 100644 --- a/Scripts/run-tests.ps1 +++ b/Scripts/run-tests.ps1 @@ -2,8 +2,8 @@ # Licensed under the MIT License. param( - [ValidateSet("net7.0", "net6.0", "netcoreapp3.1", "net462")] - [string]$framework = "net7.0", + [ValidateSet("net8.0", "net7.0", "net6.0", "netcoreapp3.1", "net462")] + [string]$framework = "net8.0", [ValidateSet("all", "runtime", "rewriting", "testing", "actors", "actors-testing", "tools")] [string]$test = "all", [string]$filter = "", @@ -53,12 +53,12 @@ foreach ($kvp in $targets.GetEnumerator()) { } $target = "$PSScriptRoot/../Tests/$($kvp.Value)/$($kvp.Value).csproj" - if ($f -eq "net7.0") { + if ($f -eq "net8.0") { $AssemblyName = GetAssemblyName($target) - $command = [IO.Path]::Combine($PSScriptRoot, "..", "Tests", $($kvp.Value), "bin", "net7.0", "$AssemblyName.dll") + $command = [IO.Path]::Combine($PSScriptRoot, "..", "Tests", $($kvp.Value), "bin", "net8.0", "$AssemblyName.dll") $command = $command + ' -r "' + [IO.Path]::Combine( ` - $PSScriptRoot, "..", "Tests", $($kvp.Value), "bin", "net7.0", "*.dll") + '"' - $command = $command + ' -r "' + [IO.Path]::Combine($PSScriptRoot, "..", "bin", "net7.0", "*.dll") + '"' + $PSScriptRoot, "..", "Tests", $($kvp.Value), "bin", "net8.0", "*.dll") + '"' + $command = $command + ' -r "' + [IO.Path]::Combine($PSScriptRoot, "..", "bin", "net8.0", "*.dll") + '"' $command = $command + ' -r "' + [IO.Path]::Combine($dotnet_runtime_path, $runtime_version, "*.dll") + '"' $command = $command + ' -r "' + [IO.Path]::Combine($aspnet_runtime_path, $runtime_version, "*.dll") + '"' Invoke-ToolCommand -tool $ilverify -cmd $command -error_msg "found corrupted assembly rewriting" diff --git a/Source/Test/Rewriting/RewritingOptions.cs b/Source/Test/Rewriting/RewritingOptions.cs index 21042884a..165409a36 100644 --- a/Source/Test/Rewriting/RewritingOptions.cs +++ b/Source/Test/Rewriting/RewritingOptions.cs @@ -308,7 +308,9 @@ private static bool TryResolveTargetFramework(Assembly assembly, out string reso { if (tokens[0] == ".NETCoreApp") { - resolvedTargetFramework = tokens[1] is "v7.0" ? "net7.0" : + resolvedTargetFramework = + tokens[1] is "v8.0" ? "net8.0" : + tokens[1] is "v7.0" ? "net7.0" : tokens[1] is "v6.0" ? "net6.0" : tokens[1] is "v3.1" ? "netcoreapp3.1" : resolvedTargetFramework; @@ -331,10 +333,10 @@ private static bool TryResolveTargetFramework(Assembly assembly, out string reso /// { /// // The directory with the assemblies to rewrite. This path is relative /// // to this configuration file. - /// "AssembliesPath": "./bin/net7.0", + /// "AssembliesPath": "./bin/net8.0", /// // The output directory where rewritten assemblies are placed. This path /// // is relative to this configuration file. - /// "OutputPath": "./bin/net7.0/RewrittenBinaries", + /// "OutputPath": "./bin/net8.0/RewrittenBinaries", /// // The assemblies to rewrite. The paths are relative to 'AssembliesPath'. /// "Assemblies": [ /// "Example.exe" diff --git a/Source/Test/Test.csproj b/Source/Test/Test.csproj index bec9d421b..53cb14d7d 100644 --- a/Source/Test/Test.csproj +++ b/Source/Test/Test.csproj @@ -19,6 +19,9 @@ + + + diff --git a/Tests/compare-rewriting-diff-logs.ps1 b/Tests/compare-rewriting-diff-logs.ps1 index 91a891910..abc94e1d0 100644 --- a/Tests/compare-rewriting-diff-logs.ps1 +++ b/Tests/compare-rewriting-diff-logs.ps1 @@ -3,7 +3,7 @@ Import-Module $PSScriptRoot/../Scripts/common.psm1 -Force -$framework = "net7.0" +$framework = "net8.0" $targets = [ordered]@{ "rewriting" = "Tests.Rewriting" "rewriting-helpers" = "Tests.Rewriting.Helpers" diff --git a/Tests/get-rewriting-diff-logs.ps1 b/Tests/get-rewriting-diff-logs.ps1 index 319c20069..8def4195e 100644 --- a/Tests/get-rewriting-diff-logs.ps1 +++ b/Tests/get-rewriting-diff-logs.ps1 @@ -3,7 +3,7 @@ Import-Module $PSScriptRoot/../Scripts/common.psm1 -Force -$framework = "net7.0" +$framework = "net8.0" $targets = [ordered]@{ "rewriting" = "Tests.Rewriting" "rewriting-helpers" = "Tests.Rewriting.Helpers" diff --git a/Tools/CLI/Coyote.CLI.csproj b/Tools/CLI/Coyote.CLI.csproj index 38da737bf..afd6e52d8 100644 --- a/Tools/CLI/Coyote.CLI.csproj +++ b/Tools/CLI/Coyote.CLI.csproj @@ -20,13 +20,9 @@ - + - - - - - + diff --git a/Tools/Coyote/Coyote.csproj b/Tools/Coyote/Coyote.csproj index 8c43ef371..d513cc189 100644 --- a/Tools/Coyote/Coyote.csproj +++ b/Tools/Coyote/Coyote.csproj @@ -22,17 +22,10 @@ all - + - - all - - - - - - + all diff --git a/docs/assets/images/cloudmessaging.dgml b/docs/assets/images/cloudmessaging.dgml index 17c25fdbe..249e0aa13 100644 --- a/docs/assets/images/cloudmessaging.dgml +++ b/docs/assets/images/cloudmessaging.dgml @@ -413,9 +413,9 @@ - - - - + + + + \ No newline at end of file diff --git a/docs/concepts/binary-rewriting.md b/docs/concepts/binary-rewriting.md index 4db863576..31a82f46b 100644 --- a/docs/concepts/binary-rewriting.md +++ b/docs/concepts/binary-rewriting.md @@ -33,8 +33,8 @@ file, which looks like this example: ```json { - "AssembliesPath": "bin/net7.0", - "OutputPath": "bin/net7.0/rewritten", + "AssembliesPath": "bin/net8.0", + "OutputPath": "bin/net8.0/rewritten", "Assemblies": [ "BoundedBuffer.dll", "MyOtherLibrary.dll", diff --git a/docs/get-started/using-coyote.md b/docs/get-started/using-coyote.md index b2731704d..30c8abde1 100644 --- a/docs/get-started/using-coyote.md +++ b/docs/get-started/using-coyote.md @@ -216,7 +216,7 @@ explore Coyote further! **Format of the executable (.exe) or library (.dll) is invalid.** If you are using a .NET Core target platform then on Windows you will get executable program with -`.exe` file extension, like `coyote\Samples\bin\net7.0\BoundedBuffer.exe` These are not +`.exe` file extension, like `coyote\Samples\bin\net8.0\BoundedBuffer.exe` These are not rewritable assemblies. You must instead rewrite and test the associated library, in this case `BoundedBuffer.dll`. diff --git a/docs/how-to/coverage.md b/docs/how-to/coverage.md index 1d2a69fc9..9634b7a70 100644 --- a/docs/how-to/coverage.md +++ b/docs/how-to/coverage.md @@ -89,14 +89,14 @@ Then run `coyote` with one of the coverage flags, as well as the other options y some minimal examples: ```plain -coyote test ./bin/net7.0/Monitors.exe -i 10 --coverage +coyote test ./bin/net8.0/Monitors.exe -i 10 --coverage ``` -This will create the directory `./bin/net7.0/Output/Monitors.exe/CoyoteOutput/`, then it +This will create the directory `./bin/net8.0/Output/Monitors.exe/CoyoteOutput/`, then it generates coverage files for code coverage which you can load into Visual Studio to see the results. ```plain -coyote test ./bin/net7.0/Monitors.exe -i 10 -coverage activity -o "/Coyote_Coverage/Monitors" +coyote test ./bin/net8.0/Monitors.exe -i 10 -coverage activity -o "/Coyote_Coverage/Monitors" ``` This will create the directory `/Coyote_Coverage/Monitors/CoyoteOutput`, then it generates only diff --git a/docs/how-to/liveness-checking.md b/docs/how-to/liveness-checking.md index fa7e91b32..a2c3b7473 100644 --- a/docs/how-to/liveness-checking.md +++ b/docs/how-to/liveness-checking.md @@ -29,7 +29,7 @@ the [coyote tool](../get-started/using-coyote.md) as follows, setting N steps as From the [samples](https://github.com/microsoft/coyote/tree/main/Samples) directory: ```plain -coyote test ./Samples/bin/net7.0/CoffeeMachineActors.dll -i 10 -ms 200 -s portfolio +coyote test ./Samples/bin/net8.0/CoffeeMachineActors.dll -i 10 -ms 200 -s portfolio ``` The `coyote test` tool will produce output, ending with something like the following: @@ -52,7 +52,7 @@ averaging 457 steps. Going by this output, let's decide to increase the bound to `coyote test`. ```plain -coyote test ./Samples/bin/net7.0/CoffeeMachineActors.dll -i 10 -ms 1000 -s portfolio +coyote test ./Samples/bin/net8.0/CoffeeMachineActors.dll -i 10 -ms 1000 -s portfolio ``` This time the output will be something like: diff --git a/docs/how-to/unit-testing.md b/docs/how-to/unit-testing.md index b3691fc07..ca21ee32d 100644 --- a/docs/how-to/unit-testing.md +++ b/docs/how-to/unit-testing.md @@ -16,7 +16,7 @@ a complete example using xUnit. The project simply includes xUnit and the Coyote ```xml - net7.0 + net8.0 diff --git a/docs/samples/actors/failover-robot-navigator.md b/docs/samples/actors/failover-robot-navigator.md index 1a16d6ea3..e6d2316af 100644 --- a/docs/samples/actors/failover-robot-navigator.md +++ b/docs/samples/actors/failover-robot-navigator.md @@ -124,7 +124,7 @@ You can build the sample by following the instructions Now you can run the `DrinksServingRobotActors` application: ```plain -./Samples/bin/net7.0/DrinksServingRobotActors.exe +./Samples/bin/net8.0/DrinksServingRobotActors.exe ``` When you run the executable like this without using `coyote test` (this is called running in @@ -238,13 +238,13 @@ You can now use `coyote test` to test the code and see if any bugs can be found. `CoyoteSamples` folder enter this command: ```plain -coyote test ./Samples/bin/net7.0/DrinksServingRobotActors.dll -i 1000 -ms 2000 -s prioritization -sv 10 +coyote test ./Samples/bin/net8.0/DrinksServingRobotActors.dll -i 1000 -ms 2000 -s prioritization -sv 10 ``` Chances are this will find a bug quickly, and you will see output from the test like this: ```plain -. Testing .\Samples\bin\net7.0\DrinksServingRobotActors.exe +. Testing .\Samples\bin\net8.0\DrinksServingRobotActors.exe Starting TestingProcessScheduler in process 26236 ... Created '1' testing task. ... Task 0 is using 'prioritization' strategy (seed:324932188). @@ -275,7 +275,7 @@ Starting TestingProcessScheduler in process 26236 ``` Notice that a log file is produced -`.bin\net7.0\Output\DrinksServingRobot.exe\CoyoteOutput\DrinksServingRobot_0_1.txt`. This log can be +`.bin\net8.0\Output\DrinksServingRobot.exe\CoyoteOutput\DrinksServingRobot_0_1.txt`. This log can be pretty big, it contains the test iteration that failed, and towards the end of this file you will see something like this: @@ -471,7 +471,7 @@ liveness bug in hot state 'Busy' at the end of program execution. If you add to the coyote test command line `--actor-graph`, and test again: ```plain -coyote test .\Samples\bin\net7.0\DrinksServingRobotActors.dll -i 1000 -ms 2000 -s prioritization -sv 10 --actor-graph +coyote test .\Samples\bin\net8.0\DrinksServingRobotActors.dll -i 1000 -ms 2000 -s prioritization -sv 10 --actor-graph ``` you'll see in the output of the tester that a DGML diagram has been produced: @@ -640,7 +640,7 @@ After you perform this fix and rebuild the sample, try running coyote test again command line which previously reported the liveness bug: ```plain -coyote test ./Samples/bin/net7.0/DrinksServingRobotActors.dll -i 1000 -ms 2000 -s prioritization -sv 10 +coyote test ./Samples/bin/net8.0/DrinksServingRobotActors.dll -i 1000 -ms 2000 -s prioritization -sv 10 ``` And now no bug will be found -- you should get result similar to this: diff --git a/docs/samples/actors/failure-detector.md b/docs/samples/actors/failure-detector.md index 1b5bd80ba..850713058 100644 --- a/docs/samples/actors/failure-detector.md +++ b/docs/samples/actors/failure-detector.md @@ -26,7 +26,7 @@ Let's see if Coyote can find the bug in this sample. Type `coyote -?` to see the sure you have installed it correctly. Now you are ready to run a `coyote` test as follows: ```plain -coyote test ./Samples/bin/net7.0/Monitors.dll --iterations 1000 -ms 200 +coyote test ./Samples/bin/net8.0/Monitors.dll --iterations 1000 -ms 200 ``` This also runs perfectly up to 1000 iterations. So this is indeed a hard bug to find. It can be @@ -35,7 +35,7 @@ points `--strategy prioritization` (or with the default `random` exploration str much larger number of iterations, typically more than 100,000 of them). ```plain -coyote test ./Samples/bin/net7.0/Monitors.dll --iterations 1000 -ms 200 -s prioritization -sv 10 +coyote test ./Samples/bin/net8.0/Monitors.dll --iterations 1000 -ms 200 -s prioritization -sv 10 ``` Even then you might need to run it a few times to catch the bug. Set `--iterations` to a bigger @@ -48,8 +48,8 @@ strategy, you will see a bug report: ```plain ... Task 0 found a bug. ... Emitting task 0 traces: -..... Writing .\Samples\bin\net7.0\Output\Monitors.exe\CoyoteOutput\Monitors_0_0.txt -..... Writing .\Samples\bin\net7.0\Output\Monitors.exe\CoyoteOutput\Monitors_0_0.trace +..... Writing .\Samples\bin\net8.0\Output\Monitors.exe\CoyoteOutput\Monitors_0_0.txt +..... Writing .\Samples\bin\net8.0\Output\Monitors.exe\CoyoteOutput\Monitors_0_0.trace ``` The `*.txt` file is the text log of the iteration that found the bug. The `*.trace` contains the @@ -59,10 +59,10 @@ Finding a hard to find bug is one thing, but if you can't reproduce this bug whi is no point. So the `*.trace` can be used with the `coyote replay` command as follows: ```plain -coyote replay ./Samples/bin/net7.0/Monitors.dll - .\Samples\bin\net7.0\Output\Monitors.exe\CoyoteOutput\Monitors_0_0.trace +coyote replay ./Samples/bin/net8.0/Monitors.dll + .\Samples\bin\net8.0\Output\Monitors.exe\CoyoteOutput\Monitors_0_0.trace -. Reproducing trace in ./Samples/bin/net7.0/Monitors.exe +. Reproducing trace in ./Samples/bin/net8.0/Monitors.exe ... Reproduced 1 bug. ... Elapsed 0.1724228 sec. ``` @@ -74,14 +74,14 @@ tool can help you with that also. If you run the following command line it will diagram of the state machines that are being tested: ```plain -coyote test ./Samples/bin/net7.0/Monitors.dll --iterations 10 --max-steps 20 --actor-graph +coyote test ./Samples/bin/net8.0/Monitors.dll --iterations 10 --max-steps 20 --actor-graph ``` You will see the following output: ```plain ... Emitting graph: -..... Writing .\Samples\bin\net7.0\Output\Monitors.exe\CoyoteOutput\Monitors_0_1.dgml +..... Writing .\Samples\bin\net8.0\Output\Monitors.exe\CoyoteOutput\Monitors_0_1.dgml ``` Open the DGML diagram using Visual Studio 2022 and you will see the following: diff --git a/docs/samples/tasks/bounded-buffer.md b/docs/samples/tasks/bounded-buffer.md index 102878ef1..18254a0d7 100644 --- a/docs/samples/tasks/bounded-buffer.md +++ b/docs/samples/tasks/bounded-buffer.md @@ -25,13 +25,13 @@ Now you can run the `BoundedBuffer` application in a mode that should trigger th the time: ```plain -./Samples/bin/net7.0/BoundedBuffer.exe -m +./Samples/bin/net8.0/BoundedBuffer.exe -m ``` And you can run it with a fix for the deadlock as follows: ```plain -./Samples/bin/net7.0/BoundedBuffer.exe -f +./Samples/bin/net8.0/BoundedBuffer.exe -f ``` ### Can you find the deadlock bug in BoundedBuffer class? diff --git a/docs/tutorials/actors/hello-world.md b/docs/tutorials/actors/hello-world.md index 3c35733f5..6131103de 100644 --- a/docs/tutorials/actors/hello-world.md +++ b/docs/tutorials/actors/hello-world.md @@ -24,7 +24,7 @@ You can build the sample by following the instructions Now you can run the HelloWorldActors application: ```plain -"./Samples/bin/net7.0/HelloWorldActors.exe" +"./Samples/bin/net8.0/HelloWorldActors.exe" ``` Press the ENTER key to terminate the program when it is done. Note that a bug has been inserted into @@ -59,13 +59,13 @@ find the `coyote` test tool and setup your environment to use it. Enter the following from the command line: ```plain -coyote test ./Samples/bin/net7.0/HelloWorldActors.dll --iterations 30 +coyote test ./Samples/bin/net8.0/HelloWorldActors.dll --iterations 30 ``` The result is: ```plain -. Testing .\Samples\bin\net7.0\HelloWorldActors.dll +. Testing .\Samples\bin\net8.0\HelloWorldActors.dll Starting TestingProcessScheduler in process 16432 ... Created '1' testing task. ... Task 0 is using 'random' strategy (seed:308255541). @@ -73,8 +73,8 @@ Starting TestingProcessScheduler in process 16432 ..... Iteration #2 ... Task 0 found a bug. ... Emitting task 0 traces: -..... Writing .\Samples\bin\net7.0\Output\HelloWorldActors.exe\CoyoteOutput\HelloWorldActors_0_2.txt -..... Writing .\Samples\bin\net7.0\Output\HelloWorldActors.exe\CoyoteOutput\HelloWorldActors_0_2.trace +..... Writing .\Samples\bin\net8.0\Output\HelloWorldActors.exe\CoyoteOutput\HelloWorldActors_0_2.txt +..... Writing .\Samples\bin\net8.0\Output\HelloWorldActors.exe\CoyoteOutput\HelloWorldActors_0_2.trace ... Elapsed 0.0906639 sec. ... Testing statistics: ..... Found 1 bug. @@ -240,7 +240,7 @@ tool has ways of interrupting and restarting this `Execute` method based on `--i So now you know what happened when you ran the following command line: ```plain -coyote test ./Samples/bin/net7.0/HelloWorldActors.exe --iterations 30 +coyote test ./Samples/bin/net8.0/HelloWorldActors.exe --iterations 30 ``` A special coyote `TestingEngine` was created, it invoked the `Execute` method 30 times, and during diff --git a/docs/tutorials/actors/raft-azure.md b/docs/tutorials/actors/raft-azure.md index b8a59414f..62b8b6423 100644 --- a/docs/tutorials/actors/raft-azure.md +++ b/docs/tutorials/actors/raft-azure.md @@ -64,7 +64,7 @@ You can build the sample by following the instructions Now you can run the Raft.Azure application: ```plain -"./Samples/bin/net7.0/Raft.Azure.exe" --connection-string "%CONNECTION_STRING%" --topic-name rafttopic --num-requests 5 --local-cluster-size 5 +"./Samples/bin/net8.0/Raft.Azure.exe" --connection-string "%CONNECTION_STRING%" --topic-name rafttopic --num-requests 5 --local-cluster-size 5 ``` Note: you don't want to try and run Raft.Azure client using the `coyote test` tool until you diff --git a/docs/tutorials/actors/raft-mocking.md b/docs/tutorials/actors/raft-mocking.md index b8eaef301..3f5f6612c 100644 --- a/docs/tutorials/actors/raft-mocking.md +++ b/docs/tutorials/actors/raft-mocking.md @@ -33,12 +33,12 @@ You can build the sample by following the instructions Now you can run `coyote test` tool on the Raft.Mocking application: ```plain -coyote test ./Samples/bin/net7.0/Raft.Mocking.dll -i 1000 -ms 200 --coverage activity +coyote test ./Samples/bin/net8.0/Raft.Mocking.dll -i 1000 -ms 200 --coverage activity ``` You should see the test succeed with output like this, including a coverage report and graph: ```plain -. Testing ./Samples/bin/net7.0/Raft.Mocking.dll +. Testing ./Samples/bin/net8.0/Raft.Mocking.dll Starting TestingProcessScheduler in process 34068 ... Created '1' testing task. ... Task 0 is using 'random' strategy (seed:1388735316). @@ -49,9 +49,9 @@ Starting TestingProcessScheduler in process 34068 ..... Iteration #900 ..... Iteration #1000 ... Emitting coverage reports: -..... Writing .\Samples\bin\net7.0\Output\Raft.Mocking.dll\CoyoteOutput\Raft.Mocking.dgml -..... Writing .\Samples\bin\net7.0\Output\Raft.Mocking.dll\CoyoteOutput\Raft.Mocking.coverage.txt -..... Writing .\Samples\bin\net7.0\Output\Raft.Mocking.dll\CoyoteOutput\Raft.Mocking.coverage.ser +..... Writing .\Samples\bin\net8.0\Output\Raft.Mocking.dll\CoyoteOutput\Raft.Mocking.dgml +..... Writing .\Samples\bin\net8.0\Output\Raft.Mocking.dll\CoyoteOutput\Raft.Mocking.coverage.txt +..... Writing .\Samples\bin\net8.0\Output\Raft.Mocking.dll\CoyoteOutput\Raft.Mocking.coverage.ser ... Testing statistics: ..... Found 0 bugs. ... Exploration statistics: @@ -127,7 +127,7 @@ async operations. The last option is interesting because it allows you to test m scheduling strategies at once: ```plain -coyote test ./Samples/bin/net7.0/Raft.Mocking.dll -i 1000 -ms 200 --coverage activity -s portfolio +coyote test ./Samples/bin/net8.0/Raft.Mocking.dll -i 1000 -ms 200 --coverage activity -s portfolio ``` When you use this the test will print the chosen strategies at the top of the test output: diff --git a/docs/tutorials/actors/test-failover.md b/docs/tutorials/actors/test-failover.md index a7da6c643..9238cb302 100644 --- a/docs/tutorials/actors/test-failover.md +++ b/docs/tutorials/actors/test-failover.md @@ -78,7 +78,7 @@ You can build the sample by following the instructions Now you can run the `CoffeeMachine` application: ```plain -./Samples/bin/net7.0/CoffeeMachineActors.exe +./Samples/bin/net8.0/CoffeeMachineActors.exe ``` ## The coffee machine @@ -189,15 +189,15 @@ You can now use [coyote test](../../get-started/using-coyote.md) to exercise the can be found. From the [samples](https://github.com/microsoft/coyote/tree/main/Samples) directory: ```plain -coyote test ./Samples/bin/net7.0/CoffeeMachineActors.dll -i 100 -ms 2000 -s prioritization -sv 10 --actor-graph +coyote test ./Samples/bin/net8.0/CoffeeMachineActors.dll -i 100 -ms 2000 -s prioritization -sv 10 --actor-graph ``` Chances are this will find a bug quickly, one of the safety assertions will fire and you will see that a test output log and a DGML diagram are produced, like this: ```plain -.\Samples\bin\net7.0\Output\CoffeeMachineActors.exe\CoyoteOutput\CoffeeMachine_0_0.txt -.\Samples\bin\net7.0\Output\CoffeeMachineActors.exe\CoyoteOutput\CoffeeMachine_0_0.dgml +.\Samples\bin\net8.0\Output\CoffeeMachineActors.exe\CoyoteOutput\CoffeeMachine_0_0.txt +.\Samples\bin\net8.0\Output\CoffeeMachineActors.exe\CoyoteOutput\CoffeeMachine_0_0.dgml ``` This log can be pretty big, a couple thousand lines where each line represents one async operation. diff --git a/docs/tutorials/first-concurrency-unit-test.md b/docs/tutorials/first-concurrency-unit-test.md index dc90882aa..7d8e8bd2d 100644 --- a/docs/tutorials/first-concurrency-unit-test.md +++ b/docs/tutorials/first-concurrency-unit-test.md @@ -410,7 +410,7 @@ You can build the sample by following the instructions You can now run the tests (without Coyote) like this: ```plain -cd .\Samples\bin\net7.0 +cd .\Samples\bin\net8.0 .\AccountManager.exe ``` diff --git a/docs/tutorials/test-failover.md b/docs/tutorials/test-failover.md index 49c849cc5..e9188125b 100644 --- a/docs/tutorials/test-failover.md +++ b/docs/tutorials/test-failover.md @@ -74,7 +74,7 @@ You can build the sample by following the instructions Now you can run the `CoffeeMachine` application: ```plain -./Samples/bin/net7.0/CoffeeMachineTasks.exe +./Samples/bin/net8.0/CoffeeMachineTasks.exe ``` ## The Coffee Machine @@ -182,20 +182,20 @@ You can now use [coyote test](../get-started/using-coyote.md) to exercise the co bugs can be found. First you need to rewrite the assembly, from the `Samples` directory: ```plain -coyote rewrite ./Samples/bin/net7.0/CoffeeMachineTasks.dll +coyote rewrite ./Samples/bin/net8.0/CoffeeMachineTasks.dll ``` Then you can run the test: ```plain -coyote test ./Samples/bin/net7.0/CoffeeMachineTasks.dll -i 1000 -ms 500 -s fair-prioritization -sv 10 +coyote test ./Samples/bin/net8.0/CoffeeMachineTasks.dll -i 1000 -ms 500 -s fair-prioritization -sv 10 ``` Chances are this will find a bug quickly, one of the safety assertions will fire and you will see that a test output log is produced, like this: ```plain -.\Samples\bin\net7.0\Output\CoffeeMachineTasks.exe\CoyoteOutput\CoffeeMachine_0_0.txt +.\Samples\bin\net8.0\Output\CoffeeMachineTasks.exe\CoyoteOutput\CoffeeMachine_0_0.txt ``` This log contains only the one test iteration that failed, and towards the end you will see diff --git a/docs/tutorials/testing-aspnet-service.md b/docs/tutorials/testing-aspnet-service.md index a1610a3b4..570eda291 100644 --- a/docs/tutorials/testing-aspnet-service.md +++ b/docs/tutorials/testing-aspnet-service.md @@ -155,7 +155,7 @@ Just run them from inside Visual Studio, or run the following: ``` cd Samples/WebApps/ImageGalleryAspNet/ -dotnet test bin/net7.0/ImageGalleryTests.dll +dotnet test bin/net8.0/ImageGalleryTests.dll ``` The tests may or may not trigger the bug! Most likely you will see this output: