diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ab8a0c39b12..2db273926f5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -95,6 +95,56 @@ jobs: run: dotnet restore - name: Build Garnet run: dotnet build --configuration ${{ matrix.configuration }} + + - name: Verify Allure wiring (${{ matrix.test }}) + shell: pwsh + run: | + $asmPath = "${{ github.workspace }}/test/${{ matrix.test }}/bin/${{ matrix.configuration }}/${{ matrix.framework }}/${{ matrix.test }}.dll" + $asm = [System.Reflection.Assembly]::LoadFrom($asmPath) + + # When using .Net 9.0 it tries to resolve every referenced type in that assembly and some dependencies are missing by design so pops exception. + # Since we don't want to fail on every 9.0 run (even when has Allure inheritance), we catch it here. + try { + $types = $asm.GetTypes() + } catch [System.Reflection.ReflectionTypeLoadException] { + # Keep only successfully loaded types, skip nulls + $types = $_.Exception.Types | Where-Object { $_ -ne $null } + } + $allureBase = $types | Where-Object { $_.Name -eq "AllureTestBase" } + + $bad = @() + foreach ($t in $types) { + # Detect NUnit test fixtures by attribute names + $isFixture = $t.GetCustomAttributes($true) | + Where-Object { $_.GetType().FullName -eq "NUnit.Framework.TestFixtureAttribute" } | + Measure-Object | Select-Object -ExpandProperty Count + if ($isFixture -eq 0) { + $isFixture = $t.GetMethods() | + ForEach-Object { $_.GetCustomAttributes($true) } | + Where-Object { $_.GetType().FullName -eq "NUnit.Framework.TestAttribute" } | + Measure-Object | Select-Object -ExpandProperty Count + } + + if ($isFixture -gt 0) { + $inheritsAllure = $allureBase -and $allureBase.IsAssignableFrom($t) + $hasAttr = $t.GetCustomAttributes($true) | + Where-Object { $_.GetType().FullName -eq "Allure.NUnit.AllureNUnitAttribute" } | + Measure-Object | Select-Object -ExpandProperty Count + + if (-not $inheritsAllure -or $hasAttr -eq 0) { + $bad += $t.FullName + } + } + } + + if ($bad.Count -gt 0) { + Write-Host "These test fixtures are missing Allure setup from $asmPath. See Pull Request Protocol for details on how to set up Allure for new tests. https://microsoft.github.io/garnet/docs/dev/onboarding" + $bad | ForEach-Object { Write-Host $_ } + exit 1 + } else { + Write-Host "All test fixtures wired to Allure in $asmPath" + } + - name: Run tests ${{ matrix.test }} run: dotnet test test/${{ matrix.test }} -f ${{ matrix.framework }} --configuration ${{ matrix.configuration }} --logger "console;verbosity=detailed" --logger trx --results-directory "GarnetTestResults-${{ matrix.os }}-${{ matrix.framework }}-${{ matrix.configuration }}-${{ matrix.test }}" -- NUnit.DisplayName=FullName timeout-minutes: 45 @@ -145,6 +195,54 @@ jobs: run: dotnet restore - name: Build Tsavorite run: dotnet build libs/storage/Tsavorite/cs/test/Tsavorite.test.csproj --configuration ${{ matrix.configuration }} + + - name: Verify Allure wiring (Tsavorite) + shell: pwsh + run: | + $asmPath = "${{ github.workspace }}/libs/storage/Tsavorite/cs/test/bin/${{ matrix.configuration }}/${{ matrix.framework }}/Tsavorite.test.dll" + $asm = [System.Reflection.Assembly]::LoadFrom($asmPath) + + # when using .Net 9.0 it tries to resolve every referenced type in that assembly and some dependencies are missing by design so pops exception (we don't need those anyways) + try { + $types = $asm.GetTypes() + } catch [System.Reflection.ReflectionTypeLoadException] { + $types = $_.Exception.Types | Where-Object { $_ -ne $null } + } + $allureBase = $types | Where-Object { $_.Name -eq "AllureTestBase" } + + $bad = @() + foreach ($t in $types) { + # Detect NUnit test fixtures by attribute names + $isFixture = $t.GetCustomAttributes($true) | + Where-Object { $_.GetType().FullName -eq "NUnit.Framework.TestFixtureAttribute" } | + Measure-Object | Select-Object -ExpandProperty Count + if ($isFixture -eq 0) { + $isFixture = $t.GetMethods() | + ForEach-Object { $_.GetCustomAttributes($true) } | + Where-Object { $_.GetType().FullName -eq "NUnit.Framework.TestAttribute" } | + Measure-Object | Select-Object -ExpandProperty Count + } + + if ($isFixture -gt 0) { + $inheritsAllure = $allureBase -and $allureBase.IsAssignableFrom($t) + $hasAttr = $t.GetCustomAttributes($true) | + Where-Object { $_.GetType().FullName -eq "Allure.NUnit.AllureNUnitAttribute" } | + Measure-Object | Select-Object -ExpandProperty Count + + if (-not $inheritsAllure -or $hasAttr -eq 0) { + $bad += $t.FullName + } + } + } + + if ($bad.Count -gt 0) { + Write-Host "These test fixtures are missing Allure setup from $asmPath" + $bad | ForEach-Object { Write-Host $_ } + exit 1 + } else { + Write-Host "All test fixtures wired to Allure in $asmPath" + } + - name: Run Tsavorite tests run: dotnet test libs/storage/Tsavorite/cs/test/Tsavorite.test.csproj -f ${{ matrix.framework }} --configuration ${{ matrix.configuration }} --logger "console;verbosity=detailed" --logger trx --results-directory "TsavoriteTestResults-${{ matrix.os }}-${{ matrix.framework }}-${{ matrix.configuration }}" timeout-minutes: 45 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 07937efe168..3271112117f 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -9,95 +9,282 @@ env: DOTNET_NOLOGO: true permissions: - contents: read + contents: write jobs: - build-test-garnet: - name: Garnet + build-test-all: + name: Test runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - os: [ ubuntu-22.04, ubuntu-24.04, windows-2022, windows-2025 ] + test: [ 'Garnet.test', 'Garnet.test.cluster', 'Tsavorite.test' ] + os: [ ubuntu-latest, windows-latest ] framework: [ 'net8.0', 'net9.0' ] configuration: [ 'Debug', 'Release' ] - test: [ 'Garnet.test', 'Garnet.test.cluster' ] - steps: - - name: Check out code - uses: actions/checkout@v4 - - name: Setup .NET - uses: actions/setup-dotnet@v4 - - name: Install dependencies - run: dotnet restore - - name: Check style format - run: dotnet format --verify-no-changes --verbosity diagnostic - - name: Build Garnet - run: dotnet build --configuration ${{ matrix.configuration }} - - name: Run tests ${{ matrix.test }} - run: dotnet test test/${{ matrix.test }} -f ${{ matrix.framework }} --logger "console;verbosity=detailed" --logger trx --results-directory "GarnetTestResults-${{ matrix.os }}-${{ matrix.framework }}-${{ matrix.configuration }}-${{ matrix.test }}" - timeout-minutes: 45 - - name: Upload test results - uses: actions/upload-artifact@v4 - with: - name: dotnet-garnet-results-${{ matrix.os }}-${{ matrix.framework }}-${{ matrix.configuration }}-${{ matrix.test }} - path: GarnetTestResults-${{ matrix.os }}-${{ matrix.framework }}-${{ matrix.configuration }}-${{ matrix.test }} - if: ${{ always() }} - # Job to build and test Tsavorite code - build-test-tsavorite: - name: Tsavorite - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [ ubuntu-22.04, ubuntu-24.04, windows-2022, windows-2025 ] - framework: [ 'net8.0', 'net9.0' ] - configuration: [ 'Debug', 'Release' ] steps: + - name: Install Allure CLI + shell: pwsh + run: | + if ($env:RUNNER_OS -eq "Windows") { + Set-ExecutionPolicy RemoteSigned -Scope Process -Force + iwr -useb get.scoop.sh | iex + scoop install allure + $shimPath = "$env:USERPROFILE\scoop\shims" + echo "Adding Scoop shims to PATH: $shimPath" + echo "$shimPath" | Out-File -Append -Encoding utf8 $env:GITHUB_PATH + } elseif ($env:RUNNER_OS -eq "Linux") { + npm install -g allure-commandline --save-dev + } else { + Write-Host "Unsupported OS: $env:RUNNER_OS" + exit 1 + } - name: Check out code uses: actions/checkout@v4 + - name: Set workaround for libaio on Ubuntu 24.04 (see https://askubuntu.com/questions/1512196/libaio1-on-noble/1512197#1512197) run: | - sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1 - if: ${{ matrix.os == 'ubuntu-24.04' }} + sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1 + if: ${{ matrix.os == 'ubuntu-latest' }} + - name: Set environment variable for Linux run: echo "RunAzureTests=yes" >> $GITHUB_ENV - if: ${{ matrix.os == 'ubuntu-24.04' }} + if: ${{ matrix.os == 'ubuntu-latest' }} + - name: Set environment variable for Windows run: echo ("RunAzureTests=yes") >> $env:GITHUB_ENV if: ${{ matrix.os == 'windows-latest' }} + - name: Setup .NET uses: actions/setup-dotnet@v4 + - name: Setup Node.js for Azurite uses: actions/setup-node@v4 with: node-version: '20' + - name: Install and Run Azurite shell: bash run: | npm install -g azurite azurite & + - name: Install dependencies run: dotnet restore - - name: Format + + - name: Check style format run: dotnet format --verify-no-changes --verbosity diagnostic - - name: Build Tsavorite + + - name: Build Tsavorite.test + if: ${{ matrix.test == 'Tsavorite.test' }} run: dotnet build libs/storage/Tsavorite/cs/test/Tsavorite.test.csproj --configuration ${{ matrix.configuration }} - - name: Run Tsavorite tests - run: dotnet test libs/storage/Tsavorite/cs/test/Tsavorite.test.csproj -f ${{ matrix.framework }} --logger "console;verbosity=detailed" --logger trx --results-directory "TsavoriteTestResults-${{ matrix.os }}-${{ matrix.framework }}-${{ matrix.configuration }}" - timeout-minutes: 45 + + - name: Build Garnet + if: ${{ matrix.test != 'Tsavorite.test' }} + run: dotnet build --configuration ${{ matrix.configuration }} + + - name: Run tests ${{ matrix.test }} + shell: pwsh + run: | + $resultsDir = "${{ matrix.test }}-${{ matrix.os }}-${{ matrix.framework }}-${{ matrix.configuration }}" + if ("${{ matrix.test }}" -eq "Tsavorite.test") { + dotnet test "libs/storage/Tsavorite/cs/test/Tsavorite.test.csproj" ` + -f "${{ matrix.framework }}" ` + --configuration "${{ matrix.configuration }}" ` + --logger "console;verbosity=detailed" ` + --logger "trx" ` + --results-directory "$resultsDir" + } else { + dotnet test "test/${{ matrix.test }}" ` + -f "${{ matrix.framework }}" ` + --configuration "${{ matrix.configuration }}" ` + --logger "console;verbosity=detailed" ` + --logger "trx" ` + --results-directory "$resultsDir" + } + timeout-minutes: 55 + - name: Upload test results uses: actions/upload-artifact@v4 with: - name: dotnet-tsavorite-results-${{ matrix.os }}-${{ matrix.framework }}-${{ matrix.configuration }} - path: TsavoriteTestResults-${{ matrix.os }}-${{ matrix.framework }}-${{ matrix.configuration }} + name: ${{ matrix.test }}-${{ matrix.os }}-${{ matrix.framework }}-${{ matrix.configuration }} + path: ${{ matrix.test }}-${{ matrix.os }}-${{ matrix.framework }}-${{ matrix.configuration }} + if: ${{ always() }} + + - name: Stage allure-results into test/Allure/AllResults + shell: pwsh + run: | + $base = $env:GITHUB_WORKSPACE + + if ("${{ matrix.test }}" -eq "Tsavorite.test") { + $source = Join-Path $base "libs/storage/Tsavorite/cs/test/bin/${{ matrix.configuration }}/${{ matrix.framework }}/allure-results" + } else { + $source = Join-Path $base "test/${{ matrix.test }}/bin/${{ matrix.configuration }}/${{ matrix.framework }}/allure-results" + } + + $target = Join-Path $base "test/Allure/AllResults" + Write-Host "Staging allure-results from $source into $target" + + New-Item -ItemType Directory -Path $target -Force | Out-Null + + if (Test-Path $source) { + Get-ChildItem -Path $source -Recurse | Copy-Item -Destination $target -Force + Write-Host "Copied allure-results into $target" + } else { + Write-Host "Source path $source not found, skipping copy" + } + if: ${{ always() }} + + # NOTE - need this to get the results names properly categorized in Allure report at Suite level - problem is that it can hit a max limit in the system if do a bug test matrix + - name: Upload Allure Results to artifacts + uses: actions/upload-artifact@v4 + with: + name: AllureResults-${{ matrix.os }}-${{ matrix.framework }}-${{ matrix.configuration }}-${{ matrix.test }} + path: test/Allure/AllResults + if: ${{ always() }} + + - name: Clean up raw allure-results folders after copying to Allure staging area + shell: pwsh + run: | + $base = $env:GITHUB_WORKSPACE + $paths = @( + "libs/storage/Tsavorite/cs/test/bin/${{ matrix.configuration }}/${{ matrix.framework }}/allure-results", + "test/${{ matrix.test }}/bin/${{ matrix.configuration }}/${{ matrix.framework }}/allure-results" + ) + foreach ($p in $paths) { + $full = Join-Path $base $p + if (Test-Path $full) { + Write-Host "Removing $full" + Remove-Item $full -Recurse -Force + } + } if: ${{ always() }} - pipeline-success: - name: Garnet Nightly (Complete) - runs-on: ubuntu-latest - needs: [ build-test-garnet, build-test-tsavorite ] + generate-allure-report: + name: Generate Allure Report + runs-on: windows-latest # only used to generate report - makes it easy on how calls made so don't have to worry about windows and linux + needs: [ build-test-all ] + if: ${{ always() }} steps: - - run: echo Done! - if: ${{ !(failure() || cancelled()) }} - + # First checkout the main repo into the default workspace root + - name: Checkout main repository + uses: actions/checkout@v4 + + # Then checkout the allure_data_history branch into a subfolder + - name: Checkout allure_data_history branch + uses: actions/checkout@v4 + with: + ref: allure_data_history + path: history-branch + persist-credentials: true + + - name: Install Allure CLI + shell: pwsh + run: | + if ($env:RUNNER_OS -eq "Windows") { + Set-ExecutionPolicy RemoteSigned -Scope Process -Force + iwr -useb get.scoop.sh | iex + scoop install allure + $shimPath = "$env:USERPROFILE\scoop\shims" + echo "Adding Scoop shims to PATH: $shimPath" + echo "$shimPath" | Out-File -Append -Encoding utf8 $env:GITHUB_PATH + } elseif ($env:RUNNER_OS -eq "Linux") { + npm install -g allure-commandline --save-dev + } else { + Write-Host "Unsupported OS: $env:RUNNER_OS" + exit 1 + } + + - name: Download allure test results that were staged in artifacts and merge into one folder + uses: actions/download-artifact@v4 + with: + path: test/Allure/AllResults + pattern: AllureResults-* + + - name: Copy all results into one folder (CombinedResults) + shell: pwsh + run: | + $source = Join-Path $env:GITHUB_WORKSPACE "test/Allure/AllResults" + $target = Join-Path $env:GITHUB_WORKSPACE "test/Allure/CombinedResults" + New-Item -ItemType Directory -Path $target -Force + Get-ChildItem -Path $source -Recurse -File | ForEach-Object { + Copy-Item -Path $_.FullName -Destination $target -Force + } + + - name: Final cleanup of stray allure-results folders + shell: pwsh + run: | + $base = $env:GITHUB_WORKSPACE + # Remove any allure-results directories anywhere under workspace + Get-ChildItem -Path $base -Recurse -Directory -Filter "allure-results" | + ForEach-Object { + Write-Host "Removing $($_.FullName)" + Remove-Item $_.FullName -Recurse -Force + } + + # Remove the staging folder once CombinedResults is ready + $staging = Join-Path $base "test/Allure/AllResults" + if (Test-Path $staging) { + Write-Host "Removing staging folder $staging" + Remove-Item $staging -Recurse -Force + } + + - name: Copy history from allure_data_history branch into CombinedResults + shell: pwsh + run: | + $source = "${{ github.workspace }}/history-branch/test/Allure/history" + $target = "${{ github.workspace }}/test/Allure/CombinedResults/history" + if (Test-Path $source) { + New-Item -ItemType Directory -Path $target -Force + Copy-Item -Path (Join-Path $source '*') -Destination $target -Recurse -Force + Write-Host "History copied from allure_data_history into CombinedResults" + } else { + Write-Host "No history found in allure_data_history, starting fresh" + } + + - name: Run GenerateAllureReport.ps1 + shell: pwsh + run: | + Set-Location "${{ github.workspace }}/test/Allure" + .\GenerateAllureReport.ps1 + + - name: Upload Allure history to artifacts so can use for debugging if needed + uses: actions/upload-artifact@v4 + with: + name: allure-history + path: test/Allure/allure-report/history + + - name: Commit updated history to allure_data_history + shell: pwsh + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + git fetch origin allure_data_history + git checkout allure_data_history + $source = "${{ github.workspace }}/test/Allure/allure-report/history" + $target = "${{ github.workspace }}/test/Allure/history" + Remove-Item -Recurse -Force $target -ErrorAction SilentlyContinue + Copy-Item -Path $source -Destination $target -Recurse -Force + git add test/Allure/history + git commit -m "Update Allure history [CI]" + git push origin allure_data_history + + - name: Upload Allure HTML report + uses: actions/upload-artifact@v4 + with: + name: allure-report + path: test/Allure/allure-report + + - name: Publish Allure report to GH Web site + shell: pwsh + run: | + $source = Join-Path $env:GITHUB_WORKSPACE "test/Allure/allure-report" + $target = Join-Path $env:GITHUB_WORKSPACE "website/static/allure" + Write-Host "Copying Allure report from $source to $target" + New-Item -ItemType Directory -Path $target -Force | Out-Null + Copy-Item -Path (Join-Path $source '*') -Destination $target -Recurse -Force + Write-Host "Allure report staged in website/static/allure" + + - name: Echo completion + run: echo Done! diff --git a/Directory.Build.props b/Directory.Build.props index 470cd3f5592..d224fde6a66 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -14,7 +14,7 @@ true true - + true diff --git a/Directory.Packages.props b/Directory.Packages.props index 62f32c388c9..a33ea0a1fec 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -4,6 +4,8 @@ true + + diff --git a/README.md b/README.md index c89151e50a2..b2ccf432ec9 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ [![](https://img.shields.io/nuget/dt/microsoft.garnet.svg?label=nuget%20library&color=007edf&logo=nuget)](https://www.nuget.org/packages/microsoft.garnet) [![](https://img.shields.io/nuget/dt/garnet-server.svg?label=dotnet%20tool&color=007edf&logo=nuget)](https://www.nuget.org/packages/garnet-server) [![BDN Charts](https://img.shields.io/badge/BDN%20Charts-8A2BE2)](https://microsoft.github.io/garnet/charts/) +[![Allure Report](https://img.shields.io/badge/Allure%20Report-orange)](https://microsoft.github.io/garnet/allure/) [![Discord Shield](https://discordapp.com/api/guilds/1213937452272582676/widget.png?style=shield)](https://aka.ms/garnet-discord) Garnet is a new remote cache-store from Microsoft Research, that offers several unique benefits: diff --git a/libs/storage/Tsavorite/cs/test/BasicLockTests.cs b/libs/storage/Tsavorite/cs/test/BasicLockTests.cs index 6b8139aa528..8070a1cc627 100644 --- a/libs/storage/Tsavorite/cs/test/BasicLockTests.cs +++ b/libs/storage/Tsavorite/cs/test/BasicLockTests.cs @@ -5,6 +5,8 @@ using System.IO; using System.Linq; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -29,8 +31,9 @@ namespace Tsavorite.test.LockTests { using StructStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - public class BasicLockTests + public class BasicLockTests : AllureTestBase { internal class Functions : SimpleSimpleFunctions { diff --git a/libs/storage/Tsavorite/cs/test/BasicStorageTests.cs b/libs/storage/Tsavorite/cs/test/BasicStorageTests.cs index 7bf32845942..ecf52102756 100644 --- a/libs/storage/Tsavorite/cs/test/BasicStorageTests.cs +++ b/libs/storage/Tsavorite/cs/test/BasicStorageTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -12,8 +14,9 @@ namespace Tsavorite.test using StructAllocator = BlittableAllocator>>; using StructStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class BasicStorageTests + internal class BasicStorageTests : AllureTestBase { [Test] [Category("TsavoriteKV")] diff --git a/libs/storage/Tsavorite/cs/test/BasicTests.cs b/libs/storage/Tsavorite/cs/test/BasicTests.cs index b66577486ad..c2f0802bbc3 100644 --- a/libs/storage/Tsavorite/cs/test/BasicTests.cs +++ b/libs/storage/Tsavorite/cs/test/BasicTests.cs @@ -5,6 +5,8 @@ using System.Diagnostics; using System.IO; using System.Linq; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -21,8 +23,9 @@ namespace Tsavorite.test //** NOTE - more detailed / in depth Read tests in ReadAddressTests.cs //** These tests ensure the basics are fully covered + [AllureNUnit] [TestFixture] - internal class BasicTests + internal class BasicTests : AllureTestBase { private TsavoriteKV store; private ClientSession session; diff --git a/libs/storage/Tsavorite/cs/test/BlittableIterationTests.cs b/libs/storage/Tsavorite/cs/test/BlittableIterationTests.cs index d360d4c6bed..4ca6f0f9a39 100644 --- a/libs/storage/Tsavorite/cs/test/BlittableIterationTests.cs +++ b/libs/storage/Tsavorite/cs/test/BlittableIterationTests.cs @@ -5,6 +5,8 @@ using System.Collections.Generic; using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -14,8 +16,9 @@ namespace Tsavorite.test { using StructStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class BlittableIterationTests + internal class BlittableIterationTests : AllureTestBase { private TsavoriteKV> store; private IDevice log; diff --git a/libs/storage/Tsavorite/cs/test/BlittableLogCompactionTests.cs b/libs/storage/Tsavorite/cs/test/BlittableLogCompactionTests.cs index 4d1c2929ea6..05c7e82996f 100644 --- a/libs/storage/Tsavorite/cs/test/BlittableLogCompactionTests.cs +++ b/libs/storage/Tsavorite/cs/test/BlittableLogCompactionTests.cs @@ -4,6 +4,8 @@ using System; using System.Diagnostics; using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -35,8 +37,9 @@ namespace Tsavorite.test using StructAllocator = BlittableAllocator>>; using StructStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - public class BlittableLogCompactionTests + public class BlittableLogCompactionTests : AllureTestBase { private TsavoriteKV store; private IDevice log; diff --git a/libs/storage/Tsavorite/cs/test/BlittableLogScanTests.cs b/libs/storage/Tsavorite/cs/test/BlittableLogScanTests.cs index bb94d583eb5..52c42e0ffad 100644 --- a/libs/storage/Tsavorite/cs/test/BlittableLogScanTests.cs +++ b/libs/storage/Tsavorite/cs/test/BlittableLogScanTests.cs @@ -3,6 +3,8 @@ using System; using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -33,8 +35,9 @@ namespace Tsavorite.test using StructAllocator = BlittableAllocator>>; using StructStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class BlittableLogScanTests + internal class BlittableLogScanTests : AllureTestBase { private TsavoriteKV store; private IDevice log; diff --git a/libs/storage/Tsavorite/cs/test/CancellationTests.cs b/libs/storage/Tsavorite/cs/test/CancellationTests.cs index 9d85f899c93..f8416749319 100644 --- a/libs/storage/Tsavorite/cs/test/CancellationTests.cs +++ b/libs/storage/Tsavorite/cs/test/CancellationTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -12,8 +14,9 @@ namespace Tsavorite.test.Cancellation using IntAllocator = BlittableAllocator>>; using IntStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - class CancellationTests + class CancellationTests : AllureTestBase { internal enum CancelLocation { diff --git a/libs/storage/Tsavorite/cs/test/CheckpointManagerTests.cs b/libs/storage/Tsavorite/cs/test/CheckpointManagerTests.cs index 6c21404529e..d661183532e 100644 --- a/libs/storage/Tsavorite/cs/test/CheckpointManagerTests.cs +++ b/libs/storage/Tsavorite/cs/test/CheckpointManagerTests.cs @@ -6,6 +6,8 @@ using System.IO; using System.Linq; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -17,7 +19,9 @@ namespace Tsavorite.test using LongAllocator = BlittableAllocator>>; using LongStoreFunctions = StoreFunctions>; - public class CheckpointManagerTests + [AllureNUnit] + [TestFixture] + public class CheckpointManagerTests : AllureTestBase { private readonly Random random = new(0); diff --git a/libs/storage/Tsavorite/cs/test/CompletePendingTests.cs b/libs/storage/Tsavorite/cs/test/CompletePendingTests.cs index 64c92320472..66534221fcb 100644 --- a/libs/storage/Tsavorite/cs/test/CompletePendingTests.cs +++ b/libs/storage/Tsavorite/cs/test/CompletePendingTests.cs @@ -4,6 +4,8 @@ using System.Collections.Generic; using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -29,8 +31,9 @@ namespace Tsavorite.test using StructAllocator = BlittableAllocator>>; using StructStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - class CompletePendingTests + class CompletePendingTests : AllureTestBase { private TsavoriteKV store; private IDevice log; diff --git a/libs/storage/Tsavorite/cs/test/ComponentRecoveryTests.cs b/libs/storage/Tsavorite/cs/test/ComponentRecoveryTests.cs index 9083c0feffc..a98227c54ec 100644 --- a/libs/storage/Tsavorite/cs/test/ComponentRecoveryTests.cs +++ b/libs/storage/Tsavorite/cs/test/ComponentRecoveryTests.cs @@ -4,14 +4,17 @@ using System; using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test.recovery { + [AllureNUnit] [TestFixture] - public class ComponentRecoveryTests + public class ComponentRecoveryTests : AllureTestBase { private static unsafe void Setup_MallocFixedPageSizeRecoveryTest(out int seed, out IDevice device, out int numBucketsToAdd, out long[] logicalAddresses, out ulong numBytesWritten) { diff --git a/libs/storage/Tsavorite/cs/test/ConcurrentCounterTests.cs b/libs/storage/Tsavorite/cs/test/ConcurrentCounterTests.cs index a3982f13607..92a15844619 100644 --- a/libs/storage/Tsavorite/cs/test/ConcurrentCounterTests.cs +++ b/libs/storage/Tsavorite/cs/test/ConcurrentCounterTests.cs @@ -1,14 +1,17 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - public class ConcurrentCounterTests + public class ConcurrentCounterTests : AllureTestBase { [Test] public void Increment_IncreasesCounterValue() diff --git a/libs/storage/Tsavorite/cs/test/DeltaLogTests.cs b/libs/storage/Tsavorite/cs/test/DeltaLogTests.cs index c58d5dc4016..e61ca4f39a1 100644 --- a/libs/storage/Tsavorite/cs/test/DeltaLogTests.cs +++ b/libs/storage/Tsavorite/cs/test/DeltaLogTests.cs @@ -3,14 +3,17 @@ using System; using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class DeltaLogStandAloneTests + internal class DeltaLogStandAloneTests : AllureTestBase { private TsavoriteLog log; private IDevice device; diff --git a/libs/storage/Tsavorite/cs/test/DeviceLogTests.cs b/libs/storage/Tsavorite/cs/test/DeviceLogTests.cs index 741e0aadd28..a4cf5b15e39 100644 --- a/libs/storage/Tsavorite/cs/test/DeviceLogTests.cs +++ b/libs/storage/Tsavorite/cs/test/DeviceLogTests.cs @@ -5,6 +5,8 @@ using System.IO; using System.Linq; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -12,8 +14,9 @@ namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class DeviceLogTests + internal class DeviceLogTests : AllureTestBase { const int entryLength = 100; const int numEntries = 1000; diff --git a/libs/storage/Tsavorite/cs/test/DeviceTests.cs b/libs/storage/Tsavorite/cs/test/DeviceTests.cs index 302fbd99a56..e40bca99108 100644 --- a/libs/storage/Tsavorite/cs/test/DeviceTests.cs +++ b/libs/storage/Tsavorite/cs/test/DeviceTests.cs @@ -6,14 +6,17 @@ using System.Linq; using System.Runtime.CompilerServices; using System.Threading; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - public class DeviceTests + public class DeviceTests : AllureTestBase { const int entryLength = 1024; SectorAlignedBufferPool bufferPool; diff --git a/libs/storage/Tsavorite/cs/test/EnqueueAndWaitForCommit.cs b/libs/storage/Tsavorite/cs/test/EnqueueAndWaitForCommit.cs index aa439126912..753b5c0ca4e 100644 --- a/libs/storage/Tsavorite/cs/test/EnqueueAndWaitForCommit.cs +++ b/libs/storage/Tsavorite/cs/test/EnqueueAndWaitForCommit.cs @@ -3,14 +3,17 @@ using System; using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class EnqWaitCommitTest + internal class EnqWaitCommitTest : AllureTestBase { const int entryLength = 500; const int numEntries = 100; diff --git a/libs/storage/Tsavorite/cs/test/EnqueueTests.cs b/libs/storage/Tsavorite/cs/test/EnqueueTests.cs index 7c845f5d55a..784226136cb 100644 --- a/libs/storage/Tsavorite/cs/test/EnqueueTests.cs +++ b/libs/storage/Tsavorite/cs/test/EnqueueTests.cs @@ -5,15 +5,17 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; - namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class EnqueueTests + internal class EnqueueTests : AllureTestBase { private TsavoriteLog log; private IDevice device; diff --git a/libs/storage/Tsavorite/cs/test/ExpirationTests.cs b/libs/storage/Tsavorite/cs/test/ExpirationTests.cs index 8bfa751e9f0..0a63c6b0293 100644 --- a/libs/storage/Tsavorite/cs/test/ExpirationTests.cs +++ b/libs/storage/Tsavorite/cs/test/ExpirationTests.cs @@ -3,6 +3,8 @@ using System; using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -12,8 +14,9 @@ namespace Tsavorite.test.Expiration { using SpanByteStoreFunctions = StoreFunctions; + [AllureNUnit] [TestFixture] - internal class ExpirationTests + internal class ExpirationTests : AllureTestBase { const int StackAllocMax = 12; const int NumRecs = 5000; diff --git a/libs/storage/Tsavorite/cs/test/FlakyDeviceTests.cs b/libs/storage/Tsavorite/cs/test/FlakyDeviceTests.cs index 081c8fb34b5..9c7903692d8 100644 --- a/libs/storage/Tsavorite/cs/test/FlakyDeviceTests.cs +++ b/libs/storage/Tsavorite/cs/test/FlakyDeviceTests.cs @@ -8,12 +8,14 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] internal class FlakyDeviceTests : TsavoriteLogTestBase { diff --git a/libs/storage/Tsavorite/cs/test/FunctionPerSessionTests.cs b/libs/storage/Tsavorite/cs/test/FunctionPerSessionTests.cs index 25e90c780c5..fc0f6074d1c 100644 --- a/libs/storage/Tsavorite/cs/test/FunctionPerSessionTests.cs +++ b/libs/storage/Tsavorite/cs/test/FunctionPerSessionTests.cs @@ -3,6 +3,8 @@ using System.IO; using System.Threading; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -108,8 +110,9 @@ public override bool ConcurrentReader(ref int key, ref Empty input, ref RefCount } } + [AllureNUnit] [TestFixture] - public class FunctionPerSessionTests + public class FunctionPerSessionTests : AllureTestBase { private IDevice _log; private TsavoriteKV store; diff --git a/libs/storage/Tsavorite/cs/test/GenericByteArrayTests.cs b/libs/storage/Tsavorite/cs/test/GenericByteArrayTests.cs index 14c9cfe9ce7..7e6c1bec06d 100644 --- a/libs/storage/Tsavorite/cs/test/GenericByteArrayTests.cs +++ b/libs/storage/Tsavorite/cs/test/GenericByteArrayTests.cs @@ -4,6 +4,8 @@ using System; using System.IO; using System.Linq; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -13,8 +15,9 @@ namespace Tsavorite.test using ClassAllocator = GenericAllocator>>; using ClassStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class GenericByteArrayTests + internal class GenericByteArrayTests : AllureTestBase { private TsavoriteKV store; private ClientSession session; diff --git a/libs/storage/Tsavorite/cs/test/GenericDiskDeleteTests.cs b/libs/storage/Tsavorite/cs/test/GenericDiskDeleteTests.cs index 54c995e78a5..af9517830c8 100644 --- a/libs/storage/Tsavorite/cs/test/GenericDiskDeleteTests.cs +++ b/libs/storage/Tsavorite/cs/test/GenericDiskDeleteTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -12,8 +14,9 @@ namespace Tsavorite.test using ClassAllocator = GenericAllocator>>; using ClassStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class GenericDiskDeleteTests + internal class GenericDiskDeleteTests : AllureTestBase { private TsavoriteKV store; private ClientSession session; diff --git a/libs/storage/Tsavorite/cs/test/GenericIterationTests.cs b/libs/storage/Tsavorite/cs/test/GenericIterationTests.cs index 7b3b5610074..0b9734943c5 100644 --- a/libs/storage/Tsavorite/cs/test/GenericIterationTests.cs +++ b/libs/storage/Tsavorite/cs/test/GenericIterationTests.cs @@ -5,6 +5,8 @@ using System.Collections.Generic; using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -15,8 +17,9 @@ namespace Tsavorite.test using ClassAllocator = GenericAllocator>>; using ClassStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class GenericIterationTests + internal class GenericIterationTests : AllureTestBase { private TsavoriteKV store; private ClientSession session; diff --git a/libs/storage/Tsavorite/cs/test/GenericLogCompactionTests.cs b/libs/storage/Tsavorite/cs/test/GenericLogCompactionTests.cs index f55234877d7..6ef5995d524 100644 --- a/libs/storage/Tsavorite/cs/test/GenericLogCompactionTests.cs +++ b/libs/storage/Tsavorite/cs/test/GenericLogCompactionTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -12,8 +14,9 @@ namespace Tsavorite.test using ClassAllocator = GenericAllocator>>; using ClassStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class GenericLogCompactionTests + internal class GenericLogCompactionTests : AllureTestBase { private TsavoriteKV store; private ClientSession session; diff --git a/libs/storage/Tsavorite/cs/test/GenericLogScanTests.cs b/libs/storage/Tsavorite/cs/test/GenericLogScanTests.cs index 1a3ad17750f..a96db7256a5 100644 --- a/libs/storage/Tsavorite/cs/test/GenericLogScanTests.cs +++ b/libs/storage/Tsavorite/cs/test/GenericLogScanTests.cs @@ -3,6 +3,8 @@ using System; using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -33,8 +35,9 @@ namespace Tsavorite.test using ClassAllocator = GenericAllocator>>; using ClassStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class GenericLogScanTests + internal class GenericLogScanTests : AllureTestBase { private TsavoriteKV store; private IDevice log, objlog; diff --git a/libs/storage/Tsavorite/cs/test/GenericStringTests.cs b/libs/storage/Tsavorite/cs/test/GenericStringTests.cs index b34faff3d69..34b0aa00c27 100644 --- a/libs/storage/Tsavorite/cs/test/GenericStringTests.cs +++ b/libs/storage/Tsavorite/cs/test/GenericStringTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -12,8 +14,9 @@ namespace Tsavorite.test using StringAllocator = GenericAllocator>>; using StringStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class GenericStringTests + internal class GenericStringTests : AllureTestBase { private TsavoriteKV store; private ClientSession session; diff --git a/libs/storage/Tsavorite/cs/test/InputOutputParameterTests.cs b/libs/storage/Tsavorite/cs/test/InputOutputParameterTests.cs index a6282bd2a92..d31b208e263 100644 --- a/libs/storage/Tsavorite/cs/test/InputOutputParameterTests.cs +++ b/libs/storage/Tsavorite/cs/test/InputOutputParameterTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -11,8 +13,9 @@ namespace Tsavorite.test.InputOutputParameterTests using IntAllocator = BlittableAllocator>>; using IntStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - class InputOutputParameterTests + class InputOutputParameterTests : AllureTestBase { const int AddValue = 10_000; const int MultValue = 100; diff --git a/libs/storage/Tsavorite/cs/test/InsertAtTailSpanByteStressTests.cs b/libs/storage/Tsavorite/cs/test/InsertAtTailSpanByteStressTests.cs index 747b9a23532..8efb238bd5c 100644 --- a/libs/storage/Tsavorite/cs/test/InsertAtTailSpanByteStressTests.cs +++ b/libs/storage/Tsavorite/cs/test/InsertAtTailSpanByteStressTests.cs @@ -6,6 +6,8 @@ using System.Diagnostics; using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -25,7 +27,9 @@ public enum MutablePages Two } - class SpanByteInsertAtTailChainTests + [AllureNUnit] + [TestFixture] + class SpanByteInsertAtTailChainTests : AllureTestBase { private TsavoriteKV> store; private IDevice log; diff --git a/libs/storage/Tsavorite/cs/test/LargeObjectTests.cs b/libs/storage/Tsavorite/cs/test/LargeObjectTests.cs index 952b5826410..bb32e8c2581 100644 --- a/libs/storage/Tsavorite/cs/test/LargeObjectTests.cs +++ b/libs/storage/Tsavorite/cs/test/LargeObjectTests.cs @@ -4,6 +4,8 @@ using System; using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -14,8 +16,9 @@ namespace Tsavorite.test.largeobjects using ClassAllocator = GenericAllocator>>; using ClassStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class LargeObjectTests + internal class LargeObjectTests : AllureTestBase { [SetUp] public void Setup() => RecreateDirectory(MethodTestDir); diff --git a/libs/storage/Tsavorite/cs/test/LockableUnsafeContextTests.cs b/libs/storage/Tsavorite/cs/test/LockableUnsafeContextTests.cs index bcb3c62e2ca..8b29cdc5104 100644 --- a/libs/storage/Tsavorite/cs/test/LockableUnsafeContextTests.cs +++ b/libs/storage/Tsavorite/cs/test/LockableUnsafeContextTests.cs @@ -8,6 +8,8 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -140,8 +142,9 @@ internal readonly void AssertNoLocks() } } + [AllureNUnit] [TestFixture] - class LockableUnsafeContextTests + class LockableUnsafeContextTests : AllureTestBase { const int NumRecords = 1000; const int UseNewKey = 1010; diff --git a/libs/storage/Tsavorite/cs/test/LogAndDeviceConfigTests.cs b/libs/storage/Tsavorite/cs/test/LogAndDeviceConfigTests.cs index efff7b55fba..7e5257cca1e 100644 --- a/libs/storage/Tsavorite/cs/test/LogAndDeviceConfigTests.cs +++ b/libs/storage/Tsavorite/cs/test/LogAndDeviceConfigTests.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -13,8 +15,9 @@ namespace Tsavorite.test //* For completeness, setting other parameters too where possible //* However, the verification is pretty light. Just makes sure log file created and things be added and read from it + [AllureNUnit] [TestFixture] - internal class LogAndDeviceConfigTests + internal class LogAndDeviceConfigTests : AllureTestBase { private TsavoriteLog log; private IDevice device; diff --git a/libs/storage/Tsavorite/cs/test/LogFastCommitTests.cs b/libs/storage/Tsavorite/cs/test/LogFastCommitTests.cs index bcbea902b1d..ddf79a1d5b8 100644 --- a/libs/storage/Tsavorite/cs/test/LogFastCommitTests.cs +++ b/libs/storage/Tsavorite/cs/test/LogFastCommitTests.cs @@ -5,12 +5,14 @@ using System.Collections.Generic; using System.IO; using System.Threading; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] internal class LogFastCommitTests : TsavoriteLogTestBase { diff --git a/libs/storage/Tsavorite/cs/test/LogReadAsyncTests.cs b/libs/storage/Tsavorite/cs/test/LogReadAsyncTests.cs index 4642657a4c8..cd2d5967a3d 100644 --- a/libs/storage/Tsavorite/cs/test/LogReadAsyncTests.cs +++ b/libs/storage/Tsavorite/cs/test/LogReadAsyncTests.cs @@ -4,14 +4,17 @@ using System.Buffers; using System.IO; using System.Threading; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class LogReadAsyncTests + internal class LogReadAsyncTests : AllureTestBase { private TsavoriteLog log; private IDevice device; diff --git a/libs/storage/Tsavorite/cs/test/LogRecoverReadOnlyTests.cs b/libs/storage/Tsavorite/cs/test/LogRecoverReadOnlyTests.cs index a1bac44a483..797bae0a201 100644 --- a/libs/storage/Tsavorite/cs/test/LogRecoverReadOnlyTests.cs +++ b/libs/storage/Tsavorite/cs/test/LogRecoverReadOnlyTests.cs @@ -6,14 +6,18 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; + namespace Tsavorite.test.recovery { + [AllureNUnit] [TestFixture] - public class LogRecoverReadOnlyTests + public class LogRecoverReadOnlyTests : AllureTestBase { const int ProducerPauseMs = 1; const int CommitPeriodMs = 20; diff --git a/libs/storage/Tsavorite/cs/test/LogResumeTests.cs b/libs/storage/Tsavorite/cs/test/LogResumeTests.cs index 5abbae37427..32dfa24fe0a 100644 --- a/libs/storage/Tsavorite/cs/test/LogResumeTests.cs +++ b/libs/storage/Tsavorite/cs/test/LogResumeTests.cs @@ -6,14 +6,17 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class LogResumeTests + internal class LogResumeTests : AllureTestBase { private IDevice device; diff --git a/libs/storage/Tsavorite/cs/test/LogScanTests.cs b/libs/storage/Tsavorite/cs/test/LogScanTests.cs index d0c9beefb00..2a822e7019a 100644 --- a/libs/storage/Tsavorite/cs/test/LogScanTests.cs +++ b/libs/storage/Tsavorite/cs/test/LogScanTests.cs @@ -3,14 +3,17 @@ using System.IO; using System.Threading; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class LogScanTests + internal class LogScanTests : AllureTestBase { private TsavoriteLog log; private IDevice device; diff --git a/libs/storage/Tsavorite/cs/test/LogShiftTailStressTest.cs b/libs/storage/Tsavorite/cs/test/LogShiftTailStressTest.cs index b30f7501946..7947051cb8e 100644 --- a/libs/storage/Tsavorite/cs/test/LogShiftTailStressTest.cs +++ b/libs/storage/Tsavorite/cs/test/LogShiftTailStressTest.cs @@ -4,11 +4,13 @@ using System; using System.Collections.Generic; using System.Threading; +using Allure.NUnit; using NUnit.Framework; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] internal class LogShiftTailStressTest : TsavoriteLogTestBase { diff --git a/libs/storage/Tsavorite/cs/test/LogTests.cs b/libs/storage/Tsavorite/cs/test/LogTests.cs index 3828e6ba06f..82bdfa25627 100644 --- a/libs/storage/Tsavorite/cs/test/LogTests.cs +++ b/libs/storage/Tsavorite/cs/test/LogTests.cs @@ -8,14 +8,17 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class TsavoriteLogStandAloneTests + internal class TsavoriteLogStandAloneTests : AllureTestBase { [Test] [Category("TsavoriteLog")] @@ -54,7 +57,7 @@ public void TestDisposeReleasesFileLocksWithCompletedCommit([Values] TestUtils.T } // This test base class allows splitting up the tests into separate fixtures that can be run in parallel - internal class TsavoriteLogTestBase + internal class TsavoriteLogTestBase : AllureTestBase { protected const int entryLength = 100; protected const int numEntries = 10000; //1000000; @@ -186,6 +189,7 @@ protected static async Task LogWriterAsync(TsavoriteLog log, byte[] entry) } } + [AllureNUnit] [TestFixture] internal class TsavoriteLogGeneralTests : TsavoriteLogTestBase { @@ -400,6 +404,7 @@ public async ValueTask TsavoriteLogAsyncConsumerTest([Values] LogChecksumType lo } + [AllureNUnit] [TestFixture] internal class TsavoriteLogEnqueueTests : TsavoriteLogTestBase { @@ -537,6 +542,7 @@ public async ValueTask TryEnqueue2([Values] LogChecksumType logChecksum, [Values } } + [AllureNUnit] [TestFixture] internal class TsavoriteLogTruncateTests : TsavoriteLogTestBase { @@ -1040,6 +1046,7 @@ public async ValueTask RefreshUncommittedAsyncTest([Values] IteratorType iterato } } + [AllureNUnit] [TestFixture] internal class TsavoriteLogCustomCommitTests : TsavoriteLogTestBase { diff --git a/libs/storage/Tsavorite/cs/test/LowMemoryTests.cs b/libs/storage/Tsavorite/cs/test/LowMemoryTests.cs index 3c553f3ebff..0044fc2fd8c 100644 --- a/libs/storage/Tsavorite/cs/test/LowMemoryTests.cs +++ b/libs/storage/Tsavorite/cs/test/LowMemoryTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -11,8 +13,9 @@ namespace Tsavorite.test.LowMemory using LongAllocator = BlittableAllocator>>; using LongStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - public class LowMemoryTests + public class LowMemoryTests : AllureTestBase { IDevice log; TsavoriteKV store1; diff --git a/libs/storage/Tsavorite/cs/test/MallocFixedPageSizeTests.cs b/libs/storage/Tsavorite/cs/test/MallocFixedPageSizeTests.cs index f8a8729b535..90b5aae4e74 100644 --- a/libs/storage/Tsavorite/cs/test/MallocFixedPageSizeTests.cs +++ b/libs/storage/Tsavorite/cs/test/MallocFixedPageSizeTests.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -8,8 +10,9 @@ namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class MallocFixedPageSizeTests + internal class MallocFixedPageSizeTests : AllureTestBase { public enum AllocMode { Single, Bulk }; diff --git a/libs/storage/Tsavorite/cs/test/ManagedLocalStorageTests.cs b/libs/storage/Tsavorite/cs/test/ManagedLocalStorageTests.cs index 97edf7d3873..b313233325e 100644 --- a/libs/storage/Tsavorite/cs/test/ManagedLocalStorageTests.cs +++ b/libs/storage/Tsavorite/cs/test/ManagedLocalStorageTests.cs @@ -3,14 +3,17 @@ using System.IO; using System.Threading; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class ManageLocalStorageTests + internal class ManageLocalStorageTests : AllureTestBase { private TsavoriteLog log; private IDevice device; diff --git a/libs/storage/Tsavorite/cs/test/MiscTests.cs b/libs/storage/Tsavorite/cs/test/MiscTests.cs index e7db813fbeb..2b167ced27d 100644 --- a/libs/storage/Tsavorite/cs/test/MiscTests.cs +++ b/libs/storage/Tsavorite/cs/test/MiscTests.cs @@ -3,6 +3,8 @@ using System; using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -15,8 +17,9 @@ namespace Tsavorite.test using StructAllocator = BlittableAllocator>>; using StructStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class MiscTests + internal class MiscTests : AllureTestBase { private TsavoriteKV store; private IDevice log, objlog; diff --git a/libs/storage/Tsavorite/cs/test/ModifiedBitTests.cs b/libs/storage/Tsavorite/cs/test/ModifiedBitTests.cs index fec3a6e196c..e003b6d3d81 100644 --- a/libs/storage/Tsavorite/cs/test/ModifiedBitTests.cs +++ b/libs/storage/Tsavorite/cs/test/ModifiedBitTests.cs @@ -3,6 +3,8 @@ using System; using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -25,8 +27,9 @@ namespace Tsavorite.test.ModifiedBit using IntAllocator = BlittableAllocator>>; using IntStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - class ModifiedBitTests + class ModifiedBitTests : AllureTestBase { const int NumRecords = 1000; const int ValueMult = 1_000_000; diff --git a/libs/storage/Tsavorite/cs/test/MoreLogCompactionTests.cs b/libs/storage/Tsavorite/cs/test/MoreLogCompactionTests.cs index f9c97fdbccf..62dfb2cea26 100644 --- a/libs/storage/Tsavorite/cs/test/MoreLogCompactionTests.cs +++ b/libs/storage/Tsavorite/cs/test/MoreLogCompactionTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -11,8 +13,9 @@ namespace Tsavorite.test using LongAllocator = BlittableAllocator>>; using LongStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class MoreLogCompactionTests + internal class MoreLogCompactionTests : AllureTestBase { private TsavoriteKV store; private IDevice log; diff --git a/libs/storage/Tsavorite/cs/test/NativeReadCacheTests.cs b/libs/storage/Tsavorite/cs/test/NativeReadCacheTests.cs index 0926c50163f..9b22d960ab9 100644 --- a/libs/storage/Tsavorite/cs/test/NativeReadCacheTests.cs +++ b/libs/storage/Tsavorite/cs/test/NativeReadCacheTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -11,8 +13,9 @@ namespace Tsavorite.test.ReadCacheTests using StructAllocator = BlittableAllocator>>; using StructStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - public class NativeReadCacheTests + public class NativeReadCacheTests : AllureTestBase { private TsavoriteKV store; private IDevice log; diff --git a/libs/storage/Tsavorite/cs/test/NeedCopyUpdateTests.cs b/libs/storage/Tsavorite/cs/test/NeedCopyUpdateTests.cs index 2eeab310e66..7f10f83830c 100644 --- a/libs/storage/Tsavorite/cs/test/NeedCopyUpdateTests.cs +++ b/libs/storage/Tsavorite/cs/test/NeedCopyUpdateTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -16,8 +18,9 @@ namespace Tsavorite.test using RMWValueAllocator = GenericAllocator>>; using RMWValueStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class NeedCopyUpdateTests + internal class NeedCopyUpdateTests : AllureTestBase { private TsavoriteKV store; private IDevice log, objlog; @@ -167,8 +170,9 @@ public override void ReadCompletionCallback(ref int key, ref RMWValueObj input, } } + [AllureNUnit] [TestFixture] - internal class NeedCopyUpdateTestsSinglePage + internal class NeedCopyUpdateTestsSinglePage : AllureTestBase { private TsavoriteKV store; private IDevice log; diff --git a/libs/storage/Tsavorite/cs/test/ObjectReadCacheTests.cs b/libs/storage/Tsavorite/cs/test/ObjectReadCacheTests.cs index 6b7ef35822a..e0d536bcc6f 100644 --- a/libs/storage/Tsavorite/cs/test/ObjectReadCacheTests.cs +++ b/libs/storage/Tsavorite/cs/test/ObjectReadCacheTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -11,8 +13,9 @@ namespace Tsavorite.test.ReadCacheTests using ClassAllocator = GenericAllocator>>; using ClassStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class ObjectReadCacheTests + internal class ObjectReadCacheTests : AllureTestBase { private TsavoriteKV store; private IDevice log, objlog; diff --git a/libs/storage/Tsavorite/cs/test/ObjectRecoveryTest.cs b/libs/storage/Tsavorite/cs/test/ObjectRecoveryTest.cs index 32981221d97..99e0519a2ae 100644 --- a/libs/storage/Tsavorite/cs/test/ObjectRecoveryTest.cs +++ b/libs/storage/Tsavorite/cs/test/ObjectRecoveryTest.cs @@ -4,6 +4,8 @@ using System; using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using Tsavorite.core; @@ -18,8 +20,9 @@ internal struct StructTuple public T2 Item2; } + [AllureNUnit] [TestFixture] - internal class ObjectRecoveryTests + internal class ObjectRecoveryTests : AllureTestBase { const long NumUniqueKeys = 1L << 14; const long KeySpace = 1L << 14; diff --git a/libs/storage/Tsavorite/cs/test/ObjectRecoveryTest2.cs b/libs/storage/Tsavorite/cs/test/ObjectRecoveryTest2.cs index 2a528c61293..1e7ec0db5eb 100644 --- a/libs/storage/Tsavorite/cs/test/ObjectRecoveryTest2.cs +++ b/libs/storage/Tsavorite/cs/test/ObjectRecoveryTest2.cs @@ -3,6 +3,8 @@ using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -12,8 +14,9 @@ namespace Tsavorite.test.recovery.objects using ClassAllocator = GenericAllocator>>; using ClassStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - public class ObjectRecoveryTests2 + public class ObjectRecoveryTests2 : AllureTestBase { int iterations; diff --git a/libs/storage/Tsavorite/cs/test/ObjectRecoveryTest3.cs b/libs/storage/Tsavorite/cs/test/ObjectRecoveryTest3.cs index ef716e59722..9ae2617a43e 100644 --- a/libs/storage/Tsavorite/cs/test/ObjectRecoveryTest3.cs +++ b/libs/storage/Tsavorite/cs/test/ObjectRecoveryTest3.cs @@ -6,6 +6,8 @@ using System.IO; using System.Linq; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -15,8 +17,9 @@ namespace Tsavorite.test.recovery.objects using ClassAllocator = GenericAllocator>>; using ClassStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - public class ObjectRecoveryTests3 + public class ObjectRecoveryTests3 : AllureTestBase { int iterations; diff --git a/libs/storage/Tsavorite/cs/test/ObjectTests.cs b/libs/storage/Tsavorite/cs/test/ObjectTests.cs index b0bba31558e..b1a36ad7b0b 100644 --- a/libs/storage/Tsavorite/cs/test/ObjectTests.cs +++ b/libs/storage/Tsavorite/cs/test/ObjectTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -12,8 +14,9 @@ namespace Tsavorite.test using ClassAllocator = GenericAllocator>>; using ClassStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class ObjectTests + internal class ObjectTests : AllureTestBase { private TsavoriteKV store; private IDevice log, objlog; diff --git a/libs/storage/Tsavorite/cs/test/OverflowBucketLockTableTests.cs b/libs/storage/Tsavorite/cs/test/OverflowBucketLockTableTests.cs index 4af0ca70983..9e473f75a42 100644 --- a/libs/storage/Tsavorite/cs/test/OverflowBucketLockTableTests.cs +++ b/libs/storage/Tsavorite/cs/test/OverflowBucketLockTableTests.cs @@ -6,6 +6,8 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -25,8 +27,9 @@ internal class SingleBucketComparer : IKeyComparer // Used to signal Setup to use the SingleBucketComparer public enum UseSingleBucketComparer { UseSingleBucket } + [AllureNUnit] [TestFixture] - internal class OverflowBucketLockTableTests + internal class OverflowBucketLockTableTests : AllureTestBase { IKeyComparer comparer = new LongKeyComparer(); long SingleBucketKey = 1; // We use a single bucket here for most tests so this lets us use 'ref' easily diff --git a/libs/storage/Tsavorite/cs/test/PostOperationsTests.cs b/libs/storage/Tsavorite/cs/test/PostOperationsTests.cs index c6d8a7982ed..23de2daf91f 100644 --- a/libs/storage/Tsavorite/cs/test/PostOperationsTests.cs +++ b/libs/storage/Tsavorite/cs/test/PostOperationsTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -12,8 +14,9 @@ namespace Tsavorite.test using IntAllocator = BlittableAllocator>>; using IntStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class PostOperationsTests + internal class PostOperationsTests : AllureTestBase { class PostFunctions : SimpleSimpleFunctions { diff --git a/libs/storage/Tsavorite/cs/test/ReadAddressTests.cs b/libs/storage/Tsavorite/cs/test/ReadAddressTests.cs index 09041311a8e..4db39d50c41 100644 --- a/libs/storage/Tsavorite/cs/test/ReadAddressTests.cs +++ b/libs/storage/Tsavorite/cs/test/ReadAddressTests.cs @@ -4,6 +4,8 @@ using System; using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -39,8 +41,9 @@ namespace Tsavorite.test.readaddress using StructAllocator = BlittableAllocator>>; using StructStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class ReadAddressTests + internal class ReadAddressTests : AllureTestBase { const int NumKeys = 1000; const int KeyMod = 100; diff --git a/libs/storage/Tsavorite/cs/test/ReadCacheChainTests.cs b/libs/storage/Tsavorite/cs/test/ReadCacheChainTests.cs index 529e1c54433..f0b305068cb 100644 --- a/libs/storage/Tsavorite/cs/test/ReadCacheChainTests.cs +++ b/libs/storage/Tsavorite/cs/test/ReadCacheChainTests.cs @@ -7,6 +7,8 @@ using System.IO; using System.Linq; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -27,7 +29,9 @@ internal static class RcTestGlobals internal const int PendingMod = 16; } - class ChainTests + [AllureNUnit] + [TestFixture] + class ChainTests : AllureTestBase { private TsavoriteKV store; private IDevice log; @@ -640,7 +644,9 @@ public void VerifyLockCountsAfterReadCacheEvict() } } - class LongStressChainTests + [AllureNUnit] + [TestFixture] + class LongStressChainTests : AllureTestBase { private TsavoriteKV store; private IDevice log; @@ -884,7 +890,9 @@ unsafe void runUpdateThread(int tid) } } - class SpanByteStressChainTests + [AllureNUnit] + [TestFixture] + class SpanByteStressChainTests : AllureTestBase { private TsavoriteKV> store; private IDevice log; diff --git a/libs/storage/Tsavorite/cs/test/RecoverReadOnlyTest.cs b/libs/storage/Tsavorite/cs/test/RecoverReadOnlyTest.cs index 7c38c13cc6c..1f88366e318 100644 --- a/libs/storage/Tsavorite/cs/test/RecoverReadOnlyTest.cs +++ b/libs/storage/Tsavorite/cs/test/RecoverReadOnlyTest.cs @@ -6,6 +6,8 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using Tsavorite.core; @@ -13,8 +15,9 @@ namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class BasicRecoverReadOnly + internal class BasicRecoverReadOnly : AllureTestBase { private TsavoriteLog log; private IDevice device; diff --git a/libs/storage/Tsavorite/cs/test/RecoveryChecks.cs b/libs/storage/Tsavorite/cs/test/RecoveryChecks.cs index a13d60f9d95..c894450fe2c 100644 --- a/libs/storage/Tsavorite/cs/test/RecoveryChecks.cs +++ b/libs/storage/Tsavorite/cs/test/RecoveryChecks.cs @@ -4,6 +4,8 @@ using System; using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -21,7 +23,7 @@ public enum DeviceMode Cloud } - public class RecoveryCheckBase + public class RecoveryCheckBase : AllureTestBase { protected IDevice log; protected const int NumOps = 5000; @@ -73,6 +75,7 @@ internal static void Verify(Status status, long key, long output) } } + [AllureNUnit] [TestFixture] public class RecoveryCheck1Tests : RecoveryCheckBase { @@ -175,6 +178,7 @@ public async ValueTask RecoveryCheck1( } + [AllureNUnit] [TestFixture] public class RecoveryCheck2Tests : RecoveryCheckBase { @@ -475,6 +479,7 @@ public void RecoveryRollback( } } + [AllureNUnit] [TestFixture] public class RecoveryCheck3Tests : RecoveryCheckBase { @@ -577,6 +582,7 @@ public async ValueTask RecoveryCheck3( } + [AllureNUnit] [TestFixture] public class RecoveryCheck4Tests : RecoveryCheckBase { @@ -682,6 +688,7 @@ public async ValueTask RecoveryCheck4( } + [AllureNUnit] [TestFixture] public class RecoveryCheck5Tests : RecoveryCheckBase { @@ -796,6 +803,7 @@ public async ValueTask RecoveryCheck5( } } + [AllureNUnit] [TestFixture] public class RecoveryCheckSnapshotTests : RecoveryCheckBase { @@ -935,6 +943,7 @@ private async ValueTask IncrSnapshotRecoveryCheck(ICheckpointManager checkpointM } } + [AllureNUnit] [TestFixture] public class RecoveryCheckStreamingSnapshotTests : RecoveryCheckBase { diff --git a/libs/storage/Tsavorite/cs/test/RecoveryTests.cs b/libs/storage/Tsavorite/cs/test/RecoveryTests.cs index e85c8d10a8a..9c7d2c85350 100644 --- a/libs/storage/Tsavorite/cs/test/RecoveryTests.cs +++ b/libs/storage/Tsavorite/cs/test/RecoveryTests.cs @@ -5,6 +5,8 @@ using System.Collections.Generic; using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -22,8 +24,9 @@ namespace Tsavorite.test.recovery.sumstore using StructAllocator = BlittableAllocator>>; using StructStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class DeviceTypeRecoveryTests + internal class DeviceTypeRecoveryTests : AllureTestBase { internal const long NumUniqueKeys = 1L << 12; internal const long KeySpace = 1L << 20; @@ -212,8 +215,9 @@ private async ValueTask RecoverAndTestAsync(int tokenIndex, bool isAsync) } } + [AllureNUnit] [TestFixture] - public class AllocatorTypeRecoveryTests + public class AllocatorTypeRecoveryTests : AllureTestBase { const int StackAllocMax = 12; const int RandSeed = 101; diff --git a/libs/storage/Tsavorite/cs/test/ReproReadCacheTest.cs b/libs/storage/Tsavorite/cs/test/ReproReadCacheTest.cs index 99964dd174f..73f6ef16d30 100644 --- a/libs/storage/Tsavorite/cs/test/ReproReadCacheTest.cs +++ b/libs/storage/Tsavorite/cs/test/ReproReadCacheTest.cs @@ -8,6 +8,8 @@ using System.IO; using System.Runtime.InteropServices; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -17,8 +19,9 @@ namespace Tsavorite.test.ReadCacheTests { using SpanByteStoreFunctions = StoreFunctions; + [AllureNUnit] [TestFixture] - internal class RandomReadCacheTests + internal class RandomReadCacheTests : AllureTestBase { class Functions : SpanByteFunctions { diff --git a/libs/storage/Tsavorite/cs/test/RevivificationTests.cs b/libs/storage/Tsavorite/cs/test/RevivificationTests.cs index ac965b26ca1..5ec99919ced 100644 --- a/libs/storage/Tsavorite/cs/test/RevivificationTests.cs +++ b/libs/storage/Tsavorite/cs/test/RevivificationTests.cs @@ -8,6 +8,8 @@ using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -230,8 +232,9 @@ internal static int GetMinRevivifiableKey numRecords - GetRevivifiableRecordCount(store, numRecords); } + [AllureNUnit] [TestFixture] - class RevivificationFixedLenTests + class RevivificationFixedLenTests : AllureTestBase { internal class RevivificationFixedLenFunctions : SimpleSimpleFunctions { @@ -437,8 +440,9 @@ public void SimpleMinAddressTakeTest([Values] RevivifiableFraction revivifiableF } } + [AllureNUnit] [TestFixture] - class RevivificationSpanByteTests + class RevivificationSpanByteTests : AllureTestBase { const int KeyLength = 10; const int InitialLength = 50; @@ -1773,8 +1777,9 @@ public void SimplePendingOpsRevivifyTest([Values(CollisionRange.None)] Collision } } + [AllureNUnit] [TestFixture] - class RevivificationObjectTests + class RevivificationObjectTests : AllureTestBase { const int NumRecords = 1000; internal const int ValueMult = 1_000_000; @@ -1865,8 +1870,9 @@ public void SimpleObjectTest([Values] DeleteDest deleteDest, [Values(UpdateOp.Up } } + [AllureNUnit] [TestFixture] - class RevivificationSpanByteStressTests + class RevivificationSpanByteStressTests : AllureTestBase { const int KeyLength = 10; const int InitialLength = 50; diff --git a/libs/storage/Tsavorite/cs/test/SessionTests.cs b/libs/storage/Tsavorite/cs/test/SessionTests.cs index 7cdbbf88d7c..d5ea541b156 100644 --- a/libs/storage/Tsavorite/cs/test/SessionTests.cs +++ b/libs/storage/Tsavorite/cs/test/SessionTests.cs @@ -3,6 +3,8 @@ using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -13,8 +15,9 @@ namespace Tsavorite.test.Session using StructAllocator = BlittableAllocator>>; using StructStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class SessionTests + internal class SessionTests : AllureTestBase { private TsavoriteKV store; private IDevice log; diff --git a/libs/storage/Tsavorite/cs/test/SharedDirectoryTests.cs b/libs/storage/Tsavorite/cs/test/SharedDirectoryTests.cs index 8c42910efbf..5758c6b6822 100644 --- a/libs/storage/Tsavorite/cs/test/SharedDirectoryTests.cs +++ b/libs/storage/Tsavorite/cs/test/SharedDirectoryTests.cs @@ -7,6 +7,8 @@ using System.Linq; using System.Runtime.InteropServices; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using Microsoft.Win32.SafeHandles; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -17,8 +19,9 @@ namespace Tsavorite.test.recovery.sumstore using StructAllocator = BlittableAllocator>>; using StructStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - internal class SharedDirectoryTests + internal class SharedDirectoryTests : AllureTestBase { const long NumUniqueKeys = 1L << 5; const long KeySpace = 1L << 11; diff --git a/libs/storage/Tsavorite/cs/test/SimpleRecoveryTest.cs b/libs/storage/Tsavorite/cs/test/SimpleRecoveryTest.cs index dfb08cbdb95..b23182fd218 100644 --- a/libs/storage/Tsavorite/cs/test/SimpleRecoveryTest.cs +++ b/libs/storage/Tsavorite/cs/test/SimpleRecoveryTest.cs @@ -6,6 +6,8 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using Microsoft.Extensions.Logging; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -38,8 +40,9 @@ public CheckpointManagerWithCookie(bool testCommitCookie, INamedDeviceFactoryCre public override byte[] GetCookie() => Cookie; } + [AllureNUnit] [TestFixture] - class RecoveryTests + class RecoveryTests : AllureTestBase { const int NumOps = 5000; AdId[] inputArray; diff --git a/libs/storage/Tsavorite/cs/test/SimpleTests.cs b/libs/storage/Tsavorite/cs/test/SimpleTests.cs index 4b92f87bdde..b448aee658f 100644 --- a/libs/storage/Tsavorite/cs/test/SimpleTests.cs +++ b/libs/storage/Tsavorite/cs/test/SimpleTests.cs @@ -2,14 +2,17 @@ // Licensed under the MIT license. using System; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class SimpleTests + internal class SimpleTests : AllureTestBase { [Test] [Category("TsavoriteKV")] diff --git a/libs/storage/Tsavorite/cs/test/SimpleVersionSchemeTest.cs b/libs/storage/Tsavorite/cs/test/SimpleVersionSchemeTest.cs index c979b1cdbc5..7d67c9b0d4d 100644 --- a/libs/storage/Tsavorite/cs/test/SimpleVersionSchemeTest.cs +++ b/libs/storage/Tsavorite/cs/test/SimpleVersionSchemeTest.cs @@ -4,14 +4,17 @@ using System; using System.Collections.Generic; using System.Threading; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class SimpleVersionSchemeTest + internal class SimpleVersionSchemeTest : AllureTestBase { [Test] [Category("TsavoriteLog")] diff --git a/libs/storage/Tsavorite/cs/test/SingleWriterTests.cs b/libs/storage/Tsavorite/cs/test/SingleWriterTests.cs index da42b4a8dc3..3db95e0ad8d 100644 --- a/libs/storage/Tsavorite/cs/test/SingleWriterTests.cs +++ b/libs/storage/Tsavorite/cs/test/SingleWriterTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -30,7 +32,9 @@ public override void PostSingleWriter(ref int key, ref int input, ref int src, r } } - class SingleWriterTests + [AllureNUnit] + [TestFixture] + class SingleWriterTests : AllureTestBase { const int NumRecords = 1000; const int ValueMult = 1_000_000; diff --git a/libs/storage/Tsavorite/cs/test/SpanByteIterationTests.cs b/libs/storage/Tsavorite/cs/test/SpanByteIterationTests.cs index ac0b0ff444f..c30e759f035 100644 --- a/libs/storage/Tsavorite/cs/test/SpanByteIterationTests.cs +++ b/libs/storage/Tsavorite/cs/test/SpanByteIterationTests.cs @@ -5,6 +5,8 @@ using System.Collections.Generic; using System.IO; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -14,8 +16,9 @@ namespace Tsavorite.test { using SpanByteStoreFunctions = StoreFunctions; + [AllureNUnit] [TestFixture] - internal class SpanByteIterationTests + internal class SpanByteIterationTests : AllureTestBase { private TsavoriteKV> store; private IDevice log; diff --git a/libs/storage/Tsavorite/cs/test/SpanByteLogScanTests.cs b/libs/storage/Tsavorite/cs/test/SpanByteLogScanTests.cs index 788523d7953..935d94b67b1 100644 --- a/libs/storage/Tsavorite/cs/test/SpanByteLogScanTests.cs +++ b/libs/storage/Tsavorite/cs/test/SpanByteLogScanTests.cs @@ -5,6 +5,8 @@ using System.IO; using System.Runtime.InteropServices; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -36,8 +38,9 @@ namespace Tsavorite.test.spanbyte { using SpanByteStoreFunctions = StoreFunctions; + [AllureNUnit] [TestFixture] - internal class SpanByteLogScanTests + internal class SpanByteLogScanTests : AllureTestBase { private TsavoriteKV> store; private IDevice log; diff --git a/libs/storage/Tsavorite/cs/test/SpanByteTests.cs b/libs/storage/Tsavorite/cs/test/SpanByteTests.cs index 2d5ed4fab7d..7fc33216f76 100644 --- a/libs/storage/Tsavorite/cs/test/SpanByteTests.cs +++ b/libs/storage/Tsavorite/cs/test/SpanByteTests.cs @@ -5,6 +5,8 @@ using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -14,8 +16,9 @@ namespace Tsavorite.test.spanbyte { using SpanByteStoreFunctions = StoreFunctions; + [AllureNUnit] [TestFixture] - internal class SpanByteTests + internal class SpanByteTests : AllureTestBase { [Test] [Category("TsavoriteKV")] diff --git a/libs/storage/Tsavorite/cs/test/SpanByteVLVectorTests.cs b/libs/storage/Tsavorite/cs/test/SpanByteVLVectorTests.cs index 49b5783548e..9721347477b 100644 --- a/libs/storage/Tsavorite/cs/test/SpanByteVLVectorTests.cs +++ b/libs/storage/Tsavorite/cs/test/SpanByteVLVectorTests.cs @@ -3,6 +3,8 @@ using System; using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -12,8 +14,9 @@ namespace Tsavorite.test.spanbyte { using SpanByteStoreFunctions = StoreFunctions; + [AllureNUnit] [TestFixture] - internal class SpanByteVLVectorTests + internal class SpanByteVLVectorTests : AllureTestBase { const int StackAllocMax = 12; diff --git a/libs/storage/Tsavorite/cs/test/StateMachineDriverTests.cs b/libs/storage/Tsavorite/cs/test/StateMachineDriverTests.cs index 6e8ed5addce..b457979be7d 100644 --- a/libs/storage/Tsavorite/cs/test/StateMachineDriverTests.cs +++ b/libs/storage/Tsavorite/cs/test/StateMachineDriverTests.cs @@ -5,6 +5,8 @@ using System.IO; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -15,7 +17,7 @@ namespace Tsavorite.test.recovery using LongAllocator = BlittableAllocator>>; using LongStoreFunctions = StoreFunctions>; - public abstract class StateMachineDriverTestsBase + public abstract class StateMachineDriverTestsBase : AllureTestBase { readonly int numOpThreads = 2; protected readonly int numKeys = 4; @@ -254,6 +256,7 @@ void Fuzz() } } + [AllureNUnit] [TestFixture] public class CheckpointVersionSwitchRmw : StateMachineDriverTestsBase { @@ -309,6 +312,7 @@ public async ValueTask GrowIndexVersionSwitchRmwTest( => await DoGrowIndexVersionSwitchEquivalenceCheck(indexSize, useTimingFuzzing); } + [AllureNUnit] [TestFixture] public class CheckpointVersionSwitchTxn : StateMachineDriverTestsBase { diff --git a/libs/storage/Tsavorite/cs/test/StructWithStringTests.cs b/libs/storage/Tsavorite/cs/test/StructWithStringTests.cs index 13cbde8f92c..d79f769adbe 100644 --- a/libs/storage/Tsavorite/cs/test/StructWithStringTests.cs +++ b/libs/storage/Tsavorite/cs/test/StructWithStringTests.cs @@ -2,6 +2,8 @@ // Licensed under the MIT license. using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -47,8 +49,9 @@ namespace Tsavorite.test.StructWithString using ClassAllocator = GenericAllocator>>; using ClassStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - public class StructWithStringTests + public class StructWithStringTests : AllureTestBase { internal class StructWithStringTestFunctions : SimpleSimpleFunctions { diff --git a/libs/storage/Tsavorite/cs/test/TryEnqueueBasicTests.cs b/libs/storage/Tsavorite/cs/test/TryEnqueueBasicTests.cs index 1b99f8efa24..1eda8bf112f 100644 --- a/libs/storage/Tsavorite/cs/test/TryEnqueueBasicTests.cs +++ b/libs/storage/Tsavorite/cs/test/TryEnqueueBasicTests.cs @@ -3,6 +3,8 @@ using System; using System.IO; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -12,8 +14,9 @@ namespace Tsavorite.test //** Fundamental basic test for TryEnqueue that covers all the parameters in TryEnqueue //** Other tests in TsavoriteLog.cs provide more coverage for TryEnqueue + [AllureNUnit] [TestFixture] - internal class TryEnqueueTests + internal class TryEnqueueTests : AllureTestBase { private TsavoriteLog log; private IDevice device; diff --git a/libs/storage/Tsavorite/cs/test/Tsavorite.test.csproj b/libs/storage/Tsavorite/cs/test/Tsavorite.test.csproj index 0c61c95648d..0e3acfff316 100644 --- a/libs/storage/Tsavorite/cs/test/Tsavorite.test.csproj +++ b/libs/storage/Tsavorite/cs/test/Tsavorite.test.csproj @@ -11,6 +11,12 @@ + + + + + + @@ -23,4 +29,10 @@ + + + + false + + diff --git a/libs/storage/Tsavorite/cs/test/UnsafeContextTests.cs b/libs/storage/Tsavorite/cs/test/UnsafeContextTests.cs index f6d72d0f56a..86ef0ccd6fe 100644 --- a/libs/storage/Tsavorite/cs/test/UnsafeContextTests.cs +++ b/libs/storage/Tsavorite/cs/test/UnsafeContextTests.cs @@ -6,6 +6,8 @@ using System.IO; using System.Linq; using System.Threading.Tasks; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; @@ -18,8 +20,9 @@ namespace Tsavorite.test.UnsafeContext //** These tests ensure the basics are fully covered - taken from BasicTests + [AllureNUnit] [TestFixture] - internal class BasicUnsafeContextTests + internal class BasicUnsafeContextTests : AllureTestBase { private TsavoriteKV store; private ClientSession fullSession; diff --git a/libs/storage/Tsavorite/cs/test/WaitForCommit.cs b/libs/storage/Tsavorite/cs/test/WaitForCommit.cs index bbf88e2c47a..965da2c2132 100644 --- a/libs/storage/Tsavorite/cs/test/WaitForCommit.cs +++ b/libs/storage/Tsavorite/cs/test/WaitForCommit.cs @@ -3,14 +3,17 @@ using System.IO; using System.Threading; +using Allure.NUnit; +using Garnet.test; using NUnit.Framework; using NUnit.Framework.Legacy; using Tsavorite.core; namespace Tsavorite.test { + [AllureNUnit] [TestFixture] - internal class WaitForCommitTests + internal class WaitForCommitTests : AllureTestBase { static TsavoriteLog log; public IDevice device; diff --git a/playground/TstRunner/TstRunner.csproj b/playground/TstRunner/TstRunner.csproj index c74574f8e31..758be9e7dea 100644 --- a/playground/TstRunner/TstRunner.csproj +++ b/playground/TstRunner/TstRunner.csproj @@ -8,6 +8,11 @@ + + + + + PreserveNewest diff --git a/test/Allure/GenerateAllureReport.ps1 b/test/Allure/GenerateAllureReport.ps1 new file mode 100644 index 00000000000..5ba985c8f84 --- /dev/null +++ b/test/Allure/GenerateAllureReport.ps1 @@ -0,0 +1,56 @@ +#Requires -Version 7 + +<# +.SYNOPSIS + This script is called after all the Allure data is merged into one location and generates the Allure report. + + It is getting the data from the test/Allure/CombinedResults directory and generating the report into the test/Allure/allure-report directory. + + NOTE: Preserving history between runs is handled in the GitHub Actions workflow by downloading and uploading the history folder to allure_data_history branch (test/Allure/history). +#> + +$OFS = "`r`n" + +# Get base path since paths can differ from machine to machine +$pathstring = $pwd.Path +if ($pathstring.Contains("test")) { + $position = $pathString.IndexOf("test") + $basePath = $pathstring.Substring(0,$position-1) # take off slash off end as well +} else { + $basePath = $pathstring # already in base and not in test + Set-Location .\test\Allure\ +} + +# Location of all the allure results +$allureResultsCombinedDir = "$basePath/test/Allure/CombinedResults" + +# Double check combined results dir exists +if (-not (Test-Path -Path $allureResultsCombinedDir)) { + Write-Error -Message "The Combined results directory $allureResultsCombinedDir does not exist. " -Category ObjectNotFound + exit 1 +} + +# Copy categories.json to the CombinedResults directory +Write-Host "Copying categories.json to $allureResultsCombinedDir" +Copy-Item -Path "$basePath/test/Allure/categories.json" -Destination "$allureResultsCombinedDir/categories.json" + +# Generate the report +Write-Host "Generate the Allure report from $allureResultsCombinedDir" +allure generate CombinedResults -o allure-report --clean + +# verify report generated +$reportDir = "$basePath/test/Allure/allure-report" +if (-not (Test-Path -Path $reportDir)) { + Write-Error -Message "The Allure report directory $reportDir did not get created." -Category ObjectNotFound + exit 1 +} +else { + Write-Host "Allure report generated successfully at $reportDir. Use 'allure open allure-report' to view it locally." +} + +Write-Output "************************" +Write-Output "**" +Write-Output "** Done!" +Write-Output "**" +Write-Output "************************" + diff --git a/test/Allure/categories.json b/test/Allure/categories.json new file mode 100644 index 00000000000..9cb55af5042 --- /dev/null +++ b/test/Allure/categories.json @@ -0,0 +1,32 @@ +[ + { + "name": "Assertion Failures", + "matchedStatuses": ["assert"], + "messageRegex": ".*expected.*but found.*" + }, + { + "name": "Connection Failures", + "matchedStatuses": ["failed"], + "messageRegex": ".*Failed to connect within.*" + }, + { + "name": "All Other Failures", + "matchedStatuses": ["failed"], + "messageRegex": ".*" + }, + { + "name": "All Broken", + "matchedStatuses": ["broken"], + "messageRegex": ".*" + }, + { + "name": "All Skipped", + "matchedStatuses": ["skipped"], + "messageRegex": ".*" + }, + { + "name": "All Unknown", + "matchedStatuses": ["unknown"], + "messageRegex": ".*" + } +] \ No newline at end of file diff --git a/test/Garnet.test.cluster/ClusterAadAuthTests.cs b/test/Garnet.test.cluster/ClusterAadAuthTests.cs index 86d6bce69d8..80a86f82eed 100644 --- a/test/Garnet.test.cluster/ClusterAadAuthTests.cs +++ b/test/Garnet.test.cluster/ClusterAadAuthTests.cs @@ -1,22 +1,24 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. - using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; +using Allure.NUnit; using Garnet.server.Auth.Settings; using Microsoft.Extensions.Logging; using Microsoft.IdentityModel.Tokens; using NUnit.Framework; using NUnit.Framework.Legacy; + namespace Garnet.test.cluster { + [AllureNUnit] [TestFixture] [NonParallelizable] - class ClusterAadAuthTests + class ClusterAadAuthTests : AllureTestBase { ClusterTestContext context; diff --git a/test/Garnet.test.cluster/ClusterAuthCommsTests.cs b/test/Garnet.test.cluster/ClusterAuthCommsTests.cs index 365ac30290d..78f17c35e5a 100644 --- a/test/Garnet.test.cluster/ClusterAuthCommsTests.cs +++ b/test/Garnet.test.cluster/ClusterAuthCommsTests.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using System.Net; +using Allure.NUnit; using Microsoft.Extensions.Logging; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -11,8 +12,9 @@ namespace Garnet.test.cluster { + [AllureNUnit] [TestFixture, NonParallelizable] - internal class ClusterAuthCommsTests + internal class ClusterAuthCommsTests : AllureTestBase { ClusterTestContext context; diff --git a/test/Garnet.test.cluster/ClusterConfigTests.cs b/test/Garnet.test.cluster/ClusterConfigTests.cs index 8e41c773022..3ff1f5501fc 100644 --- a/test/Garnet.test.cluster/ClusterConfigTests.cs +++ b/test/Garnet.test.cluster/ClusterConfigTests.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Net; using System.Text; +using Allure.NUnit; using Garnet.cluster; using Garnet.common; using Microsoft.Extensions.Logging; @@ -13,8 +14,9 @@ namespace Garnet.test.cluster { + [AllureNUnit] [TestFixture, NonParallelizable] - internal class ClusterConfigTests + internal class ClusterConfigTests : AllureTestBase { ClusterTestContext context; diff --git a/test/Garnet.test.cluster/ClusterManagementTests.cs b/test/Garnet.test.cluster/ClusterManagementTests.cs index 20b87d1a3cb..ebf38b1bd23 100644 --- a/test/Garnet.test.cluster/ClusterManagementTests.cs +++ b/test/Garnet.test.cluster/ClusterManagementTests.cs @@ -8,6 +8,7 @@ using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Microsoft.Extensions.Logging; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -21,8 +22,9 @@ public enum InstanceType Cluster } + [AllureNUnit] [TestFixture, NonParallelizable] - public class ClusterManagementTests + public class ClusterManagementTests : AllureTestBase { ClusterTestContext context; readonly int defaultShards = 3; diff --git a/test/Garnet.test.cluster/ClusterMigrateTLSTests.cs b/test/Garnet.test.cluster/ClusterMigrateTLSTests.cs index 71b8ac2219b..6931f61f0ca 100644 --- a/test/Garnet.test.cluster/ClusterMigrateTLSTests.cs +++ b/test/Garnet.test.cluster/ClusterMigrateTLSTests.cs @@ -3,12 +3,14 @@ using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using NUnit.Framework; namespace Garnet.test.cluster { + [AllureNUnit] [TestFixture, NonParallelizable] - public class ClusterTLSMT + public class ClusterTLSMT : AllureTestBase { ClusterMigrateTests tests; diff --git a/test/Garnet.test.cluster/ClusterMigrateTests.cs b/test/Garnet.test.cluster/ClusterMigrateTests.cs index 51e0088becd..4a9c92e6490 100644 --- a/test/Garnet.test.cluster/ClusterMigrateTests.cs +++ b/test/Garnet.test.cluster/ClusterMigrateTests.cs @@ -9,6 +9,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.common; #if DEBUG using Garnet.server; @@ -20,8 +21,9 @@ namespace Garnet.test.cluster { + [AllureNUnit] [TestFixture(false), NonParallelizable] - public class ClusterMigrateTests(bool UseTLS) + public class ClusterMigrateTests(bool UseTLS) : AllureTestBase { const int testTimeout = 100000; diff --git a/test/Garnet.test.cluster/ClusterNegativeTests.cs b/test/Garnet.test.cluster/ClusterNegativeTests.cs index c10d231631f..fb47b211217 100644 --- a/test/Garnet.test.cluster/ClusterNegativeTests.cs +++ b/test/Garnet.test.cluster/ClusterNegativeTests.cs @@ -8,6 +8,7 @@ using System.Net.Sockets; using System.Text; using System.Threading; +using Allure.NUnit; using Microsoft.Extensions.Logging; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -22,8 +23,9 @@ namespace Garnet.test.cluster { + [AllureNUnit] [TestFixture, NonParallelizable] - public class ClusterNegativeTests + public class ClusterNegativeTests : AllureTestBase { ClusterTestContext context; diff --git a/test/Garnet.test.cluster/ClusterRedirectTests.cs b/test/Garnet.test.cluster/ClusterRedirectTests.cs index d0434027e79..954316fbfdd 100644 --- a/test/Garnet.test.cluster/ClusterRedirectTests.cs +++ b/test/Garnet.test.cluster/ClusterRedirectTests.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Allure.NUnit; using Garnet.common; using Microsoft.Extensions.Logging; using NUnit.Framework; @@ -11,8 +12,9 @@ namespace Garnet.test.cluster { + [AllureNUnit] [TestFixture, NonParallelizable] - public unsafe class ClusterRedirectTests + public unsafe class ClusterRedirectTests : AllureTestBase { ClusterTestContext context; diff --git a/test/Garnet.test.cluster/Garnet.test.cluster.csproj b/test/Garnet.test.cluster/Garnet.test.cluster.csproj index e8558f43e14..e150abe8284 100644 --- a/test/Garnet.test.cluster/Garnet.test.cluster.csproj +++ b/test/Garnet.test.cluster/Garnet.test.cluster.csproj @@ -17,6 +17,7 @@ + @@ -26,6 +27,8 @@ + + @@ -53,4 +56,9 @@ PreserveNewest + + + + false + diff --git a/test/Garnet.test.cluster/RedirectTests/ClusterSlotVerificationTests.cs b/test/Garnet.test.cluster/RedirectTests/ClusterSlotVerificationTests.cs index b35440549dd..0da284bf439 100644 --- a/test/Garnet.test.cluster/RedirectTests/ClusterSlotVerificationTests.cs +++ b/test/Garnet.test.cluster/RedirectTests/ClusterSlotVerificationTests.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; +using Allure.NUnit; using Garnet.common; using Garnet.server; using Microsoft.Extensions.Logging; @@ -22,8 +23,10 @@ public sealed class BaseCommandComparer : IEqualityComparer public unsafe int GetHashCode([DisallowNull] BaseCommand obj) => obj.Command.GetHashCode(); } + [AllureNUnit] + [TestFixture] [NonParallelizable] - public class ClusterSlotVerificationTests + public class ClusterSlotVerificationTests : AllureTestBase { static readonly HashSet TestCommands = new(BaseCommandComparer.Instance) { diff --git a/test/Garnet.test.cluster/ReplicationTests/ClusterReplicationBaseTests.cs b/test/Garnet.test.cluster/ReplicationTests/ClusterReplicationBaseTests.cs index d3d9353255e..9382412b831 100644 --- a/test/Garnet.test.cluster/ReplicationTests/ClusterReplicationBaseTests.cs +++ b/test/Garnet.test.cluster/ReplicationTests/ClusterReplicationBaseTests.cs @@ -11,6 +11,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.common; using Garnet.server; using Microsoft.Extensions.Logging; @@ -20,8 +21,10 @@ namespace Garnet.test.cluster { + [AllureNUnit] + [TestFixture] [NonParallelizable] - public class ClusterReplicationBaseTests + public class ClusterReplicationBaseTests : AllureTestBase { public (Action, string)[] GetUnitTests() { diff --git a/test/Garnet.test.cluster/ReplicationTests/ClusterReplicationDisklessSyncTests.cs b/test/Garnet.test.cluster/ReplicationTests/ClusterReplicationDisklessSyncTests.cs index a5849f949eb..01471b41a78 100644 --- a/test/Garnet.test.cluster/ReplicationTests/ClusterReplicationDisklessSyncTests.cs +++ b/test/Garnet.test.cluster/ReplicationTests/ClusterReplicationDisklessSyncTests.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using Allure.NUnit; #if DEBUG using Garnet.common; #endif @@ -21,8 +22,10 @@ namespace Garnet.test.cluster /// 3. Replica same history and different version and AOF /// 4. Replica different history, version and AOF /// + [AllureNUnit] + [TestFixture] [NonParallelizable] - public class ClusterReplicationDisklessSyncTests + public class ClusterReplicationDisklessSyncTests : AllureTestBase { ClusterTestContext context; readonly int keyCount = 256; diff --git a/test/Garnet.test.cluster/ReplicationTests/ClusterResetDuringReplicationTests.cs b/test/Garnet.test.cluster/ReplicationTests/ClusterResetDuringReplicationTests.cs index cb18e0ae80c..e2f2c71ba8f 100644 --- a/test/Garnet.test.cluster/ReplicationTests/ClusterResetDuringReplicationTests.cs +++ b/test/Garnet.test.cluster/ReplicationTests/ClusterResetDuringReplicationTests.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.common; using Microsoft.Extensions.Logging; using NUnit.Framework; @@ -16,8 +17,10 @@ namespace Garnet.test.cluster.ReplicationTests /// These tests simulate scenarios where a replica gets stuck or is in replication attach and verify that /// CLUSTER RESET HARD can properly cancel ongoing operations and allow the replica to be reused. /// + [AllureNUnit] + [TestFixture] [NonParallelizable] - public class ClusterResetDuringReplicationTests + public class ClusterResetDuringReplicationTests : AllureTestBase { ClusterTestContext context; diff --git a/test/Garnet.test/AllureTestBase.cs b/test/Garnet.test/AllureTestBase.cs new file mode 100644 index 00000000000..811f1155e26 --- /dev/null +++ b/test/Garnet.test/AllureTestBase.cs @@ -0,0 +1,52 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +using System; +using System.Linq; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Runtime.Versioning; +using Allure.Net.Commons; +using NUnit.Framework; + +namespace Garnet.test +{ + + /// + /// Used as base class for Allure tests to label environment + /// + public abstract class AllureTestBase + { + [SetUp] + public void LabelEnvironment() + { + var os = RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ? nameof(OSPlatform.Linux) : + RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? nameof(OSPlatform.Windows) : + RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? nameof(OSPlatform.OSX) : + "unknown"; + + var frameworkAttr = Assembly.GetExecutingAssembly() + .GetCustomAttribute(); + var framework = frameworkAttr?.FrameworkName.Split(',').LastOrDefault()?.Replace("Version=v", "net") ?? "unknown"; + + var config = Assembly.GetExecutingAssembly() + .GetCustomAttribute()?.Configuration ?? "unknown"; + var timestamp = DateTime.Now.ToString("M/d/yyyy"); + var fullName = $"[{os}, {framework}, {config}]"; + var namespaceName = GetType().Namespace ?? "UnknownNamespace"; + + AllureLifecycle.Instance.UpdateTestCase(x => + { + // Remove any default suite/subSuite labels that NUnit added + x.labels.RemoveAll(l => l.name == "suite" || l.name == "subSuite"); + + // apply your custom hierarchy + x.labels.Add(Label.ParentSuite($"{namespaceName} - {timestamp}")); + x.labels.Add(Label.Suite(os)); + x.labels.Add(Label.SubSuite($"{framework} | {config}")); + }); + + // allows to separate out tests based on config but still hold history + AllureApi.AddTestParameter("env", fullName); + } + } +} \ No newline at end of file diff --git a/test/Garnet.test/CacheSizeTrackerTests.cs b/test/Garnet.test/CacheSizeTrackerTests.cs index 6d988426165..775090f2ec8 100644 --- a/test/Garnet.test/CacheSizeTrackerTests.cs +++ b/test/Garnet.test/CacheSizeTrackerTests.cs @@ -1,8 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. - using System; using System.Threading; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -14,8 +14,9 @@ namespace Garnet.test using ObjectStoreAllocator = GenericAllocator>>; using ObjectStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - public class CacheSizeTrackerTests + public class CacheSizeTrackerTests : AllureTestBase { GarnetServer server; TsavoriteKV objStore; diff --git a/test/Garnet.test/DocsTests.cs b/test/Garnet.test/DocsTests.cs index 6dd77435022..5bfa1a59488 100644 --- a/test/Garnet.test/DocsTests.cs +++ b/test/Garnet.test/DocsTests.cs @@ -1,15 +1,16 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. - using System.Collections.Generic; using System.IO; using System.Text.RegularExpressions; +using Allure.NUnit; using NUnit.Framework; namespace Garnet.test { + [AllureNUnit] [TestFixture] - public partial class DocsTests + public partial class DocsTests : AllureTestBase { [GeneratedRegex(@"^\s*\|\s*\|\s*\[(?[^\]]+)\]\(.+?\)\s*\|\s*(?[➖])")] private static partial Regex CommandLinkAndMinusRegex(); diff --git a/test/Garnet.test/ExpiredKeyDeletionTests.cs b/test/Garnet.test/ExpiredKeyDeletionTests.cs index b777c24ca61..0ea6362a7ab 100644 --- a/test/Garnet.test/ExpiredKeyDeletionTests.cs +++ b/test/Garnet.test/ExpiredKeyDeletionTests.cs @@ -1,17 +1,18 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. - using System; using System.Collections.Generic; using System.Threading.Tasks; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using StackExchange.Redis; namespace Garnet.test { + [AllureNUnit] [TestFixture] - class ExpiredKeyDeletionTests + class ExpiredKeyDeletionTests : AllureTestBase { private const int ExpiredKeyDeletionScanFrequencySecs = 10; diff --git a/test/Garnet.test/FuzzTargetTests.cs b/test/Garnet.test/FuzzTargetTests.cs index 8429ea9c78c..255a67012e9 100644 --- a/test/Garnet.test/FuzzTargetTests.cs +++ b/test/Garnet.test/FuzzTargetTests.cs @@ -4,6 +4,7 @@ using System; using System.Reflection; using System.Text; +using Allure.NUnit; using Garnet.fuzz; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -13,7 +14,9 @@ namespace Garnet.test /// /// Tests that assert the basics of Garnet.fuzz still work, so they aren't broken between fuzzing runs. /// - public class FuzzTargetTests + [AllureNUnit] + [TestFixture] + public class FuzzTargetTests : AllureTestBase { [Test] public void TestsForAllTargets() diff --git a/test/Garnet.test/Garnet.test.csproj b/test/Garnet.test/Garnet.test.csproj index aa1952ee577..efae0d31285 100644 --- a/test/Garnet.test/Garnet.test.csproj +++ b/test/Garnet.test/Garnet.test.csproj @@ -9,7 +9,7 @@ 1701;1702;1591 - + @@ -25,6 +25,8 @@ + + @@ -67,4 +69,10 @@ PreserveNewest + + + + false + + diff --git a/test/Garnet.test/GarnetBitmapTests.cs b/test/Garnet.test/GarnetBitmapTests.cs index 7fbc4cc3fd1..63bc89ceb7e 100644 --- a/test/Garnet.test/GarnetBitmapTests.cs +++ b/test/Garnet.test/GarnetBitmapTests.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using System.Numerics.Tensors; +using Allure.NUnit; using Garnet.common; using Garnet.server; using NUnit.Framework; @@ -13,7 +14,9 @@ namespace Garnet.test { - public class GarnetBitmapTests + [AllureNUnit] + [TestFixture] + public class GarnetBitmapTests : AllureTestBase { GarnetServer server; Random r; diff --git a/test/Garnet.test/GarnetClientTests.cs b/test/Garnet.test/GarnetClientTests.cs index f69389dafa2..7d9ee75bb09 100644 --- a/test/Garnet.test/GarnetClientTests.cs +++ b/test/Garnet.test/GarnetClientTests.cs @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. - using System; using System.Linq; using System.Net; @@ -8,14 +7,16 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.common; using NUnit.Framework; using NUnit.Framework.Legacy; namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class GarnetClientTests + public class GarnetClientTests : AllureTestBase { readonly string[,] worldcities = new string[,] { diff --git a/test/Garnet.test/GarnetJSON/JSONPath/JsonPathExecuteTests.cs b/test/Garnet.test/GarnetJSON/JSONPath/JsonPathExecuteTests.cs index 7e2c52f43ba..086ec92af45 100644 --- a/test/Garnet.test/GarnetJSON/JSONPath/JsonPathExecuteTests.cs +++ b/test/Garnet.test/GarnetJSON/JSONPath/JsonPathExecuteTests.cs @@ -24,21 +24,22 @@ // OTHER DEALINGS IN THE SOFTWARE. #endregion - using System; using System.Collections.Generic; using System.Linq; using System.Text.Json; using System.Text.Json.Nodes; using System.Text.RegularExpressions; +using Allure.NUnit; using GarnetJSON.JSONPath; using NUnit.Framework; using NUnit.Framework.Legacy; namespace Garnet.test.JSONPath { + [AllureNUnit] [TestFixture] - public class JsonPathExecuteTests + public class JsonPathExecuteTests : AllureTestBase { [Test] public void GreaterThanIssue1518() diff --git a/test/Garnet.test/GarnetJSON/JSONPath/JsonPathParseTests.cs b/test/Garnet.test/GarnetJSON/JSONPath/JsonPathParseTests.cs index 32bb2130ffe..814ce019fd8 100644 --- a/test/Garnet.test/GarnetJSON/JSONPath/JsonPathParseTests.cs +++ b/test/Garnet.test/GarnetJSON/JSONPath/JsonPathParseTests.cs @@ -29,14 +29,16 @@ using System.Collections.Generic; using System.Text.Json; using System.Text.Json.Nodes; +using Allure.NUnit; using GarnetJSON.JSONPath; using NUnit.Framework; using NUnit.Framework.Legacy; namespace Garnet.test.JSONPath { + [AllureNUnit] [TestFixture] - public class JsonPathParseTests + public class JsonPathParseTests : AllureTestBase { [Test] public void BooleanQuery_TwoValues() diff --git a/test/Garnet.test/GarnetJSON/JSONPath/JsonPathRegressionTests.cs b/test/Garnet.test/GarnetJSON/JSONPath/JsonPathRegressionTests.cs index 7f39656199a..ddb7b51ac64 100644 --- a/test/Garnet.test/GarnetJSON/JSONPath/JsonPathRegressionTests.cs +++ b/test/Garnet.test/GarnetJSON/JSONPath/JsonPathRegressionTests.cs @@ -24,7 +24,6 @@ // OTHER DEALINGS IN THE SOFTWARE. #endregion - #nullable enable using System; using System.Collections.Generic; @@ -33,14 +32,17 @@ using System.Text.Json; using System.Text.Json.Nodes; using System.Text.Json.Serialization; +using Allure.NUnit; using GarnetJSON.JSONPath; using NUnit.Framework; using NUnit.Framework.Legacy; + namespace Garnet.test.JSONPath { + [AllureNUnit] [TestFixture] - public class JsonPathRegressionTests + public class JsonPathRegressionTests : AllureTestBase { public class RegressionTestQuery { diff --git a/test/Garnet.test/GarnetJSON/JSONPath/QueryExpressionTests.cs b/test/Garnet.test/GarnetJSON/JSONPath/QueryExpressionTests.cs index 47da486f226..eff3a084533 100644 --- a/test/Garnet.test/GarnetJSON/JSONPath/QueryExpressionTests.cs +++ b/test/Garnet.test/GarnetJSON/JSONPath/QueryExpressionTests.cs @@ -24,17 +24,19 @@ // OTHER DEALINGS IN THE SOFTWARE. #endregion - using System.Collections.Generic; using System.Text.Json.Nodes; +using Allure.NUnit; using GarnetJSON.JSONPath; using NUnit.Framework; using NUnit.Framework.Legacy; + namespace Garnet.test.JSONPath { + [AllureNUnit] [TestFixture] - public class QueryExpressionTests + public class QueryExpressionTests : AllureTestBase { [Test] public void AndExpressionTest() diff --git a/test/Garnet.test/GarnetJSON/JsonCommandsTest.cs b/test/Garnet.test/GarnetJSON/JsonCommandsTest.cs index b85d74c9c4b..10621822fd5 100644 --- a/test/Garnet.test/GarnetJSON/JsonCommandsTest.cs +++ b/test/Garnet.test/GarnetJSON/JsonCommandsTest.cs @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. - using System; using System.Collections.Generic; using System.IO; @@ -8,6 +7,7 @@ using System.Reflection; using System.Text; using System.Threading; +using Allure.NUnit; using Garnet.server; using GarnetJSON; using NUnit.Framework; @@ -16,8 +16,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - class JsonCommandsTest + class JsonCommandsTest : AllureTestBase { GarnetServer server; string binPath; diff --git a/test/Garnet.test/GarnetObjectTests.cs b/test/Garnet.test/GarnetObjectTests.cs index c507aef5b81..b665860d167 100644 --- a/test/Garnet.test/GarnetObjectTests.cs +++ b/test/Garnet.test/GarnetObjectTests.cs @@ -2,6 +2,7 @@ // Licensed under the MIT license. using System.Threading.Tasks; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -12,8 +13,9 @@ namespace Garnet.test using ObjectStoreAllocator = GenericAllocator>>; using ObjectStoreFunctions = StoreFunctions>; + [AllureNUnit] [TestFixture] - public class GarnetObjectTests + public class GarnetObjectTests : AllureTestBase { TsavoriteKV store; IDevice logDevice, objectLogDevice; diff --git a/test/Garnet.test/GarnetServerConfigTests.cs b/test/Garnet.test/GarnetServerConfigTests.cs index fb85e063925..04a97488897 100644 --- a/test/Garnet.test/GarnetServerConfigTests.cs +++ b/test/Garnet.test/GarnetServerConfigTests.cs @@ -10,6 +10,7 @@ using System.Text.Json; using System.Text.Json.Serialization; using System.Threading.Tasks; +using Allure.NUnit; using CommandLine; using Garnet.common; using Garnet.server; @@ -21,8 +22,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture, NonParallelizable] - public class GarnetServerConfigTests + public class GarnetServerConfigTests : AllureTestBase { [Test] public void DefaultConfigurationOptionsCoverage() diff --git a/test/Garnet.test/GeoHashTests.cs b/test/Garnet.test/GeoHashTests.cs index c60cc3410ab..1b93a84d1d4 100644 --- a/test/Garnet.test/GeoHashTests.cs +++ b/test/Garnet.test/GeoHashTests.cs @@ -3,13 +3,16 @@ using System; using System.Globalization; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; namespace Garnet.test { - public class GeoHashTests + [AllureNUnit] + [TestFixture] + public class GeoHashTests : AllureTestBase { [Test] [TestCase(30.5388942218, 104.0555758833)] diff --git a/test/Garnet.test/HyperLogLogTests.cs b/test/Garnet.test/HyperLogLogTests.cs index 69e528a0e27..f11edcbe508 100644 --- a/test/Garnet.test/HyperLogLogTests.cs +++ b/test/Garnet.test/HyperLogLogTests.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -11,7 +12,9 @@ namespace Garnet.test { - public unsafe class HyperLogLogTests + [AllureNUnit] + [TestFixture] + public unsafe class HyperLogLogTests : AllureTestBase { GarnetServer server; Random r; diff --git a/test/Garnet.test/IndexGrowthTests.cs b/test/Garnet.test/IndexGrowthTests.cs index 785866f85f9..373777c3edd 100644 --- a/test/Garnet.test/IndexGrowthTests.cs +++ b/test/Garnet.test/IndexGrowthTests.cs @@ -3,14 +3,16 @@ using System; using System.Threading; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using StackExchange.Redis; namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class IndexGrowthTests + public class IndexGrowthTests : AllureTestBase { GarnetServer server; private int indexResizeTaskDelaySeconds = 10; diff --git a/test/Garnet.test/LuaScriptRunnerTests.cs b/test/Garnet.test/LuaScriptRunnerTests.cs index 61f37a54f0f..306bc300c9b 100644 --- a/test/Garnet.test/LuaScriptRunnerTests.cs +++ b/test/Garnet.test/LuaScriptRunnerTests.cs @@ -8,6 +8,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Threading; +using Allure.NUnit; using Garnet.common; using Garnet.server; using Microsoft.Extensions.Logging; @@ -16,8 +17,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - internal class LuaScriptRunnerTests + internal class LuaScriptRunnerTests : AllureTestBase { [Test] public void CannotRunUnsafeScript() diff --git a/test/Garnet.test/LuaScriptTests.cs b/test/Garnet.test/LuaScriptTests.cs index 6df9ce6e1f8..8712b05ba0d 100644 --- a/test/Garnet.test/LuaScriptTests.cs +++ b/test/Garnet.test/LuaScriptTests.cs @@ -14,6 +14,7 @@ using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.common; using Garnet.server; using NUnit.Framework; @@ -22,6 +23,7 @@ namespace Garnet.test { + [AllureNUnit] // Limits chosen here to allow completion - if you have to bump them up, consider that you might have introduced a regression [TestFixture(LuaMemoryManagementMode.Native, "", "")] [TestFixture(LuaMemoryManagementMode.Native, "", "00:00:02")] @@ -29,7 +31,7 @@ namespace Garnet.test [TestFixture(LuaMemoryManagementMode.Tracked, "13m", "")] [TestFixture(LuaMemoryManagementMode.Managed, "", "")] [TestFixture(LuaMemoryManagementMode.Managed, "17m", "")] - public class LuaScriptTests + public class LuaScriptTests : AllureTestBase { /// /// Writes it's parameter directly into the response stream, followed by a \r\n. diff --git a/test/Garnet.test/MultiDatabaseTests.cs b/test/Garnet.test/MultiDatabaseTests.cs index d1775e64e19..7d9dc237b75 100644 --- a/test/Garnet.test/MultiDatabaseTests.cs +++ b/test/Garnet.test/MultiDatabaseTests.cs @@ -3,6 +3,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.common; using Garnet.server; using NUnit.Framework; @@ -11,8 +12,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class MultiDatabaseTests + public class MultiDatabaseTests : AllureTestBase { GarnetServer server; diff --git a/test/Garnet.test/NetworkTests.cs b/test/Garnet.test/NetworkTests.cs index 884caa27ce7..5fb73c517ff 100644 --- a/test/Garnet.test/NetworkTests.cs +++ b/test/Garnet.test/NetworkTests.cs @@ -3,14 +3,16 @@ #if DEBUG using System.Threading; +using Allure.NUnit; using Garnet.common; using NUnit.Framework; using NUnit.Framework.Legacy; namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class NetworkTests + public class NetworkTests : AllureTestBase { GarnetServer server; diff --git a/test/Garnet.test/ObjectTestsForOutput.cs b/test/Garnet.test/ObjectTestsForOutput.cs index bcaf7b256a1..1e6c466015f 100644 --- a/test/Garnet.test/ObjectTestsForOutput.cs +++ b/test/Garnet.test/ObjectTestsForOutput.cs @@ -1,15 +1,17 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. - using System.Text; using System.Threading.Tasks; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; namespace Garnet.test { + + [AllureNUnit] [TestFixture] - public class ObjectTestsForOutput + public class ObjectTestsForOutput : AllureTestBase { protected GarnetServer server; @@ -123,7 +125,6 @@ public async Task CanUseZPopMaxWithLeftOverBuffer(int size) #endregion #region hashmaps - [Test] [TestCase(100)] [TestCase(131042)] @@ -164,6 +165,7 @@ public async Task CanUseHGETWithLeftOverBuffer(int size) ClassicAssert.AreEqual("field2value", t4Result[1]); } + [Test] [TestCase(100)] [TestCase(131042)] @@ -211,11 +213,6 @@ public async Task CanUseHKEYSWithLeftOverBuffer(int size) ClassicAssert.AreEqual("field4", t4Result[3]); } - - - - - #endregion #region lists diff --git a/test/Garnet.test/ReadCacheTests.cs b/test/Garnet.test/ReadCacheTests.cs index 4e6015bc543..da213014078 100644 --- a/test/Garnet.test/ReadCacheTests.cs +++ b/test/Garnet.test/ReadCacheTests.cs @@ -1,14 +1,16 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using StackExchange.Redis; namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class ReadCacheTests + public class ReadCacheTests : AllureTestBase { GarnetServer server; diff --git a/test/Garnet.test/Resp/ACL/AclConfigurationFileTests.cs b/test/Garnet.test/Resp/ACL/AclConfigurationFileTests.cs index bac19583320..b62e9c83951 100644 --- a/test/Garnet.test/Resp/ACL/AclConfigurationFileTests.cs +++ b/test/Garnet.test/Resp/ACL/AclConfigurationFileTests.cs @@ -5,6 +5,7 @@ using System.IO; using System.Linq; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.server.ACL; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -15,6 +16,7 @@ namespace Garnet.test.Resp.ACL /// /// Tests for ACL Configuration file related operations. /// + [AllureNUnit] [TestFixture] class AclConfigurationFileTests : AclTest { diff --git a/test/Garnet.test/Resp/ACL/AclParserTests.cs b/test/Garnet.test/Resp/ACL/AclParserTests.cs index c4789bd5e19..5c6a1b0b435 100644 --- a/test/Garnet.test/Resp/ACL/AclParserTests.cs +++ b/test/Garnet.test/Resp/ACL/AclParserTests.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. +using Allure.NUnit; using Garnet.server.ACL; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -10,6 +11,7 @@ namespace Garnet.test.Resp.ACL /// /// Tests for the . /// + [AllureNUnit] [TestFixture] internal class AclParserTests : AclTest { diff --git a/test/Garnet.test/Resp/ACL/AclTest.cs b/test/Garnet.test/Resp/ACL/AclTest.cs index 9f5e614cdab..9d4355fbde1 100644 --- a/test/Garnet.test/Resp/ACL/AclTest.cs +++ b/test/Garnet.test/Resp/ACL/AclTest.cs @@ -9,7 +9,7 @@ namespace Garnet.test.Resp.ACL /// /// Base class used for all RESP ACL tests /// - abstract class AclTest + abstract class AclTest : AllureTestBase { /// /// Dummy password used by some of the tests. diff --git a/test/Garnet.test/Resp/ACL/BasicTests.cs b/test/Garnet.test/Resp/ACL/BasicTests.cs index 53aedc5fe9a..0b38833871e 100644 --- a/test/Garnet.test/Resp/ACL/BasicTests.cs +++ b/test/Garnet.test/Resp/ACL/BasicTests.cs @@ -3,6 +3,7 @@ using System; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -12,6 +13,7 @@ namespace Garnet.test.Resp.ACL /// /// Tests for Resp ACL commands that don't have subcommands /// + [AllureNUnit] [TestFixture] internal class BasicTests : AclTest { diff --git a/test/Garnet.test/Resp/ACL/DeleteUserTests.cs b/test/Garnet.test/Resp/ACL/DeleteUserTests.cs index c5f89bd3c8e..f80618e309e 100644 --- a/test/Garnet.test/Resp/ACL/DeleteUserTests.cs +++ b/test/Garnet.test/Resp/ACL/DeleteUserTests.cs @@ -3,6 +3,7 @@ using System; using System.Threading.Tasks; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -11,6 +12,7 @@ namespace Garnet.test.Resp.ACL /// /// Tests for ACL DELUSER operations. /// + [AllureNUnit] [TestFixture] class DeleteUserTests : AclTest { diff --git a/test/Garnet.test/Resp/ACL/GetUserTests.cs b/test/Garnet.test/Resp/ACL/GetUserTests.cs index 07ca6e802da..b9f60bdc25b 100644 --- a/test/Garnet.test/Resp/ACL/GetUserTests.cs +++ b/test/Garnet.test/Resp/ACL/GetUserTests.cs @@ -5,6 +5,7 @@ using System.IO; using System.Text; using System.Threading.Tasks; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using StackExchange.Redis; @@ -14,6 +15,7 @@ namespace Garnet.test.Resp.ACL /// /// Tests for ACL GETUSER command. /// + [AllureNUnit] [TestFixture] internal class GetUserTests : AclTest { diff --git a/test/Garnet.test/Resp/ACL/ParallelTests.cs b/test/Garnet.test/Resp/ACL/ParallelTests.cs index 54b85767342..49001e2ff79 100644 --- a/test/Garnet.test/Resp/ACL/ParallelTests.cs +++ b/test/Garnet.test/Resp/ACL/ParallelTests.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.server.ACL; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -12,6 +13,7 @@ namespace Garnet.test.Resp.ACL /// /// Tests that operate in parallel on the ACL /// + [AllureNUnit] [TestFixture] internal class ParallelTests : AclTest { diff --git a/test/Garnet.test/Resp/ACL/RespCommandTests.cs b/test/Garnet.test/Resp/ACL/RespCommandTests.cs index 3b02ac68853..8fb706cfd41 100644 --- a/test/Garnet.test/Resp/ACL/RespCommandTests.cs +++ b/test/Garnet.test/Resp/ACL/RespCommandTests.cs @@ -10,6 +10,7 @@ using System.Reflection; using System.Text; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.client; using Garnet.server; using Garnet.server.ACL; @@ -18,7 +19,9 @@ namespace Garnet.test.Resp.ACL { - public class RespCommandTests + [AllureNUnit] + [TestFixture] + public class RespCommandTests : AllureTestBase { private const string DefaultPassword = nameof(RespCommandTests); private const string DefaultUser = "default"; diff --git a/test/Garnet.test/Resp/ACL/SetUserTests.cs b/test/Garnet.test/Resp/ACL/SetUserTests.cs index 5f751d9525e..2be3279b9f7 100644 --- a/test/Garnet.test/Resp/ACL/SetUserTests.cs +++ b/test/Garnet.test/Resp/ACL/SetUserTests.cs @@ -4,6 +4,7 @@ using System; using System.Linq; using System.Threading.Tasks; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -12,6 +13,7 @@ namespace Garnet.test.Resp.ACL /// /// Tests for ACL SETUSER operations. /// + [AllureNUnit] [TestFixture] class SetUserTests : AclTest { diff --git a/test/Garnet.test/Resp/GarnetAuthenticatorTests.cs b/test/Garnet.test/Resp/GarnetAuthenticatorTests.cs index af92c5dd471..8728325e62f 100644 --- a/test/Garnet.test/Resp/GarnetAuthenticatorTests.cs +++ b/test/Garnet.test/Resp/GarnetAuthenticatorTests.cs @@ -4,6 +4,7 @@ using System; using System.Text; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.server; using Garnet.server.Auth; using Garnet.server.Auth.Settings; @@ -15,7 +16,9 @@ namespace Garnet.test.Resp /// /// Tests generic to all s. /// - public class GarnetAuthenticatorTests + [AllureNUnit] + [TestFixture] + public class GarnetAuthenticatorTests : AllureTestBase { private delegate bool AuthenticateDelegate(ReadOnlySpan password, ReadOnlySpan username); diff --git a/test/Garnet.test/Resp/RespParseFuzzRegressionTests.cs b/test/Garnet.test/Resp/RespParseFuzzRegressionTests.cs index bc8e8c83298..f8d82443db5 100644 --- a/test/Garnet.test/Resp/RespParseFuzzRegressionTests.cs +++ b/test/Garnet.test/Resp/RespParseFuzzRegressionTests.cs @@ -2,6 +2,7 @@ // Licensed under the MIT license. using System; +using Allure.NUnit; using Garnet.common.Parsing; using Garnet.server; using NUnit.Framework; @@ -14,8 +15,10 @@ namespace Garnet.test.Resp /// /// Accordingly these are a bit of a grab bag, but they need to go somewhere. /// + [AllureNUnit] + [TestFixture] [Category("FUZZING")] - public class RespParseFuzzRegressionTests + public class RespParseFuzzRegressionTests : AllureTestBase { [Test] public void MakeUpperCaseAccessViolation() diff --git a/test/Garnet.test/Resp/RespReadUtilsTests.cs b/test/Garnet.test/Resp/RespReadUtilsTests.cs index 802d0e498d4..043a05ed450 100644 --- a/test/Garnet.test/Resp/RespReadUtilsTests.cs +++ b/test/Garnet.test/Resp/RespReadUtilsTests.cs @@ -2,6 +2,7 @@ // Licensed under the MIT license. using System.Text; +using Allure.NUnit; using Garnet.common; using Garnet.common.Parsing; using NUnit.Framework; @@ -12,7 +13,9 @@ namespace Garnet.test.Resp /// /// Tests for RespReadUtils parsing functions. /// - unsafe class RespReadUtilsTests + [AllureNUnit] + [TestFixture] + unsafe class RespReadUtilsTests : AllureTestBase { /// /// Tests that ReadLengthHeader successfully parses valid numbers. diff --git a/test/Garnet.test/RespAdminCommandsTests.cs b/test/Garnet.test/RespAdminCommandsTests.cs index f7819b7a776..6fa5b9dd509 100644 --- a/test/Garnet.test/RespAdminCommandsTests.cs +++ b/test/Garnet.test/RespAdminCommandsTests.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -14,8 +15,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespAdminCommandsTests + public class RespAdminCommandsTests : AllureTestBase { GarnetServer server; diff --git a/test/Garnet.test/RespAofAzureTests.cs b/test/Garnet.test/RespAofAzureTests.cs index 3759cd59dc3..854fe9032e1 100644 --- a/test/Garnet.test/RespAofAzureTests.cs +++ b/test/Garnet.test/RespAofAzureTests.cs @@ -3,14 +3,16 @@ using System; using System.Threading; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using StackExchange.Redis; namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespAofAzureTests + public class RespAofAzureTests : AllureTestBase { GarnetServer server; static readonly SortedSetEntry[] entries = diff --git a/test/Garnet.test/RespAofTests.cs b/test/Garnet.test/RespAofTests.cs index 098ced7d5a4..38b758a7a2f 100644 --- a/test/Garnet.test/RespAofTests.cs +++ b/test/Garnet.test/RespAofTests.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -12,8 +13,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespAofTests + public class RespAofTests : AllureTestBase { GarnetServer server; private IReadOnlyDictionary respCustomCommandsInfo; diff --git a/test/Garnet.test/RespBlockingCollectionTests.cs b/test/Garnet.test/RespBlockingCollectionTests.cs index c65436a969a..09ec79e4da3 100644 --- a/test/Garnet.test/RespBlockingCollectionTests.cs +++ b/test/Garnet.test/RespBlockingCollectionTests.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -13,7 +14,9 @@ namespace Garnet.test { - public class RespBlockingCollectionTests + [AllureNUnit] + [TestFixture] + public class RespBlockingCollectionTests : AllureTestBase { GarnetServer server; private static readonly Random random = Random.Shared; diff --git a/test/Garnet.test/RespCommandTests.cs b/test/Garnet.test/RespCommandTests.cs index 595dfddc242..7c4ec23b49a 100644 --- a/test/Garnet.test/RespCommandTests.cs +++ b/test/Garnet.test/RespCommandTests.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Reflection; using System.Runtime.InteropServices; +using Allure.NUnit; using Garnet.common; using Garnet.server; using NUnit.Framework; @@ -18,8 +19,9 @@ namespace Garnet.test /// /// This test class tests the RESP COMMAND and COMMAND INFO commands /// + [AllureNUnit] [TestFixture] - public class RespCommandTests + public class RespCommandTests : AllureTestBase { GarnetServer server; private string extTestDir; diff --git a/test/Garnet.test/RespConfigTests.cs b/test/Garnet.test/RespConfigTests.cs index 915bea18b8d..9c5c30f3f50 100644 --- a/test/Garnet.test/RespConfigTests.cs +++ b/test/Garnet.test/RespConfigTests.cs @@ -4,6 +4,7 @@ using System; using System.Linq; using System.Threading; +using Allure.NUnit; using Garnet.common; using Garnet.server; using NUnit.Framework; @@ -19,9 +20,10 @@ namespace Garnet.test /// /// Test dynamically changing server configuration using CONFIG SET command. /// + [AllureNUnit] [TestFixture(false)] [TestFixture(true)] - public class RespConfigTests + public class RespConfigTests : AllureTestBase { GarnetServer server; private string memorySize = "17g"; @@ -278,12 +280,15 @@ public void ConfigObjHeapSizeTest(string smallerSize, string largerSize, string } } + + /// /// Test memory utilization behavior when dynamically changing the memory size configuration using CONFIG SET. /// + [AllureNUnit] [TestFixture(false)] [TestFixture(true)] - public class RespConfigUtilizationTests + public class RespConfigUtilizationTests : AllureTestBase { GarnetServer server; private string memorySize = "3m"; @@ -561,9 +566,10 @@ public void ConfigSetMemorySizeRecoveryTest(StoreType storeType, string largerSi /// /// Test memory utilization behavior when dynamically changing the memory size configuration using CONFIG SET. /// + [AllureNUnit] [TestFixture(false)] [TestFixture(true)] - public class RespConfigIndexUtilizationTests + public class RespConfigIndexUtilizationTests : AllureTestBase { GarnetServer server; private string memorySize = "3m"; @@ -689,9 +695,10 @@ long GetOverflowBucketAllocations() => /// /// Test memory utilization behavior when dynamically changing the memory size configuration using CONFIG SET. /// + [AllureNUnit] [TestFixture(false)] [TestFixture(true)] - public class RespConfigHeapUtilizationTests + public class RespConfigHeapUtilizationTests : AllureTestBase { GarnetServer server; private string memorySize = "3m"; diff --git a/test/Garnet.test/RespCustomCommandTests.cs b/test/Garnet.test/RespCustomCommandTests.cs index a3b3d372be2..93b34e44cc1 100644 --- a/test/Garnet.test/RespCustomCommandTests.cs +++ b/test/Garnet.test/RespCustomCommandTests.cs @@ -11,6 +11,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.common; using Garnet.server; using GarnetJSON; @@ -222,8 +223,9 @@ public override unsafe void Main(TGarnetApi garnetApi, ref CustomPro } } + [AllureNUnit] [TestFixture] - public class RespCustomCommandTests + public class RespCustomCommandTests : AllureTestBase { GarnetServer server; private string _extTestDir1; diff --git a/test/Garnet.test/RespEtagTests.cs b/test/Garnet.test/RespEtagTests.cs index 7b5f7720d88..2483f3d24d6 100644 --- a/test/Garnet.test/RespEtagTests.cs +++ b/test/Garnet.test/RespEtagTests.cs @@ -8,6 +8,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -15,8 +16,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespEtagTests + public class RespEtagTests : AllureTestBase { private GarnetServer server; private Random r; diff --git a/test/Garnet.test/RespGetLowMemoryTests.cs b/test/Garnet.test/RespGetLowMemoryTests.cs index a5b1595af9e..7eaab95e63d 100644 --- a/test/Garnet.test/RespGetLowMemoryTests.cs +++ b/test/Garnet.test/RespGetLowMemoryTests.cs @@ -5,14 +5,16 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using StackExchange.Redis; namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespGetLowMemoryTests + public class RespGetLowMemoryTests : AllureTestBase { GarnetServer server; Random r; diff --git a/test/Garnet.test/RespHashTests.cs b/test/Garnet.test/RespHashTests.cs index 3ca2202b144..890ec5d29d6 100644 --- a/test/Garnet.test/RespHashTests.cs +++ b/test/Garnet.test/RespHashTests.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -13,8 +14,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespHashTests + public class RespHashTests : AllureTestBase { GarnetServer server; diff --git a/test/Garnet.test/RespInfoTests.cs b/test/Garnet.test/RespInfoTests.cs index 383f9cff5b1..8f40a65a71c 100644 --- a/test/Garnet.test/RespInfoTests.cs +++ b/test/Garnet.test/RespInfoTests.cs @@ -6,14 +6,16 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using StackExchange.Redis; namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespInfoTests + public class RespInfoTests : AllureTestBase { GarnetServer server; diff --git a/test/Garnet.test/RespListGarnetClientTests.cs b/test/Garnet.test/RespListGarnetClientTests.cs index e3642d28e2a..056ee48c6fc 100644 --- a/test/Garnet.test/RespListGarnetClientTests.cs +++ b/test/Garnet.test/RespListGarnetClientTests.cs @@ -3,14 +3,16 @@ using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.client; using NUnit.Framework; using NUnit.Framework.Legacy; namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespListGarnetClientTests + public class RespListGarnetClientTests : AllureTestBase { private GarnetServer server; diff --git a/test/Garnet.test/RespListTests.cs b/test/Garnet.test/RespListTests.cs index a0e7f234292..35f81b1e092 100644 --- a/test/Garnet.test/RespListTests.cs +++ b/test/Garnet.test/RespListTests.cs @@ -7,6 +7,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -14,8 +15,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - class RespListTests + class RespListTests : AllureTestBase { GarnetServer server; Random r; diff --git a/test/Garnet.test/RespLowMemoryTests.cs b/test/Garnet.test/RespLowMemoryTests.cs index f6406f4001a..32e0bf26863 100644 --- a/test/Garnet.test/RespLowMemoryTests.cs +++ b/test/Garnet.test/RespLowMemoryTests.cs @@ -2,14 +2,16 @@ // Licensed under the MIT license. using System; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using StackExchange.Redis; namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespLowMemoryTests + public class RespLowMemoryTests : AllureTestBase { GarnetServer server; diff --git a/test/Garnet.test/RespMetricsTest.cs b/test/Garnet.test/RespMetricsTest.cs index 024cd94954b..cdbc4bfefd8 100644 --- a/test/Garnet.test/RespMetricsTest.cs +++ b/test/Garnet.test/RespMetricsTest.cs @@ -4,6 +4,7 @@ using System; using System.Linq; using System.Threading; +using Allure.NUnit; using Garnet.common; using Microsoft.Extensions.Logging; using NUnit.Framework; @@ -12,8 +13,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespMetricsTest + public class RespMetricsTest : AllureTestBase { GarnetServer server; ILoggerFactory loggerFactory; diff --git a/test/Garnet.test/RespModuleTests.cs b/test/Garnet.test/RespModuleTests.cs index 99710fcf2c1..67fa83c9ad6 100644 --- a/test/Garnet.test/RespModuleTests.cs +++ b/test/Garnet.test/RespModuleTests.cs @@ -4,14 +4,16 @@ using System.IO; using System.Reflection; using System.Runtime.InteropServices; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using StackExchange.Redis; namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespModuleTests + public class RespModuleTests : AllureTestBase { GarnetServer server; private string testModuleDir; @@ -347,8 +349,9 @@ public void TestNoOpModule(bool loadFromDll) } [NonParallelizable] + [AllureNUnit] [TestFixture] - public class RespModuleAdditionalTests + public class RespModuleAdditionalTests : AllureTestBase { private string testModuleDir; string binPath; diff --git a/test/Garnet.test/RespPubSubTests.cs b/test/Garnet.test/RespPubSubTests.cs index 35b1d631681..d3e9da69856 100644 --- a/test/Garnet.test/RespPubSubTests.cs +++ b/test/Garnet.test/RespPubSubTests.cs @@ -5,14 +5,16 @@ using System.Linq; using System.Security.Cryptography; using System.Threading; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using StackExchange.Redis; namespace Garnet.test { + [AllureNUnit] [TestFixture] - class RespPubSubTests + class RespPubSubTests : AllureTestBase { GarnetServer server; diff --git a/test/Garnet.test/RespRevivificationTests.cs b/test/Garnet.test/RespRevivificationTests.cs index b73539be955..ec6c01e167b 100644 --- a/test/Garnet.test/RespRevivificationTests.cs +++ b/test/Garnet.test/RespRevivificationTests.cs @@ -4,14 +4,16 @@ using System; using System.Linq; using System.Threading.Tasks; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using StackExchange.Redis; namespace Garnet.test { + [AllureNUnit] [TestFixture] - class RespRevivificationTests + class RespRevivificationTests : AllureTestBase { GarnetServer server; Random r; diff --git a/test/Garnet.test/RespScanCommandsTests.cs b/test/Garnet.test/RespScanCommandsTests.cs index dfb9b7ea238..c479c5704ed 100644 --- a/test/Garnet.test/RespScanCommandsTests.cs +++ b/test/Garnet.test/RespScanCommandsTests.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -11,8 +12,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespScanCommandsTests + public class RespScanCommandsTests : AllureTestBase { GarnetServer server; private IReadOnlyDictionary respCustomCommandsInfo; diff --git a/test/Garnet.test/RespSetTest.cs b/test/Garnet.test/RespSetTest.cs index ca5bb482a60..3ad050094e4 100644 --- a/test/Garnet.test/RespSetTest.cs +++ b/test/Garnet.test/RespSetTest.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -14,8 +15,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespSetTest + public class RespSetTest : AllureTestBase { GarnetServer server; diff --git a/test/Garnet.test/RespSlowLogTests.cs b/test/Garnet.test/RespSlowLogTests.cs index 430f1f78b33..43968958341 100644 --- a/test/Garnet.test/RespSlowLogTests.cs +++ b/test/Garnet.test/RespSlowLogTests.cs @@ -1,14 +1,16 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using StackExchange.Redis; namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespSlowLogTests + public class RespSlowLogTests : AllureTestBase { GarnetServer server; int slowLogThreshold = 3_000_000; diff --git a/test/Garnet.test/RespSortedSetGarnetClientTests.cs b/test/Garnet.test/RespSortedSetGarnetClientTests.cs index 230d5fa66ee..2059d6f44f9 100644 --- a/test/Garnet.test/RespSortedSetGarnetClientTests.cs +++ b/test/Garnet.test/RespSortedSetGarnetClientTests.cs @@ -9,6 +9,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.client; using Garnet.client.GarnetClientAPI; using Garnet.common; @@ -18,8 +19,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespSortedSetGarnetClientTests + public class RespSortedSetGarnetClientTests : AllureTestBase { protected GarnetServer server; ManualResetEventSlim waiter; diff --git a/test/Garnet.test/RespSortedSetGeoTests.cs b/test/Garnet.test/RespSortedSetGeoTests.cs index ab0694c4ef0..318e640ab9b 100644 --- a/test/Garnet.test/RespSortedSetGeoTests.cs +++ b/test/Garnet.test/RespSortedSetGeoTests.cs @@ -5,6 +5,7 @@ using System.Globalization; using System.Linq; using System.Text; +using Allure.NUnit; using Garnet.common; using Garnet.server; using NUnit.Framework; @@ -13,8 +14,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespSortedSetGeoTests + public class RespSortedSetGeoTests : AllureTestBase { GarnetServer server; diff --git a/test/Garnet.test/RespSortedSetTests.cs b/test/Garnet.test/RespSortedSetTests.cs index fbf78d8ef64..23dcaee8405 100644 --- a/test/Garnet.test/RespSortedSetTests.cs +++ b/test/Garnet.test/RespSortedSetTests.cs @@ -8,6 +8,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Embedded.server; using Garnet.common; using Garnet.server; @@ -26,8 +27,9 @@ namespace Garnet.test /* ObjectStoreFunctions */ StoreFunctions>, GenericAllocator>>>>; + [AllureNUnit] [TestFixture] - public class RespSortedSetTests + public class RespSortedSetTests : AllureTestBase { protected GarnetServer server; diff --git a/test/Garnet.test/RespTests.cs b/test/Garnet.test/RespTests.cs index abf27a454b0..f7be4d3369f 100644 --- a/test/Garnet.test/RespTests.cs +++ b/test/Garnet.test/RespTests.cs @@ -10,6 +10,7 @@ using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.client; using Garnet.common; using Garnet.server; @@ -19,8 +20,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespTests + public class RespTests : AllureTestBase { GarnetServer server; Random r; diff --git a/test/Garnet.test/RespTlsTests.cs b/test/Garnet.test/RespTlsTests.cs index bd39c426c2b..1815355749b 100644 --- a/test/Garnet.test/RespTlsTests.cs +++ b/test/Garnet.test/RespTlsTests.cs @@ -7,6 +7,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.common; using Garnet.server; using NUnit.Framework; @@ -15,8 +16,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespTlsTests + public class RespTlsTests : AllureTestBase { GarnetServer server; diff --git a/test/Garnet.test/RespTransactionProcTests.cs b/test/Garnet.test/RespTransactionProcTests.cs index a6de02bfa22..b993312c20a 100644 --- a/test/Garnet.test/RespTransactionProcTests.cs +++ b/test/Garnet.test/RespTransactionProcTests.cs @@ -2,6 +2,7 @@ // Licensed under the MIT license. using System.Threading; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -9,8 +10,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class RespTransactionProcTests + public class RespTransactionProcTests : AllureTestBase { GarnetServer server; diff --git a/test/Garnet.test/ScratchBufferAllocatorTests.cs b/test/Garnet.test/ScratchBufferAllocatorTests.cs index 290f4778719..a1f50a1379a 100644 --- a/test/Garnet.test/ScratchBufferAllocatorTests.cs +++ b/test/Garnet.test/ScratchBufferAllocatorTests.cs @@ -1,13 +1,16 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; namespace Garnet.test { - public class ScratchBufferAllocatorTests + [AllureNUnit] + [TestFixture] + public class ScratchBufferAllocatorTests : AllureTestBase { [Test] diff --git a/test/Garnet.test/TransactionTests.cs b/test/Garnet.test/TransactionTests.cs index 73a7baee496..dbf277f4245 100644 --- a/test/Garnet.test/TransactionTests.cs +++ b/test/Garnet.test/TransactionTests.cs @@ -4,6 +4,7 @@ using System; using System.Linq; using System.Threading.Tasks; +using Allure.NUnit; using Garnet.server; using NUnit.Framework; using NUnit.Framework.Legacy; @@ -11,8 +12,9 @@ namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class TransactionTests + public class TransactionTests : AllureTestBase { GarnetServer server; diff --git a/test/Garnet.test/UnixSocketTests.cs b/test/Garnet.test/UnixSocketTests.cs index 3baa37cc687..a5c95477e2f 100644 --- a/test/Garnet.test/UnixSocketTests.cs +++ b/test/Garnet.test/UnixSocketTests.cs @@ -6,14 +6,16 @@ using System.IO; using System.Net.Sockets; using System.Threading.Tasks; +using Allure.NUnit; using NUnit.Framework; using NUnit.Framework.Legacy; using StackExchange.Redis; namespace Garnet.test { + [AllureNUnit] [TestFixture] - public class UnixSocketTests + public class UnixSocketTests : AllureTestBase { [SetUp] public void Setup() diff --git a/website/docs/dev/onboarding.md b/website/docs/dev/onboarding.md index 22504f06719..be2063db09c 100644 --- a/website/docs/dev/onboarding.md +++ b/website/docs/dev/onboarding.md @@ -126,7 +126,14 @@ Any new feature, change to existing functionality or bug fixing needs to be done ``/branch-name -3. Include Unit Tests to test the new commands or feature. +3. Include Unit Tests for any new commands or feature. Allure enabled tests are required. + + Full documentation about Allure can be found [here](https://allurereport.org/docs/). + + Each test class must: + * Apply [AllureNUnit] custom attribute + * Apply [TestFixture] attribute + * Inherit from the AllureTestBase base class 4. Once it is ready for review, create a [Pull Request](https://github.com/microsoft/Garnet/pulls). Make sure to link it to your issue item in the development section.