Skip to content

Commit 8ce76be

Browse files
Enhancing Test Data Blaster README.
1 parent ba5c948 commit 8ce76be

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

test/test_data_blaster/README.md

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
11
# Test Data Blaster
22

33
The Test Data Blaster (T-DB) is a set of binaries that performs both TCP and UDP distributed testing (currently the UDP portion is not implemented). There are multiple binaries in the suite:
4-
- Data sender / receiver (DSR), a TCP and (future) UDP version
5-
- Statistics and logging monitor, a C++ and (future) Python version
4+
- Data sender / receiver (DSR), a TCP and (future) UDP version (C++ only)
5+
- Monitor, a statistics and logging display (both C++ and Python versions)
66

77
Multiple data sender / receiver (DSR) instances are running at the same time (at least two must be running for sending and receiving data). Each TCP DSR instance can be configured for multiple TCP connectors and multiple TCP acceptors at the same time. Each (future) UDP DSR can be configured for multiple senders and receivers at the same time.
88

9-
A single instance of the monitor shows statistics from the DSR instances. The monitor is also responsible for shutting down the DSRs. The same monitor instance can be running for both TCP and UDP (the log messages sent to the monitor from the DSRs specify whether the test data is being sent over TCP or UDP).
9+
A single instance of the monitor (either the C++ or Python version) shows statistics from the DSR instances. The monitor is also responsible for shutting down the DSRs. The same monitor instance can be running for both TCP and UDP DSRs (the log messages sent to the monitor from the DSRs specify whether the test data is being sent over TCP or UDP).
1010

11-
While the DSRs are written in C++, there is a monitor app written in both C++ and Python version. The monitor message definitions are text only, so binary endianness is not a factor.
11+
The message definitions between the DSRs and the monitor are text only, so binary endianness is not a factor, and will run on any platform. The data flowing between DSRs is marshalled and unmarshalled as needed by the DSRs.
1212

1313
## Usage
1414

15-
(Fill in command line usage here - note that typically the monitor is started first.)
15+
The monitor process is typically started first, otherwise monitor log messages may be lost.
16+
17+
(Fill in command line usage here.)
1618

1719
(Fill in details about expected output.)
1820

21+
If the connection to the monitor process from a DSR is broken, (fill in details about display behavior, it will be different between the C++ and Python versions).
22+
1923
(Fill in details about how to trigger shutdown through the monitor.)
2024

25+
2126
## Building Test Data Blaster
2227

2328
All of the C++ components can be built using CMake.
@@ -28,20 +33,24 @@ The Python monitor is built by ...
2833

2934
## Internals and Design
3035

31-
Having separate code bases (and executables) for the TCP and UDP DSRs simplifies the command line parameters as well as the internal logic. There is no specific technical reason why the DSR couldn't handle both TCP and UDP, but the DSR command line is already complicated enough.
36+
Having separate code bases (and executables) for the TCP and UDP DSRs simplifies the command line parameters as well as the internal logic. There is no specific technical reason why the DSR couldn't handle both TCP and UDP, but the TCP DSR command line has quite a bit of complexity without adding UDP options.
3237

3338
There is (obviously) common code between all of the T-DB C++ components, some from the `shared_test` directory (i.e. code that is shared with the Chops Net IP unit tests), and some factored out in this (`test_data_blaster`) directory.
3439

3540
### Monitor Process
3641

37-
The T-DB Monitor is run as a TCP acceptor (server) only. It accepts TCP connections on one port, each connection corresponding to one instance of either a TCP DSR or a UDP DSR.
42+
The T-DB Monitor is run as a TCP acceptor (server) only. It accepts TCP connections on one port, each connection corresponding to one instance of either a TCP DSR or a (future) UDP DSR.
3843

3944
There are no "begin" or "end" data messages that the monitor has to process, a new incoming TCP connection is the indication that a new DSR instance has started, and the end of the TCP connection is the indication that the DSR instance has ended.
4045

4146
The DSR will not send a monitor log message for every test message sent between DSR instances. A "modulo" command line parameter specifies how often a monitor log message will be sent (for each test data set). (A modulo of 1 would generate one monitor log message per test data set message.)
4247

4348
The monitor process will notify all DSR processes to shutdown by sending a shutdown message through each monitor connection. The monitor process will have a user initiated mechanism to send the shutdown messages and end the monitor process.
4449

50+
When shutdown is initiated the monitor process waits for (fill in details) seconds to ensure that the shutdown message is sent to all DSR connections.
51+
52+
(Note - Roxanne has suggested adding a two-way shutdown message sequence. A "shutdown requested" message would be sent to all DSRs, and a "shutdown response" message would be sent back to the monitor be each DSR. This allows quicker shutdown by the monitor process, since it will know exactly when the last DSR has shut down.)
53+
4554
#### Monitor Log Message Contents
4655

4756
Each message from the DSRs to the monitor has the following fields:
@@ -67,6 +76,8 @@ The shutdown message is the only message sent from the monitor to the DSRs and c
6776

6877
These three characters are a lower case "s" (short for shutdown), a null character and a newline character.
6978

79+
(Proposed message, from Roxanne: - the DSR sends back a shutdown response message consisting of three characters: "r\0\n".)
80+
7081
### TCP Data Sender Receiver
7182

7283
Each DSR instance can start multiple TCP connectors and multiple TCP acceptors as provided via the command line arguments.

0 commit comments

Comments
 (0)