You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ds...@apache.org on 2015/01/16 14:10:22 UTC

ambari git commit: AMBARI-9084 Refine Smoke test for AMS (dsen)

Repository: ambari
Updated Branches:
  refs/heads/trunk 111b2e533 -> 0a1d66488


AMBARI-9084 Refine Smoke test for AMS (dsen)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0a1d6648
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0a1d6648
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0a1d6648

Branch: refs/heads/trunk
Commit: 0a1d66488ea4a512c23baacd7e629772afd2f717
Parents: 111b2e5
Author: Dmytro Sen <ds...@apache.org>
Authored: Fri Jan 16 14:19:34 2015 +0200
Committer: Dmytro Sen <ds...@apache.org>
Committed: Fri Jan 16 15:09:40 2015 +0200

----------------------------------------------------------------------
 ambari-server/pom.xml                           |  1 +
 .../AMS/0.1.0/package/scripts/params.py         |  3 +-
 .../AMS/0.1.0/package/scripts/service_check.py  | 96 ++++++++++++++++++++
 .../package/templates/smoketest_metrics.json.j2 | 15 +++
 4 files changed, 114 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/0a1d6648/ambari-server/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-server/pom.xml b/ambari-server/pom.xml
index 43832c9..21b65af 100644
--- a/ambari-server/pom.xml
+++ b/ambari-server/pom.xml
@@ -166,6 +166,7 @@
             <exclude>src/main/resources/stacks/HDP/2.1.GlusterFS/services/YARN/package/templates/exclude_hosts_list.j2</exclude>
             <exclude>src/main/windows/ambari-server.cmd</exclude>
             <exclude>src/main/windows/ambari-server.ps1</exclude>
+            <exclude>src/main/resources/common-services/AMS/0.1.0/package/templates/smoketest_metrics.json.j2</exclude>
             <exclude>src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/balancer-emulator/balancer-err.log</exclude>
             <exclude>src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/balancer-emulator/balancer.log</exclude>
             <exclude>src/main/resources/stacks/BIGTOP/0.8/services/HDFS/package/scripts/balancer-emulator/balancer.log</exclude>

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a1d6648/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/scripts/params.py
index 84c2dce..4e7f0c3 100644
--- a/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/scripts/params.py
@@ -38,7 +38,8 @@ ams_collector_script = "/usr/sbin/ambari-metrics-collector"
 ams_collector_pid_dir = status_params.ams_collector_pid_dir
 ams_collector_hosts = default("/clusterHostInfo/metric_collector_hosts", [])
 ams_collector_host_single = ams_collector_hosts[0] #TODO cardinality is 1+ so we can have more than one host
