create music keywords and move over http keywords 35/90035/1
authorDR695H <dr695h@att.com>
Mon, 17 Jun 2019 18:27:48 +0000 (14:27 -0400)
committerDR695H <dr695h@att.com>
Mon, 17 Jun 2019 18:27:54 +0000 (14:27 -0400)
Issue-ID: TEST-158
Change-Id: I74c0a6141a35ab44481c868f5b3f0277cc1b97ca
Signed-off-by: DR695H <dr695h@att.com>
robotframework-onap/ONAPLibrary/HTTPKeywords.py
robotframework-onap/ONAPLibrary/MUSIC.py [new file with mode: 0644]
robotframework-onap/ONAPLibrary/MUSICKeywords.py [new file with mode: 0644]
robotframework-onap/eteutils/EteGatherDataListener.py [deleted file]

index 40f9998..f2afe6a 100644 (file)
@@ -1,3 +1,17 @@
+# Copyright 2019 AT&T Intellectual Property. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 from six.moves import urllib
 from robot.api.deco import keyword
 
diff --git a/robotframework-onap/ONAPLibrary/MUSIC.py b/robotframework-onap/ONAPLibrary/MUSIC.py
new file mode 100644 (file)
index 0000000..29ebd9c
--- /dev/null
@@ -0,0 +1,27 @@
+# Copyright 2019 AT&T Intellectual Property. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from ONAPLibrary.robotlibcore import HybridCore
+from ONAPLibrary.MUSICKeywords import MUSICKeywords
+
+
+class MUSIC(HybridCore):
+    """MUSIC is an ONAP testing library for Robot Framework that provides functionality for interacting with the music
+    component. """
+
+    def __init__(self):
+        self.keyword_implementors = [
+            MUSICKeywords()
+        ]
+        HybridCore.__init__(self, self.keyword_implementors)
diff --git a/robotframework-onap/ONAPLibrary/MUSICKeywords.py b/robotframework-onap/ONAPLibrary/MUSICKeywords.py
new file mode 100644 (file)
index 0000000..abceb54
--- /dev/null
@@ -0,0 +1,68 @@
+# Copyright 2019 AT&T Intellectual Property. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+from RequestsLibrary import RequestsLibrary
+from robot.api import logger
+from robot.api.deco import keyword
+from robot.libraries.BuiltIn import BuiltIn
+
+from ONAPLibrary.Utilities import Utilities
+
+
+class MUSICKeywords(object):
+    """MUSIC is an ONAP testing library for Robot Framework that provides functionality for interacting with the serivce
+    orchestrator. """
+
+    def __init__(self):
+        super(MUSICKeywords, self).__init__()
+        self.application_id = "robot-ete"
+        self.uuid = Utilities()
+        self.builtin = BuiltIn()
+
+    @keyword
+    def run_get_request(self, endpoint, data_path, accept="application/json", auth=None):
+        """Runs an MUSIC get request"""
+        resp = self.get_request(endpoint, data_path, accept, auth)
+        return resp
+
+    def get_request(self, endpoint, data_path, accept="application/json", auth=None):
+        """Runs an MUSIC get request"""
+        logger.info("Creating session" + endpoint)
+        RequestsLibrary().create_session("music", endpoint, auth=auth)
+        resp = RequestsLibrary().get_request("music", data_path, headers=self.create_headers(accept))
+        logger.info("Received response from music " + resp.text)
+        return resp
+
+    def create_headers(self, accept="application/json"):
+        """Create the headers that are used by MUSIC"""
+        uuid = self.uuid.generate_uuid4()
+        headers = {
+            "Accept": accept,
+            "Content-Type": "application/json",
+            "X-TransactionId": self.application_id + "-" + uuid,
+            "X-FromAppId": self.application_id
+        }
+        return headers
+
+    def run_health_check(self, endpoint, health_check_path):
+        """Runs MUSIC Health check"""
+        resp = self.run_get_request(endpoint, health_check_path)
+        self.builtin.should_be_equal_as_strings(resp.status_code, "200")
+        self.builtin.should_be_equal_as_strings(resp.json()['status'], "SUCCESS")
+
+    def run_cassandra_connection_check(self, endpoint, health_check_path):
+        """Confirm MUSIC's connection to Cassandra in active"""
+        resp = self.run_get_request(endpoint, health_check_path)
+        self.builtin.should_be_equal_as_strings(resp.status_code, "200")
+        self.builtin.should_be_equal_as_strings(resp.json()['Cassandra'], "Active")
+
diff --git a/robotframework-onap/eteutils/EteGatherDataListener.py b/robotframework-onap/eteutils/EteGatherDataListener.py
deleted file mode 100644 (file)
index a99364b..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-import os.path
-import paramiko
-import logging
-from sys import stderr
-
-"""
-EteGatherDataListener implements the ROBOT listener API version 2 and is
-instantiated via the robot cammmand line option
-
-   --listener EteGatherDataListener:<jobbumber>:<key filename>
-
-The purpose is to gather and preserve debugging data from each of the application
-VMs when an ETE test fails.
-
-This listener counts the number of test
-cases that have failed and, if > 0 at then end of the robot exection (close()),
-will connect to each application vm and
-
-2. upload the gather_data.sh
-2. execute gather_data.sh
-3. Transfer the resulting zip file to the Robot reports folder
-
-This will enable the Jenkins job to retrieve the debug data along with the
-Robot logs and reports  and archive it with the failed job for later retreival.
-
-Note that the gather_data.sh depends upon the application providing
-a /opt/gather_application_data.sh on their respective VMs for the zip file
-to be created.
-"""
-
-
-class EteGatherDataListener(object):
-    ROBOT_LIBRARY_SCOPE = 'TEST SUITE'
-    ROBOT_LISTENER_API_VERSION = 2
-
-    APPLICATIONS = {
-        "aai" : "10.0.1.1",
-        "appc" : "10.0.2.1",
-        "sdc" : "10.0.3.1",
-        "dcae" : "10.0.4.1",
-        "mso" : "10.0.5.1",
-        "policy" : "10.0.6.1",
-        "sdnc" : "10.0.7.1",
-        "vid" : "10.0.8.1",
-        "portal" : "10.0.9.1",
-        "message_router" : "10.0.11.1",
-        "dcae_pstg00" : "10.0.4.101",
-        "dcae_coll00" : "10.0.4.102",
-        "dcae_cdap00" : "10.0.4.103",
-        "dcae_cdap01" : "10.0.4.104",
-        "dcae_cdap02" : "10.0.4.105"
-        }
-
-    keyfile = ""
-    local_gather_data_sh = ""
-
-    def __init__(self, job='10', keyfile='/share/config/key.pvt', shell="gather_data.sh"):
-        self.tests_passed = 0
-        self.tests_failed = 0
-        self.output_folder = ''
-        self.job = job
-        self.folder= ''
-        self.keyfile = keyfile
-        self.local_gather_data_sh = shell
-        print("EteGatherDataListener instantiated")
-
-    def end_test(self, name, attrs):
-        if attrs['status'] == 'PASS':
-            self.tests_passed+=1
-        else:
-            self.tests_failed+=1
-
-    def output_file(self, path):
-        if (self.folder != ''):
-            return
-        self.folder = os.path.dirname(path)
-        print((self.folder))
-
-    def close(self):
-        print("EteGatherDataListener tests failed=" + str(self.tests_failed))
-        if (self.tests_failed > 0):
-            self.gather_debug_data()
-
-    def gather_debug_data(self):
-
-        for application in list(self.APPLICATIONS.keys()):
-            self.gather_application_data(application, self.APPLICATIONS.get(application))
-
-    def gather_application_data(self, application, ip):
-        extra = {"_threadid" : 1}
-        paramiko.util.log_to_file(self.folder + "/paramiko.log", level=0)
-        log = logging.getLogger("paramiko")
-        ssh = paramiko.SSHClient()
-        try:
-            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
-            ssh.connect(ip,username="root",  key_filename=self.keyfile)
-        except paramiko.SSHException:
-            log.error("Connection Failed to " + ip, extra=extra)
-            return
-        try:
-            gather_data_sh = "/tmp/gather_data.sh"
-            ftp = ssh.open_sftp()
-            ftp.put(self.local_gather_data_sh, gather_data_sh)
-            ftp.close()
-            stdin, stdout, stderr = ssh.exec_command("/bin/bash "+ gather_data_sh + " " + application + " " + self.job)
-            error = stderr.read()
-            if (error != ''):
-                log.info("stderr:" + error, extra=extra)
-                ssh.close()
-                return;
-            # No error? ASsume we have a file to download.
-            out = stdout.read()
-            log.info("stdout:" + out, extra=extra)
-            filename = application + "_" + self.job + ".tar.gz"
-            localzip = self.folder + "/" + filename
-            remotezip = "/tmp/gather_data/" + filename
-            ftp = ssh.open_sftp()
-            ftp.get(remotezip, localzip)
-            ftp.close()
-            stdin, stdout, stderr = ssh.exec_command("rm -rf " + remotezip);
-            ssh.close()
-        except paramiko.SSHException:
-            ssh.close()
-            return
-
-