{"id":18985098,"url":"https://github.com/o3de/o3de-netsoaktest","last_synced_at":"2025-04-19T20:26:28.134Z","repository":{"id":38467321,"uuid":"361850180","full_name":"o3de/o3de-netsoaktest","owner":"o3de","description":"NetSoakTest project","archived":false,"fork":false,"pushed_at":"2025-02-25T20:05:40.000Z","size":95,"stargazers_count":6,"open_issues_count":2,"forks_count":9,"subscribers_count":22,"default_branch":"development","last_synced_at":"2025-03-29T12:51:23.875Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/o3de.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-26T18:15:11.000Z","updated_at":"2024-10-19T12:59:54.000Z","dependencies_parsed_at":"2024-11-08T16:38:30.481Z","dependency_job_id":null,"html_url":"https://github.com/o3de/o3de-netsoaktest","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o3de%2Fo3de-netsoaktest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o3de%2Fo3de-netsoaktest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o3de%2Fo3de-netsoaktest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o3de%2Fo3de-netsoaktest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/o3de","download_url":"https://codeload.github.com/o3de/o3de-netsoaktest/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249250814,"owners_count":21237961,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T16:24:41.353Z","updated_at":"2025-04-16T14:32:04.656Z","avatar_url":"https://github.com/o3de.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NetSoakTest Project \n\n## Overview\nNetSoakTest is an O3DE sample project used to stress test the AzNetworking transport layer. It is a headless server application that presently runs two connections locally via a loopback mechanism in which each endpoint sends a variety of packets to the other.\n\n## Download and Install\n\nThis repository uses Git LFS for storing large binary files.  You will need to create a Github personal access token to authenticate with the LFS service.\n\n\n### Create a Git Personal Access Token\n\nYou will need your personal access token credentials to authenticate when you clone the repository.\n\n[Create a personal access token with the 'repo' scope.](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token)\n\n\n### (Recommended) Verify you have a credential manager installed to store your credentials \n\nRecent versions of Git install a credential manager to store your credentials so you don't have to put in the credentials for every request.  \nIt is highly recommended you check that you have a [credential manager installed and configured](https://github.com/microsoft/Git-Credential-Manager-Core)\n\n\n\n### Clone the repository \n\nThere are two options when installing a project\n\n#### Option #1 (Recommended) - Project-centric approach to building a project \n\nThis option lets you keep engine and project files in separate locations.\n\n##### Windows\n```shell\n# clone the project into a folder outside your engine repository folder\n\u003e git clone https://github.com/o3de/o3de-netsoaktest.git\nCloning into 'o3de-netsoaktest'...\n\n# register the engine\n\u003e C:/Path/To/o3de/scripts/o3de.bat register --this-engine \n\n# register the project \n\u003e C:/Path/To/o3de/scripts/o3de.bat register -p C:/Path/To/o3de-netsoaktest\n\n# example configure command\n\u003e cmake -S C:/Path/To/o3de-netsoaktest -B C:/Path/To/o3de-netsoaktest/build/windows_vs2019 -G \"Visual Studio 16\" -DLY_3RDPARTY_PATH=\"C:/3rdParty\"\n\n# example build command\n\u003e cmake --build C:/Path/To/o3de-netsoaktest/build/windows_vs2019 --target Editor NetSoakTest.ServerLauncher --config profile -- /m /nologo \n```\n\n##### Linux\n```shell\n# clone the project into a folder outside your engine repository folder\n\u003e git clone https://github.com/o3de/o3de-netsoaktest.git\nCloning into 'o3de-netsoaktest'...\n\n# register the engine\n\u003e/path/to/o3de/scripts/o3de.bat register --this-engine \n\n# register the project \n\u003e /path/to/o3de/scripts/o3de.sh register -p /path/to/o3de-netsoaktest\n\n# example configure command\n\u003e cmake -S /path/to/o3de-netsoaktest -B /path/to/o3de-netsoaktest/build -G \"Ninja Multi-Config\" -DLY_3RDPARTY_PATH=\"/home/user/3rdparty\" -DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12 \n\n# example build command\n\u003e cmake --build /path/to/o3de-netsoaktest/build --config profile --target Editor NetSoakTest.ServerLauncher\n```\n\n\n#### Option #2 - Engine-centric approach to building a project \n\nThis option models the legacy folder layout where all projects were in the same folder as the engine.\nIf you use this approach you must also modify your engine's local git exclude file to ignore the project folder.\n\n```shell\n# clone the project in a folder named 'NetSoakTest' in your existing engine repository folder\n\u003e git clone https://github.com/o3de/o3de-netsoaktest.git C:/path/to/engine/NetSoakTest\nCloning into 'NetSoakTest'...\n\n# modify the local engine git exclude file to ignore the project folder\n\u003e echo NetSoakTest \u003e C:/Path/To/o3de/.git/info/exclude\n\n# the project now exists inside the engine folder but your engine repository will ignore all files in the project folder\n\n# example configure command\n\u003e cmake -S C:/Path/To/o3de -b C:/Path/To/o3de/build -G \"Visual Studio 16 2019\" -DLY_3RDPARTY_PATH=\"C:/3rdparty\" -DLY_PROJECTS=NetSoakTest \n\n# example build command\n\u003e cmake --build C:/Path/To/o3de/build --target Editor NetSoakTest.ServerLauncher --configure profile -- /m /nologo \n\n```\n\nIf you have a Git credential helper configured, you should not be prompted for your credentials anymore.\n\n## Running the Project\n\nRun the netsoak ServerLauncher with the relevant comand line values, using the nformat is ```--\u003ccommand\u003e=\u003cvalue\u003e```. See the full list of options below.\n\nFor example, the following params will run the loopback test for 2 minutes before dumping stats and exiting:\n``` \nNetSoakTest.ServerLauncher --soak_mode=loopback --soak_runtime=2000\n```\n\nWhen running tests, you can use the [debug console](https://www.o3de.org/docs/user-guide/appendix/cvars/debugging/#using-console-debug-views) and the `DumpSoakStats` command to see point-in-time stats from the test. The test will run indefinitely unless `soak_runtime` is set.\n\nNote: All O3DE projects generate a GameLauncher and a ServerLauncher. NetSoakTest does not utilize its GameLauncher by design.\n\n### Options\n\n\n| Cvar | Description | Default |\n|-------|------------|---------|\n| soak_latencyms | Simulated connection quality latency in milliseconds | 0 | \n| soak_variancems | Simulated connection quality variance in milliseconds | 0 | \n| soak_losspercentage | Simulated connection quality packet drop rate | 0 |\n| soak_serveraddr | The address for a client soak test to connect to, localhost by default (only used in Client Soak Mode) | 127.0.0.1 |\n| soak_port | The port that this soak test will bind to for game traffic | 33450 |\n| soak_protocol | Soak test protocol (TCP or UDP) | udp | \n| soak_mode | The operating mode for the soak test, options are loopback, client or host. `Loopback` has two connection within the application feed traffic to each other in a loop. `Client` expects to connect to a server hosted at soak_serveraddr. `Host` hosts a server for clients to connect to | Loopback | \n| soak_runtimems | How long to run the test for in milliseconds. Will automatically dump stats at the end of the test period. | 0 (run indefinitely) |\n| DumpSoakStats | Dump snapshot of soak test networking stats to console and log. | N/A |\n\nOther networking features such as Compression or DTLS/TLS can be enabled/disabled in the same way they would be in a production environment. For example:\n\n```\nNetSoakTest.ServerLauncher --net_UdpUseEncryption=true\n```\n\n## License\n\nFor terms please see the LICENSE*.TXT file at the root of this distribution.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fo3de%2Fo3de-netsoaktest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fo3de%2Fo3de-netsoaktest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fo3de%2Fo3de-netsoaktest/lists"}