https://github.com/teragrep/rlp_09
RELP Flooder for stresstesting and benchmarking RELP throughput
https://github.com/teragrep/rlp_09
Last synced: over 1 year ago
JSON representation
RELP Flooder for stresstesting and benchmarking RELP throughput
- Host: GitHub
- URL: https://github.com/teragrep/rlp_09
- Owner: teragrep
- License: agpl-3.0
- Created: 2024-02-12T14:01:05.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-03-07T15:27:03.000Z (over 2 years ago)
- Last Synced: 2024-04-17T19:13:17.264Z (about 2 years ago)
- Language: Java
- Size: 44.9 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.adoc
- License: LICENSE
Awesome Lists containing this project
README
= RELP Flooder library rlp_09
Simple but scalable RELP flooder library
== Features
- Simple to use
- Scales to as many threads as wanted
- Supports user-supplied record providers to make dynamic content
== Limitations
- Minimal failure tolerance, mostly meant for testing
- Limited usability outside specific testing situations
- Supports only one record per RELP batch
- No TLS support yet
== How to use
[sourcecode,java]
----
// Set all settings
RelpFlooderConfig relpFlooderConfig = new RelpFlooderConfig(target, port, record, threads);
// Alternatively use setters
RelpFlooderConfig relpFlooderConfig = new RelpFlooderConfig();
relpFlooderConfig.setTarget("127.0.0.1");
relpFlooderConfig.setPort(601);
relpFlooderConfig.setThreads(4);
// Provide config and Iterator provider to RelpFlooder, here is example implementation
ExampleRelpFlooderIteratorFactory exampleRelpFlooderIteratorFactory = new ExampleRelpFlooderIteratorFactory();
RelpFlooder relpFlooder = new RelpFlooder(relpFlooderConfig, exampleRelpFlooderIteratorFactory);
relpFlooder.start();
relpFlooder.stop();
// Get total records and bytes sent
LOGGER.info("Sent <{}> records", relpFlooder.getTotalRecordsSent());
LOGGER.info("Sent <{}> bytes", relpFlooder.getTotalBytesSent());
// Get total records and bytes sent per thread;
LOGGER.info("Sent <{}> records per thread", relpFlooder.getRecordsSentPerThread());
LOGGER.info("Sent <{}> bytes per thread", relpFlooder.getTotalBytesSentPerThread());
----
Example Iterator will send only static records like as
[source,sh]
----
<14>1 2024-02-29T13:58:05.605Z localhost rlp_09 - - - Example rlo_09 event
----
== Configurations
[cols="4"]
|===
|Configuration key|Setter|Default value|Usage
|target|setTarget(String target)|127.0.0.1|Sets RELP target
|port|setPort(int port)|601|Sets RELP port
|threads|setThreads(int threads)|1|Flooder thread count
|===
== Contributing
You can involve yourself with our project by https://github.com/teragrep/rlp_09/issues/new/choose[opening an issue] or submitting a pull request.
Contribution requirements:
. *All changes must be accompanied by a new or changed test.* If you think testing is not required in your pull request, include a sufficient explanation as why you think so.
. Security checks must pass
. Pull requests must align with the principles and http://www.extremeprogramming.org/values.html[values] of extreme programming.
. Pull requests must follow the principles of Object Thinking and Elegant Objects (EO).
Read more in our https://github.com/teragrep/teragrep/blob/main/contributing.adoc[Contributing Guideline].
=== Contributor License Agreement
Contributors must sign https://github.com/teragrep/teragrep/blob/main/cla.adoc[Teragrep Contributor License Agreement] before a pull request is accepted to organization's repositories.
You need to submit the CLA only once. After submitting the CLA you can contribute to all Teragrep's repositories.
----