Analyzer

Overview

The Analysis component produces some metrics based on the results and the .parquet files produced by previous components. This component is produced in Python and provides the functionality of a library called either from a command-line tool or by creating a script to call the library functions.

Run Analyzer

The command line tool in tests/infra/piccolo/analyze_packages.py

provide a default analysis that returns some throughput and latency metrics. For more targeted analysis you can create your own scripts, such as tests/infra/piccolo/throughput_analysis.py.

Command-Line Tool

For the default analysis of the command line tool you need to run the following command from the tests/infra/piccolo/

directory:

$ python3 analyze_packages.py

You can specify the .parquet file paths you want to include in your analysis using the following arguments:

-h, --help show this help message and exit
-if INPUT_PATH, --input_path INPUT_PATH Path to the parquet file that contains generated requests (default: ../generator/requests.parquet)
-sf SEND_FILE_PATH, --send_file_path SEND_FILE_PATH Path to the parquet file that contains the submitted requests (default: ../submitter/cpp_send.parquet)
-rf RESPONSE_FILE_PATH, --response_file_path RESPONSE_FILE_PATH Path to the parquet file that contains the responses from the submitted requests (default: ../submitter/cpp_respond.parquet)

Running this file will produce some tables on the terminals with the metrics such as analysis-table and some images with graphs exported to the same directory.

Total Requests

Total Time (s)

Pass (%)

Fail (%)

Throughput (req/s)

92000

49.466

100.0

0.0

1859.9

Scripting Analysis

To use the library to create your own analysis, you need first to read the parquet files as dataframes using get_df_from_parquet_file() providing the path to the file as an argument.

To use the analysis functions for your dataframes, you first need to create a new Analyze object. It is suggested to first call the iter_for_success_and_latency() function which based on the dataframes given as arguments, will populate the latency lists and the percentage of the successful requests for your dataframes. Based on these results you can calculate the total time of the experiment with total_time_in_sec() to get throughput, or you could customize your own metrics table with customize_table() providing the lists for the field names and the values. For more information about the provided functions, you can see the library code on the tests/infra/piccolo/analyzer.py.