{"id":18965789,"url":"https://github.com/wso2/performance-common","last_synced_at":"2025-05-16T09:06:29.926Z","repository":{"id":56663179,"uuid":"93613046","full_name":"wso2/performance-common","owner":"wso2","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-14T04:24:00.000Z","size":672,"stargazers_count":51,"open_issues_count":2,"forks_count":61,"subscribers_count":202,"default_branch":"master","last_synced_at":"2025-05-14T06:02:53.935Z","etag":null,"topics":["common"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wso2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2017-06-07T08:45:56.000Z","updated_at":"2025-05-14T04:24:04.000Z","dependencies_parsed_at":"2024-03-18T11:36:00.316Z","dependency_job_id":"e3640052-889a-46af-9922-e0c30faec730","html_url":"https://github.com/wso2/performance-common","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wso2%2Fperformance-common","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wso2%2Fperformance-common/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wso2%2Fperformance-common/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wso2%2Fperformance-common/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wso2","download_url":"https://codeload.github.com/wso2/performance-common/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254501558,"owners_count":22081528,"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":["common"],"created_at":"2024-11-08T14:31:56.830Z","updated_at":"2025-05-16T09:06:24.892Z","avatar_url":"https://github.com/wso2.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Common Artifacts for Performance Tests\n\n---\n|  Branch | Build Status |\n| :------ |:------------ |\n| master  | [![Build Status](https://wso2.org/jenkins/buildStatus/icon?job=platform-builds/performance-common)](https://wso2.org/jenkins/job/platform-builds/job/performance-common/) |\n---\n\nThis repository has common artifacts to be used for Performance Tests.\n\nIn [components](components), there are several Java projects and each project builds an executable JAR file.\n\nThe [distribution](distribution) directory has the scripts and the Maven project to build the final distribution package\n including all scripts and components to be used for performance tests.\n\nThe package (**performance-common-distribution-${version}.tar.gz**) built by the distribution maven module can be used as a dependency to write\nperformance testing scripts.\n\nThis package only provides helper scripts and applications. You must extend the functionality of these scripts to run performance tests.\n\nIt's recommended to include the contents of this package with any scripts written to extend the functionality.\n\n## Package contents\n\nFollowing is the tree view of the contents inside distribution package.\n\n```console\nubuntu@server:~$ tree --charset=ascii | sed -e 's/[0-9]\\.[0-9]\\.[0-9].*\\.jar/${version}.jar/g'\n.\n|-- cloudformation\n|   |-- cloudformation-common.sh\n|   |-- create-template.py\n|   |-- download-logs.sh\n|   |-- get-wum-updated-wso2-product.sh\n|   |-- python-requirements.txt\n|   `-- templates\n|       `-- common_perf_test_cfn.yaml\n|-- common\n|   `-- common.sh\n|-- java\n|   `-- install-java.sh\n|-- jmeter\n|   |-- create-summary-csv.sh\n|   |-- create-summary-markdown.py\n|   |-- csv-to-markdown-converter.py\n|   |-- install-jmeter.sh\n|   |-- jmeter-server-start.sh\n|   |-- perf-test-common.sh\n|   `-- user.properties\n|-- jtl-splitter\n|   |-- jtl-splitter-${version}.jar\n|   `-- jtl-splitter.sh\n|-- netty-service\n|   |-- netty-http-echo-service-${version}.jar\n|   `-- netty-start.sh\n|-- payloads\n|   |-- generate-payloads.sh\n|   `-- payload-generator-${version}.jar\n|-- sar\n|   `-- install-sar.sh\n`-- setup\n    |-- setup-common.sh\n    |-- setup-jmeter-client.sh\n    |-- setup-jmeter.sh\n    `-- setup-netty.sh\n\n10 directories, 26 files\n```\n\nEach directory has one or more executable scripts. All scripts support `-h` (help) option.\n\n**Note:** Most of these scripts will work only on Debian based systems like Ubuntu.\n\nSee following sections for more details.\n\n### AWS CloudFormation\n\nThe performance test scripts can create AWS resources to run standard server performance tests on AWS.\n\nStandard server performance tests include a Back-end service and the parameters include \"Application heap memory sizes\",\n\"Concurrent users\", \"Message sizes\", and \"Back-end Sleep Times\".\n\nThe `create-template.py` script can create AWS CloudFormation template based on a `Jinja2` template. The `common_perf_test_cfn.yaml` file\nis a common `Jinja2` template, which has necessary configurations to create a performance test environment on AWS.\n\nYou should extend `cloudformation-common.sh` to run standard server performance tests. By extending, you can will get all the functionality\nof creating the AWS stack, run the tests, delete stack and summarize results. You can even run several stacks to run performance tests parallely.\n\nThe `cloudformation-common.sh` script is not directly executable, but it supports following options.\n\n```console\nubuntu@server:~$ ./cloudformation/cloudformation-common.sh -h\n\nUsage: \n./cloudformation/cloudformation-common.sh -f \u003cperformance_scripts_distribution\u003e [-d \u003cresults_dir\u003e] -k \u003ckey_file\u003e -n \u003ckey_name\u003e\n   -j \u003cjmeter_distribution\u003e -o \u003coracle_jdk_distribution\u003e -g \u003cgcviewer_jar_path\u003e\n   -s \u003cstack_name_prefix\u003e -b \u003cs3_bucket_name\u003e -r \u003cs3_bucket_region\u003e\n   -J \u003cjmeter_client_ec2_instance_type\u003e -S \u003cjmeter_server_ec2_instance_type\u003e\n   -N \u003cnetty_ec2_instance_type\u003e \n   [-t \u003cnumber_of_stacks\u003e] [-p \u003cparallel_parameter_option\u003e] [-w \u003cminimum_stack_creation_wait_time\u003e]\n   [-h] -- [run_performance_tests_options]\n\n-f: Distribution containing the scripts to run performance tests.\n-d: The results directory. Default value is a directory with current time. For example, results-20190124094422.\n-k: Amazon EC2 Key File. Amazon EC2 Key Name must match with this file name.\n-n: Amazon EC2 Key Name.\n-j: Apache JMeter (tgz) distribution.\n-o: Oracle JDK distribution.\n-g: Path of GCViewer Jar file, which will be used to analyze GC logs.\n-s: The Amazon CloudFormation Stack Name Prefix.\n-b: Amazon S3 Bucket Name.\n-r: Amazon S3 Bucket Region.\n-J: Amazon EC2 Instance Type for JMeter Client.\n-S: Amazon EC2 Instance Type for JMeter Server.\n-N: Amazon EC2 Instance Type for Netty (Back-end) Service.\n-t: Number of stacks to create. Default: 1.\n-p: Parameter option of the test script, which will be used to run tests in parallel.\n    Default: u. Allowed option characters: ubsm.\n-w: The minimum time to wait in minutes before polling for cloudformation stack's CREATE_COMPLETE status.\n    Default: 5.\n-h: Display this help and exit.\n```\n\nWhen running the performance tests, you can use `get-wum-updated-wso2-product.sh` script to get a WSO2 product with all WUM updates.\n\n### Java\n\nUse the `install-java.sh` script to install Oracle Java Development Kit (JDK) on 64bit Linux.\n\nThe `install-java.sh` script in this directory will not be useful when OpenJDK is used. It's recommended to use the default package\nrepositories to install OpenJDK.\n\nCurrently `install-java.sh` script supports installing Oracle JDK 8.\n\nYou must download latest [JDK 8](http://www.oracle.com/technetwork/java/javase/downloads/index.html).\n\nThis script can also install Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy files. You need to\n copy JCE Policy zip file to the same location as the downloaded JDK file (tar.gz)\n\nThe script needs to be run as root. The JDK will be extracted to `/usr/lib/jvm` directory.\n\n```console\nubuntu@server:~$ ./java/install-java.sh -h\n\nUsage: \n./java/install-java.sh -f \u003cjava_dist\u003e [-p \u003cjava_dir\u003e] [-u \u003cuser\u003e] [-h]\n\n-f: The jdk tar.gz file.\n-p: Java installation directory.\n-u: Target user. Default: ubuntu.\n-h: Display this help and exit.\n```\n\n### JMeter\n\n#### Installing JMeter\n\nThe `install-jmeter.sh` script will extract JMeter, install Plugin Manager and copy the `user.properties` file.\n\nThe `user.properties` file has recommended configurations for performance tests.\n\nThere is an option to download latest [Apache JMeter](http://jmeter.apache.org/download_jmeter.cgi).\n\n```console\nubuntu@server:~$ ./jmeter/install-jmeter.sh -h\n\nUsage: \n./jmeter/install-jmeter.sh -i \u003cinstallation_dir\u003e [-f \u003cjmeter_dist\u003e] [-d] [-p \u003cjmeter_plugin_name\u003e] [-h]\n\n-i: Apache JMeter installation directory.\n-f: Apache JMeter tgz distribution.\n-d: Download Apache JMeter from web.\n-p: The name of the JMeter Plugin to install. You can provide multiple names.\n-h: Display this help and exit.\n```\n\n#### Running standard server performance tests.\n\nYou shoud extend `perf-test-common.sh` to run standard server performance tests. It supports testing with multiple concurrent\nusers, different message sizes, different Back-end service delays and different heap memory sizes of the target server.\n\nThe script also supports running remote (distributed) JMeter tests and it will also summarize the results for warmup and\nmeasurement periods.\n\nA script can extend this `perf-test-common.sh` script by simply sourcing the `perf-test-common.sh` script.\n\nFor example:\n\n```bash\n# Execute common script\n. $script_dir/perf-test-common.sh\n```\n\nAny script depending on this script must define test scenarios as follows:\n\n```bash\ndeclare -A test_scenario0=(\n    [name]=\"test_scenario_name1\"\n    [display_name]=\"Test Scenario 1\"\n    [description]=\"Description of Test Scenario 1\"\n    [jmx]=\"test_scenario_name1.jmx\"\n    [use_backend]=true\n    [skip]=false\n)\ndeclare -A test_scenario1=(\n    [name]=\"test_scenario_name2\"\n    [display_name]=\"Test Scenario 2\"\n    [description]=\"Description of Test Scenario 2\"\n    [jmx]=\"test_scenario_name2.jmx\"\n    [use_backend]=true\n    [skip]=false\n)\n```\n\nThen define following functions in the script.\n1. `initialize`\n2. `before_execute_test_scenario`\n3. `after_execute_test_scenario`\n\nIn above functions, following variables may be used\n1. `scenario_name`\n2. `heap`\n3. `users`\n4. `msize`\n5. `sleep_time`\n6. `report_location`\n\nUse `jmeter_params` array in `before_execute_test_scenario` to provide JMeter parameters.\n\nIn before_execute_test_scenario `JMETER_JVM_ARGS` variable can be set to provide\nadditional JVM arguments to JMeter.\n\nFinally, execute test scenarios using the function `test_scenarios`.\n\n```console\nubuntu@server:~$ ./jmeter/perf-test-common.sh -h\n\nUsage: \n./jmeter/perf-test-common.sh -m \u003cheap_sizes\u003e -u \u003cconcurrent_users\u003e -b \u003cmessage_sizes\u003e -s \u003csleep_times\u003e [-d \u003ctest_duration\u003e] [-w \u003cwarmup_time\u003e]\n   [-n \u003cjmeter_servers\u003e] [-j \u003cjmeter_server_heap_size\u003e] [-k \u003cjmeter_client_heap_size\u003e] [-l \u003cnetty_service_heap_size\u003e]\n   [-i \u003cinclude_scenario_name\u003e] [-e \u003cinclude_scenario_name\u003e] [-t] [-p \u003cestimated_processing_time_in_between_tests\u003e] [-h]\n\n-m: Application heap memory sizes. You can give multiple options to specify multiple heap memory sizes. Allowed suffixes: M, G.\n-u: Concurrent Users to test. You can give multiple options to specify multiple users.\n-b: Message sizes in bytes. You can give multiple options to specify multiple message sizes.\n-s: Back-end Sleep Times in milliseconds. You can give multiple options to specify multiple sleep times.\n-d: Test Duration in seconds. Default 900.\n-w: Warm-up time in seconds. Default 300.\n-n: Number of JMeter servers. If n=1, only client will be used. If n \u003e 1, remote JMeter servers will be used. Default 1.\n-j: Heap Size of JMeter Server. Allowed suffixes: M, G. Default 4G.\n-k: Heap Size of JMeter Client. Allowed suffixes: M, G. Default 2G.\n-l: Heap Size of Netty Service. Allowed suffixes: M, G. Default 4G.\n-i: Scenario name to to be included. You can give multiple options to filter scenarios.\n-e: Scenario name to to be excluded. You can give multiple options to filter scenarios.\n-t: Estimate time without executing tests.\n-p: Estimated processing time in between tests in seconds. Default 60.\n-h: Display this help and exit.\n```\n\n#### Creating a summary\n\nUse `create-summary-csv.sh` to create a summary CSV file.\n\n```console\nubuntu@server:~$ ./jmeter/create-summary-csv.sh -h\n\nUsage: \n./jmeter/create-summary-csv.sh -n \u003capplication_name\u003e [-c \u003ccolumn_header_name\u003e] [-r \u003cregex\u003e] [-x] \n   [-p \u003cfile_prefix\u003e] [-g \u003cgcviewer_jar_path\u003e] [-d \u003cresults_dir\u003e]\n   [-j \u003cjmeter_servers\u003e] [-k \u003capplication_instance_count\u003e] [-w] [-i] [-l] [-h]\n\n-n: Name of the application to be used in column headers.\n-c: Column header name for each parameter.\n    You should give multiple header names in order for each directory in the results directory structure.\n    Default: Heap Size,Concurrent Users,Message Size (Bytes),Back-end Service Delay (ms)\n-r: Regular expression with a single group to extract parameter value from directory name.\n    You should give multiple regular expressions in order for each directory in the results directory structure.\n    Default: ([0-9]+[a-zA-Z])_heap,([0-9]+)_users,([0-9]+)B,([0-9]+)ms_sleep\n-x: Print column names and exit.\n-p: Prefix of the files to get metrics (Load Average, GC, etc).\n-g: Path of GCViewer Jar file, which will be used to analyze GC logs.\n-d: Results directory. Default ./jmeter/results.\n-j: Number of JMeter servers. If n=1, only client was used. If n \u003e 1, remote JMeter servers were used. Default 1.\n-k: Number of Application instances. Default 1.\n-w: Use warmup results instead of measurement results.\n-i: Include GC statistics and load averages for other servers.\n-l: Exclude Netty Back-end Service statistics. Works with -i.\n-h: Display this help and exit.\n```\n\nUse `csv-to-markdown-converter.py` to convert CSV results into Markdown format.\n\n```console\nubuntu@server:~$ ./jmeter/csv-to-markdown-converter.py\n\nUsage: {Input File(.csv)} {Output File (.md)}\n```\n\nUse `create-summary-markdown.py` to create a markdown file, which will be a summary of performance test results. This scripts\nlooks for a `Jinja2` template with the name `summary.md` in `templates` directory.\n\n```console\nubuntu@server:~$ ./jmeter/create-summary-markdown.py -h\nusage: create-summary-markdown.py [-h] --json-files JSON_FILES\n                                  [JSON_FILES ...] --column-names COLUMN_NAMES\n                                  [COLUMN_NAMES ...]\n\nCreate summary report\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --json-files JSON_FILES [JSON_FILES ...]\n                        JSON files with parameters.\n  --column-names COLUMN_NAMES [COLUMN_NAMES ...]\n                        Columns to include in the report.\n```\n\n### JTL Splitter\n\nThe \"jtl-splitter\" directory has a Java program to split a single JTL file into warmup and measurement based on the \n number of minutes given as the warmup time.\n\nWhen reporting the results for the performance tests, some specified number of minutes from the beginning of the test \n are considered as the \"Java Warm-up Time\" and the from the final results, the warm-up duration is excluded. \n By doing this, the results reported from the test will only consider the steady-state of the server.\n\nThis program should be invoked by the performance testing script after completing the JMeter performance test.\n\nFor example if you specify 5 minutes warmup-time, the JTL splitter splits the `results.jtl` file and the `results-warmup.jtl`\nfile will have the test results for first 5 minutes. The results after 5 minutes will be in `results-measurement.jtl`.\n\n```console\nubuntu@server:~$ ./jtl-splitter/jtl-splitter.sh -h\n\nUsage: \n./jtl-splitter/jtl-splitter.sh [-m \u003cheap_size\u003e] [-h] -- [jtl_splitter_flags]\n\n-m: The heap memory size. Default: 1g\n-h: Display this help and exit.\n```\n\nJTL Splitter usage:\n\n```console\nubuntu@server:~$ ./jtl-splitter/jtl-splitter.sh -- -h\nUsage: JTLSplitter [options]\n  Options:\n    -d, --delete-jtl-file-on-exit\n      Delete JTL File on exit\n      Default: false\n    -h, --help\n      Display Help\n  * -f, --jtlfile\n      JTL File\n    -n, --precision\n      Precision to use in statistics\n      Default: 2\n    -p, --progress\n      Show progress\n      Default: false\n    -s, --summarize\n      Summarize results\n      Default: false\n    -u, --time-unit\n      Time Unit\n      Default: MINUTES\n      Possible Values: [NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS]\n  * -t, --warmup-time\n      Warmup Time\n      Default: 0\n```\n\n\n### Netty Service\n\nThe \"netty-service\" directory has a simple Netty HTTP Echo Service, which will echo back the body data in the HTTP \n request.\n\nThe Netty HTTP Echo Service should be started by the performance testing script.\n\n```console\nubuntu@server:~$ ./netty-service/netty-start.sh -h\n\nUsage: \n./netty-service/netty-start.sh [-m \u003cheap_size\u003e] [-h] -- [netty_service_flags]\n\n-m: The heap memory size of Netty Service. Default: 4g\n-h: Display this help and exit.\n```\n\nThe script also accepts an argument to specify the number of milliseconds to sleep before sending response. This is\n useful to test the performance with delays.\n\n```console\nubuntu@server:~$ ./netty-service/netty-start.sh -- -h\nStarting Netty\nUsage: EchoHttpServer [options]\n  Options:\n    --boss-threads\n      Boss Threads\n      Default: 4\n    --delay\n      Response delay in milliseconds\n      Default: 0\n    -h, --help\n      Display Help\n    --http2\n      Use HTTP/2 protocol instead of HTTP/1.1\n      Default: false\n    --key-store-file\n      Keystore file\n    --key-store-password\n      Keystore password\n      Default: \u003cempty string\u003e\n    --port\n      Server Port\n      Default: 8688\n    --ssl\n      Enable SSL\n      Default: false\n    --worker-threads\n      Worker Threads\n      Default: 8\n```\n\n### Payloads\n\nThe \"payloads\" directory has a Java program to generate JSON payloads with different sizes.\n\nBy default, the script generates 50B, 1KiB, 10KiB, and 100KiB JSON files.\n\nIf you want to generate different payload sizes, pass the payload sizes as parameters.\n\nThe performance testing script can call this script to generate payloads required for the performance test.\n\n```console\nubuntu@server:~$ ./payloads/generate-payloads.sh -h\n\nUsage: \n./payloads/generate-payloads.sh [-p \u003cpayload_type\u003e] [-s \u003cpayload_size\u003e]\n\n-p: The Payload Type.\n-s: The Payload Size. You can give multiple payload sizes.\n-h: Display this help and exit.\n```\n\n### SAR\n\nThe \"sar\" directory has a simple script to install System Activity Report (SAR) in Linux and configure it to run every\n one minute.\n\nThe script needs to be run as root.\n\n```console\nubuntu@server:~$ sudo ./sar/install-sar.sh -h\n\nUsage: \n./sar/install-sar.sh [-h]\n\n-h: Display this help and exit.\n```\n\n### Setup scripts\n\nThe \"setup\" directory has the scripts to setup instances (for example, JMeter Client, JMeter Server, Netty Server, etc.)\n\n#### Common Setup Script\n\nThe `setup-common.sh` script is used by all other setup scripts to do some common operations.\n\n```console\nubuntu@server:~$ sudo ./setup/setup-common.sh -h\n\nUsage: \n./setup/setup-common.sh  [-g] [-p \u003cpackage\u003e] [-w \u003curl_to_download\u003e] [-o \u003coutput_name\u003e]\n\n-g: Upgrade distribution\n-p: Package to install. You can give multiple -p options.\n-w: Download URLs. You can give multiple URLs to download.\n-o: Output name of the downloaded file. You can give multiple names for a given set of URLs.\n-h: Display this help and exit.\n```\n\n#### Setup JMeter\n\nThe `setup-jmeter.sh` installs JMeter and JMeter plugins. This script uses the `install-jmeter.sh` script in \"jmeter\"\ndirectory.\n\n```console\nubuntu@server:~$ sudo ./setup/setup-jmeter.sh -h\n\nUsage: \n./setup/setup-jmeter.sh -i \u003cinstallation_dir\u003e [-j \u003cjmeter_plugin\u003e]  [-g] [-p \u003cpackage\u003e] [-w \u003curl_to_download\u003e] [-o \u003coutput_name\u003e]\n\n-g: Upgrade distribution\n-p: Package to install. You can give multiple -p options.\n-w: Download URLs. You can give multiple URLs to download.\n-o: Output name of the downloaded file. You can give multiple names for a given set of URLs.\n-i: The JMeter installation directory.\n-j: The JMeter plugin name. You can give multiple JMeter plugins to install.\n-h: Display this help and exit.\n```\n\n#### Setup JMeter Client\n\nThe `setup-jmeter-client.sh` uses `setup-jmeter.sh` internally. It also creates the SSH configurations to execute commands\nin other instances.\n\n```console\nubuntu@server:~$ sudo ./setup/setup-jmeter-client.sh -h\n\nUsage: \n./setup/setup-jmeter-client.sh -k \u003ckey_file\u003e -i \u003cinstallation_dir\u003e -c \u003cssh_config_location\u003e -a \u003cssh_alias\u003e -n \u003cssh_hostname\u003e [-j \u003cjmeter_plugin\u003e]  [-g] [-p \u003cpackage\u003e] [-w \u003curl_to_download\u003e] [-o \u003coutput_name\u003e]\n\n-g: Upgrade distribution\n-p: Package to install. You can give multiple -p options.\n-w: Download URLs. You can give multiple URLs to download.\n-o: Output name of the downloaded file. You can give multiple names for a given set of URLs.\n-k: The key file location.\n-i: The JMeter installation directory.\n-c: The SSH config location.\n-a: SSH Alias. You can give multiple ssh aliases.\n-n: SSH Hostname. You can give multiple ssh hostnames for a given set of ssh aliases.\n-j: The JMeter plugin name. You can give multiple JMeter plugins to install.\n-h: Display this help and exit.\n```\n\n#### Setup Netty Server\n\nThe `setup-netty.sh` installs Netty Server and OpenJDK\n\n```console\nubuntu@server:~$ sudo ./setup/setup-netty.sh -h\n\nUsage: \n./setup/setup-netty.sh  [-g] [-p \u003cpackage\u003e] [-w \u003curl_to_download\u003e] [-o \u003coutput_name\u003e]\n\n-g: Upgrade distribution\n-p: Package to install. You can give multiple -p options.\n-w: Download URLs. You can give multiple URLs to download.\n-o: Output name of the downloaded file. You can give multiple names for a given set of URLs.\n-h: Display this help and exit.\n```\n\n## License\n\nCopyright 2017 WSO2 Inc. (http://wso2.com)\n\nLicensed under the Apache License, Version 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwso2%2Fperformance-common","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwso2%2Fperformance-common","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwso2%2Fperformance-common/lists"}