Requisites
This test uses OSRF testing tools memory_tools package. OSRF testing tools should be installed before building this test.
Usage
Note: This test needs the xml file stored in the sources directory. You need to copy this file to the folder where you will execute the test executable. The CMakeList.txt file also copies this file to the folder used to build the test.
To launch this test open two different consoles:
First launch the entity being profiled (publisher or subscriber) with
LD_PRELOAD=/usr/local/lib/libmemory_tools_interpose.so:/usr/local/lib/libmemory_tools.so ./AllocationTest <entity> <profile> true
Then launch its counterpart with
./AllocationTest <entity> <profile>
Arguments
./AllocationTest <entity> [profile] [wait_unmatch]
First argument is mandatory and should have the value publisher or subscriber indicating the kind of entity to
profile.
Second argument is optional, defaults to tl_be and indicates the kind of qos to load from the XML file.
tl_be |
transient-local best-effort |
tl_re |
transient-local reliable |
vo_be |
volatile best-effort |
vo_re |
volatile reliable |
Third argument is optional, defaults to false, and indicates whether the test should wait for unmatching or not.
Result
This test generates a CSV file containing the number of allocations and deallocations in each phase. The name of the CSV file follows next rule:
alloc_test_<entity>_<profile>.csv
Generating plot
This test comes with a python script which shows in a plot the allocations registered in a CSV file.
python3 allocation_plot.py <csv file> [0,1,2,3]
The last argument is the phases you want to see in the plot.