From c1e793f2e78763e994201fbfb899cff2e516feaf Mon Sep 17 00:00:00 2001
From: Sergey Yakubov <sergey.yakubov@desy.de>
Date: Tue, 24 Apr 2018 15:19:00 +0200
Subject: [PATCH] added manual script for fullchain, grafana dashboard file

---
 config/grafana/ASAP__O.json                   | 485 ++++++++++++++++++
 .../performance_full_chain_simple/broker.json |   6 +
 .../receiver.json                             |   9 +
 .../performance_full_chain_simple/test.sh     |  98 ++++
 .../receiver.json                             |   7 +-
 .../settings_tmp.json                         |   6 -
 .../performance_producer_receiver/test.sh     |   4 +-
 7 files changed, 606 insertions(+), 9 deletions(-)
 create mode 100644 config/grafana/ASAP__O.json
 create mode 100644 tests/manual/performance_full_chain_simple/broker.json
 create mode 100644 tests/manual/performance_full_chain_simple/receiver.json
 create mode 100755 tests/manual/performance_full_chain_simple/test.sh
 delete mode 100644 tests/manual/performance_producer_receiver/settings_tmp.json

diff --git a/config/grafana/ASAP__O.json b/config/grafana/ASAP__O.json
new file mode 100644
index 000000000..c8fcc2121
--- /dev/null
+++ b/config/grafana/ASAP__O.json
@@ -0,0 +1,485 @@
+{
+  "__inputs": [
+    {
+      "name": "DS_TEST",
+      "label": "test",
+      "description": "",
+      "type": "datasource",
+      "pluginId": "influxdb",
+      "pluginName": "InfluxDB"
+    }
+  ],
+  "__requires": [
+    {
+      "type": "grafana",
+      "id": "grafana",
+      "name": "Grafana",
+      "version": "5.0.0-beta5"
+    },
+    {
+      "type": "panel",
+      "id": "graph",
+      "name": "Graph",
+      "version": "5.0.0"
+    },
+    {
+      "type": "datasource",
+      "id": "influxdb",
+      "name": "InfluxDB",
+      "version": "5.0.0"
+    }
+  ],
+  "annotations": {
+    "list": [
+      {
+        "builtIn": 1,
+        "datasource": "-- Grafana --",
+        "enable": true,
+        "hide": true,
+        "iconColor": "rgba(0, 211, 255, 1)",
+        "name": "Annotations & Alerts",
+        "type": "dashboard"
+      }
+    ]
+  },
+  "editable": true,
+  "gnetId": null,
+  "graphTooltip": 0,
+  "id": null,
+  "links": [],
+  "panels": [
+    {
+      "aliasColors": {},
+      "bars": false,
+      "dashLength": 10,
+      "dashes": false,
+      "datasource": "${DS_TEST}",
+      "fill": 0,
+      "gridPos": {
+        "h": 9,
+        "w": 12,
+        "x": 0,
+        "y": 0
+      },
+      "id": 6,
+      "legend": {
+        "avg": false,
+        "current": false,
+        "max": false,
+        "min": false,
+        "show": true,
+        "total": false,
+        "values": false
+      },
+      "lines": true,
+      "linewidth": 1,
+      "links": [],
+      "nullPointMode": "null",
+      "percentage": false,
+      "pointradius": 5,
+      "points": false,
+      "renderer": "flot",
+      "seriesOverrides": [],
+      "spaceLength": 10,
+      "stack": false,
+      "steppedLine": false,
+      "targets": [
+        {
+          "alias": "Database",
+          "groupBy": [],
+          "measurement": "statistics",
+          "orderByTime": "ASC",
+          "policy": "default",
+          "query": "SELECT \"db_share\" FROM \"statistics\" WHERE $timeFilter",
+          "rawQuery": false,
+          "refId": "A",
+          "resultFormat": "time_series",
+          "select": [
+            [
+              {
+                "params": [
+                  "db_share"
+                ],
+                "type": "field"
+              }
+            ]
+          ],
+          "tags": []
+        },
+        {
+          "alias": "Disk",
+          "groupBy": [],
+          "measurement": "statistics",
+          "orderByTime": "ASC",
+          "policy": "default",
+          "refId": "B",
+          "resultFormat": "time_series",
+          "select": [
+            [
+              {
+                "params": [
+                  "disk_share"
+                ],
+                "type": "field"
+              }
+            ]
+          ],
+          "tags": []
+        },
+        {
+          "alias": "Network",
+          "groupBy": [],
+          "measurement": "statistics",
+          "orderByTime": "ASC",
+          "policy": "default",
+          "refId": "C",
+          "resultFormat": "time_series",
+          "select": [
+            [
+              {
+                "params": [
+                  "network_share"
+                ],
+                "type": "field"
+              }
+            ]
+          ],
+          "tags": []
+        }
+      ],
+      "thresholds": [],
+      "timeFrom": null,
+      "timeShift": null,
+      "title": "Shares",
+      "tooltip": {
+        "shared": true,
+        "sort": 0,
+        "value_type": "individual"
+      },
+      "type": "graph",
+      "xaxis": {
+        "buckets": null,
+        "mode": "time",
+        "name": null,
+        "show": true,
+        "values": []
+      },
+      "yaxes": [
+        {
+          "format": "short",
+          "label": null,
+          "logBase": 1,
+          "max": null,
+          "min": null,
+          "show": true
+        },
+        {
+          "format": "short",
+          "label": null,
+          "logBase": 1,
+          "max": null,
+          "min": null,
+          "show": true
+        }
+      ]
+    },
+    {
+      "aliasColors": {},
+      "bars": false,
+      "dashLength": 10,
+      "dashes": false,
+      "datasource": "${DS_TEST}",
+      "fill": 0,
+      "gridPos": {
+        "h": 8,
+        "w": 11,
+        "x": 12,
+        "y": 0
+      },
+      "id": 2,
+      "legend": {
+        "avg": false,
+        "current": false,
+        "max": false,
+        "min": false,
+        "show": true,
+        "total": false,
+        "values": false
+      },
+      "lines": true,
+      "linewidth": 1,
+      "links": [],
+      "nullPointMode": "null",
+      "percentage": true,
+      "pointradius": 5,
+      "points": false,
+      "renderer": "flot",
+      "seriesOverrides": [],
+      "spaceLength": 10,
+      "stack": false,
+      "steppedLine": false,
+      "targets": [
+        {
+          "alias": "Total",
+          "groupBy": [],
+          "measurement": "statistics",
+          "orderByTime": "ASC",
+          "policy": "default",
+          "refId": "A",
+          "resultFormat": "time_series",
+          "select": [
+            [
+              {
+                "params": [
+                  "data_volume"
+                ],
+                "type": "field"
+              },
+              {
+                "params": [
+                  " / elapsed_ms/1024/1024/1024*1000*8"
+                ],
+                "type": "math"
+              }
+            ]
+          ],
+          "tags": []
+        },
+        {
+          "alias": "Database",
+          "groupBy": [],
+          "measurement": "statistics",
+          "orderByTime": "ASC",
+          "policy": "default",
+          "refId": "B",
+          "resultFormat": "time_series",
+          "select": [
+            [
+              {
+                "params": [
+                  "db_share"
+                ],
+                "type": "field"
+              },
+              {
+                "params": [
+                  " *data_volume/ elapsed_ms/1024/1024/1024*1000*8"
+                ],
+                "type": "math"
+              }
+            ]
+          ],
+          "tags": []
+        }
+      ],
+      "thresholds": [],
+      "timeFrom": null,
+      "timeShift": null,
+      "title": "Bandwidth",
+      "tooltip": {
+        "shared": true,
+        "sort": 0,
+        "value_type": "individual"
+      },
+      "type": "graph",
+      "xaxis": {
+        "buckets": null,
+        "mode": "time",
+        "name": null,
+        "show": true,
+        "values": []
+      },
+      "yaxes": [
+        {
+          "format": "short",
+          "label": null,
+          "logBase": 1,
+          "max": null,
+          "min": null,
+          "show": true
+        },
+        {
+          "format": "short",
+          "label": null,
+          "logBase": 1,
+          "max": null,
+          "min": null,
+          "show": true
+        }
+      ]
+    },
+    {
+      "aliasColors": {},
+      "bars": false,
+      "dashLength": 10,
+      "dashes": false,
+      "datasource": "${DS_TEST}",
+      "fill": 0,
+      "gridPos": {
+        "h": 8,
+        "w": 11,
+        "x": 12,
+        "y": 8
+      },
+      "id": 4,
+      "legend": {
+        "avg": false,
+        "current": false,
+        "max": false,
+        "min": false,
+        "show": true,
+        "total": false,
+        "values": false
+      },
+      "lines": true,
+      "linewidth": 1,
+      "links": [],
+      "nullPointMode": "null",
+      "percentage": false,
+      "pointradius": 5,
+      "points": false,
+      "renderer": "flot",
+      "seriesOverrides": [],
+      "spaceLength": 10,
+      "stack": true,
+      "steppedLine": false,
+      "targets": [
+        {
+          "alias": "Receiver",
+          "groupBy": [
+            {
+              "params": [
+                "$__interval"
+              ],
+              "type": "time"
+            },
+            {
+              "params": [
+                "null"
+              ],
+              "type": "fill"
+            }
+          ],
+          "measurement": "RequestsRate",
+          "orderByTime": "ASC",
+          "policy": "default",
+          "query": "SELECT \"n_requests\" / elapsed_ms*1000 FROM \"statistics\" WHERE $timeFilter",
+          "rawQuery": true,
+          "refId": "A",
+          "resultFormat": "time_series",
+          "select": [
+            [
+              {
+                "params": [
+                  "n_requests"
+                ],
+                "type": "field"
+              },
+              {
+                "params": [],
+                "type": "mean"
+              }
+            ]
+          ],
+          "tags": []
+        },
+        {
+          "alias": "Broker",
+          "groupBy": [],
+          "measurement": "RequestsRate",
+          "orderByTime": "ASC",
+          "policy": "default",
+          "refId": "B",
+          "resultFormat": "time_series",
+          "select": [
+            [
+              {
+                "params": [
+                  "rate"
+                ],
+                "type": "field"
+              }
+            ]
+          ],
+          "tags": []
+        }
+      ],
+      "thresholds": [],
+      "timeFrom": null,
+      "timeShift": null,
+      "title": "Number of Requests",
+      "tooltip": {
+        "shared": true,
+        "sort": 0,
+        "value_type": "individual"
+      },
+      "transparent": false,
+      "type": "graph",
+      "xaxis": {
+        "buckets": null,
+        "mode": "time",
+        "name": null,
+        "show": true,
+        "values": []
+      },
+      "yaxes": [
+        {
+          "format": "short",
+          "label": null,
+          "logBase": 1,
+          "max": null,
+          "min": null,
+          "show": true
+        },
+        {
+          "format": "short",
+          "label": null,
+          "logBase": 1,
+          "max": null,
+          "min": null,
+          "show": true
+        }
+      ]
+    }
+  ],
+  "refresh": false,
+  "schemaVersion": 16,
+  "style": "dark",
+  "tags": [],
+  "templating": {
+    "list": []
+  },
+  "time": {
+    "from": "now/d",
+    "to": "now/d"
+  },
+  "timepicker": {
+    "refresh_intervals": [
+      "5s",
+      "10s",
+      "30s",
+      "1m",
+      "5m",
+      "15m",
+      "30m",
+      "1h",
+      "2h",
+      "1d"
+    ],
+    "time_options": [
+      "5m",
+      "15m",
+      "1h",
+      "6h",
+      "12h",
+      "24h",
+      "2d",
+      "7d",
+      "30d"
+    ]
+  },
+  "timezone": "",
+  "title": "ASAP::O",
+  "uid": "3JvTwliiz",
+  "version": 3
+}
\ No newline at end of file
diff --git a/tests/manual/performance_full_chain_simple/broker.json b/tests/manual/performance_full_chain_simple/broker.json
new file mode 100644
index 000000000..c45d16f2f
--- /dev/null
+++ b/tests/manual/performance_full_chain_simple/broker.json
@@ -0,0 +1,6 @@
+{
+  "BrokerDbAddress":"localhost:27017",
+  "MonitorDbAddress": "localhost:8086",
+  "MonitorDbName": "db_test",
+  "port":5005
+}
\ No newline at end of file
diff --git a/tests/manual/performance_full_chain_simple/receiver.json b/tests/manual/performance_full_chain_simple/receiver.json
new file mode 100644
index 000000000..5939e7d82
--- /dev/null
+++ b/tests/manual/performance_full_chain_simple/receiver.json
@@ -0,0 +1,9 @@
+{
+  "MonitorDbAddress":"localhost:8086",
+  "MonitorDbName": "db_test",
+  "BrokerDbAddress":"localhost:27017",
+  "BrokerDbName": "test_run",
+  "ListenPort":4200,
+  "WriteToDisk":true,
+  "WriteToDb":true
+}
\ No newline at end of file
diff --git a/tests/manual/performance_full_chain_simple/test.sh b/tests/manual/performance_full_chain_simple/test.sh
new file mode 100755
index 000000000..77c63a85c
--- /dev/null
+++ b/tests/manual/performance_full_chain_simple/test.sh
@@ -0,0 +1,98 @@
+#!/usr/bin/env bash
+
+set -e
+
+trap Cleanup EXIT
+
+#clean-up
+Cleanup() {
+set +e
+ssh ${receiver_node} rm -f ${receiver_dir}/files/*
+ssh ${receiver_node} killall receiver
+ssh ${broker_node} killall hidra2-broker
+ssh ${broker_node} docker rm -f -v mongo
+}
+
+#monitoring_setup
+monitor_node=zitpcx27016
+monitor_port=8086
+
+
+# starts receiver on $receiver_node
+# runs producer with various file sizes from $producer_node and measures performance
+
+file_size=10000
+file_num=$((10000000 / $file_size))
+echo filesize: ${file_size}K, filenum: $file_num
+
+# receiver_setup
+receiver_node=max-wgs
+receiver_ip=`resolveip -s ${receiver_node}`
+receiver_port=4201
+receiver_dir=/gpfs/petra3/scratch/yakubov/receiver_tests
+ssh ${receiver_node} mkdir -p ${receiver_dir}
+ssh ${receiver_node} mkdir -p ${receiver_dir}/files
+scp ../../../cmake-build-release/receiver/receiver ${receiver_node}:${receiver_dir}
+cat receiver.json |
+  jq "to_entries |
+       map(if .key == \"MonitorDbAddress\"
+          then . + {value:\"${monitor_node}:${monitor_port}\"}
+          elif .key == \"ListenPort\"
+          then . + {value:${receiver_port}}
+          else .
+          end
+         ) |
+      from_entries" > settings_tmp.json
+scp settings_tmp.json ${receiver_node}:${receiver_dir}/settings.json
+
+#producer_setup
+producer_node=max-display001
+#producer_node=max-wgs
+producer_dir=~/fullchain_tests
+ssh ${producer_node} mkdir -p ${producer_dir}
+scp ../../../cmake-build-release/examples/producer/dummy-data-producer/dummy-data-producer ${producer_node}:${producer_dir}
+
+#broker_setup
+broker_node=max-wgs
+broker_dir=~/fullchain_tests
+cat broker.json |
+  jq "to_entries |
+       map(if .key == \"MonitorDbAddress\"
+          then . + {value:\"${monitor_node}:${monitor_port}\"}
+          else .
+          end
+         ) |
+      from_entries" > settings_tmp.json
+scp settings_tmp.json ${broker_node}:${broker_dir}/broker.json
+rm settings_tmp.json
+scp ../../../cmake-build-release/broker/hidra2-broker ${broker_node}:${broker_dir}
+
+
+#worker_setup
+worker_node=max-display002
+worker_dir=~/fullchain_tests
+nthreads=16
+scp ../../../cmake-build-release/examples/worker/getnext_broker/getnext_broker ${worker_node}:${worker_dir}
+
+#monitoring_start
+ssh ${monitor_node} influx -execute \"create database db_test\"
+#ssh ${monitor_node} docker run -d -p 8086 -p 8086 --name influxdb influxdb
+
+#mongo_start
+ssh ${broker_node} docker run -d -p 27017:27017 --name mongo mongo
+
+#receiver_start
+ssh ${receiver_node} "bash -c 'cd ${receiver_dir}; nohup ./receiver settings.json &> ${receiver_dir}/receiver.log &'"
+sleep 0.3
+
+#broker_start
+ssh ${broker_node} "bash -c 'cd ${broker_dir}; nohup ./hidra2-broker broker.json &> ${broker_dir}/broker.log &'"
+sleep 0.3
+
+#producer_start
+ssh ${producer_node} "bash -c 'cd ${producer_dir}; nohup ./dummy-data-producer ${receiver_ip}:${receiver_port} ${file_size} ${file_num} &> ${producer_dir}/producer.log &'"
+sleep 0.3
+
+#worker_start
+ssh ${worker_node} ${worker_dir}/getnext_broker ${broker_node}:5005 test_run ${nthreads}
+
diff --git a/tests/manual/performance_producer_receiver/receiver.json b/tests/manual/performance_producer_receiver/receiver.json
index e23a556d1..2479a88d5 100644
--- a/tests/manual/performance_producer_receiver/receiver.json
+++ b/tests/manual/performance_producer_receiver/receiver.json
@@ -1,6 +1,9 @@
 {
   "MonitorDbAddress":"localhost:8086",
   "MonitorDbName": "db_test",
+  "BrokerDbAddress":"localhost:27017",
+  "BrokerDbName": "test_run",
   "ListenPort":4200,
-  "WriteToDisk":true
-}
\ No newline at end of file
+  "WriteToDisk":true,
+  "WriteToDb":true
+}
diff --git a/tests/manual/performance_producer_receiver/settings_tmp.json b/tests/manual/performance_producer_receiver/settings_tmp.json
deleted file mode 100644
index 35b3649bc..000000000
--- a/tests/manual/performance_producer_receiver/settings_tmp.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "MonitorDbAddress": "zitpcx27016:8086",
-  "MonitorDbName": "db_test",
-  "ListenPort": 4201,
-  "WriteToDisk": false
-}
diff --git a/tests/manual/performance_producer_receiver/test.sh b/tests/manual/performance_producer_receiver/test.sh
index 317f32d77..862ae2ec8 100755
--- a/tests/manual/performance_producer_receiver/test.sh
+++ b/tests/manual/performance_producer_receiver/test.sh
@@ -30,7 +30,6 @@ ssh ${worker_node} mkdir -p ${worker_dir}
 scp ../../../cmake-build-release/receiver/receiver ${service_node}:${service_dir}
 scp ../../../cmake-build-release/examples/producer/dummy-data-producer/dummy-data-producer ${worker_node}:${worker_dir}
 
-
 function do_work {
 cat receiver.json |
   jq "to_entries |
@@ -49,9 +48,11 @@ ssh ${service_node} "bash -c 'cd ${service_dir}; nohup ./receiver settings.json
 sleep 0.3
 for size  in 100 1000 10000
 do
+ssh ${service_node} docker run -d -p 27017:27017 --name mongo mongo
 echo ===================================================================
 ssh ${worker_node} ${worker_dir}/dummy-data-producer ${service_ip}:${service_port} ${size} 1000
 ssh ${service_node} rm -f ${service_dir}/files/*
+ssh ${service_node} docker rm -f -v mongo
 done
 ssh ${service_node} killall receiver
 }
@@ -67,3 +68,4 @@ do_work false
 
 #rm settings_tmp.json
 #ssh ${service_node} docker rm -f influxdb
+
-- 
GitLab