Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds an application (hub_test) for testing the throughput of a hub or a CAN-bus #762

Merged
merged 47 commits into from
Feb 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
c8b7fde
Adds the skeleton of a hub test application which will verify the per…
balazsracz Dec 23, 2023
8cbfb2a
Adds an accessor to the last expiry time of a timer.
balazsracz Dec 23, 2023
822bad7
Starts adding the send flow.
balazsracz Dec 23, 2023
0b088d2
Adds code for filling in the output frames.
balazsracz Dec 25, 2023
e0ef336
Releases packets as the receive notifications are coming in.
balazsracz Dec 25, 2023
b05236b
Adds receiver class to hub_test.
balazsracz Dec 27, 2023
9130af0
Adds constants for TCP socket options fo SO_SNDBUF and SO_RCVBUF
balazsracz Dec 29, 2023
6498441
Optimizes the memory and buffer use of the hub application.
balazsracz Dec 29, 2023
84b4808
Ensures that an executor thread can not be created twice.
balazsracz Dec 29, 2023
df96714
hub-test: Implements links and prints statistics about sent data.
balazsracz Dec 29, 2023
954956d
gc-tcp-hub: applies SO_SNDBUF and SO_RCVBUF options to sockets.
balazsracz Dec 29, 2023
a85ca9f
client connection util: exposes the file descriptor when available.
balazsracz Dec 29, 2023
8ee55a0
Limits end to end buffering in gridconnect bridge.
balazsracz Dec 29, 2023
0d0cefa
Adds a utility class for computing simple statistics.
balazsracz Dec 29, 2023
9755279
Ensures that the ClientCOnnection.cxx is built and linked.
balazsracz Dec 29, 2023
e2b9769
Sorts lines in sources.
balazsracz Dec 29, 2023
47cb981
Ensures that an executor thread can not be created twice.
balazsracz Dec 29, 2023
4bd04c6
Limits end to end buffering in gridconnect bridge.
balazsracz Dec 29, 2023
46cfb1c
fix whitespace
balazsracz Dec 29, 2023
1347885
Merge commit '4bd04c6c81b987a82f5f399bd104fb0eeb9b2f7b' into bracz-hu…
balazsracz Dec 29, 2023
304883b
Merge branch 'bracz-hub-bridge-limit-pool' into bracz-hub-test-app
balazsracz Dec 29, 2023
cad3b2e
Merge branch 'bracz-exec-multi-thread-assert' into bracz-hub-test-app
balazsracz Dec 29, 2023
567021a
Refactors the fd optimization code to FdUtils class.
balazsracz Dec 29, 2023
52bd450
Adds constants for TCP socket options fo SO_SNDBUF and SO_RCVBUF
balazsracz Dec 29, 2023
cf52f64
Optimizes the memory and buffer use of the hub application.
balazsracz Dec 29, 2023
c664b91
gc-tcp-hub: applies SO_SNDBUF and SO_RCVBUF options to sockets.
balazsracz Dec 29, 2023
06c6bb4
client connection util: exposes the file descriptor when available.
balazsracz Dec 29, 2023
f8db2a0
Ensures that the ClientCOnnection.cxx is built and linked.
balazsracz Dec 29, 2023
c573f41
Sorts lines in sources.
balazsracz Dec 29, 2023
ea41047
Refactors the fd optimization code to FdUtils class.
balazsracz Dec 29, 2023
976af9e
Makes tcp_lowat also configurable.
balazsracz Dec 29, 2023
f384215
Fix compile error.
balazsracz Dec 29, 2023
7bbc545
Adds comment.
balazsracz Dec 29, 2023
19a39e3
Merge commit 'ea41047b1bc27c2cc29e4b5ba303b9bb10096009' into bracz-hu…
balazsracz Dec 29, 2023
d3e957f
Merge branch 'bracz-optimize-tcp-socket' into bracz-hub-test-app
balazsracz Dec 29, 2023
6ffb38e
Switch gridconnect hub to LimitedPool instead of FixedPool.
balazsracz Dec 29, 2023
b2eb101
Tune TCP options.
balazsracz Dec 29, 2023
993c2b0
hubtest: tune TCP options.
balazsracz Dec 29, 2023
f52ca25
Switch gridconnect hub to LimitedPool instead of FixedPool.
balazsracz Dec 29, 2023
3e6e3ac
Tune TCP options.
balazsracz Dec 29, 2023
c6bb145
Merge branch 'bracz-optimize-tcp-socket' into bracz-hub-test-app
balazsracz Dec 29, 2023
6e31c7e
Changes TCP tuning params: no snd/recv buf limitation, but notsent_lo…
balazsracz Jan 1, 2024
781184c
Merge branch 'master' into bracz-optimize-tcp-socket
balazsracz Jan 2, 2024
e6b99c6
Merge branch 'bracz-optimize-tcp-socket' into bracz-hub-test-app
balazsracz Jan 2, 2024
a10430c
Adds new features to the hub_test:
balazsracz Jan 26, 2024
5786c59
Removes output buffer delay.
balazsracz Jan 26, 2024
91b9680
Merge branch 'master' into bracz-hub-test-app
balazsracz Jan 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions applications/hub_test/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
SUBDIRS = targets
-include config.mk
include $(OPENMRNPATH)/etc/recurse.mk
36 changes: 36 additions & 0 deletions applications/hub_test/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
Hub throughput testing application {#hub_test_application}
==================================

[TOC]

# Goal

The purpose of Hub testing is to verify an OpenLCB link or bus for qualitative
and quantitative performance characteristics. These are as follows.

Qualitative:
- The link has to be lossless.
- There is only limited reordering allowed within the link.
- There has to be proper throttling for ingress of packets to the link.

Quantitative:
- What is the maximum throughut of packets that can be accepted on the link.
- What is the round-trip-time of the link.
- What is the jitter on the timing of the packet round-trips.

For hubs, a relevant question is also how do these metrics change as the number
of clients on the hub are increased.

## Testing methodology

The application contains a load generator, and a receiver. For a given test,
one generator and one or more receivers have to be attached to the same bus.

The generator supplies a given load to the bus. This load may be a fixes
traffic, or the maximum traffic that the bus is willing to accept.

The receiver watches for the traffic coming from the generator, verifies the
qualitative attributes, and measures the quantitative attributes. Statistics
about this are printed to the screen.


1 change: 1 addition & 0 deletions applications/hub_test/config.mk
2 changes: 2 additions & 0 deletions applications/hub_test/subdirs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SUBDIRS = \

4 changes: 4 additions & 0 deletions applications/hub_test/targets/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
SUBDIRS = \
linux.86 \

include $(OPENMRNPATH)/etc/recurse.mk
1 change: 1 addition & 0 deletions applications/hub_test/targets/linux.x86/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
hub_test
2 changes: 2 additions & 0 deletions applications/hub_test/targets/linux.x86/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-include ../../config.mk
include $(OPENMRNPATH)/etc/prog.mk
Loading