-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathrun_case_study
More file actions
executable file
·97 lines (70 loc) · 4.58 KB
/
Copy pathrun_case_study
File metadata and controls
executable file
·97 lines (70 loc) · 4.58 KB
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
#!/bin/bash
if [ $# -lt 2 ]; then
echo "usage: ./run_case_study <IPv4 Address> <data-directory>"
exit 1;
fi
synchronization_barrier () {
arr=("$@")
for pid in "${arr[@]}"; do
wait "$pid"
done
}
dest=$1
datadir=$2
latest_results=$2/test_results
scripts="./case-study-scripts"
asn=$("$scripts"/lookup_dnet.py "$dest" asn ./bgpdumps/ipasn20181203.dat)
bgp=$("$scripts"/lookup_dnet.py "$dest" bgp ./bgpdumps/ipasn20181203.dat)
s24=$("$scripts"/lookup_dnet.py "$dest" s24 ./bgpdumps/ipasn20181203.dat)
output_dir="./automated_case_studies/cs_${dest}"
if [ ! -d "$output_dir" ]; then
mkdir -p "$output_dir"
fi
# Step 1) parse 'calc_algo_stats' results for this destination
#latest_results="./results/results_3_9_2019"
grep "$dest" "$latest_results"/asn_res.csv &> "$output_dir"/calc_algo_stats.out & pids+=("$!")
grep "$dest" "$latest_results"/bgp_res.csv &>> "$output_dir"/calc_algo_stats.out & pids+=("$!")
grep "$dest" "$latest_results"/bgp_res.csv &>> "$output_dir"/calc_algo_stats.out & pids+=("$!")
echo "-I- done parsing calc_algo_stats..."
# Step 2) run the 3 ranking algorithms
#dests_by_dnet_dir="$datadir/rankings/destination_cover"
dest_by_dnet_dir="$datadir"/train_results/destination_cover
#training_dir="$datadir/train/vp_measurements_annotated"
training_dir="$datadir"/train_annotated
"$scripts"/rank_vps_destination_cover_single_dnet.py "$asn" "$dests_by_dnet_dir"/asn/dests_by_dnet.pickle "$training_dir"/asn &> "$output_dir"/dest_cover_asn.out & pids+=("$!")
"$scripts"/rank_vps_destination_cover_single_dnet.py "$bgp" "$dests_by_dnet_dir"/bgp/dests_by_dnet.pickle "$training_dir"/bgp &> "$output_dir"/dest_cover_bgp.out & pids+=("$!")
"$scripts"/rank_vps_destination_cover_single_dnet.py "$s24" "$dests_by_dnet_dir"/s24/dests_by_dnet.pickle "$training_dir"/s24 &> "$output_dir"/dest_cover_s24.out & pids+=("$!")
#dists_by_ingr_by_dnet_dir="$datadir/rankings/ingress_cover"
dists_by_ingr_by_dnet_dir="$datadir"/train_results/ingress_cover
"$scripts"/aggregate_ingresses_and_rank_single_dnet.py "$asn" "$dists_by_ingr_by_dnet_dir"/asn/vp_dists_by_ingr_by_dnet.json "$output_dir" asn &> "$output_dir"/ingr_cover_asn.out & pids+=("$!")
"$scripts"/aggregate_ingresses_and_rank_single_dnet.py "$bgp" "$dists_by_ingr_by_dnet_dir"/bgp/vp_dists_by_ingr_by_dnet.json "$output_dir" bgp &> "$output_dir"/ingr_cover_bgp.out & pids+=("$!")
"$scripts"/aggregate_ingresses_and_rank_single_dnet.py "$s24" "$dists_by_ingr_by_dnet_dir"/s24/vp_dists_by_ingr_by_dnet.json "$output_dir" s24 &> "$output_dir"/ingr_cover_s24.out & pids+=("$!")
#cp "$datadir"/rankings/set_cover_rankings.csv "$output_dir"
cp "$datadir"/train_results/set_cover_rankings.txt "$output_dir"
echo "-I- done deploying ranking algorithms"
# Step 3) gather test & training measurements to the target destination
testing_dir="$datadir"/test_annotated
grep "$dest" "$testing_dir"/asn/* &> "$output_dir"/test_measurements-asn & pids+=("$!")
grep "$asn" "$training_dir"/asn/* &> "$output_dir"/train_measurements-asn & pids+=("$!")
grep "$dest" "$testing_dir"/prefix/* &> "$output_dir"/test_measurements-bgp & pids+=("$!")
grep "$bgp" "$training_dir"/prefix/* &> "$output_dir"/train_measurements-bgp & pids+=("$!")
grep "$dest" "$testing_dir"/s24/* &> "$output_dir"/test_measurements-s24 & pids+=("$!")
grep "$s24" "$training_dir"/s24/* &> "$output_dir"/train_measurements-s24 & pids+=("$!")
synchronization_barrier "${pids[@]}"
echo "-I- done gathering test & training measurements"
# Step 4) identify vps that were < 9 hops from the dest
"$scripts"/vps_in_dest_range.py "$dest" "$output_dir"/test_measurements-asn | sort -n &> "$output_dir"/best_vps-asn & pids+=("$!")
"$scripts"/vps_in_dest_range.py "$dest" "$output_dir"/test_measurements-bgp | sort -n &> "$output_dir"/best_vps-bgp & pids+=("$!")
"$scripts"/vps_in_dest_range.py "$dest" "$output_dir"/test_measurements-s24 | sort -n &> "$output_dir"/best_vps-s24 & pids+=("$!")
synchronization_barrier "${pids[@]}"
echo "-I- done identifying optimal VPs"
# Step 5) see if best vps traversed same logical ingresses from rankings in both training (to dest) and testing (to dnet) data
"$scripts"/grade_ingress_ranking.py "$dest" asn "$asn" "$output_dir" &> "$output_dir"/ingress_grades-asn & pids+=("$!")
"$scripts"/grade_ingress_ranking.py "$dest" bgp "$bgp" "$output_dir" &> "$output_dir"/ingress_grades-bgp & pids+=("$!")
"$scripts"/grade_ingress_ranking.py "$dest" s24 "$s24" "$output_dir" &> "$output_dir"/ingress_grades-s24 & pids+=("$!")
echo "-I- done deploying ranking graders"
echo "waiting for jobs to complete..."
for pid in "${pids[@]}"; do
wait $pid
done
echo "-I- done running case study." && exit 0