-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrun_experiments_percy.sh
executable file
·149 lines (117 loc) · 4.37 KB
/
run_experiments_percy.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#!/bin/bash
if [ $# -ne 7 ]; then
echo "Incorrect number of arguments. Expected : "
echo "./run_experiments <no_of_relays/files start_value> <no_of_relays/files stop_value> <increment by(addition)> <block_size> <no_of_requests> <bulk_batch_size> <Full path to XPIR/ZT/Percy++ repos including trailing />"
fi
no_of_relays_start=$1
no_of_relays_stop=$2
increment=$3
block_size=$4
no_of_requests=$5
bulk_batch_size=$6
path_to_repos=$7
pipe=/tmp/testpipe
START_PATH=$PWD"/"
RESULTS_DIRECTORY="Results"
RESULTS_PERCY_DIRECTORY="Results/Percy"
RESULTS_ITPIR_PATH=$START_PATH"Results/Percy/"
SUBSCRIPT_FOLDER=$START_PATH"subscripts/"
CLIENTLOG_FILENAME="percyclientlog"
DATABASE_FILENAME="database"
SERVER1LOG_FILENAME="percyserver1log"
SERVER2LOG_FILENAME="percyserver2log"
SERVER3LOG_FILENAME="percyserver3log"
if [[ ! -p $pipe ]]; then
mkfifo $pipe
fi
PERCY_DIRECTORY="percy++-1.0.0/"
PERCY_LOCATION=$path_to_repos$PERCY_DIRECTORY
PERCY_TIME_EXTRACT_TEMPFILE_LOCATION="./"
PERCY_TIME_EXTRACT_TEMPFILE="percy_time"
#PORT_RESET_COMMAND="fuser -k 1234/tcp"
#TODO : sudo -k fuser 1234/tcp
# kill -9 <pid_returned_from_previous_command>
# OR Alternatively give it a random port from the script that calls run_experiment_xpir.sh
if [ ! -d $RESULTS_DIRECTORY ]; then
mkdir $RESULTS_DIRECTORY
fi
if [ ! -d $RESULTS_PERCY_DIRECTORY ]; then
mkdir $RESULTS_PERCY_DIRECTORY
fi
cd $path_to_repos
if [ -d $PERCY_DIRECTORY ]; then
echo "Folder Found for PERCY!"
else
echo "Error : PERCY Folder not found"
exit
fi
#PY_PARSE_CLIENTLOG="python ./extract_time_xpir_client.py "$XPIR_CLIENT_LOCATION" "$CLIENTLOG_FILENAME" "$XPIR_TIME_EXTRACT_TEMPFILE
#PY_PARSE_SERVERLOG="python ./extract_time_xpir_server.py "$XPIR_SERVER_LOCATION" "$SERVERLOG_FILENAME" "$XPIR_TIME_EXTRACT_TEMPFILE_LOCATION" "$XPIR_TIME_EXTRACT_TEMPFILE" "$RESULTS_XPIR_PATH" "$CSV_FILE_NAME" "$bulk_batch_size
cd $PERCY_LOCATION
no_of_relays=$no_of_relays_start
while [ "$no_of_relays" -le "$no_of_relays_stop" ]
do
r=$no_of_relays
b=$block_size
#Need a string with a list of random numbers which will be provided as a part of the client command.
#if [ "$no_of_relays" -gt 48000 ]
#then
# r=$((r/2))
# b=$((b*2))
#fi
DATABASE_SIZE_IN_BYTES=$((r*b))
CREATE_DB_COMMAND="dd if=/dev/zero of="$DATABASE_FILENAME" bs="$DATABASE_SIZE_IN_BYTES" count=1"
DELETE_DB_COMMAND="rm -f $DATABASE_FILENAME"
DELETE_CLIENTLOG="rm -f $CLIENTLOG_FILENAME"
PERCY_SERVER1_COMMAND="./pirserver "$DATABASE_FILENAME" 1 "$r" "$b" -w 1 -m c -p 30001 -H -l "$SERVER1LOG_FILENAME
PERCY_SERVER2_COMMAND="./pirserver "$DATABASE_FILENAME" 2 "$r" "$b" -w 1 -m c -p 30002 -H -l "$SERVER2LOG_FILENAME
PERCY_SERVER3_COMMAND="./pirserver "$DATABASE_FILENAME" 3 "$r" "$b" -w 1 -m c -p 30003 -H -l "$SERVER3LOG_FILENAME
$CREATE_DB_COMMAND
$PERCY_SERVER1_COMMAND 2>&1 &
kill_id_server1=$!
sleep 1s
$PERCY_SERVER2_COMMAND 2>&1 &
kill_id_server2=$!
sleep 1s
$PERCY_SERVER3_COMMAND 2>&1 &
kill_id_server3=$!
sleep 1s
counter=0
STRING_OF_RANDOM_INDEXES=""
while [ $counter != $no_of_requests ]
do
#NOTE: $RANDOM returns a random number between 0 and 32767, so this is poor for r > 32767
temp=$((($RANDOM%r)))
#STRING_OF_RANDOM_INDEXES=$STRING_OF_RANDOM_INDEXES$temp
#if [ $counter != $(($no_of_requests-1)) ]
#then
# STRING_OF_RANDOM_INDEXES=$STRING_OF_RANDOM_INDEXES" "
#fi
#$PERCY_CLIENT_COMMAND
./pirclient $r $b "1:localhost:30001 2:localhost:30002 3:localhost:30003" 2 "$temp" -w 1 -m c -H -l $CLIENTLOG_FILENAME
counter=$((counter+1))
done
#echo "STRING_OF_RANDOM_INDEXES = "$STRING_OF_RANDOM_INDEXES
#STRING OF RANDOM INDEXES needs to be $bulk_batch_size long
#PERCY_CLIENT_COMMAND='./pirclient '$r' '$b' "1:localhost:30001 2:localhost:30002 3:localhost:30003" 2 "'$STRING_OF_RANDOM_INDEXES'" -w 1 -m c -H -l '$CLIENTLOG_FILENAME
CSV_FILE_NAME="PERCY_"$no_of_relays"_"$block_size
sleep 2s
sleep 1s
KILL_COMMAND="kill -9 $kill_id_server1"
$KILL_COMMAND
KILL_COMMAND="kill -9 $kill_id_server2"
$KILL_COMMAND
KILL_COMMAND="kill -9 $kill_id_server3"
$KILL_COMMAND
$DELETE_DB_COMMAND
sleep 1s
#Run Log Parser
cd $SUBSCRIPT_FOLDER
#PARSER_COMMAND
python extract_time_percy.py $PERCY_LOCATION$CLIENTLOG_FILENAME $RESULTS_ITPIR_PATH$CSV_FILE_NAME
#cp $CLIENTLOG_FILENAME $RESULTS_ITPIR_PATH$CSV_FILE_NAME
cd $PERCY_LOCATION
#$DELETE_CLIENTLOG
no_of_relays=$((no_of_relays+increment))
#PARSE LOG FILE TO STORE THE RESULT FILE!
done