From 286ec745cc0ef412b450d7c5c07d735707f9418b Mon Sep 17 00:00:00 2001 From: Gokul Singaraju Date: Tue, 27 Mar 2018 15:31:12 -0400 Subject: Added tests for heartbeat coverage Issue-ID: DCAEGEN2-276 Change-Id: Ib0fa11fc5978f47854056f3c198347120b3873a8 Signed-off-by: Gokul Singaraju --- Dockerfile | 10 +- bin/run.py | 5 +- coverage.xml | 255 +++++++++++++++------------ miss_htbt_service.egg-info/PKG-INFO | 1 - miss_htbt_service/htbtworker.py | 132 +++++++++----- requirements.txt | 1 + target/checkstyle-cachefile | 2 - target/checkstyle-checker.xml | 220 ----------------------- target/checkstyle-header.txt | 40 ----- target/checkstyle-result.xml | 3 - target/failsafe-reports/failsafe-summary.xml | 8 - tests/test_binding.py | 79 +++++++-- xunit-results.xml | 24 ++- 13 files changed, 323 insertions(+), 457 deletions(-) delete mode 100644 target/checkstyle-cachefile delete mode 100644 target/checkstyle-checker.xml delete mode 100644 target/checkstyle-header.txt delete mode 100644 target/checkstyle-result.xml delete mode 100644 target/failsafe-reports/failsafe-summary.xml diff --git a/Dockerfile b/Dockerfile index 6247123..00edd2d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,11 +11,11 @@ RUN pip install pyyaml --upgrade RUN pip install -r requirements.txt RUN pip install -e . -RUN mkdir /opt/config -RUN echo 1.2.3.4 > /opt/config/coll_ip.txt -RUN echo 1234 > /opt/config/coll_port.txt -RUN echo 4.5.6.7 > /opt/config/pol_ip.txt -RUN echo 4567 > /opt/config/pol_port.txt +RUN mkdir /tmp/config +RUN echo 1.2.3.4 > /tmp/config/coll_ip.txt +RUN echo 1234 > /tmp/config/coll_port.txt +RUN echo 4.5.6.7 > /tmp/config/pol_ip.txt +RUN echo 4567 > /tmp/config/pol_port.txt EXPOSE 10000 ENV PYTHONPATH /usr/local/lib/python3.6/site-packages diff --git a/bin/run.py b/bin/run.py index 55bb683..159e7a4 100755 --- a/bin/run.py +++ b/bin/run.py @@ -17,6 +17,9 @@ # ============LICENSE_END========================================================= # # ECOMP is a trademark and service mark of AT&T Intellectual Property. +# +# Author Gokul Singaraju gs244f@att.com +# import sys import yaml @@ -55,7 +58,7 @@ if __name__ == '__main__': #print(cfg['vnfs'][vnf][0]) #print(cfg['vnfs'][vnf][1]) #print(cfg['vnfs'][vnf][2]) - #Start Heartbeat monitoring process on VNFs configured + #Start Heartbeat monitoring process worker thread on VNFs configured p = multiprocessing.Process(target=checkhtbt, args=(cfg['global']['message_router_url'],cfg['vnfs'][vnf][0],cfg['vnfs'][vnf][1],cfg['vnfs'][vnf][2],cfg['vnfs'][vnf][3])) jobs.append(p) p.start() diff --git a/coverage.xml b/coverage.xml index 289994f..ad70a4c 100644 --- a/coverage.xml +++ b/coverage.xml @@ -1,140 +1,132 @@ - + - /root/heartbeat + /root/fresh/heartbeat - + - + - - - - + + + + - - - - - - - - + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - - + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -142,15 +134,50 @@ - + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/miss_htbt_service.egg-info/PKG-INFO b/miss_htbt_service.egg-info/PKG-INFO index 019ebf2..1137abf 100644 --- a/miss_htbt_service.egg-info/PKG-INFO +++ b/miss_htbt_service.egg-info/PKG-INFO @@ -6,7 +6,6 @@ Home-page: https://gerrit.onap.org/r/#/admin/projects/dcaegen2/platform/heartbea Author: Gokul Singaraju Author-email: gs244f@att.com License: UNKNOWN -Description-Content-Type: UNKNOWN Description: UNKNOWN Keywords: missing heartbeat microservice Platform: UNKNOWN diff --git a/miss_htbt_service/htbtworker.py b/miss_htbt_service/htbtworker.py index b8eadb4..b81deae 100644 --- a/miss_htbt_service/htbtworker.py +++ b/miss_htbt_service/htbtworker.py @@ -12,6 +12,11 @@ # 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. +# +# Author Gokul Singaraju gs244f@att.com +# Simple Microservice +# Tracks Heartbeat messages on input topic in DMaaP +# and generates Missing Heartbeat signal for Policy Engine import requests import math @@ -21,6 +26,7 @@ import string import sys +# Initialise tracking hash tables intvl = 60 missing_htbt = 2 #tracks last epoch time @@ -31,10 +37,11 @@ heartstate = {} heartflag = {} #saves heartbeat message for policy heartmsg = {} -mr_url = 'http://mrrouter.att.com:3904' -pol_url = 'http://mrrouter.att.com:3904' +mr_url = 'http://mrrouter.onap.org:3904' +pol_url = 'http://mrrouter.onap.org:3904' intopic = 'VESCOLL-VNFNJ-SECHEARTBEAT-OUTPUT' outopic = 'POLICY-HILOTCA-EVENT-OUTPUT' +periodic_scheduler = None # Checks for heartbeat event on periodic basis class PeriodicScheduler(object): @@ -45,19 +52,22 @@ class PeriodicScheduler(object): action(*actionargs) self.scheduler.enter(interval, 1, self.setup, (interval, action, actionargs)) - def run(self): self.scheduler.run() + def stop(self): + list(map(self.scheduler.cancel, self.scheduler.queue)) + +# Formats collector uri from config files of heat template def get_collector_uri(): """ This method waterfalls reads an envioronmental variable called COLLECTOR_HOST If that doesn't work, it raises an Exception """ - with open('/opt/config/coll_ip.txt', 'r') as myfile: + with open('/tmp/config/coll_ip.txt', 'r') as myfile: coll_ip=myfile.read().replace('\n', '') myfile.close() - with open('/opt/config/coll_port.txt', 'r') as myfile2: + with open('/tmp/config/coll_port.txt', 'r') as myfile2: coll_port=myfile2.read().replace('\n', '') myfile2.close() if coll_ip and coll_port: @@ -68,15 +78,16 @@ def get_collector_uri(): else: raise BadEnviornmentENVNotFound("COLLECTOR_HOST") +# Formats Policy uri from config files of heat template def get_policy_uri(): """ This method waterfalls reads an envioronmental variable called POLICY_HOST If that doesn't work, it raises an Exception """ - with open('/opt/config/coll_ip.txt', 'r') as myfile: + with open('/tmp/config/coll_ip.txt', 'r') as myfile: pol_ip=myfile.read().replace('\n', '') myfile.close() - with open('/opt/config/coll_port.txt', 'r') as myfile2: + with open('/tmp/config/coll_port.txt', 'r') as myfile2: pol_port=myfile2.read().replace('\n', '') myfile2.close() if pol_ip and pol_port : @@ -90,21 +101,25 @@ def get_policy_uri(): # Process the heartbeat event on input topic def periodic_event(): - print("Checking... ") - print(datetime.datetime.now()) + global periodic_scheduler + global mr_url, pol_url, missing_htbt, intvl, intopic, outopic + ret = 0 + print("Checking..." , datetime.datetime.now()) #Read heartbeat get_url = mr_url+'/events/'+intopic+'/DefaultGroup/1?timeout=15000' - print(get_url) + print("Getting :"+get_url) res = requests.get(get_url) #print(res) #print(res.headers) print(res.text) #print(res.json) inputString = res.text - jlist = json.loads(inputString); + #jlist = json.loads(inputString) + jlist = inputString.split('\n'); #print("List:"+jlist[0]) + # Process the DMaaP input message retreived for line in jlist: - #print(line) + print("Line:"+line) jobj = json.loads(line) #print(jobj) srcid = (jobj['event']['commonEventHeader']['sourceId']) @@ -122,9 +137,7 @@ def periodic_event(): heartflag[srcid] = sdiff; heartmsg[srcid] = jobj; else: - print("Heartbeat Dead raising alarm event") - #payload = {'Event': 'Heartbeat Failure', 'Host': srcid, 'LastTimestamp': hearttrack[srcid], 'Sequence': heartstate[srcid]} - payload = {"event": { + payload = json.dumps({"event": { "commonEventHeader": { "reportingEntityName": "VNFVM", "reportingEntityName": "VNFVM", @@ -149,14 +162,16 @@ def periodic_event(): "sourceId": "cff8656d-0b42-4eda-ab5d-3d2b7f2d74c8" } } - } + }) payload = heartmsg[srcid] print(payload) - send_url = pol_url+'/events/'+outopic+'/DefaultGroup/1?timeout=15000' - print(send_url) + psend_url = pol_url+'/events/'+outopic+'/DefaultGroup/1?timeout=15000' + print(psend_url) + print("Heartbeat Dead raising alarm event "+psend_url) #Send response for policy on output topic - r = requests.post(send_url, data=payload) + r = requests.post(psend_url, data=payload) print(r.status_code, r.reason) + ret = r.status_code del heartstate[srcid] del hearttrack[srcid] del heartflag[srcid] @@ -166,15 +181,15 @@ def periodic_event(): heartstate[srcid] = seqnum heartflag[srcid] = 1 heartmsg[srcid] = jobj; + ret = 1 chkeys = [] - for key in heartstate.iterkeys(): + for key in heartstate.keys(): print(key,heartstate[key]) if( heartflag[key] == 0 ): print("Heartbeat Dead raise alarm event"+key) chkeys.append( key ) - #payload = {'Event': 'Heartbeat Failure', 'Host': key, 'LastTimestamp': hearttrack[key], 'Sequence': heartstate[key]} #print payload - payload = {"event": { + payload = json.dumps({"event": { "commonEventHeader": { "reportingEntityName": "VNFVM", "startEpochMicrosec": 1508641592248000, @@ -198,37 +213,70 @@ def periodic_event(): "sourceId": "cff8656d-0b42-4eda-ab5d-3d2b7f2d74c8" } } - } + }) payload = heartmsg[key] print(payload) send_url = pol_url+'/events/'+outopic+'/DefaultGroup/1?timeout=15000' print(send_url) r = requests.post(send_url, data=payload) print(r.status_code, r.reason) + ret = r.status_code heartflag[key] = 0 for chkey in chkeys: print(chkey) del heartstate[chkey] del hearttrack[chkey] del heartflag[chkey] + return ret + +#test setup for coverage +def test_setup(args): + global mr_url, pol_url, missing_htbt, intvl, intopic, outopic + mr_url = get_collector_uri() + pol_url = get_policy_uri() + missing_htbt = float(int(args[2])) + intvl = float(int(args[3])) + intopic = args[4] + outopic = args[5] + print ("Message router url %s " % mr_url) + print ("Policy url %s " % pol_url) + print ("Interval %s " % intvl) + print ("Input topic %s " % intopic) + print ("Output topic %s " % outopic) + #intvl = 60 # every second + +#Main invocation +def main(args): + global periodic_scheduler + global mr_url, pol_url, missing_htbt, intvl, intopic, outopic + mr_url = get_collector_uri() + pol_url = get_policy_uri() + missing_htbt = int(args[2]) + intvl = int(args[3]) + intopic = args[4] + outopic = args[5] + print ("Message router url %s " % mr_url) + print ("Policy router url %s " % pol_url) + print ("Interval %s " % intvl) + #intvl = 60 # every second + #Start periodic scheduler runs every interval + periodic_scheduler = PeriodicScheduler() + periodic_scheduler.setup(intvl, periodic_event) # it executes the event just once + periodic_scheduler.run() # it starts the scheduler -total = len(sys.argv) -cmdargs = str(sys.argv) -print ("The total numbers of args passed to the script: %d " % total) -print ("Args list: %s " % cmdargs) -print ("Script name: %s" % str(sys.argv[0])) -for i in range(total): +if __name__ == "__main__": + total = len(sys.argv) + cmdargs = str(sys.argv) + print ("The total numbers of args passed to the script: %d " % total) + print ("Missing Heartbeat Args list: %s " % cmdargs) + print ("Script name: %s" % str(sys.argv[0])) + for i in range(total): print ("Argument # %d : %s" % (i, str(sys.argv[i]))) -if( total >= 6 ): - mr_url = get_collector_uri() - pol_url = get_policy_uri() - #mr_url = sys.argv[1] - missing_htbt = float(int(sys.argv[2])) - intvl = float(int(sys.argv[3])) - intopic = sys.argv[4] - outopic = sys.argv[5] -print ("Interval %s " % intvl) -#intvl = 60 # every second -periodic_scheduler = PeriodicScheduler() -periodic_scheduler.setup(intvl, periodic_event) # it executes the event just once -periodic_scheduler.run() # it starts the scheduler + main(sys.argv[1:]) + + +#force stop scheduler +def stop(): + global periodic_scheduler + if not periodic_scheduler is None: + periodic_scheduler.stop() diff --git a/requirements.txt b/requirements.txt index b838342..9617d32 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,3 +3,4 @@ connexion==1.1.12 requests==2.18.2 six==1.10.0 PyYAML==3.12 +HTTPretty==0.8.14 diff --git a/target/checkstyle-cachefile b/target/checkstyle-cachefile deleted file mode 100644 index a0970bf..0000000 --- a/target/checkstyle-cachefile +++ /dev/null @@ -1,2 +0,0 @@ -#Tue Feb 27 23:21:54 EST 2018 -configuration*?=15B4FB894B57CADB17418F12E3274FB4B864070B diff --git a/target/checkstyle-checker.xml b/target/checkstyle-checker.xml deleted file mode 100644 index 32439e2..0000000 --- a/target/checkstyle-checker.xml +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/target/checkstyle-header.txt b/target/checkstyle-header.txt deleted file mode 100644 index 9536f0b..0000000 --- a/target/checkstyle-header.txt +++ /dev/null @@ -1,40 +0,0 @@ -/* -* ============LICENSE_START========================================== -* =================================================================== -* Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. -* =================================================================== -* -* Unless otherwise specified, all software contained herein is licensed -* under the Apache License, Version 2.0 (the "License"); -* you may not use this software 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. -* -* -* -* Unless otherwise specified, all documentation contained herein is licensed -* under the Creative Commons License, Attribution 4.0 Intl. (the "License"); -* you may not use this documentation except in compliance with the License. -* You may obtain a copy of the License at -* -* https://creativecommons.org/licenses/by/4.0/ -* -* Unless required by applicable law or agreed to in writing, documentation -* 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. -* -* ============LICENSE_END============================================ -* -* ECOMP is a trademark and service mark of AT&T Intellectual Property. -* -*/ - diff --git a/target/checkstyle-result.xml b/target/checkstyle-result.xml deleted file mode 100644 index 472022e..0000000 --- a/target/checkstyle-result.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/target/failsafe-reports/failsafe-summary.xml b/target/failsafe-reports/failsafe-summary.xml deleted file mode 100644 index ac2b7cb..0000000 --- a/target/failsafe-reports/failsafe-summary.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - 0 - 0 - 0 - 0 - - \ No newline at end of file diff --git a/tests/test_binding.py b/tests/test_binding.py index cb1f212..2e16f13 100644 --- a/tests/test_binding.py +++ b/tests/test_binding.py @@ -16,36 +16,77 @@ # # ECOMP is a trademark and service mark of AT&T Intellectual Property. +import os +import io import requests -#from miss_htbt_service import htbtworker -#from miss_htbt_service import get_collector_uri,get_policy_uri +import httpretty +#import miss_htbt_service +from miss_htbt_service import htbtworker +#from miss_htbt_service.htbtworker import get_collector_uri,get_policy_uri import pytest import json -from requests.exceptions import HTTPError, RequestException -from requests import Response import base64 +import errno +import imp +MODULE_EXTENSIONS = ('.py', '.pyc', '.pyo') + +def package_contents(package_name): + file, pathname, description = imp.find_module(package_name) + if file: + raise ImportError('Not a package: %r', package_name) + # Use a set because some may be both source and compiled. + return set([os.path.splitext(module)[0] + for module in os.listdir(pathname) + if module.endswith(MODULE_EXTENSIONS)]) ##### # MONKEYPATCHES ##### -mr_url = 'http://0.0.0.0:3904' -intopic = 'INPUT_TOPIC_v1' +#mr_url = 'http://127.0.0.1:3904' +mr_url = 'http://mrrouter.att.com:3904' +intopic = 'VESCOLL-VNFNJ-SECHEARTBEAT-OUTPUT' +outopic = 'OUTPUT_TOPIC_v1' +@httpretty.activate def test_resolve_all(monkeypatch): - htbtmsg = {"event":{"commonEventHeader":{"startEpochMicrosec":1518616063564475,"sourceId":"587c14b3-72c0-4581-b5cb-6567310b9bb7","eventId":"10048640","reportingEntityId":"587c14b3-72c0-4581-b5cb-6567310b9bb7","priority":"Normal","version":3,"reportingEntityName":"SWMSVM","sequence":10048640,"domain":"heartbeat","lastEpochMicrosec":1518616063564476,"eventName":"Heartbeat_vMrf","sourceName":"SWMSVM","nfNamingCode":"vMRF"}}} + #htbtmsg = "Find the best daily deals" + htbtmsg = '{"event":{"commonEventHeader":{"startEpochMicrosec":1518616063564475,"sourceId":"587c14b3-72c0-4581-b5cb-6567310b9bb7","eventId":"10048640","reportingEntityId":"587c14b3-72c0-4581-b5cb-6567310b9bb7","priority":"Normal","version":3,"reportingEntityName":"SWMSVM","sequence":10048640,"domain":"heartbeat","lastEpochMicrosec":1518616063564476,"eventName":"Heartbeat_vMrf","sourceName":"SWMSVM","nfNamingCode":"vMRF"}}}' send_url = mr_url+'/events/'+intopic+'/DefaultGroup/1?timeout=15000' print(send_url) - #send_url = get_collector_uri()+'/events/'+intopic+'/DefaultGroup/1?timeout=15000' - #print(send_url) - #send_url = get_policy_uri()+'/events/'+intopic+'/DefaultGroup/1?timeout=15000' - #print(send_url) - #r = requests.post(send_url, data=htbtmsg) - #sleep(60) - #r = requests.post(send_url, data=htbtmsg) - #sleep(60) - #r = requests.post(send_url, data=htbtmsg) - #print(r.status_code, r.reason) - #assert(r.status_code == 404) - assert(404 == 404) + httpretty.register_uri(httpretty.GET, send_url, body=htbtmsg) + #Use + response = requests.get(send_url) + print(response) + print(response.text) + assert(response.text == htbtmsg) + try: + os.makedirs('/tmp/config') + except OSError as e: + if e.errno != errno.EEXIST: + raise + with open("/tmp/config/coll_ip.txt", "w") as file: + #file.write('127.0.0.1') + file.write('mytest.onap.org') + file.close() + with open("/tmp/config/coll_port.txt", "w") as file2: + file2.write('3904') + file2.close() + #print(package_contents('miss_htbt_service')) + #response = requests.get(send_url) + #print(response) + #print(response.text) + #assert(response.text == htbtmsg) + htbtmsg = json.dumps({"event":{"commonEventHeader":{"startEpochMicrosec":1518616063564475,"sourceId":"587c14b3-72c0-4581-b5cb-6567310b9bb7","eventId":"10048640","reportingEntityId":"587c14b3-72c0-4581-b5cb-6567310b9bb7","priority":"Normal","version":3,"reportingEntityName":"SWMSVM","sequence":10048640,"domain":"heartbeat","lastEpochMicrosec":1518616063564476,"eventName":"Heartbeat_vMrf","sourceName":"SWMSVM","nfNamingCode":"vMRF"}}}) + send_url = htbtworker.get_collector_uri()+'/events/'+intopic+'/DefaultGroup/1?timeout=15000' + print("Send URL : "+send_url) + httpretty.register_uri(httpretty.GET, send_url, body=htbtmsg, content_type="application/json") + pol_url = htbtworker.get_policy_uri()+'/events/'+outopic+'/DefaultGroup/1?timeout=15000' + pol_body = json.dumps({"event":{"commonEventHeader":{"startEpochMicrosec":1518616063564475,"sourceId":"587c14b3-72c0-4581-b5cb-6567310b9bb7","eventId":"10048640","reportingEntityId":"587c14b3-72c0-4581-b5cb-6567310b9bb7","priority":"Normal","version":3,"reportingEntityName":"SWMSVM","sequence":10048640,"domain":"heartbeat","lastEpochMicrosec":1518616063564476,"eventName":"Heartbeat_vMrf","sourceName":"SWMSVM","nfNamingCode":"vMRF"}}}) + print("Policy URL : "+pol_url) + httpretty.register_uri(httpretty.POST, pol_url, body=pol_body, status=200, content_type='text/json') + htbtworker.test_setup([send_url,send_url,3,60,intopic,outopic]) + ret = htbtworker.periodic_event() + print("Returned",ret) + assert(ret == 1) diff --git a/xunit-results.xml b/xunit-results.xml index d17e68f..ce0fd44 100644 --- a/xunit-results.xml +++ b/xunit-results.xml @@ -1,2 +1,22 @@ -http://0.0.0.0:3904/events/INPUT_TOPIC_v1/DefaultGroup/1?timeout=15000 - \ No newline at end of file +http://mrrouter.att.com:3904/events/VESCOLL-VNFNJ-SECHEARTBEAT-OUTPUT/DefaultGroup/1?timeout=15000 +<Response [200]> +{"event":{"commonEventHeader":{"startEpochMicrosec":1518616063564475,"sourceId":"587c14b3-72c0-4581-b5cb-6567310b9bb7","eventId":"10048640","reportingEntityId":"587c14b3-72c0-4581-b5cb-6567310b9bb7","priority":"Normal","version":3,"reportingEntityName":"SWMSVM","sequence":10048640,"domain":"heartbeat","lastEpochMicrosec":1518616063564476,"eventName":"Heartbeat_vMrf","sourceName":"SWMSVM","nfNamingCode":"vMRF"}}} +Send URL : http://mytest.onap.org:3904/events/VESCOLL-VNFNJ-SECHEARTBEAT-OUTPUT/DefaultGroup/1?timeout=15000 +Policy URL : http://mytest.onap.org:3904/events/OUTPUT_TOPIC_v1/DefaultGroup/1?timeout=15000 +Message router url http://mytest.onap.org:3904 +Policy url http://mytest.onap.org:3904 +Interval 60.0 +Input topic VESCOLL-VNFNJ-SECHEARTBEAT-OUTPUT +Output topic OUTPUT_TOPIC_v1 +Checking... 2018-03-27 15:14:17.651127 +Getting :http://mytest.onap.org:3904/events/VESCOLL-VNFNJ-SECHEARTBEAT-OUTPUT/DefaultGroup/1?timeout=15000 +{"event": {"commonEventHeader": {"startEpochMicrosec": 1518616063564475, "sourceId": "587c14b3-72c0-4581-b5cb-6567310b9bb7", "eventId": "10048640", "reportingEntityId": "587c14b3-72c0-4581-b5cb-6567310b9bb7", "priority": "Normal", "version": 3, "reportingEntityName": "SWMSVM", "sequence": 10048640, "domain": "heartbeat", "lastEpochMicrosec": 1518616063564476, "eventName": "Heartbeat_vMrf", "sourceName": "SWMSVM", "nfNamingCode": "vMRF"}}} +Line:{"event": {"commonEventHeader": {"startEpochMicrosec": 1518616063564475, "sourceId": "587c14b3-72c0-4581-b5cb-6567310b9bb7", "eventId": "10048640", "reportingEntityId": "587c14b3-72c0-4581-b5cb-6567310b9bb7", "priority": "Normal", "version": 3, "reportingEntityName": "SWMSVM", "sequence": 10048640, "domain": "heartbeat", "lastEpochMicrosec": 1518616063564476, "eventName": "Heartbeat_vMrf", "sourceName": "SWMSVM", "nfNamingCode": "vMRF"}}} +Adding new source +587c14b3-72c0-4581-b5cb-6567310b9bb7 10048640 +Returned 1 +2018-03-27 15:14:17,645 | urllib3.connectionpool | connectionpool | _new_conn | 208 | DEBUG | Starting new HTTP connection (1): mrrouter.att.com +2018-03-27 15:14:17,648 | urllib3.connectionpool | connectionpool | _make_request | 396 | DEBUG | http://mrrouter.att.com:3904 "GET /events/VESCOLL-VNFNJ-SECHEARTBEAT-OUTPUT/DefaultGroup/1?timeout=15000 HTTP/1.1" 200 415 +2018-03-27 15:14:17,652 | urllib3.connectionpool | connectionpool | _new_conn | 208 | DEBUG | Starting new HTTP connection (1): mytest.onap.org +2018-03-27 15:14:17,662 | urllib3.connectionpool | connectionpool | _make_request | 396 | DEBUG | http://mytest.onap.org:3904 "GET /events/VESCOLL-VNFNJ-SECHEARTBEAT-OUTPUT/DefaultGroup/1?timeout=15000 HTTP/1.1" 200 442 + \ No newline at end of file -- cgit 1.2.3-korg