-metric_collector_port = default("/configurations/ams-site/timeline.metrics.service.webapp.address", "0.0.0.0:8188")
+metric_collector_address = default("/configurations/ams-site/timeline.metrics.service.webapp.address", "0.0.0.0:6188")
+metric_collector_port = default("/configurations/ams-site/timeline.metrics.service.webapp.address", "0.0.0.0:6188")
 if metric_collector_port and metric_collector_port.find(':') != -1:
   metric_collector_port = metric_collector_port.split(':')[1]
 pass

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a1d6648/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/scripts/service_check.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/scripts/service_check.py b/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/scripts/service_check.py
index 5561e10..cc45aeb 100644
--- a/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/scripts/service_check.py
+++ b/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/scripts/service_check.py
@@ -17,3 +17,99 @@ See the License for the specific language governing permissions and
 limitations under the License.
 
 """
+
+from resource_management.core.logger import Logger
+from resource_management.core.base import Fail
+from resource_management import Script
+from resource_management import Template
+import httplib
+import urllib
+import json
+import random
+import time
+
+
+class AMSServiceCheck(Script):
+
+  AMS_METRICS_POST_URL = "/ws/v1/timeline/metrics/"
+  AMS_METRICS_GET_URL = "/ws/v1/timeline/metrics?%s"
+
+  def service_check(self, env):
+    import params
+
+    Logger.info("AMS service check was started.")
+    env.set_params(params)
+
+    random_value1 = random.random()
+    current_time = time.time()
+    metric_json = Template('smoketest_metrics.json.j2', hostname=params.hostname, random1=random_value1,
+                           current_time=current_time).get_content()
+    Logger.info("Generated metrics:\n%s" % metric_json)
+
+    Logger.info("Connecting (POST) to %s%s" % (params.metric_collector_address, self.AMS_METRICS_POST_URL))
+    headers = {"Content-type": "application/json"}
+    conn = httplib.HTTPConnection(params.metric_collector_address)
+
+    conn.request("POST", self.AMS_METRICS_POST_URL, metric_json, headers)
+    response = conn.getresponse()
+    Logger.info("Http response: %s %s" % (response.status, response.reason))
+
+    data = response.read()
+    Logger.info("Http data: %s" % data)
+    conn.close()
+
+    if response.status == 200:
+      Logger.info("AMS metrics were saved.")
+    else:
+      Logger.info("AMS metrics were not saved. Service check has failed.")
+      raise Fail("AMS metrics were not saved. Service check has failed. POST request status: %s %s \n%s" %
+                 (response.status, response.reason, data))
+
+    get_metrics_parameters = {
+      "metricNames": "AMS.SmokeTest.FakeMetric",
+      "appId": "amssmoketestfake",
+      "hostname": params.hostname,
+      "startTime": 1419860000000,
+      "precision": "seconds",
+      "grouped": "false",
+    }
+    encoded_get_metrics_parameters = urllib.urlencode(get_metrics_parameters)
+
+    Logger.info("Connecting (GET) to %s%s" % (params.metric_collector_address,
+                                              self.AMS_METRICS_GET_URL % encoded_get_metrics_parameters))
+
+    conn = httplib.HTTPConnection(params.metric_collector_address)
+    conn.request("GET", self.AMS_METRICS_GET_URL % encoded_get_metrics_parameters)
+    response = conn.getresponse()
+    Logger.info("Http response: %s %s" % (response.status, response.reason))
+
+    data = response.read()
+    Logger.info("Http data: %s" % data)
+    conn.close()
+
+    if response.status == 200:
+      Logger.info("AMS metrics were retrieved.")
+    else:
+      Logger.info("AMS metrics were not retrieved. Service check has failed.")
+      raise Fail("AMS metrics were not retrieved. Service check has failed. GET request status: %s %s \n%s" %
+                 (response.status, response.reason, data))
+    data_json = json.loads(data)
+
+    def floats_eq(f1, f2, delta):
+      return abs(f1-f2) < delta
+
+    for metrics_data in data_json["metrics"]:
+      if (floats_eq(metrics_data["metrics"]["1419860001000"], random_value1, 0.0000001)
+          and floats_eq(metrics_data["metrics"]["1419860002000"], current_time, 1)):
+        Logger.info("Values %s and %s were found in response." % (random_value1, current_time))
+        break
+      pass
+    else:
+      Logger.info("Values %s and %s were not found in response." % (random_value1, current_time))
+      raise Fail("Values %s and %s were not found in response." % (random_value1, current_time))
+
+    Logger.info("AMS service check is finished.")
+
+if __name__ == "__main__":
+  AMSServiceCheck().execute()
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a1d6648/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/templates/smoketest_metrics.json.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/templates/smoketest_metrics.json.j2 b/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/templates/smoketest_metrics.json.j2
new file mode 100644
index 0000000..e2e8501
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/AMS/0.1.0/package/templates/smoketest_metrics.json.j2
@@ -0,0 +1,15 @@
+{
+  "metrics": [
+    {
+      "metricname": "AMS.SmokeTest.FakeMetric",
+      "appid": "amssmoketestfake",
+      "hostname": "{{hostname}}",
+      "timestamp": 1419860001000,
+      "starttime": 1419860001000,
+      "metrics": {
+        "1419860001000": {{random1}},
+        "1419860002000": {{current_time}}
+      }
+    }
+  ]
+}