#! /bin/env bash LOG_FILE_NAME="call_history_bash.csv" if [[ ! -f "$LOG_FILE_NAME" ]]; then # Creation of column names if the file does not exits echo "student_id;active_students;endpoint;inputs;outputs;started;finished" >$LOG_FILE_NAME fi data_list_1() { responses=( "one hundred forty five" "twenty thousand nine hundred fifty" "one hundred forty five" "nine hundred eighty three" "five million" ) echo "${responses[$1]}" } data_list_2() { responses=( "Totally agree" "I like it" "No more" "I am not sure" "Never" ) echo "${responses[$1]}" } # endpoints: "text2int" "sentiment-analysis" # selected endpoint to test endpoint="sentiment-analysis" create_random_delay() { # creates a random delay for given arguments echo "scale=8; $RANDOM/32768*$1" | bc } simulate_student() { # Student simulator waits randomly between 0-10s after an interaction. # Based on 100 interactions per student for i in {1..100}; do random_value=$((RANDOM % 5)) text=$(data_list_2 $random_value) data='{"data": ["'$text'"]}' start_=$(date +"%F %T.%6N") url="https://tangibleai-mathtext.hf.space/run/$3" response=$(curl --silent --connect-timeout 30 --max-time 30 -X POST "$url" -H 'Content-Type: application/json' -d "$data") if [[ "$response" == *"Time-out"* ]]; then echo "$response" >>bad_response.txt response="504 Gateway Time-out" elif [[ -z "$response" ]]; then echo "No response" >>bad_response.txt response="504 Gateway Time-out" fi end_=$(date +"%F %T.%6N") printf "%s;%s;%s;%s;%s;%s;%s\n" "$1" "$2" "$3" "$data" "$response" "$start_" "$end_" >>$LOG_FILE_NAME sleep "$(create_random_delay 10)" done } echo "start: $(date)" active_students=250 # the number of students using the system at the same time i=1 while [[ "$i" -le "$active_students" ]]; do simulate_student "student$i" "$active_students" "$endpoint" & sleep "$(create_random_delay 1)" # adding a random delay between students i=$(("$i" + 1)) done wait echo "end: $(date)"