From eb594307f4350b686263cae2355dcbb910ec9403 Mon Sep 17 00:00:00 2001 From: DR695H Date: Wed, 17 Jul 2019 18:50:55 -0400 Subject: cleanup how message factory is used apparantly if you use binary protobuf you cant recall the same instance variable Issue-ID: TEST-175 Change-Id: I413c04dec5f94363a54d5e9e00e135d95620abd3 Signed-off-by: DR695H --- .../ONAPLibrary/ProtobufKeywords.py | 8 ++-- robotframework-onap/ONAPLibrary/RequestsHelper.py | 9 ++-- robotframework-onap/ONAPLibrary/VESProtobuf.py | 11 ++--- robotframework-onap/setup.py | 17 +++---- .../tests/ONAPLibrary/ProtobufKeywordsTest.py | 50 +++++++++++++++++++++ .../tests/ONAPLibrary/hvves_msg.raw | Bin 0 -> 296 bytes robotframework-onap/tests/runner.py | 14 +++--- 7 files changed, 84 insertions(+), 25 deletions(-) create mode 100644 robotframework-onap/tests/ONAPLibrary/ProtobufKeywordsTest.py create mode 100644 robotframework-onap/tests/ONAPLibrary/hvves_msg.raw diff --git a/robotframework-onap/ONAPLibrary/ProtobufKeywords.py b/robotframework-onap/ONAPLibrary/ProtobufKeywords.py index 9fded9b..3e870d7 100644 --- a/robotframework-onap/ONAPLibrary/ProtobufKeywords.py +++ b/robotframework-onap/ONAPLibrary/ProtobufKeywords.py @@ -8,14 +8,14 @@ class ProtobufKeywords(object): def __init__(self): super(ProtobufKeywords, self).__init__() + self.vpf = VESProtobuf() @keyword def compare_file_to_message(self, file_name, message): with open(file_name, "rb") as file_to_do: return self.compare_two_messages(file_to_do.read(), message) - @staticmethod - def compare_two_messages(left, right): - left_json = VESProtobuf.binary_to_json(left) - right_json = VESProtobuf.binary_to_json(right) + def compare_two_messages(self, left, right): + left_json = self.vpf.binary_to_json(left) + right_json = self.vpf.binary_to_json(right) return JSONKeywords().json_equals(left_json, right_json) diff --git a/robotframework-onap/ONAPLibrary/RequestsHelper.py b/robotframework-onap/ONAPLibrary/RequestsHelper.py index f818c54..9de2260 100644 --- a/robotframework-onap/ONAPLibrary/RequestsHelper.py +++ b/robotframework-onap/ONAPLibrary/RequestsHelper.py @@ -56,9 +56,12 @@ class RequestsHelper(object): content_type="application/json", auth=None): """Runs a post request""" logger.info("Creating session" + endpoint) - md5 = hashlib.md5() - md5.update(data) - md5checksum = Base64Keywords().base64_encode(md5.hexdigest()) + if not data: + md5 = hashlib.md5() + md5.update(data) + md5checksum = Base64Keywords().base64_encode(md5.hexdigest()) + else: + md5checksum = None self.requests.create_session(alias, endpoint, auth=auth) headers = self.create_headers(sdc_user_id=sdc_user, accept=accept, content_type=content_type, md5=md5checksum) resp = self.requests.post_request(alias, data_path, files=files, data=data, headers=headers) diff --git a/robotframework-onap/ONAPLibrary/VESProtobuf.py b/robotframework-onap/ONAPLibrary/VESProtobuf.py index d747a0d..b5a36bc 100644 --- a/robotframework-onap/ONAPLibrary/VESProtobuf.py +++ b/robotframework-onap/ONAPLibrary/VESProtobuf.py @@ -27,6 +27,7 @@ class VESProtobuf(object): def __init__(self): super(VESProtobuf, self).__init__() + self.message_descriptors = VESProtobuf.get_message_definitions() @staticmethod def create_ves_event(): @@ -109,12 +110,12 @@ class VESProtobuf(object): @staticmethod def get_message_definitions(): - return message_factory.GetMessages((VESProtobuf.create_ves_event(),)) + messages = message_factory.GetMessages((VESProtobuf.create_ves_event(),)) + message_factory._FACTORY = message_factory.MessageFactory() + return messages - @staticmethod - def binary_to_json(binary_message): - defs = VESProtobuf.get_message_definitions() - ves = defs['VesEvent']() + def binary_to_json(self, binary_message): + ves = self.message_descriptors['VesEvent']() ves.MergeFromString(binary_message) json = MessageToJson(ves) return json diff --git a/robotframework-onap/setup.py b/robotframework-onap/setup.py index 89b72d5..9d58595 100644 --- a/robotframework-onap/setup.py +++ b/robotframework-onap/setup.py @@ -27,19 +27,20 @@ setup( url="https://github.com/onap/testsuite-python-testing-utils", platforms=['all'], install_requires=[ + 'deepdiff', 'dnspython', + 'future', + 'jinja2', + 'jsonpath-rw', + 'kafka-python', 'paramiko', + 'protobuf', 'pyyaml', - 'robotframework', - 'deepdiff', - 'Jinja2', - 'six', 'requests', - 'future', + 'robotframework', 'robotframework-requests', - 'kafka-python', - 'urllib3', - 'jsonpath-rw' + 'six', + 'urllib3' ], # what we need packages=['loadtest', 'vcpeutils', 'ONAPLibrary'], # The name of your scripts package package_dir={ diff --git a/robotframework-onap/tests/ONAPLibrary/ProtobufKeywordsTest.py b/robotframework-onap/tests/ONAPLibrary/ProtobufKeywordsTest.py new file mode 100644 index 0000000..eedfb87 --- /dev/null +++ b/robotframework-onap/tests/ONAPLibrary/ProtobufKeywordsTest.py @@ -0,0 +1,50 @@ +# 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. +import os + +from unittest import TestCase + +from ONAPLibrary.ProtobufKeywords import ProtobufKeywords + + +class ProtobufKeywordsTest(TestCase): + + @staticmethod + def _get_location(): + path = os.path.realpath( + os.path.join(os.getcwd(), os.path.dirname(__file__))) + return path + + def test(self): + with open(os.path.join(self._get_location(), "hvves_msg.raw"), "rb") as fileToDo: + value = fileToDo.read() + pb = ProtobufKeywords() + result = pb.compare_file_to_message(os.path.join(self._get_location(), "hvves_msg.raw"), value) + self.assertTrue(result) + + def test_compare_two(self): + with open(os.path.join(self._get_location(), "hvves_msg.raw"), "rb") as fileToDo: + value = fileToDo.read() + pb = ProtobufKeywords() + result = pb.compare_two_messages(value, value) + self.assertTrue(result) + + def test_compare_two_many(self): + with open(os.path.join(self._get_location(), "hvves_msg.raw"), "rb") as fileToDo: + value = fileToDo.read() + pb = ProtobufKeywords() + result = pb.compare_two_messages(value, value) + self.assertTrue(result) + result = pb.compare_two_messages(value, value) + self.assertTrue(result) diff --git a/robotframework-onap/tests/ONAPLibrary/hvves_msg.raw b/robotframework-onap/tests/ONAPLibrary/hvves_msg.raw new file mode 100644 index 0000000..57d7e89 Binary files /dev/null and b/robotframework-onap/tests/ONAPLibrary/hvves_msg.raw differ diff --git a/robotframework-onap/tests/runner.py b/robotframework-onap/tests/runner.py index b58215a..3422dfe 100644 --- a/robotframework-onap/tests/runner.py +++ b/robotframework-onap/tests/runner.py @@ -1,16 +1,20 @@ -import unittest +from unittest import TextTestRunner +from unittest import TestLoader +from unittest import TestSuite # import your test modules -from tests.vcpeutils.SoUtils_test import * +from tests.vcpeutils.SoUtils_test import SoUtilsTest +from tests.ONAPLibrary.ProtobufKeywordsTest import ProtobufKeywordsTest # initialize the test suite -loader = unittest.TestLoader() -suite = unittest.TestSuite() +loader = TestLoader() +suite = TestSuite() # add tests to the test suite +suite.addTests(loader.loadTestsFromTestCase(ProtobufKeywordsTest)) suite.addTests(loader.loadTestsFromTestCase(SoUtilsTest)) # initialize a runner, pass it your suite and run it -runner = unittest.TextTestRunner(verbosity=3) +runner = TextTestRunner(verbosity=3) result = runner.run(suite) -- cgit 1.2.3-korg