From 19464ba369f15023284d0ac8a70786662e6f8ee2 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Fri, 15 Mar 2024 10:53:02 -0700 Subject: [PATCH] (ci/cd) interpret load tests --- .github/workflows/interpret_load_test.py | 51 ++++++++++++++++++++++++ .github/workflows/load_test.yml | 9 ++++- 2 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/interpret_load_test.py diff --git a/.github/workflows/interpret_load_test.py b/.github/workflows/interpret_load_test.py new file mode 100644 index 0000000000..d629d127f9 --- /dev/null +++ b/.github/workflows/interpret_load_test.py @@ -0,0 +1,51 @@ +import csv + + +def csv_to_markdown(csv_file): + markdown_table = "" + + # Read CSV file + with open(csv_file, newline="") as csvfile: + csvreader = csv.reader(csvfile) + header = next(csvreader) + + # Create header row + markdown_table += "|" + " | ".join(header) + "|\n" + markdown_table += "|" + " | ".join(["---"] * len(header)) + "|\n" + + # Add data rows + for row in csvreader: + markdown_table += "|" + " | ".join(row) + "|\n" + + return markdown_table + + +def interpret_results(csv_file): + below_300_ms = True + below_300_s = True + requests_per_sec = [] + interpreted_results_str = "" + with open(csv_file, newline="") as csvfile: + csvreader = csv.DictReader(csvfile) + for row in csvreader: + median_response_time = float( + row["Median Response Time"].strip().rstrip("ms") + ) + average_response_time = float( + row["Average Response Time"].strip().rstrip("s") + ) + result_str = f"endpoint: {row['Name']}, median_response_time: {median_response_time}, average_response_time: {average_response_time}, requests_per_sec: {row['Requests/s']}" + if median_response_time < 300 and average_response_time < 300: + result_str += " Passed ✅\n" + else: + result_str += " Failed ❌\n" + print(result_str) + interpreted_results_str += result_str + print(interpreted_results_str) + + +if __name__ == "__main__": + csv_file = "load_test_stats.csv" # Change this to the path of your CSV file + interpret_results(csv_file) + markdown_table = csv_to_markdown(csv_file) + print(markdown_table) diff --git a/.github/workflows/load_test.yml b/.github/workflows/load_test.yml index 4f978b6489..8242deb401 100644 --- a/.github/workflows/load_test.yml +++ b/.github/workflows/load_test.yml @@ -14,9 +14,14 @@ jobs: with: LOCUSTFILE: ".github/workflows/locustfile.py" URL: "https://litellm-api.up.railway.app/" - USERS: "100" + USERS: "1" RATE: "10" - RUNTIME: "300s" + RUNTIME: "3s" + - name: Process Load Test Stats + run: | + # Assuming you want to use a Python script named process_stats.py + python process_stats.py load_test_stats.csv + working-directory: ${{ github.workspace }} - name: Upload CSV as Asset to Latest Release uses: xresloader/upload-to-github-release@v1 env: