diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index b609f51ac0..a702023ee0 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -189,12 +189,59 @@ jobs: env: GITHUB_TEST_PREPARATION: true - - name: Save KNet bin in cache + - name: Prepare configuration files + run: | + Copy-Item src\container\config_container\zookeeper.properties -Destination bin\net462\zookeeper.properties -Force + Copy-Item src\container\config_container\server.properties -Destination bin\net462\server.properties -Force + Copy-Item src\config\log4j.properties -Destination bin\net462\log4j.properties -Force + Copy-Item src\container\config_container\zookeeper.properties -Destination bin\net6.0\zookeeper.properties -Force + Copy-Item src\container\config_container\server.properties -Destination bin\net6.0\server.properties -Force + Copy-Item src\config\log4j.properties -Destination bin\net6.0\log4j.properties -Force + Copy-Item src\container\config_container\zookeeper.properties -Destination bin\net8.0\zookeeper.properties -Force + Copy-Item src\container\config_container\server.properties -Destination bin\net8.0\server.properties -Force + Copy-Item src\config\log4j.properties -Destination bin\net8.0\log4j.properties -Force + + - name: Save KNet net462 bin in cache + uses: actions/cache/save@v4 + with: + enableCrossOsArchive: true + path: ./bin/net462/ + key: KNet_net462_bin_${{ github.sha }} + + - name: Save KNet net6.0 bin in cache + uses: actions/cache/save@v4 + with: + enableCrossOsArchive: true + path: ./bin/net6.0/ + key: KNet_net6.0_bin_${{ github.sha }} + + - name: Save KNet net8.0 bin in cache + uses: actions/cache/save@v4 + with: + enableCrossOsArchive: true + path: ./bin/net8.0/ + key: KNet_net8.0_bin_${{ github.sha }} + + - name: Save KNet net462 binCLI in cache uses: actions/cache/save@v4 with: enableCrossOsArchive: true - path: ./bin/ - key: KNet_bin_${{ github.sha }} + path: ./binCLI/net462/ + key: KNet_net462_binCLI_${{ github.sha }} + + - name: Save KNet net6.0 binCLI in cache + uses: actions/cache/save@v4 + with: + enableCrossOsArchive: true + path: ./binCLI/net6.0/ + key: KNet_net6.0_binCLI_${{ github.sha }} + + - name: Save KNet net8.0 binCLI in cache + uses: actions/cache/save@v4 + with: + enableCrossOsArchive: true + path: ./binCLI/net8.0/ + key: KNet_net8.0_binCLI_${{ github.sha }} build_container_knettest: needs: check_changes @@ -262,7 +309,7 @@ jobs: tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - execute_KNetTest: + execute_KNetTest_linux: needs: [build_windows, build_container_knettest] services: kafka: @@ -274,41 +321,31 @@ jobs: ports: - 9092:9092 env: - KNET_RUNNING_MODE: server + KNET_DOCKER_RUNNING_MODE: server JCOBRIDGE_LicensePath: ${{ secrets.JCOBRIDGE_ONLINE }} strategy: fail-fast: false matrix: os: [ 'ubuntu-latest' ] #, 'macos-latest', 'macos-13' , 'windows-latest' ] - framework: [ 'net462', 'net6.0', 'net8.0' ] + framework: [ 'net6.0', 'net8.0' ] buffered: [ 'runBuffered', ''] - extraValue: [ '', 'withBigExtraValue', 'withBigBigExtraValue' ] - jdk_vendor: [ 'temurin', 'zulu', 'microsoft', 'corretto', 'oracle'] + extraValue: [ '', 'withBigBigExtraValue' ] + jdk_vendor: [ 'temurin', 'zulu', 'oracle'] #removed 'microsoft', 'corretto', to reduce matrix size jdk_version: [ '11', '17', '21' ] # only LTS versions exclude: - - os: ubuntu-latest - framework: net462 - - os: macos-latest - framework: net462 - - os: macos-latest - framework: net6.0 - - os: macos-13 - framework: net462 - - os: macos-13 - framework: net6.0 - jdk_vendor: oracle jdk_version: 11 runs-on: ${{ matrix.os }} steps: - - name: Restore KNet bin from cache + - name: Restore KNet ${{ matrix.framework }} bin from cache uses: actions/cache/restore@v4 with: fail-on-cache-miss: true enableCrossOsArchive: true - path: ./bin/ - key: KNet_bin_${{ github.sha }} + path: ./bin/${{ matrix.framework }}/ + key: KNet_${{ matrix.framework }}_bin_${{ github.sha }} - name: Set up JDK distribution uses: actions/setup-java@v4 @@ -316,13 +353,18 @@ jobs: distribution: ${{ matrix.jdk_vendor }} java-version: ${{ matrix.jdk_version }} - - name: Executing KNetTest on Ubuntu with ${{ matrix.jdk_vendor }} ${{ matrix.jdk_version }} + - name: Executing KNetTest on ${{ matrix.os }} with ${{ matrix.jdk_vendor }} ${{ matrix.jdk_version }} if: ${{ matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' || matrix.os == 'macos-13' }} - continue-on-error: true - run: dotnet ./bin/${{ matrix.framework }}/KNetTest.dll localhost:9092 randomizeTopicName ${{ matrix.buffered }} ${{ matrix.extraValue }} + run: dotnet ./bin/${{ matrix.framework }}/KNetTest.dll localhost:9092 useConsumeCallback randomizeTopicName ${{ matrix.buffered }} ${{ matrix.extraValue }} + env: + JCOBRIDGE_LicensePath: ${{ secrets.JCOBRIDGE_ONLINE }} + + - name: Executing KNetTestSerDes on ${{ matrix.os }} with ${{ matrix.jdk_vendor }} ${{ matrix.jdk_version }} + shell: pwsh + run: dotnet ${{ github.workspace }}/bin/${{ matrix.framework }}/KNetTestSerDes.dll env: JCOBRIDGE_LicensePath: ${{ secrets.JCOBRIDGE_ONLINE }} - + # Following shall be disabled since not supported from GitHub # #- name: Executing KNetTest on Windows with ${{ matrix.jdk_vendor }} ${{ matrix.jdk_version }} @@ -335,4 +377,140 @@ jobs: # if: ${{ matrix.os == 'windows-latest' && matrix.framework == 'net462' }} # run: .\bin\${{ matrix.framework }}\KNetTest.exe localhost:9092 randomizeTopicName ${{ matrix.buffered }} ${{ matrix.extraValue }} # env: - # JCOBRIDGE_LicensePath: ${{ secrets.JCOBRIDGE_ONLINE }} \ No newline at end of file + # JCOBRIDGE_LicensePath: ${{ secrets.JCOBRIDGE_ONLINE }} + + execute_KNetTest_other: + needs: [build_windows] + strategy: + fail-fast: false + matrix: + os: [ 'macos-latest', 'macos-13' , 'windows-latest' ] + framework: [ 'net462', 'net6.0', 'net8.0' ] + buffered: [ 'runBuffered', ''] + extraValue: [ '', 'withBigBigExtraValue' ] + jdk_vendor: [ 'temurin', 'zulu', 'oracle'] #removed 'microsoft', 'corretto', to reduce matrix size + jdk_version: [ '11', '17', '21' ] # only LTS versions + exclude: + - os: macos-latest + framework: net462 + - os: macos-latest + framework: net6.0 + - os: macos-13 + framework: net462 + - os: macos-13 + framework: net6.0 + - jdk_vendor: oracle + jdk_version: 11 + + runs-on: ${{ matrix.os }} + steps: + - name: Restore KNet ${{ matrix.framework }} bin from cache + uses: actions/cache/restore@v4 + with: + fail-on-cache-miss: true + enableCrossOsArchive: true + path: ./bin/${{ matrix.framework }}/ + key: KNet_${{ matrix.framework }}_bin_${{ github.sha }} + + - name: Restore KNetCLI ${{ matrix.framework }} binCLI from cache + uses: actions/cache/restore@v4 + with: + fail-on-cache-miss: true + enableCrossOsArchive: true + path: ./binCLI/${{ matrix.framework }}/ + key: KNet_${{ matrix.framework }}_binCLI_${{ github.sha }} + + - name: Set up JDK distribution + uses: actions/setup-java@v4 + with: # running setup-java again overwrites the settings.xml + distribution: ${{ matrix.jdk_vendor }} + java-version: ${{ matrix.jdk_version }} + + - name: Start Kafka on ${{ matrix.os }} with ${{ matrix.jdk_vendor }} ${{ matrix.jdk_version }} + if: ${{ matrix.os != 'windows-latest' }} + shell: pwsh + run: | + New-Item -Path "${{ github.workspace }}" -Name "logfiles" -ItemType Directory + Start-Process -RSE ${{ github.workspace }}/logfiles/PWSH_zookeeper_err.log -RSO ${{ github.workspace }}/logfiles/PWSH_zookeeper_out.log -FilePath dotnet -ArgumentList ( '${{ github.workspace }}/binCLI/${{ matrix.framework }}/MASES.KNetCLI.dll', 'zookeeperstart', '-LogPath', '${{ github.workspace }}/logfiles/', '-Log4JConfiguration', '${{ github.workspace }}/bin/${{ matrix.framework }}/log4j.properties', '${{ github.workspace }}/bin/${{ matrix.framework }}/zookeeper.properties' ) + Start-Process -RSE ${{ github.workspace }}/logfiles/PWSH_kafka_err.log -RSO ${{ github.workspace }}/logfiles/PWSH_kafka_out.log -FilePath dotnet -ArgumentList ( '${{ github.workspace }}/binCLI/${{ matrix.framework }}/MASES.KNetCLI.dll', 'kafkastart', '-LogPath', '${{ github.workspace }}/logfiles/', '-Log4JConfiguration', '${{ github.workspace }}/bin/${{ matrix.framework }}/log4j.properties', '${{ github.workspace }}/bin/${{ matrix.framework }}/server.properties' ) + env: + JCOBRIDGE_LicensePath: ${{ secrets.JCOBRIDGE_ONLINE }} + + # - name: Start Kafka on ${{ matrix.os }} with ${{ matrix.jdk_vendor }} ${{ matrix.jdk_version }} + # if: ${{ matrix.os == 'windows-latest' }} + # shell: cmd + # run: | + # mkdir ${{ github.workspace }}\logfiles + # START /B ${{ github.workspace }}\binCLI\${{ matrix.framework }}\MASES.KNetCLI.exe zookeeperstart -LogPath ${{ github.workspace }}\logfiles\ -Log4JConfiguration ${{ github.workspace }}\bin\${{ matrix.framework }}\log4j.properties ${{ github.workspace }}\bin\${{ matrix.framework }}\zookeeper.properties + # START /B ${{ github.workspace }}\binCLI\${{ matrix.framework }}\MASES.KNetCLI.exe kafkastart -LogPath ${{ github.workspace }}\logfiles\ -Log4JConfiguration ${{ github.workspace }}\bin\${{ matrix.framework }}\log4j.properties ${{ github.workspace }}\bin\${{ matrix.framework }}\server.properties + # # Start-Process -RSE ${{ github.workspace }}/logfiles/PWSH_zookeeper_err.log -RSO ${{ github.workspace }}\logfiles\PWSH_zookeeper_out.log -FilePath ${{ github.workspace }}\binCLI\${{ matrix.framework }}\MASES.KNetCLI.exe -ArgumentList ( 'zookeeperstart', '-LogPath', '${{ github.workspace }}\logfiles\', '-Log4JConfiguration', '${{ github.workspace }}\bin\${{ matrix.framework }}\log4j.properties', '${{ github.workspace }}\bin\${{ matrix.framework }}\zookeeper.properties' ) + # # Start-Process -RSE ${{ github.workspace }}/logfiles/PWSH_kafka_err.log -RSO ${{ github.workspace }}\logfiles\PWSH_kafka_out.log -FilePath ${{ github.workspace }}\binCLI\${{ matrix.framework }}\MASES.KNetCLI.exe -ArgumentList ( 'kafkastart', '-LogPath', '${{ github.workspace }}\logfiles\', '-Log4JConfiguration', '${{ github.workspace }}\bin\${{ matrix.framework }}\log4j.properties', '${{ github.workspace }}\bin\${{ matrix.framework }}\server.properties' ) + # env: + # JCOBRIDGE_LicensePath: ${{ secrets.JCOBRIDGE_ONLINE }} + + - name: Executing KNetTest on ${{ matrix.os }} with ${{ matrix.jdk_vendor }} ${{ matrix.jdk_version }} + if: ${{ matrix.os != 'windows-latest' }} + shell: pwsh + run: dotnet ${{ github.workspace }}/bin/${{ matrix.framework }}/KNetTest.dll localhost:9092 useConsumeCallback randomizeTopicName ${{ matrix.buffered }} ${{ matrix.extraValue }} + env: + JCOBRIDGE_LicensePath: ${{ secrets.JCOBRIDGE_ONLINE }} + + - name: Executing KNetTest on ${{ matrix.os }} with ${{ matrix.jdk_vendor }} ${{ matrix.jdk_version }} + if: ${{ matrix.os == 'windows-latest' }} + shell: pwsh + run: | + Add-Content -Path ${{ github.workspace }}\bin\${{ matrix.framework }}\server.properties -Value 'log.cleaner.enable=false' + New-Item -Path "${{ github.workspace }}" -Name "logfiles" -ItemType Directory + Start-Process -RSE ${{ github.workspace }}/logfiles/PWSH_zookeeper_err.log -RSO ${{ github.workspace }}\logfiles\PWSH_zookeeper_out.log -FilePath ${{ github.workspace }}\binCLI\${{ matrix.framework }}\MASES.KNetCLI.exe -ArgumentList ( 'zookeeperstart', '-LogPath', '${{ github.workspace }}\logfiles\', '-Log4JConfiguration', '${{ github.workspace }}\bin\${{ matrix.framework }}\log4j.properties', '${{ github.workspace }}\bin\${{ matrix.framework }}\zookeeper.properties' ) + Start-Process -RSE ${{ github.workspace }}/logfiles/PWSH_kafka_err.log -RSO ${{ github.workspace }}\logfiles\PWSH_kafka_out.log -FilePath ${{ github.workspace }}\binCLI\${{ matrix.framework }}\MASES.KNetCLI.exe -ArgumentList ( 'kafkastart', '-LogPath', '${{ github.workspace }}\logfiles\', '-Log4JConfiguration', '${{ github.workspace }}\bin\${{ matrix.framework }}\log4j.properties', '${{ github.workspace }}\bin\${{ matrix.framework }}\server.properties' ) + ${{ github.workspace }}/bin/${{ matrix.framework }}/KNetTest.exe localhost:9092 useConsumeCallback randomizeTopicName ${{ matrix.buffered }} ${{ matrix.extraValue }} + env: + JCOBRIDGE_LicensePath: ${{ secrets.JCOBRIDGE_ONLINE }} + + - name: Executing KNetTestSerDes on ${{ matrix.os }} with ${{ matrix.jdk_vendor }} ${{ matrix.jdk_version }} + if: ${{ matrix.os != 'windows-latest' }} + shell: pwsh + run: dotnet ${{ github.workspace }}/bin/${{ matrix.framework }}/KNetTestSerDes.dll + env: + JCOBRIDGE_LicensePath: ${{ secrets.JCOBRIDGE_ONLINE }} + + - name: Executing KNetTestSerDes on ${{ matrix.os }} with ${{ matrix.jdk_vendor }} ${{ matrix.jdk_version }} + if: ${{ matrix.os == 'windows-latest' }} # && matrix.framework != 'net462' }} # disable in net462 due to error we don't see in local tests and it is quite impossible to verify it on GitHub + shell: pwsh + run: ${{ github.workspace }}\bin\${{ matrix.framework }}\KNetTestSerDes.exe + env: + JCOBRIDGE_LicensePath: ${{ secrets.JCOBRIDGE_ONLINE }} + + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: KNet_Server_${{ matrix.os }}_${{ matrix.framework }}_${{ matrix.jdk_vendor }}_${{ matrix.jdk_version }}_${{ matrix.buffered }}_${{ matrix.extraValue }} + path: ${{ github.workspace }}/logfiles/ + retention-days: 7 + + final_cleanup: + needs: [ execute_KNetTest_linux, execute_KNetTest_other ] + if: "always()" + runs-on: ubuntu-latest + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v4 + with: + fetch-depth: '1' + + - name: Clear caches + run: | + gh extension install actions/gh-actions-cache + echo "Fetching list of cache key" + cacheKeysForPR=$(gh actions-cache list --key KNet ) + ## Setting this to not fail the workflow while deleting cache keys. + set +e + echo "Deleting caches..." + for cacheKey in $cacheKeysForPR + do + gh actions-cache delete $cacheKey --confirm + done + echo "Done" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/tests/net/KNetBenchmark/KNetBenchmark.csproj b/tests/net/Benchmarks/KNetBenchmark/KNetBenchmark.csproj similarity index 89% rename from tests/net/KNetBenchmark/KNetBenchmark.csproj rename to tests/net/Benchmarks/KNetBenchmark/KNetBenchmark.csproj index 8d514b5a83..696c20405c 100644 --- a/tests/net/KNetBenchmark/KNetBenchmark.csproj +++ b/tests/net/Benchmarks/KNetBenchmark/KNetBenchmark.csproj @@ -1,5 +1,5 @@  - + KNetBenchmark Exe diff --git a/tests/net/KNetBenchmark/Program.cs b/tests/net/Benchmarks/KNetBenchmark/Program.cs similarity index 100% rename from tests/net/KNetBenchmark/Program.cs rename to tests/net/Benchmarks/KNetBenchmark/Program.cs diff --git a/tests/net/KNetBenchmark/ProgramConfluent.cs b/tests/net/Benchmarks/KNetBenchmark/ProgramConfluent.cs similarity index 100% rename from tests/net/KNetBenchmark/ProgramConfluent.cs rename to tests/net/Benchmarks/KNetBenchmark/ProgramConfluent.cs diff --git a/tests/net/KNetBenchmark/ProgramInit.cs b/tests/net/Benchmarks/KNetBenchmark/ProgramInit.cs similarity index 100% rename from tests/net/KNetBenchmark/ProgramInit.cs rename to tests/net/Benchmarks/KNetBenchmark/ProgramInit.cs diff --git a/tests/net/KNetBenchmark/ProgramKNet.cs b/tests/net/Benchmarks/KNetBenchmark/ProgramKNet.cs similarity index 100% rename from tests/net/KNetBenchmark/ProgramKNet.cs rename to tests/net/Benchmarks/KNetBenchmark/ProgramKNet.cs diff --git a/tests/net/KNetBenchmark/ProgramKafka.cs b/tests/net/Benchmarks/KNetBenchmark/ProgramKafka.cs similarity index 100% rename from tests/net/KNetBenchmark/ProgramKafka.cs rename to tests/net/Benchmarks/KNetBenchmark/ProgramKafka.cs diff --git a/tests/net/KNetBenchmark/ProgramSupport.cs b/tests/net/Benchmarks/KNetBenchmark/ProgramSupport.cs similarity index 100% rename from tests/net/KNetBenchmark/ProgramSupport.cs rename to tests/net/Benchmarks/KNetBenchmark/ProgramSupport.cs diff --git a/tests/net/KNetRoundTripBenchmark/KNetRoundTripBenchmark.csproj b/tests/net/Benchmarks/KNetRoundTripBenchmark/KNetRoundTripBenchmark.csproj similarity index 94% rename from tests/net/KNetRoundTripBenchmark/KNetRoundTripBenchmark.csproj rename to tests/net/Benchmarks/KNetRoundTripBenchmark/KNetRoundTripBenchmark.csproj index 2d58d2c82e..edfcdbfaad 100644 --- a/tests/net/KNetRoundTripBenchmark/KNetRoundTripBenchmark.csproj +++ b/tests/net/Benchmarks/KNetRoundTripBenchmark/KNetRoundTripBenchmark.csproj @@ -1,5 +1,5 @@  - + KNetRoundTripBenchmark Exe diff --git a/tests/net/KNetRoundTripBenchmark/Program.cs b/tests/net/Benchmarks/KNetRoundTripBenchmark/Program.cs similarity index 100% rename from tests/net/KNetRoundTripBenchmark/Program.cs rename to tests/net/Benchmarks/KNetRoundTripBenchmark/Program.cs diff --git a/tests/net/KNetTopicCopyBenchmark/KNetTopicCopyBenchmark.csproj b/tests/net/Benchmarks/KNetTopicCopyBenchmark/KNetTopicCopyBenchmark.csproj similarity index 94% rename from tests/net/KNetTopicCopyBenchmark/KNetTopicCopyBenchmark.csproj rename to tests/net/Benchmarks/KNetTopicCopyBenchmark/KNetTopicCopyBenchmark.csproj index 2a5aacb74f..bae71a5c09 100644 --- a/tests/net/KNetTopicCopyBenchmark/KNetTopicCopyBenchmark.csproj +++ b/tests/net/Benchmarks/KNetTopicCopyBenchmark/KNetTopicCopyBenchmark.csproj @@ -1,5 +1,5 @@  - + KNetTopicCopyBenchmark Exe diff --git a/tests/net/KNetTopicCopyBenchmark/Program.cs b/tests/net/Benchmarks/KNetTopicCopyBenchmark/Program.cs similarity index 100% rename from tests/net/KNetTopicCopyBenchmark/Program.cs rename to tests/net/Benchmarks/KNetTopicCopyBenchmark/Program.cs diff --git a/tests/net/Common/Common.props b/tests/net/Common/Common.props index d529364ea0..3269043b84 100644 --- a/tests/net/Common/Common.props +++ b/tests/net/Common/Common.props @@ -1,16 +1,16 @@ - + false - ..\..\..\src\net\Common\KNet.snk - ..\..\..\bin\ + $(SolutionDir)\..\..\src\net\Common\KNet.snk + $(SolutionDir)\..\..\bin\ - - - + + + - + \ No newline at end of file diff --git a/tests/net/Common/SharedKNetCore.cs b/tests/net/Common/SharedKNetCore.cs index 5449547932..454a865136 100644 --- a/tests/net/Common/SharedKNetCore.cs +++ b/tests/net/Common/SharedKNetCore.cs @@ -27,6 +27,14 @@ public static void Create() { ApplicationJarRootPath = Const.DefaultJarsPath; CreateGlobalInstance(); + if (GlobalInstance == null) + { + throw new InvalidOperationException("Failed to create GlobalInstance"); + } + if (JCOBridge.C2JBridge.JCOBridge.Global == null) + { + throw new InvalidOperationException("JCOBridge.C2JBridge.JCOBridge.Global is null!!!"); + } } public static int ManageException(System.Exception e) diff --git a/tests/net/KNetConnectTest/KNetConnectSink.cs b/tests/net/Connect/KNetConnectTest/KNetConnectSink.cs similarity index 100% rename from tests/net/KNetConnectTest/KNetConnectSink.cs rename to tests/net/Connect/KNetConnectTest/KNetConnectSink.cs diff --git a/tests/net/KNetConnectTest/KNetConnectSource.cs b/tests/net/Connect/KNetConnectTest/KNetConnectSource.cs similarity index 100% rename from tests/net/KNetConnectTest/KNetConnectSource.cs rename to tests/net/Connect/KNetConnectTest/KNetConnectSource.cs diff --git a/tests/net/KNetConnectTest/KNetConnectTest.csproj b/tests/net/Connect/KNetConnectTest/KNetConnectTest.csproj similarity index 89% rename from tests/net/KNetConnectTest/KNetConnectTest.csproj rename to tests/net/Connect/KNetConnectTest/KNetConnectTest.csproj index a5fb2f7d7c..52405eb948 100644 --- a/tests/net/KNetConnectTest/KNetConnectTest.csproj +++ b/tests/net/Connect/KNetConnectTest/KNetConnectTest.csproj @@ -1,7 +1,7 @@  - + - ..\..\binConnect\ + ..\..\..\..\binConnect\ KNetConnectTest MASES.KNetConnectTest KNetConnectTest - a test tool for KNet Connect diff --git a/tests/net/KNetConnectTest/TestFileInput.txt b/tests/net/Connect/KNetConnectTest/TestFileInput.txt similarity index 100% rename from tests/net/KNetConnectTest/TestFileInput.txt rename to tests/net/Connect/KNetConnectTest/TestFileInput.txt diff --git a/tests/net/KNetConnectTest/connect-knet-sink.properties b/tests/net/Connect/KNetConnectTest/connect-knet-sink.properties similarity index 100% rename from tests/net/KNetConnectTest/connect-knet-sink.properties rename to tests/net/Connect/KNetConnectTest/connect-knet-sink.properties diff --git a/tests/net/KNetConnectTest/connect-knet-source.properties b/tests/net/Connect/KNetConnectTest/connect-knet-source.properties similarity index 100% rename from tests/net/KNetConnectTest/connect-knet-source.properties rename to tests/net/Connect/KNetConnectTest/connect-knet-source.properties diff --git a/tests/net/KNetConnectTest/connect-standalone.properties b/tests/net/Connect/KNetConnectTest/connect-standalone.properties similarity index 100% rename from tests/net/KNetConnectTest/connect-standalone.properties rename to tests/net/Connect/KNetConnectTest/connect-standalone.properties diff --git a/tests/net/KNetClassicTest/KNetClassicTest.csproj b/tests/net/General/KNetClassicTest/KNetClassicTest.csproj similarity index 74% rename from tests/net/KNetClassicTest/KNetClassicTest.csproj rename to tests/net/General/KNetClassicTest/KNetClassicTest.csproj index 8643a4b5fe..094501ad40 100644 --- a/tests/net/KNetClassicTest/KNetClassicTest.csproj +++ b/tests/net/General/KNetClassicTest/KNetClassicTest.csproj @@ -1,5 +1,5 @@ - + KNetClassicTest Exe @@ -8,6 +8,6 @@ KNetClassicTest - a test tool for KNet Classic - + diff --git a/tests/net/KNetClassicTest/Program.cs b/tests/net/General/KNetClassicTest/Program.cs similarity index 100% rename from tests/net/KNetClassicTest/Program.cs rename to tests/net/General/KNetClassicTest/Program.cs diff --git a/tests/net/KNetCompactedReplicatorTest/KNetCompactedReplicatorTest.csproj b/tests/net/General/KNetCompactedReplicatorTest/KNetCompactedReplicatorTest.csproj similarity index 64% rename from tests/net/KNetCompactedReplicatorTest/KNetCompactedReplicatorTest.csproj rename to tests/net/General/KNetCompactedReplicatorTest/KNetCompactedReplicatorTest.csproj index ccdf4ccd72..db85a9fce5 100644 --- a/tests/net/KNetCompactedReplicatorTest/KNetCompactedReplicatorTest.csproj +++ b/tests/net/General/KNetCompactedReplicatorTest/KNetCompactedReplicatorTest.csproj @@ -1,5 +1,5 @@ - + KNetCompactedReplicatorTest Exe @@ -8,9 +8,9 @@ KNetCompactedReplicatorTest - a test tool for KNet - + - + diff --git a/tests/net/KNetCompactedReplicatorTest/Program.cs b/tests/net/General/KNetCompactedReplicatorTest/Program.cs similarity index 100% rename from tests/net/KNetCompactedReplicatorTest/Program.cs rename to tests/net/General/KNetCompactedReplicatorTest/Program.cs diff --git a/tests/net/KNetTest/KNetTest.csproj b/tests/net/General/KNetTest/KNetTest.csproj similarity index 52% rename from tests/net/KNetTest/KNetTest.csproj rename to tests/net/General/KNetTest/KNetTest.csproj index 3679ea8e6c..0108737454 100644 --- a/tests/net/KNetTest/KNetTest.csproj +++ b/tests/net/General/KNetTest/KNetTest.csproj @@ -1,5 +1,5 @@ - + KNetTest Exe @@ -8,9 +8,12 @@ KNetTest - a test tool for KNet - + - + + + + diff --git a/tests/net/KNetTest/Program.cs b/tests/net/General/KNetTest/Program.cs similarity index 86% rename from tests/net/KNetTest/Program.cs rename to tests/net/General/KNetTest/Program.cs index 8f2eb9a3d5..34c137c27d 100644 --- a/tests/net/KNetTest/Program.cs +++ b/tests/net/General/KNetTest/Program.cs @@ -41,7 +41,8 @@ class Program static bool withBigBigExtraValue = false; static bool consoleOutput = System.Diagnostics.Debugger.IsAttached ? true : false; static bool runBuffered = false; - static bool useCallback = false; + static bool useProduceCallback = false; + static bool useConsumeCallback = false; static bool onlyProduce = false; static bool flushWhileSend = false; static bool withAck = false; @@ -54,6 +55,7 @@ class Program static int NonParallelLimit = 100000; static long _firstOffset = -1; + static int waitMultiplier = 1; static string serverToUse = theServer; static string topicToUse = theTopic; @@ -120,7 +122,8 @@ static void Main(string[] args) { if (args[i] == "runBuffered") { runBuffered = true; continue; } if (args[i] == "consoleOutput") { consoleOutput = true; continue; } - if (args[i] == "useCallback") { useCallback = true; continue; } + if (args[i] == "useProduceCallback") { useProduceCallback = true; continue; } + if (args[i] == "useConsumeCallback") { useConsumeCallback = true; continue; } if (args[i] == "withBigExtraValue") { withBigExtraValue = true; NonParallelLimit /= 10; continue; } if (args[i] == "withBigBigExtraValue") { withBigBigExtraValue = true; NonParallelLimit /= 100; continue; } if (args[i] == "onlyProduce") { onlyProduce = true; continue; } @@ -134,12 +137,12 @@ static void Main(string[] args) } } - SerDesRaw serializer = new SerDesRaw() + SerDesRaw serializer = new() { OnSerialize = (topic, type) => { return Array.Empty(); } }; - SerDesRaw deserializer = new SerDesRaw() + SerDesRaw deserializer = new() { OnDeserialize = (topic, data) => { return new TestType(0, false, false); } }; @@ -305,7 +308,7 @@ static void ProduceSomething() { int i = 0; Callback callback = null; - if (useCallback) + if (useProduceCallback) { callback = new Callback() { @@ -323,7 +326,7 @@ static void ProduceSomething() { watcher.Start(); var record = producer.NewRecord(topicToUse, i.ToString(), new TestType(i, withBigExtraValue, withBigBigExtraValue)); - var result = useCallback ? producer.Send(record, callback) : producer.Send(record); + var result = useProduceCallback ? producer.Send(record, callback) : producer.Send(record); if (!runInParallel && _firstOffset == -1) { _firstOffset = result.Get().Offset(); @@ -348,7 +351,7 @@ static void ProduceSomething() } finally { - if (useCallback) callback.Dispose(); + if (useProduceCallback) callback.Dispose(); if (i != 0) Console.WriteLine($"Flushed {i} elements in {watcher.Elapsed}, produce mean time is {TimeSpan.FromTicks(watcher.ElapsedTicks / i)} with mean JNI Calls {baseJNICalls / i}"); } } @@ -396,8 +399,9 @@ static void ConsumeSomething() var valueDeserializer = JsonSerDes.Value.NewByteArraySerDes(); ConsumerRebalanceListener rebalanceListener = null; KNetConsumer consumer = null; + ManualResetEvent manualResetEvent = new ManualResetEvent(false); - if (useCallback) + if (useConsumeCallback) { rebalanceListener = new ConsumerRebalanceListener() { @@ -408,6 +412,7 @@ static void ConsumeSomething() OnOnPartitionsAssigned = (o) => { Console.WriteLine("Assigned: {0}", o.ToString()); + manualResetEvent.Set(); } }; } @@ -422,7 +427,7 @@ static void ConsumeSomething() { if (runInParallel) { - if (useCallback) consumer.Subscribe(topics, rebalanceListener); + if (useConsumeCallback) consumer.Subscribe(topics, rebalanceListener); else consumer.Subscribe(topics); } else @@ -432,23 +437,31 @@ static void ConsumeSomething() if (_firstOffset != -1) { consumer.Seek(tp, _firstOffset); + Console.WriteLine("Seek to: {0}", _firstOffset); } else { consumer.SeekToBeginning(Collections.Singleton(tp)); + Console.WriteLine("SeekToBeginning"); } } - int cycle = 0; + if (runInParallel && useConsumeCallback) manualResetEvent.WaitOne(); + const int checkTime = 200; + int waitTime = waitMultiplier * 60 * 1000; + Stopwatch swCycleTime = Stopwatch.StartNew(); + int emptyCycle = 0; while (runInParallel ? !resetEvent.WaitOne(0) : elements < NonParallelLimit) { - var records = consumer.Poll((long)TimeSpan.FromMilliseconds(200).TotalMilliseconds); + var records = consumer.Poll((long)TimeSpan.FromMilliseconds(checkTime).TotalMilliseconds); watcherTotal.Start(); + emptyCycle++; #if NET7_0_OR_GREATER foreach (var item in records.ApplyPrefetch(withPrefetch, prefetchThreshold: 0)) #else foreach (var item in records) #endif { + emptyCycle = 0; elements++; watcherTotal.Start(); var str = $"Consuming from Offset = {item.Offset}, Key = {item.Key}, Value = {item.Value}"; @@ -457,10 +470,18 @@ static void ConsumeSomething() if (consoleOutput) Console.WriteLine(str); watcher.Stop(); } - cycle++; - if (elements >= 0 && cycle == 60 * 5) + bool elapsedTimeout = !runInParallel && swCycleTime.ElapsedMilliseconds > waitTime; + bool tooManyEmptyCycles = elements != 0 && emptyCycle > 5; + if (elapsedTimeout // exit for elapsed timeout or + || tooManyEmptyCycles) // if we have at least 5 empty cycles after received something { - throw new InvalidOperationException($"Forcibly exit since no {NonParallelLimit} record was received within 1 minute."); + var str = $"Forcibly exit since no {NonParallelLimit} record was received within {waitTime} ms. Current received is {elements} elapsedTimeout {elapsedTimeout} tooManyEmptyCycles {tooManyEmptyCycles} "; + if (elements != 0) + { + Console.WriteLine(str); + break; + } + else throw new InvalidOperationException(str); } } watcherTotal.Stop(); @@ -515,7 +536,7 @@ static void ProduceSomethingBuffered() { int i = 0; Callback callback = null; - if (useCallback) + if (useProduceCallback) { callback = new Callback() { @@ -533,7 +554,7 @@ static void ProduceSomethingBuffered() { watcher.Start(); var record = producer.NewRecord(topicToUse, i.ToString(), new TestType(i, withBigExtraValue, withBigBigExtraValue)); - var result = useCallback ? producer.Send(record, callback) : producer.Send(record); + var result = useProduceCallback ? producer.Send(record, callback) : producer.Send(record); if (!runInParallel && _firstOffset == -1) { _firstOffset = result.Get().Offset(); @@ -558,7 +579,7 @@ static void ProduceSomethingBuffered() } finally { - if (useCallback) callback.Dispose(); + if (useProduceCallback) callback.Dispose(); if (i != 0) Console.WriteLine($"Flushed {i} elements in {watcher.Elapsed}, produce mean time is {TimeSpan.FromTicks(watcher.ElapsedTicks / i)} with mean JNI Calls {baseJNICalls / i}"); } } @@ -606,8 +627,9 @@ static void ConsumeSomethingBuffered() var valueDeserializer = JsonSerDes.Value.NewByteBufferSerDes(); ConsumerRebalanceListener rebalanceListener = null; KNetConsumerValueBuffered consumer = null; + ManualResetEvent manualResetEvent = new ManualResetEvent(false); - if (useCallback) + if (useConsumeCallback) { rebalanceListener = new ConsumerRebalanceListener() { @@ -618,6 +640,7 @@ static void ConsumeSomethingBuffered() OnOnPartitionsAssigned = (o) => { Console.WriteLine("Assigned: {0}", o.ToString()); + manualResetEvent.Set(); } }; } @@ -632,7 +655,7 @@ static void ConsumeSomethingBuffered() { if (runInParallel) { - if (useCallback) consumer.Subscribe(topics, rebalanceListener); + if (useConsumeCallback) consumer.Subscribe(topics, rebalanceListener); else consumer.Subscribe(topics); } else @@ -642,23 +665,31 @@ static void ConsumeSomethingBuffered() if (_firstOffset != -1) { consumer.Seek(tp, _firstOffset); + Console.WriteLine("Seek to: {0}", _firstOffset); } else { consumer.SeekToBeginning(Collections.Singleton(tp)); + Console.WriteLine("SeekToBeginning"); } } - int cycle = 0; + if (runInParallel && useConsumeCallback) manualResetEvent.WaitOne(); + const int checkTime = 200; + int waitTime = waitMultiplier * 60 * 1000; + Stopwatch swCycleTime = Stopwatch.StartNew(); + int emptyCycle = 0; while (runInParallel ? !resetEvent.WaitOne(0) : elements < NonParallelLimit) { - var records = consumer.Poll((long)TimeSpan.FromMilliseconds(200).TotalMilliseconds); + var records = consumer.Poll((long)TimeSpan.FromMilliseconds(checkTime).TotalMilliseconds); watcherTotal.Start(); + emptyCycle++; #if NET7_0_OR_GREATER foreach (var item in records.ApplyPrefetch(withPrefetch, prefetchThreshold: 0)) #else foreach (var item in records) #endif { + emptyCycle = 0; elements++; watcherTotal.Start(); var str = $"Consuming from Offset = {item.Offset}, Key = {item.Key}, Value = {item.Value}"; @@ -667,10 +698,18 @@ static void ConsumeSomethingBuffered() if (consoleOutput) Console.WriteLine(str); watcher.Stop(); } - cycle++; - if (elements >= 0 && cycle == 60 * 5) + bool elapsedTimeout = !runInParallel && swCycleTime.ElapsedMilliseconds > waitTime; + bool tooManyEmptyCycles = elements != 0 && emptyCycle > 5; + if (elapsedTimeout // exit for elapsed timeout or + || tooManyEmptyCycles) // if we have at least 5 empty cycles after received something { - throw new InvalidOperationException($"Forcibly exit since no {NonParallelLimit} record was received within 1 minute."); + var str = $"Forcibly exit since no {NonParallelLimit} record was received within {waitTime} ms. Current received is {elements} elapsedTimeout {elapsedTimeout} tooManyEmptyCycles {tooManyEmptyCycles} "; + if (elements != 0) + { + Console.WriteLine(str); + break; + } + else throw new InvalidOperationException(str); } } watcherTotal.Stop(); diff --git a/tests/net/KNetTestAdmin/KNetTestAdmin.csproj b/tests/net/General/KNetTestAdmin/KNetTestAdmin.csproj similarity index 72% rename from tests/net/KNetTestAdmin/KNetTestAdmin.csproj rename to tests/net/General/KNetTestAdmin/KNetTestAdmin.csproj index 2b74168dc5..3b061a9abf 100644 --- a/tests/net/KNetTestAdmin/KNetTestAdmin.csproj +++ b/tests/net/General/KNetTestAdmin/KNetTestAdmin.csproj @@ -1,5 +1,5 @@ - + KNetTestAdmin Exe @@ -8,6 +8,6 @@ KNetTest - a test tool for KNet - + diff --git a/tests/net/KNetTestAdmin/Program.cs b/tests/net/General/KNetTestAdmin/Program.cs similarity index 100% rename from tests/net/KNetTestAdmin/Program.cs rename to tests/net/General/KNetTestAdmin/Program.cs diff --git a/tests/net/KNetTestSerDes/KNetTestSerDes.csproj b/tests/net/General/KNetTestSerDes/KNetTestSerDes.csproj similarity index 73% rename from tests/net/KNetTestSerDes/KNetTestSerDes.csproj rename to tests/net/General/KNetTestSerDes/KNetTestSerDes.csproj index de537ca14f..de3ed8a16f 100644 --- a/tests/net/KNetTestSerDes/KNetTestSerDes.csproj +++ b/tests/net/General/KNetTestSerDes/KNetTestSerDes.csproj @@ -1,5 +1,5 @@ - + KNetTestSerDes Exe @@ -8,6 +8,6 @@ KNetTestSerDes - a test tool for KNet - + diff --git a/tests/net/KNetTestSerDes/Program.cs b/tests/net/General/KNetTestSerDes/Program.cs similarity index 90% rename from tests/net/KNetTestSerDes/Program.cs rename to tests/net/General/KNetTestSerDes/Program.cs index f558f9e7dd..0ab4a1181f 100644 --- a/tests/net/KNetTestSerDes/Program.cs +++ b/tests/net/General/KNetTestSerDes/Program.cs @@ -18,23 +18,30 @@ using MASES.KNet.Serialization; using MASES.KNet.TestCommon; +using System; using System.Linq; namespace MASES.KNetTestAdmin { class Program { - const string theServer = "localhost:9092"; - const string theTopic = "myTopicAdmin"; - - static string serverToUse = theServer; - static string topicToUse = theTopic; - static void Main(string[] args) { - SharedKNetCore.Create(); - var appArgs = SharedKNetCore.FilteredArgs; + try + { + SharedKNetCore.Create(); + ExecuteTests(); // call tests outside Main so KNetSerialization static initialization happens later and JCOBridge.Global is ready + } + catch (Exception e) + { + Console.WriteLine(e.ToString()); + Environment.ExitCode = 1; + } + } + + static void ExecuteTests() + { byte[] bb, bb1; bb = KNetSerialization.SerializeBoolean(false, "test", false); diff --git a/tests/net/KNetTest.sln b/tests/net/KNetTest.sln index df2e390353..2f821df2d5 100644 --- a/tests/net/KNetTest.sln +++ b/tests/net/KNetTest.sln @@ -3,32 +3,15 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.1.32319.34 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetTest", "KNetTest\KNetTest.csproj", "{C556E8A0-8B06-4D5B-AEAD-B318B48DF150}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNet", "..\..\src\net\KNet\KNet.csproj", "{14871D50-7E4E-4BAE-8005-CA86E891F602}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetTestStreams", "KNetTestStreams\KNetTestStreams.csproj", "{17E101E1-A0F8-44F0-929C-498E4A41F551}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetTestAdmin", "KNetTestAdmin\KNetTestAdmin.csproj", "{DE8D288D-8438-42EA-892F-F59840CFE322}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetBenchmark", "KNetBenchmark\KNetBenchmark.csproj", "{8A6C9438-A389-4563-98EE-1386E0E62AAA}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetTopicCopyBenchmark", "KNetTopicCopyBenchmark\KNetTopicCopyBenchmark.csproj", "{C6A11273-A560-4BB1-9234-961D30824DAB}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test Benchmarks", "Test Benchmarks", "{14753FBA-8F9B-48A1-9983-7DC37CB32914}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Benchmarks", "Benchmarks", "{14753FBA-8F9B-48A1-9983-7DC37CB32914}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test General", "Test General", "{A77F1B9E-5576-46F0-BE58-C85FA9FA3A58}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "General", "General", "{A77F1B9E-5576-46F0-BE58-C85FA9FA3A58}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test Connect", "Test Connect", "{6421F571-315C-47BB-A9F9-4542759E968E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetConnectTest", "KNetConnectTest\KNetConnectTest.csproj", "{7F3A2CE5-ADEE-426F-BE99-D899D87EFF2F}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Connect", "Connect", "{6421F571-315C-47BB-A9F9-4542759E968E}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetConnect", "..\..\src\net\KNetConnect\KNetConnect.csproj", "{969D44CC-1EE3-4176-B139-9B6860D88602}" - ProjectSection(ProjectDependencies) = postProject - {7F3A2CE5-ADEE-426F-BE99-D899D87EFF2F} = {7F3A2CE5-ADEE-426F-BE99-D899D87EFF2F} - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetRoundTripBenchmark", "KNetRoundTripBenchmark\KNetRoundTripBenchmark.csproj", "{47D7A5D9-554E-47B8-B666-20E7D3DFE30F}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{345DA483-99E7-4FA0-A5D5-5EE62E49E668}" EndProject @@ -38,10 +21,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNet.Serialization.Protobuf EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNet.Serialization.Avro", "..\..\src\net\KNet.Serialization.Avro\KNet.Serialization.Avro.csproj", "{2C02FC8F-FF75-4963-8545-EE58C105025D}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetClassicTest", "KNetClassicTest\KNetClassicTest.csproj", "{F915A488-956C-4B31-89FC-EB5DBC4AC73E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetCompactedReplicatorTest", "KNetCompactedReplicatorTest\KNetCompactedReplicatorTest.csproj", "{245DDDD6-022A-4C2F-8769-FBB6CFDEC585}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNet.Serialization.MessagePack", "..\..\src\net\KNet.Serialization.MessagePack\KNet.Serialization.MessagePack.csproj", "{D39E1D83-C3FC-4482-83F5-DDE89B53BEA8}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Templates", "Templates", "{68128D24-3F72-4A25-A876-509F12F38E73}" @@ -56,11 +35,31 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "knetPipeStreamApp", "..\..\ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "knetProducerApp", "..\..\src\net\templates\templates\knetProducerApp\knetProducerApp.csproj", "{8E8EB519-70A3-487A-BB71-096988CCA6A9}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test Streams", "Test Streams", "{35AE6AB6-C68A-4605-9C66-EE652977C27A}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Streams", "Streams", "{35AE6AB6-C68A-4605-9C66-EE652977C27A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{3A8B1862-E4CB-4F06-9790-14FE91D8D93E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetTestKNetStreams", "Streams\KNetTestKNetStreams\KNetTestKNetStreams.csproj", "{445E97F5-40B6-4076-835D-11B7BF43F9AD}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetTestStreams", "Streams\KNetTestStreams\KNetTestStreams.csproj", "{7E2FA3C5-C99A-4176-979C-D84F1F14B4DE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetConnectTest", "Connect\KNetConnectTest\KNetConnectTest.csproj", "{58E26434-18AD-4F16-AA0C-DC39B99751B8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetBenchmark", "Benchmarks\KNetBenchmark\KNetBenchmark.csproj", "{E111566D-7002-4C26-A0F6-FB3CED429A08}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetRoundTripBenchmark", "Benchmarks\KNetRoundTripBenchmark\KNetRoundTripBenchmark.csproj", "{814798DE-6B17-4318-8392-2E9CDA6EED01}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetTopicCopyBenchmark", "Benchmarks\KNetTopicCopyBenchmark\KNetTopicCopyBenchmark.csproj", "{064ECC10-79B3-40D8-A4AF-1F978CB46F42}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetCompactedReplicatorTest", "General\KNetCompactedReplicatorTest\KNetCompactedReplicatorTest.csproj", "{5366F6CF-C488-4239-9448-C5D6E524E937}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetClassicTest", "General\KNetClassicTest\KNetClassicTest.csproj", "{ABFF11A9-CF70-4FF1-9636-CE74243C8C0B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetTest", "General\KNetTest\KNetTest.csproj", "{A3A01398-B1A3-44C1-865F-4E9DBDCD381B}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetTestKNetStreams", "KNetTestKNetStreams\KNetTestKNetStreams.csproj", "{69DF3123-32D8-4583-9D76-A61A78DFF370}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetTestAdmin", "General\KNetTestAdmin\KNetTestAdmin.csproj", "{BDC3FC68-09E4-4C3A-BF70-DB2B2C1BDE86}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetTestSerDes", "KNetTestSerDes\KNetTestSerDes.csproj", "{CED323B6-506B-470C-9F26-0B77667C8598}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KNetTestSerDes", "General\KNetTestSerDes\KNetTestSerDes.csproj", "{20A0DA90-D4AB-45EE-874B-5B2D18D575F7}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -68,42 +67,14 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C556E8A0-8B06-4D5B-AEAD-B318B48DF150}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C556E8A0-8B06-4D5B-AEAD-B318B48DF150}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C556E8A0-8B06-4D5B-AEAD-B318B48DF150}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C556E8A0-8B06-4D5B-AEAD-B318B48DF150}.Release|Any CPU.Build.0 = Release|Any CPU {14871D50-7E4E-4BAE-8005-CA86E891F602}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {14871D50-7E4E-4BAE-8005-CA86E891F602}.Debug|Any CPU.Build.0 = Debug|Any CPU {14871D50-7E4E-4BAE-8005-CA86E891F602}.Release|Any CPU.ActiveCfg = Release|Any CPU {14871D50-7E4E-4BAE-8005-CA86E891F602}.Release|Any CPU.Build.0 = Release|Any CPU - {17E101E1-A0F8-44F0-929C-498E4A41F551}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {17E101E1-A0F8-44F0-929C-498E4A41F551}.Debug|Any CPU.Build.0 = Debug|Any CPU - {17E101E1-A0F8-44F0-929C-498E4A41F551}.Release|Any CPU.ActiveCfg = Release|Any CPU - {17E101E1-A0F8-44F0-929C-498E4A41F551}.Release|Any CPU.Build.0 = Release|Any CPU - {DE8D288D-8438-42EA-892F-F59840CFE322}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DE8D288D-8438-42EA-892F-F59840CFE322}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DE8D288D-8438-42EA-892F-F59840CFE322}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DE8D288D-8438-42EA-892F-F59840CFE322}.Release|Any CPU.Build.0 = Release|Any CPU - {8A6C9438-A389-4563-98EE-1386E0E62AAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8A6C9438-A389-4563-98EE-1386E0E62AAA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8A6C9438-A389-4563-98EE-1386E0E62AAA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8A6C9438-A389-4563-98EE-1386E0E62AAA}.Release|Any CPU.Build.0 = Release|Any CPU - {C6A11273-A560-4BB1-9234-961D30824DAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C6A11273-A560-4BB1-9234-961D30824DAB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C6A11273-A560-4BB1-9234-961D30824DAB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C6A11273-A560-4BB1-9234-961D30824DAB}.Release|Any CPU.Build.0 = Release|Any CPU - {7F3A2CE5-ADEE-426F-BE99-D899D87EFF2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7F3A2CE5-ADEE-426F-BE99-D899D87EFF2F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F3A2CE5-ADEE-426F-BE99-D899D87EFF2F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7F3A2CE5-ADEE-426F-BE99-D899D87EFF2F}.Release|Any CPU.Build.0 = Release|Any CPU {969D44CC-1EE3-4176-B139-9B6860D88602}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {969D44CC-1EE3-4176-B139-9B6860D88602}.Debug|Any CPU.Build.0 = Debug|Any CPU {969D44CC-1EE3-4176-B139-9B6860D88602}.Release|Any CPU.ActiveCfg = Release|Any CPU {969D44CC-1EE3-4176-B139-9B6860D88602}.Release|Any CPU.Build.0 = Release|Any CPU - {47D7A5D9-554E-47B8-B666-20E7D3DFE30F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {47D7A5D9-554E-47B8-B666-20E7D3DFE30F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {47D7A5D9-554E-47B8-B666-20E7D3DFE30F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {47D7A5D9-554E-47B8-B666-20E7D3DFE30F}.Release|Any CPU.Build.0 = Release|Any CPU {64C1B6AC-F7D8-43FD-BA1F-584EF5B5934A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {64C1B6AC-F7D8-43FD-BA1F-584EF5B5934A}.Debug|Any CPU.Build.0 = Debug|Any CPU {64C1B6AC-F7D8-43FD-BA1F-584EF5B5934A}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -116,14 +87,6 @@ Global {2C02FC8F-FF75-4963-8545-EE58C105025D}.Debug|Any CPU.Build.0 = Debug|Any CPU {2C02FC8F-FF75-4963-8545-EE58C105025D}.Release|Any CPU.ActiveCfg = Release|Any CPU {2C02FC8F-FF75-4963-8545-EE58C105025D}.Release|Any CPU.Build.0 = Release|Any CPU - {F915A488-956C-4B31-89FC-EB5DBC4AC73E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F915A488-956C-4B31-89FC-EB5DBC4AC73E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F915A488-956C-4B31-89FC-EB5DBC4AC73E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F915A488-956C-4B31-89FC-EB5DBC4AC73E}.Release|Any CPU.Build.0 = Release|Any CPU - {245DDDD6-022A-4C2F-8769-FBB6CFDEC585}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {245DDDD6-022A-4C2F-8769-FBB6CFDEC585}.Debug|Any CPU.Build.0 = Debug|Any CPU - {245DDDD6-022A-4C2F-8769-FBB6CFDEC585}.Release|Any CPU.ActiveCfg = Release|Any CPU - {245DDDD6-022A-4C2F-8769-FBB6CFDEC585}.Release|Any CPU.Build.0 = Release|Any CPU {D39E1D83-C3FC-4482-83F5-DDE89B53BEA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D39E1D83-C3FC-4482-83F5-DDE89B53BEA8}.Debug|Any CPU.Build.0 = Debug|Any CPU {D39E1D83-C3FC-4482-83F5-DDE89B53BEA8}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -148,41 +111,81 @@ Global {8E8EB519-70A3-487A-BB71-096988CCA6A9}.Debug|Any CPU.Build.0 = Debug|Any CPU {8E8EB519-70A3-487A-BB71-096988CCA6A9}.Release|Any CPU.ActiveCfg = Release|Any CPU {8E8EB519-70A3-487A-BB71-096988CCA6A9}.Release|Any CPU.Build.0 = Release|Any CPU - {69DF3123-32D8-4583-9D76-A61A78DFF370}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {69DF3123-32D8-4583-9D76-A61A78DFF370}.Debug|Any CPU.Build.0 = Debug|Any CPU - {69DF3123-32D8-4583-9D76-A61A78DFF370}.Release|Any CPU.ActiveCfg = Release|Any CPU - {69DF3123-32D8-4583-9D76-A61A78DFF370}.Release|Any CPU.Build.0 = Release|Any CPU - {CED323B6-506B-470C-9F26-0B77667C8598}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CED323B6-506B-470C-9F26-0B77667C8598}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CED323B6-506B-470C-9F26-0B77667C8598}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CED323B6-506B-470C-9F26-0B77667C8598}.Release|Any CPU.Build.0 = Release|Any CPU + {445E97F5-40B6-4076-835D-11B7BF43F9AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {445E97F5-40B6-4076-835D-11B7BF43F9AD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {445E97F5-40B6-4076-835D-11B7BF43F9AD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {445E97F5-40B6-4076-835D-11B7BF43F9AD}.Release|Any CPU.Build.0 = Release|Any CPU + {7E2FA3C5-C99A-4176-979C-D84F1F14B4DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7E2FA3C5-C99A-4176-979C-D84F1F14B4DE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7E2FA3C5-C99A-4176-979C-D84F1F14B4DE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7E2FA3C5-C99A-4176-979C-D84F1F14B4DE}.Release|Any CPU.Build.0 = Release|Any CPU + {58E26434-18AD-4F16-AA0C-DC39B99751B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58E26434-18AD-4F16-AA0C-DC39B99751B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {58E26434-18AD-4F16-AA0C-DC39B99751B8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {58E26434-18AD-4F16-AA0C-DC39B99751B8}.Release|Any CPU.Build.0 = Release|Any CPU + {E111566D-7002-4C26-A0F6-FB3CED429A08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E111566D-7002-4C26-A0F6-FB3CED429A08}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E111566D-7002-4C26-A0F6-FB3CED429A08}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E111566D-7002-4C26-A0F6-FB3CED429A08}.Release|Any CPU.Build.0 = Release|Any CPU + {814798DE-6B17-4318-8392-2E9CDA6EED01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {814798DE-6B17-4318-8392-2E9CDA6EED01}.Debug|Any CPU.Build.0 = Debug|Any CPU + {814798DE-6B17-4318-8392-2E9CDA6EED01}.Release|Any CPU.ActiveCfg = Release|Any CPU + {814798DE-6B17-4318-8392-2E9CDA6EED01}.Release|Any CPU.Build.0 = Release|Any CPU + {064ECC10-79B3-40D8-A4AF-1F978CB46F42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {064ECC10-79B3-40D8-A4AF-1F978CB46F42}.Debug|Any CPU.Build.0 = Debug|Any CPU + {064ECC10-79B3-40D8-A4AF-1F978CB46F42}.Release|Any CPU.ActiveCfg = Release|Any CPU + {064ECC10-79B3-40D8-A4AF-1F978CB46F42}.Release|Any CPU.Build.0 = Release|Any CPU + {5366F6CF-C488-4239-9448-C5D6E524E937}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5366F6CF-C488-4239-9448-C5D6E524E937}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5366F6CF-C488-4239-9448-C5D6E524E937}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5366F6CF-C488-4239-9448-C5D6E524E937}.Release|Any CPU.Build.0 = Release|Any CPU + {ABFF11A9-CF70-4FF1-9636-CE74243C8C0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ABFF11A9-CF70-4FF1-9636-CE74243C8C0B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ABFF11A9-CF70-4FF1-9636-CE74243C8C0B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ABFF11A9-CF70-4FF1-9636-CE74243C8C0B}.Release|Any CPU.Build.0 = Release|Any CPU + {A3A01398-B1A3-44C1-865F-4E9DBDCD381B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A3A01398-B1A3-44C1-865F-4E9DBDCD381B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A3A01398-B1A3-44C1-865F-4E9DBDCD381B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A3A01398-B1A3-44C1-865F-4E9DBDCD381B}.Release|Any CPU.Build.0 = Release|Any CPU + {BDC3FC68-09E4-4C3A-BF70-DB2B2C1BDE86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BDC3FC68-09E4-4C3A-BF70-DB2B2C1BDE86}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BDC3FC68-09E4-4C3A-BF70-DB2B2C1BDE86}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BDC3FC68-09E4-4C3A-BF70-DB2B2C1BDE86}.Release|Any CPU.Build.0 = Release|Any CPU + {20A0DA90-D4AB-45EE-874B-5B2D18D575F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {20A0DA90-D4AB-45EE-874B-5B2D18D575F7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {20A0DA90-D4AB-45EE-874B-5B2D18D575F7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {20A0DA90-D4AB-45EE-874B-5B2D18D575F7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {C556E8A0-8B06-4D5B-AEAD-B318B48DF150} = {A77F1B9E-5576-46F0-BE58-C85FA9FA3A58} {14871D50-7E4E-4BAE-8005-CA86E891F602} = {345DA483-99E7-4FA0-A5D5-5EE62E49E668} - {17E101E1-A0F8-44F0-929C-498E4A41F551} = {35AE6AB6-C68A-4605-9C66-EE652977C27A} - {DE8D288D-8438-42EA-892F-F59840CFE322} = {A77F1B9E-5576-46F0-BE58-C85FA9FA3A58} - {8A6C9438-A389-4563-98EE-1386E0E62AAA} = {14753FBA-8F9B-48A1-9983-7DC37CB32914} - {C6A11273-A560-4BB1-9234-961D30824DAB} = {14753FBA-8F9B-48A1-9983-7DC37CB32914} - {7F3A2CE5-ADEE-426F-BE99-D899D87EFF2F} = {6421F571-315C-47BB-A9F9-4542759E968E} + {14753FBA-8F9B-48A1-9983-7DC37CB32914} = {3A8B1862-E4CB-4F06-9790-14FE91D8D93E} + {A77F1B9E-5576-46F0-BE58-C85FA9FA3A58} = {3A8B1862-E4CB-4F06-9790-14FE91D8D93E} + {6421F571-315C-47BB-A9F9-4542759E968E} = {3A8B1862-E4CB-4F06-9790-14FE91D8D93E} {969D44CC-1EE3-4176-B139-9B6860D88602} = {6421F571-315C-47BB-A9F9-4542759E968E} - {47D7A5D9-554E-47B8-B666-20E7D3DFE30F} = {14753FBA-8F9B-48A1-9983-7DC37CB32914} {64C1B6AC-F7D8-43FD-BA1F-584EF5B5934A} = {345DA483-99E7-4FA0-A5D5-5EE62E49E668} {0580E90D-271D-46B0-8274-EB29D521F399} = {345DA483-99E7-4FA0-A5D5-5EE62E49E668} {2C02FC8F-FF75-4963-8545-EE58C105025D} = {345DA483-99E7-4FA0-A5D5-5EE62E49E668} - {F915A488-956C-4B31-89FC-EB5DBC4AC73E} = {A77F1B9E-5576-46F0-BE58-C85FA9FA3A58} - {245DDDD6-022A-4C2F-8769-FBB6CFDEC585} = {A77F1B9E-5576-46F0-BE58-C85FA9FA3A58} {D39E1D83-C3FC-4482-83F5-DDE89B53BEA8} = {345DA483-99E7-4FA0-A5D5-5EE62E49E668} {FC459C7B-5111-4FF7-A93A-5A02B48AA3B7} = {68128D24-3F72-4A25-A876-509F12F38E73} {5A3184EF-56BC-4AEA-95C4-8595FC5B1992} = {68128D24-3F72-4A25-A876-509F12F38E73} {A40B1EE0-7407-47CB-B0FB-EE65A955A559} = {68128D24-3F72-4A25-A876-509F12F38E73} {363CC373-CF04-4204-A44A-C96AB1B1085E} = {68128D24-3F72-4A25-A876-509F12F38E73} {8E8EB519-70A3-487A-BB71-096988CCA6A9} = {68128D24-3F72-4A25-A876-509F12F38E73} - {69DF3123-32D8-4583-9D76-A61A78DFF370} = {35AE6AB6-C68A-4605-9C66-EE652977C27A} - {CED323B6-506B-470C-9F26-0B77667C8598} = {A77F1B9E-5576-46F0-BE58-C85FA9FA3A58} + {35AE6AB6-C68A-4605-9C66-EE652977C27A} = {3A8B1862-E4CB-4F06-9790-14FE91D8D93E} + {445E97F5-40B6-4076-835D-11B7BF43F9AD} = {35AE6AB6-C68A-4605-9C66-EE652977C27A} + {7E2FA3C5-C99A-4176-979C-D84F1F14B4DE} = {35AE6AB6-C68A-4605-9C66-EE652977C27A} + {58E26434-18AD-4F16-AA0C-DC39B99751B8} = {6421F571-315C-47BB-A9F9-4542759E968E} + {E111566D-7002-4C26-A0F6-FB3CED429A08} = {14753FBA-8F9B-48A1-9983-7DC37CB32914} + {814798DE-6B17-4318-8392-2E9CDA6EED01} = {14753FBA-8F9B-48A1-9983-7DC37CB32914} + {064ECC10-79B3-40D8-A4AF-1F978CB46F42} = {14753FBA-8F9B-48A1-9983-7DC37CB32914} + {5366F6CF-C488-4239-9448-C5D6E524E937} = {A77F1B9E-5576-46F0-BE58-C85FA9FA3A58} + {ABFF11A9-CF70-4FF1-9636-CE74243C8C0B} = {A77F1B9E-5576-46F0-BE58-C85FA9FA3A58} + {A3A01398-B1A3-44C1-865F-4E9DBDCD381B} = {A77F1B9E-5576-46F0-BE58-C85FA9FA3A58} + {BDC3FC68-09E4-4C3A-BF70-DB2B2C1BDE86} = {A77F1B9E-5576-46F0-BE58-C85FA9FA3A58} + {20A0DA90-D4AB-45EE-874B-5B2D18D575F7} = {A77F1B9E-5576-46F0-BE58-C85FA9FA3A58} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0A7C16DC-1BAA-44BC-AA1C-D40B7B61878E} diff --git a/tests/net/KNetTestKNetStreams/KNetTestKNetStreams.csproj b/tests/net/Streams/KNetTestKNetStreams/KNetTestKNetStreams.csproj similarity index 75% rename from tests/net/KNetTestKNetStreams/KNetTestKNetStreams.csproj rename to tests/net/Streams/KNetTestKNetStreams/KNetTestKNetStreams.csproj index 8cbdf3cd6e..7c68ef42e2 100644 --- a/tests/net/KNetTestKNetStreams/KNetTestKNetStreams.csproj +++ b/tests/net/Streams/KNetTestKNetStreams/KNetTestKNetStreams.csproj @@ -1,5 +1,5 @@ - + KNetTestKNetStreams Exe @@ -8,6 +8,6 @@ KNetTestKNetStreams - a test tool for KNet Streams SDK - + diff --git a/tests/net/KNetTestKNetStreams/Program.cs b/tests/net/Streams/KNetTestKNetStreams/Program.cs similarity index 100% rename from tests/net/KNetTestKNetStreams/Program.cs rename to tests/net/Streams/KNetTestKNetStreams/Program.cs diff --git a/tests/net/KNetTestStreams/KNetTestStreams.csproj b/tests/net/Streams/KNetTestStreams/KNetTestStreams.csproj similarity index 74% rename from tests/net/KNetTestStreams/KNetTestStreams.csproj rename to tests/net/Streams/KNetTestStreams/KNetTestStreams.csproj index bc519e8e14..e2e87dff9d 100644 --- a/tests/net/KNetTestStreams/KNetTestStreams.csproj +++ b/tests/net/Streams/KNetTestStreams/KNetTestStreams.csproj @@ -1,5 +1,5 @@ - + KNetTestStreams Exe @@ -8,6 +8,6 @@ KNetTestStreams - a test tool for KNet Streams - + diff --git a/tests/net/KNetTestStreams/Program.cs b/tests/net/Streams/KNetTestStreams/Program.cs similarity index 100% rename from tests/net/KNetTestStreams/Program.cs rename to tests/net/Streams/KNetTestStreams/Program.cs