From 27def344fed355b63305f90bfcb28b3e95c7cb5e Mon Sep 17 00:00:00 2001
From: Nikolay Stanchev <ns17@it-innovation.soton.ac.uk>
Date: Fri, 1 Mar 2019 13:14:21 +0000
Subject: [PATCH] Fixes bug with empty array in the graph pipeline script

---
 scripts/clmc-service/graph-pipeline.sh | 43 ++++++++++++++------------
 1 file changed, 24 insertions(+), 19 deletions(-)

diff --git a/scripts/clmc-service/graph-pipeline.sh b/scripts/clmc-service/graph-pipeline.sh
index 2b8700c..c59987b 100644
--- a/scripts/clmc-service/graph-pipeline.sh
+++ b/scripts/clmc-service/graph-pipeline.sh
@@ -61,34 +61,39 @@ do
 
     echo "Received request uuid ${graph_uuid}"
     echo "Timestamp to use for measurement ${timestamp}"
-    echo "Received endpoints: ${endpoints[@]}"
 
-    for endpoint in ${endpoints[@]}; do
-        for ue in ${ues[@]}; do
+    # check the count of the received endpoints, otherwise an empty array will be considered as an unset variable
+    if [[ ${#endpoints[@]} -eq 0 ]]; then
+        echo "The list of endpoints returned by the build request is empty"
+    else
+        echo "Received endpoints: ${endpoints[@]}"
+        for endpoint in ${endpoints[@]}; do
+            for ue in ${ues[@]}; do
 
-            echo "Querying for round-trip time..."
-            response=$(curl -s -X GET "http://${CLMC_IP}/clmc-service/graph/temporal/${graph_uuid}/round-trip-time?startpoint=${ue}&endpoint=${endpoint}")
+                echo "Querying for round-trip time..."
+                response=$(curl -s -X GET "http://${CLMC_IP}/clmc-service/graph/temporal/${graph_uuid}/round-trip-time?startpoint=${ue}&endpoint=${endpoint}")
 
-            global_tags=$(echo ${response} | jq -r '.global_tags | to_entries | map("\(.key)=\(.value|tostring)") | join(",")')
-            echo "Global tags: ${global_tags}"
+                global_tags=$(echo ${response} | jq -r '.global_tags | to_entries | map("\(.key)=\(.value|tostring)") | join(",")')
+                echo "Global tags: ${global_tags}"
 
-            local_tags=$(echo ${response} | jq -r '.local_tags | to_entries | map("\(.key)=\(.value|tostring)") | join (",")')
-            echo "Local tags: ${local_tags}"
+                local_tags=$(echo ${response} | jq -r '.local_tags | to_entries | map("\(.key)=\(.value|tostring)") | join (",")')
+                echo "Local tags: ${local_tags}"
 
-            fields=$(echo ${response} | jq -r '. | "\(.round_trip_time) \(.response_time) \(.total_forward_latency)"')
-            read rtt service_delay network_delay <<< ${fields}
+                fields=$(echo ${response} | jq -r '. | "\(.round_trip_time) \(.response_time) \(.total_forward_latency)"')
+                read rtt service_delay network_delay <<< ${fields}
 
-            echo "Round-trip-time: ${rtt}"
-            echo "Service delay: ${service_delay}"
-            echo "Network latency ${network_delay}"
+                echo "Round-trip-time: ${rtt}"
+                echo "Service delay: ${service_delay}"
+                echo "Network latency ${network_delay}"
 
-            measurement_line="${results_measurement},${global_tags},${local_tags} round_trip_time=${rtt},service_delay=${service_delay},network_delay=${network_delay} ${timestamp}"
-            echo "Measurement line: ${measurement_line}"
-            response=$(curl -si -X POST "http://${CLMC_IP}/influxdb/write?db=${db_name}" --data-binary "${measurement_line}")
-            echo "InfluxDB response: ${response}"
+                measurement_line="${results_measurement},${global_tags},${local_tags} round_trip_time=${rtt},service_delay=${service_delay},network_delay=${network_delay} ${timestamp}"
+                echo "Measurement line: ${measurement_line}"
+                response=$(curl -si -X POST "http://${CLMC_IP}/influxdb/write?db=${db_name}" --data-binary "${measurement_line}")
+                echo "InfluxDB response: ${response}"
 
+            done
         done
-    done
+    fi
 
     echo "Deleting temporal graph..."
     response=$(curl -s -X DELETE "http://${CLMC_IP}/clmc-service/graph/temporal/${graph_uuid}")
-- 
GitLab