From a81bc96fa48ad3538f56b6cbed68d1e2c874ee01 Mon Sep 17 00:00:00 2001 From: Weihan Li Date: Fri, 1 Dec 2023 00:30:50 +0800 Subject: [PATCH 1/4] try to support net 8 --- .config/dotnet-tools.json | 6 ++-- .github/workflows/codeql-analysis.yml | 4 +-- .github/workflows/test-coyote.yml | 18 ++++------ .github/workflows/test-performance.yml | 4 +-- Common/build.props | 10 +++++- Samples/CloudMessaging/run-mock.cmd | 2 +- Samples/CloudMessaging/run-nondeterminism.cmd | 2 +- Samples/CloudMessaging/run.cmd | 2 +- Samples/Common/TestDriver/rewrite.coyote.json | 2 +- Samples/Common/build.props | 4 +-- Samples/Scripts/run-tests.ps1 | 2 +- .../ImageGallery/design.dgml | 18 +++++----- .../ImageGalleryAspNet/rewrite.coyote.json | 2 +- .../PetImages.Tests/rewrite.coyote.json | 2 +- Scripts/CI/azure-nuget-sign-publish.yml | 35 +++++++++++++++++++ Scripts/common.psm1 | 2 +- Scripts/gen-docs.ps1 | 2 +- Scripts/run-benchmark-history.ps1 | 2 +- Scripts/run-benchmarks.ps1 | 2 +- Scripts/run-tests.ps1 | 12 +++---- Source/Test/Rewriting/RewritingOptions.cs | 8 +++-- Source/Test/Test.csproj | 3 ++ Tests/compare-rewriting-diff-logs.ps1 | 2 +- Tests/get-rewriting-diff-logs.ps1 | 2 +- Tools/CLI/Coyote.CLI.csproj | 8 ++--- Tools/Coyote/Coyote.csproj | 11 ++---- docs/assets/images/cloudmessaging.dgml | 8 ++--- docs/concepts/binary-rewriting.md | 4 +-- docs/get-started/using-coyote.md | 2 +- docs/how-to/coverage.md | 6 ++-- docs/how-to/liveness-checking.md | 4 +-- docs/how-to/unit-testing.md | 2 +- .../actors/failover-robot-navigator.md | 12 +++---- docs/samples/actors/failure-detector.md | 18 +++++----- docs/samples/tasks/bounded-buffer.md | 4 +-- docs/tutorials/actors/hello-world.md | 12 +++---- docs/tutorials/actors/raft-azure.md | 2 +- docs/tutorials/actors/raft-mocking.md | 12 +++---- docs/tutorials/actors/test-failover.md | 8 ++--- docs/tutorials/first-concurrency-unit-test.md | 2 +- docs/tutorials/test-failover.md | 8 ++--- docs/tutorials/testing-aspnet-service.md | 2 +- 42 files changed, 153 insertions(+), 120 deletions(-) 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: From a4e163cf0010fddcc31240c720adf32ff1ef0288 Mon Sep 17 00:00:00 2001 From: Weihan Li Date: Fri, 1 Dec 2023 13:59:13 +0800 Subject: [PATCH 2/4] fix build and update .NET 7 SDK to .NET 8 SDK --- .github/workflows/test-coyote.yml | 4 ++-- Common/build.props | 6 +++--- Samples/README.md | 4 ++-- Samples/WebApps/ImageGalleryAspNet/ImageGallery/readme.md | 2 +- Scripts/build.ps1 | 6 ++++++ Source/Core/Runtime/Exceptions/RuntimeException.cs | 3 +++ Source/Test/Rewriting/RewritingOptions.cs | 2 +- .../Test/Rewriting/Types/Collections/Generic/Dictionary.cs | 4 ++++ Source/Test/Rewriting/Types/Collections/Generic/HashSet.cs | 6 ++++++ .../Runtime/CompilerServices/ConfiguredTaskAwaitable.cs | 2 +- docs/get-started/build-source.md | 2 +- docs/get-started/install.md | 1 + docs/samples/actors/failover-robot-navigator.md | 2 +- docs/samples/actors/failure-detector.md | 2 +- docs/samples/tasks/bounded-buffer.md | 2 +- docs/tutorials/actors/hello-world.md | 2 +- docs/tutorials/actors/raft-azure.md | 2 +- docs/tutorials/actors/raft-mocking.md | 2 +- docs/tutorials/actors/test-failover.md | 2 +- docs/tutorials/first-concurrency-unit-test.md | 2 +- docs/tutorials/mocks/mock-dependencies.md | 2 +- docs/tutorials/mocks/optimistic-concurrency-control.md | 2 +- docs/tutorials/test-concurrent-operations.md | 2 +- docs/tutorials/test-failover.md | 2 +- docs/tutorials/testing-aspnet-service.md | 2 +- global.json | 2 +- 26 files changed, 45 insertions(+), 25 deletions(-) diff --git a/.github/workflows/test-coyote.yml b/.github/workflows/test-coyote.yml index e143c7ddd..f4b0dfdab 100644 --- a/.github/workflows/test-coyote.yml +++ b/.github/workflows/test-coyote.yml @@ -77,10 +77,10 @@ jobs: COYOTE_CLI_TELEMETRY_OPTOUT: 1 steps: - uses: actions/checkout@v2 - - 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: Download Coyote binaries uses: actions/download-artifact@v3 with: diff --git a/Common/build.props b/Common/build.props index 07f418cd2..588515f4b 100644 --- a/Common/build.props +++ b/Common/build.props @@ -16,13 +16,13 @@ LICENSE $(MSBuildThisFileDirectory)/../bin/nuget - 12.0 10.0 - + 8.0 @@ -51,7 +51,7 @@ false true true - true + true false true true diff --git a/Samples/README.md b/Samples/README.md index 7636cbacc..875331663 100644 --- a/Samples/README.md +++ b/Samples/README.md @@ -35,8 +35,8 @@ to build reliable applications and services: To build and run the samples, you will need to: -- Install the [.NET 7.0 SDK](https://dotnet.microsoft.com/download/dotnet). -- Install the [.NET 7.0 version of the coyote +- Install the [.NET 8.0 SDK](https://dotnet.microsoft.com/download/dotnet). +- Install the [.NET 8.0 version of the coyote tool](https://microsoft.github.io/coyote/get-started/install/). Once you are ready, build the samples by running the following script from the root of the diff --git a/Samples/WebApps/ImageGalleryAspNet/ImageGallery/readme.md b/Samples/WebApps/ImageGalleryAspNet/ImageGallery/readme.md index 5c4be451c..959629b83 100644 --- a/Samples/WebApps/ImageGalleryAspNet/ImageGallery/readme.md +++ b/Samples/WebApps/ImageGalleryAspNet/ImageGallery/readme.md @@ -8,7 +8,7 @@ This is a web client front end that uses the ImageGalleryService middle tier. The app depends on the following: -- [.NET 7.0 SDK](https://dotnet.microsoft.com/download/dotnet) must be installed. +- [.NET 8.0 SDK](https://dotnet.microsoft.com/download/dotnet) must be installed. - [Azure Storage Emulator](https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator) must be hnstalled running. - [Azure Cosmos Emulator](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=cli%2Cssl-netstd21) must be installed and running. - Open Azure Cosmos Data Explorer from taskbar tray and copy the `Primary Connection String` from there into `~/ImageGalleryAspNet/ImageGalleryService/appsettings.json`. diff --git a/Scripts/build.ps1 b/Scripts/build.ps1 index 9432c6b7a..89565d598 100644 --- a/Scripts/build.ps1 +++ b/Scripts/build.ps1 @@ -28,6 +28,7 @@ $dotnet_sdk_path = FindDotNetSdkPath -dotnet $dotnet $version_net4 = $IsWindows -and (Get-ItemProperty "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 528040 $version_netcore31 = FindMatchingVersion -path $dotnet_sdk_path -version "3.1.0" $version_net6 = FindMatchingVersion -path $dotnet_sdk_path -version "6.0.0" +$version_net7 = FindMatchingVersion -path $dotnet_sdk_path -version "7.0.0" $sdk_version = FindDotNetSdkVersion -dotnet_sdk_path $dotnet_sdk_path if ($null -eq $sdk_version) { @@ -53,6 +54,11 @@ if ($ci.IsPresent) { # Build .NET 6.0 as well as the latest version. $extra_frameworks = $extra_frameworks + " /p:BUILD_NET6=yes" } + + if ($null -ne $version_net7 -and $version_net7 -ne $sdk_version) { + # Build .NET 6.0 as well as the latest version. + $extra_frameworks = $extra_frameworks + " /p:BUILD_NET7=yes" + } } Write-Comment -text "Using configuration '$configuration'." -color "magenta" diff --git a/Source/Core/Runtime/Exceptions/RuntimeException.cs b/Source/Core/Runtime/Exceptions/RuntimeException.cs index 94ab97a77..0cbb43208 100644 --- a/Source/Core/Runtime/Exceptions/RuntimeException.cs +++ b/Source/Core/Runtime/Exceptions/RuntimeException.cs @@ -40,6 +40,9 @@ internal RuntimeException(string message, Exception innerException) /// /// Initializes a new instance of the class. /// +#if NET8_0_OR_GREATER + [Obsolete("This method is obsolete due to BinaryFormatter obsoleted", DiagnosticId = "SYSLIB0051")] +#endif protected RuntimeException(SerializationInfo serializationInfo, StreamingContext streamingContext) : base(serializationInfo, streamingContext) { diff --git a/Source/Test/Rewriting/RewritingOptions.cs b/Source/Test/Rewriting/RewritingOptions.cs index 165409a36..470619c4b 100644 --- a/Source/Test/Rewriting/RewritingOptions.cs +++ b/Source/Test/Rewriting/RewritingOptions.cs @@ -308,7 +308,7 @@ private static bool TryResolveTargetFramework(Assembly assembly, out string reso { if (tokens[0] == ".NETCoreApp") { - resolvedTargetFramework = + resolvedTargetFramework = tokens[1] is "v8.0" ? "net8.0" : tokens[1] is "v7.0" ? "net7.0" : tokens[1] is "v6.0" ? "net6.0" : diff --git a/Source/Test/Rewriting/Types/Collections/Generic/Dictionary.cs b/Source/Test/Rewriting/Types/Collections/Generic/Dictionary.cs index 72b774b95..8a7de2f26 100644 --- a/Source/Test/Rewriting/Types/Collections/Generic/Dictionary.cs +++ b/Source/Test/Rewriting/Types/Collections/Generic/Dictionary.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +using System; using System.Runtime.Serialization; using Microsoft.Coyote.Runtime; using SystemGenerics = System.Collections.Generic; @@ -246,6 +247,9 @@ public static bool TryGetValue(SystemGenerics.Dictionary instance, /// Implements the interface and returns the data needed /// to serialize the dictionary instance. /// +#if NET8_0_OR_GREATER + [Obsolete("This method is obsolete due to BinaryFormatter obsoleted", DiagnosticId = "SYSLIB0051")] +#endif public static void GetObjectData(SystemGenerics.Dictionary instance, SerializationInfo info, StreamingContext context) { diff --git a/Source/Test/Rewriting/Types/Collections/Generic/HashSet.cs b/Source/Test/Rewriting/Types/Collections/Generic/HashSet.cs index 1c9880214..c35369346 100644 --- a/Source/Test/Rewriting/Types/Collections/Generic/HashSet.cs +++ b/Source/Test/Rewriting/Types/Collections/Generic/HashSet.cs @@ -183,6 +183,9 @@ public static SystemGenerics.HashSet.Enumerator GetEnumerator(SystemGenerics. /// Implements the interface and returns the data needed to /// serialize a hash set object. /// +#if NET8_0_OR_GREATER + [Obsolete("This method is obsolete due to BinaryFormatter obsoleted", DiagnosticId = "SYSLIB0051")] +#endif public static void GetObjectData(SystemGenerics.HashSet instance, SerializationInfo info, StreamingContext context) { @@ -376,6 +379,9 @@ internal Wrapper(SystemGenerics.IEqualityComparer comparer) /// /// Initializes a new instance of the class. /// +#if NET8_0_OR_GREATER + [Obsolete("This method is obsolete due to BinaryFormatter obsoleted", DiagnosticId = "SYSLIB0051")] +#endif internal Wrapper(SerializationInfo info, StreamingContext context) : base(info, context) => this.Setup(); diff --git a/Source/Test/Rewriting/Types/Runtime/CompilerServices/ConfiguredTaskAwaitable.cs b/Source/Test/Rewriting/Types/Runtime/CompilerServices/ConfiguredTaskAwaitable.cs index 3b309cd3b..564e5ab85 100644 --- a/Source/Test/Rewriting/Types/Runtime/CompilerServices/ConfiguredTaskAwaitable.cs +++ b/Source/Test/Rewriting/Types/Runtime/CompilerServices/ConfiguredTaskAwaitable.cs @@ -11,7 +11,7 @@ namespace Microsoft.Coyote.Rewriting.Types.Runtime.CompilerServices { /// - /// Provides an awaitable object that is the outcome of invoking . + /// Provides an awaitable object that is the outcome of invoking . /// /// This type is intended for compiler use only. [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] diff --git a/docs/get-started/build-source.md b/docs/get-started/build-source.md index 921ab8644..feb7493ae 100644 --- a/docs/get-started/build-source.md +++ b/docs/get-started/build-source.md @@ -8,7 +8,7 @@ the github repo ### Prerequisites -- [.NET 7.0 SDK](https://dotnet.microsoft.com/download/dotnet) +- [.NET 8.0 SDK](https://dotnet.microsoft.com/download/dotnet) **Optional:** diff --git a/docs/get-started/install.md b/docs/get-started/install.md index eb189ccfe..676482c0b 100644 --- a/docs/get-started/install.md +++ b/docs/get-started/install.md @@ -10,6 +10,7 @@ frameworks supported by Coyote: | Target Framework | Operating System | | :-------------------: | :-------------------: | +| .NET 8.0 | Linux, macOS, Windows | | .NET 7.0 | Linux, macOS, Windows | | .NET 6.0 | Linux, macOS, Windows | | .NET Core 3.1 | Linux, macOS, Windows | diff --git a/docs/samples/actors/failover-robot-navigator.md b/docs/samples/actors/failover-robot-navigator.md index e6d2316af..5aaacfe59 100644 --- a/docs/samples/actors/failover-robot-navigator.md +++ b/docs/samples/actors/failover-robot-navigator.md @@ -110,7 +110,7 @@ before coding and pushing to production. To run the `DrinksServingRobotActors` example, you will need to: - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/). -- Install the [.NET 7.0 version of the coyote tool](../../get-started/install.md). +- Install the [.NET 8.0 version of the coyote tool](../../get-started/install.md). - Be familiar with the `coyote` tool. See [using Coyote](../../get-started/using-coyote.md). - Clone the [Coyote git repo](http://github.com/microsoft/coyote). diff --git a/docs/samples/actors/failure-detector.md b/docs/samples/actors/failure-detector.md index 850713058..666851845 100644 --- a/docs/samples/actors/failure-detector.md +++ b/docs/samples/actors/failure-detector.md @@ -11,7 +11,7 @@ late at night scratching your head. Read further to learn how to find this bug u You will also need to: - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/). -- Install the [.NET 7.0 version of the coyote tool](../../get-started/install.md). +- Install the [.NET 8.0 version of the coyote tool](../../get-started/install.md). - Be familiar with the `coyote` tool. See [using Coyote](../../get-started/using-coyote.md). - Clone the [Coyote git repo](http://github.com/microsoft/coyote). diff --git a/docs/samples/tasks/bounded-buffer.md b/docs/samples/tasks/bounded-buffer.md index 18254a0d7..0905315b8 100644 --- a/docs/samples/tasks/bounded-buffer.md +++ b/docs/samples/tasks/bounded-buffer.md @@ -10,7 +10,7 @@ article](https://cloudblogs.microsoft.com/opensource/2020/07/14/extreme-programm To run the `BoundedBuffer` example, you will need to: - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/). -- Install the [.NET 7.0 version of the coyote tool](../../get-started/install.md). +- Install the [.NET 8.0 version of the coyote tool](../../get-started/install.md). - Be familiar with the `coyote` tool. See [using Coyote](../../get-started/using-coyote.md). - Clone the [Coyote git repo](http://github.com/microsoft/coyote). diff --git a/docs/tutorials/actors/hello-world.md b/docs/tutorials/actors/hello-world.md index 6131103de..5f024dc4b 100644 --- a/docs/tutorials/actors/hello-world.md +++ b/docs/tutorials/actors/hello-world.md @@ -10,7 +10,7 @@ model](../../concepts/actors/overview.md). To run the Hello World Actors example, you will need to: - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/). -- Install the [.NET 7.0 version of the coyote tool](../../get-started/install.md). +- Install the [.NET 8.0 version of the coyote tool](../../get-started/install.md). - Be familiar with the `coyote` tool. See [using Coyote](../../get-started/using-coyote.md). - Clone the [Coyote git repo](http://github.com/microsoft/coyote). diff --git a/docs/tutorials/actors/raft-azure.md b/docs/tutorials/actors/raft-azure.md index 62b8b6423..a20a09a83 100644 --- a/docs/tutorials/actors/raft-azure.md +++ b/docs/tutorials/actors/raft-azure.md @@ -31,7 +31,7 @@ is called the `Azure CLI`. You will also need to: - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/). -- Install the [.NET 7.0 version of the coyote tool](../../get-started/install.md). +- Install the [.NET 8.0 version of the coyote tool](../../get-started/install.md). - Be familiar with the `coyote` tool. See [using Coyote](../../get-started/using-coyote.md). - Clone the [Coyote git repo](http://github.com/microsoft/coyote). diff --git a/docs/tutorials/actors/raft-mocking.md b/docs/tutorials/actors/raft-mocking.md index 3f5f6612c..e854df5c7 100644 --- a/docs/tutorials/actors/raft-mocking.md +++ b/docs/tutorials/actors/raft-mocking.md @@ -19,7 +19,7 @@ you achieve a high level of confidence that the code is rock solid. You will also need to: - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/). -- Install the [.NET 7.0 version of the coyote tool](../../get-started/install.md). +- Install the [.NET 8.0 version of the coyote tool](../../get-started/install.md). - Be familiar with the `coyote` tool. See [using Coyote](../../get-started/using-coyote.md). - Clone the [Coyote git repo](http://github.com/microsoft/coyote). diff --git a/docs/tutorials/actors/test-failover.md b/docs/tutorials/actors/test-failover.md index 9238cb302..fb22c0744 100644 --- a/docs/tutorials/actors/test-failover.md +++ b/docs/tutorials/actors/test-failover.md @@ -64,7 +64,7 @@ it happens after failover just to prove the usefulness of this testing methodolo To run the `CoffeeMachine` example, you will need to: - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/). -- Install the [.NET 7.0 version of the coyote tool](../../get-started/install.md). +- Install the [.NET 8.0 version of the coyote tool](../../get-started/install.md). - Be familiar with the `coyote` tool. See [using Coyote](../../get-started/using-coyote.md). - Clone the [Coyote git repo](http://github.com/microsoft/coyote). diff --git a/docs/tutorials/first-concurrency-unit-test.md b/docs/tutorials/first-concurrency-unit-test.md index 7d8e8bd2d..5dfedf9d5 100644 --- a/docs/tutorials/first-concurrency-unit-test.md +++ b/docs/tutorials/first-concurrency-unit-test.md @@ -17,7 +17,7 @@ you in writing correct concurrent code. To run the code in this tutorial, you will need to: - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/). -- Install the [.NET 7.0 version of the coyote tool](../get-started/install.md). +- Install the [.NET 8.0 version of the coyote tool](../get-started/install.md). - Be familiar with the `coyote` tool. See [using Coyote](../get-started/using-coyote.md). - Clone the [Coyote git repo](http://github.com/microsoft/coyote). diff --git a/docs/tutorials/mocks/mock-dependencies.md b/docs/tutorials/mocks/mock-dependencies.md index 0d7122a94..3cd98f4cc 100644 --- a/docs/tutorials/mocks/mock-dependencies.md +++ b/docs/tutorials/mocks/mock-dependencies.md @@ -24,7 +24,7 @@ means that using locks in your code will not help you in writing correct concurr To run the code in this tutorial, you will need to: - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/). -- Install the [.NET 7.0 version of the coyote tool](../../get-started/install.md). +- Install the [.NET 8.0 version of the coyote tool](../../get-started/install.md). - Be familiar with the `coyote` tool. See [using Coyote](../../get-started/using-coyote.md). - Clone the [Coyote git repo](http://github.com/microsoft/coyote). - Go through the [write your first concurrency unit test](../first-concurrency-unit-test.md) tutorial. diff --git a/docs/tutorials/mocks/optimistic-concurrency-control.md b/docs/tutorials/mocks/optimistic-concurrency-control.md index 714530d11..44287b059 100644 --- a/docs/tutorials/mocks/optimistic-concurrency-control.md +++ b/docs/tutorials/mocks/optimistic-concurrency-control.md @@ -27,7 +27,7 @@ trivial. To run the code in this tutorial, you will need to: - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/). -- Install the [.NET 7.0 version of the coyote tool](../../get-started/install.md). +- Install the [.NET 8.0 version of the coyote tool](../../get-started/install.md). - Be familiar with the `coyote` tool. See [using Coyote](../../get-started/using-coyote.md). - Clone the [Coyote git repo](http://github.com/microsoft/coyote). - Go through the [mocking dependencies for testing](mock-dependencies.md) tutorial. diff --git a/docs/tutorials/test-concurrent-operations.md b/docs/tutorials/test-concurrent-operations.md index 511a23bd5..fd10f43f8 100644 --- a/docs/tutorials/test-concurrent-operations.md +++ b/docs/tutorials/test-concurrent-operations.md @@ -14,7 +14,7 @@ In this follow-up tutorial, you will write a few more tests that exercise the co To run the code in this tutorial, you will need to: - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/). -- Install the [.NET 7.0 version of the coyote tool](../get-started/install.md). +- Install the [.NET 8.0 version of the coyote tool](../get-started/install.md). - Be familiar with the `coyote` tool. See [using Coyote](../get-started/using-coyote.md). - Clone the [Coyote git repo](http://github.com/microsoft/coyote). - Go through the [write your first concurrency unit test](first-concurrency-unit-test.md) tutorial. diff --git a/docs/tutorials/test-failover.md b/docs/tutorials/test-failover.md index e9188125b..30c7bd7cb 100644 --- a/docs/tutorials/test-failover.md +++ b/docs/tutorials/test-failover.md @@ -60,7 +60,7 @@ it happens after failover just to prove the usefulness of this testing methodolo To run the `CoffeeMachine` example, you will need to: - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/). -- Install the [.NET 7.0 version of the coyote tool](../get-started/install.md). +- Install the [.NET 8.0 version of the coyote tool](../get-started/install.md). - Be familiar with the `coyote` tool. See [using Coyote](../get-started/using-coyote.md). - Clone the [Coyote git repo](http://github.com/microsoft/coyote). diff --git a/docs/tutorials/testing-aspnet-service.md b/docs/tutorials/testing-aspnet-service.md index 570eda291..6d376e82c 100644 --- a/docs/tutorials/testing-aspnet-service.md +++ b/docs/tutorials/testing-aspnet-service.md @@ -12,7 +12,7 @@ Coyote and you can run the web front end using the Azure storage emulators. You will also need to: - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/). -- Install the [.NET 7.0 version of the coyote tool](../get-started/install.md). +- Install the [.NET 8.0 version of the coyote tool](../get-started/install.md). - Be familiar with the `coyote` tool. See [using Coyote](../get-started/using-coyote.md). - Clone the [Coyote git repo](http://github.com/microsoft/coyote). diff --git a/global.json b/global.json index 06ce1b485..5ce849551 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "7.0.400" + "version": "8.0.100" } } From cf96c18705fdf82d4bf9faa08f1f7032db1220be Mon Sep 17 00:00:00 2001 From: Weihan Li Date: Sat, 2 Dec 2023 21:27:55 +0800 Subject: [PATCH 3/4] add CheckEolTargetFramework and update a comment --- Common/build.props | 2 ++ Scripts/build.ps1 | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Common/build.props b/Common/build.props index 588515f4b..0c2ff9a64 100644 --- a/Common/build.props +++ b/Common/build.props @@ -7,6 +7,8 @@ © Microsoft Corporation. All rights reserved. https://github.com/microsoft/coyote git + + false https://microsoft.github.io/coyote/ diff --git a/Scripts/build.ps1 b/Scripts/build.ps1 index 89565d598..ca643d08d 100644 --- a/Scripts/build.ps1 +++ b/Scripts/build.ps1 @@ -56,7 +56,7 @@ if ($ci.IsPresent) { } if ($null -ne $version_net7 -and $version_net7 -ne $sdk_version) { - # Build .NET 6.0 as well as the latest version. + # Build .NET 7.0 as well as the latest version. $extra_frameworks = $extra_frameworks + " /p:BUILD_NET7=yes" } } From 206382bfd3d13b7a29935a972b8cf7b531c4092e Mon Sep 17 00:00:00 2001 From: Weihan Li Date: Sat, 2 Dec 2023 22:15:54 +0800 Subject: [PATCH 4/4] upgrade Github Actions --- .github/workflows/test-coyote.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test-coyote.yml b/.github/workflows/test-coyote.yml index f4b0dfdab..af4a77433 100644 --- a/.github/workflows/test-coyote.yml +++ b/.github/workflows/test-coyote.yml @@ -25,7 +25,7 @@ jobs: env: COYOTE_CLI_TELEMETRY_OPTOUT: 1 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup NuGet.exe uses: NuGet/setup-nuget@v1 with: @@ -76,11 +76,15 @@ jobs: env: COYOTE_CLI_TELEMETRY_OPTOUT: 1 steps: - - uses: actions/checkout@v2 - - name: Setup .NET 8.0 SDK - uses: actions/setup-dotnet@v1 + - uses: actions/checkout@v4 + - name: Setup .NET SDK + uses: actions/setup-dotnet@v3 with: - dotnet-version: '8.0.x' + dotnet-version: | + 3.1.x + 6.0.x + 7.0.x + 8.0.x - name: Download Coyote binaries uses: actions/download-artifact@v3 with: