From e7281a1188e3c5162ba6b3cae8f1daf2456c71a8 Mon Sep 17 00:00:00 2001 From: Ross Whitfield Date: Thu, 28 Jul 2022 11:21:57 -0400 Subject: [PATCH] Include event time in portal data --- ipsframework/ips.py | 14 ++++++++------ ipsframework/services.py | 1 + tests/helloworld/test_helloworld.py | 2 ++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ipsframework/ips.py b/ipsframework/ips.py index beea2556..08bb8a34 100755 --- a/ipsframework/ips.py +++ b/ipsframework/ips.py @@ -72,6 +72,7 @@ from ipsframework.eventService import EventService from ipsframework.cca_es_spec import initialize_event_service from ipsframework.ips_es_spec import eventManager +from ipsframework.ipsutil import getTimeString from ipsframework._version import get_versions if sys.version[0] != '3': # noqa: E402 @@ -593,6 +594,7 @@ def _send_monitor_event(self, sim_name='', eventType='', comment='', ok=True, ta whether the event indicates normal simulation execution, or an error condition. """ + event_time = time.time() if self.verbose_debug: self.debug('_send_monitor_event(%s - %s)', sim_name, eventType) portal_data = {} @@ -601,7 +603,9 @@ def _send_monitor_event(self, sim_name='', eventType='', comment='', ok=True, ta portal_data['eventtype'] = eventType portal_data['ok'] = ok portal_data['comment'] = comment - portal_data['walltime'] = '%.2f' % (time.time() - self.start_time) + portal_data['walltime'] = '%.2f' % (event_time - self.start_time) + portal_data['time'] = getTimeString(time.localtime(event_time)) + topic_name = '_IPS_MONITOR' # portal_data['phystimestamp'] = self.timeStamp get_config = self.config_manager.get_config_parameter @@ -643,16 +647,14 @@ def _send_monitor_event(self, sim_name='', eventType='', comment='', ok=True, ta portal_data['sim_runid'] = get_config(sim_name, 'RUN_ID') except KeyError: pass - portal_data['startat'] = time.strftime('%Y-%m-%d|%H:%M:%S%Z', - time.localtime(self.start_time)) + portal_data['startat'] = getTimeString(time.localtime(self.start_time)) portal_data['ips_version'] = get_versions()['version'] elif eventType == 'IPS_END': portal_data['state'] = 'Completed' - portal_data['stopat'] = time.strftime('%Y-%m-%d|%H:%M:%S%Z', - time.localtime()) + portal_data['stopat'] = getTimeString(time.localtime(event_time)) # Zipkin json format portal_data['trace'] = {"timestamp": int(self.start_time*1e6), - "duration": int((time.time() - self.start_time)*1e6), + "duration": int((event_time - self.start_time)*1e6), "localEndpoint": { "serviceName": str(self.component_id) }, diff --git a/ipsframework/services.py b/ipsframework/services.py index 9c06e789..b923d413 100644 --- a/ipsframework/services.py +++ b/ipsframework/services.py @@ -414,6 +414,7 @@ def _send_monitor_event(self, if event_time is None: event_time = time.time() portal_data['walltime'] = '%.2f' % (event_time - self.component_ref.start_time) + portal_data['time'] = ipsutil.getTimeString(time.localtime(event_time)) trace = {} # Zipkin json format if start_time is not None and (elapsed_time is not None or end_time is not None) and target is not None and operation is not None: diff --git a/tests/helloworld/test_helloworld.py b/tests/helloworld/test_helloworld.py index f2e17b4e..b29408c7 100644 --- a/tests/helloworld/test_helloworld.py +++ b/tests/helloworld/test_helloworld.py @@ -356,6 +356,7 @@ def handle(self): assert event['sim_name'] == 'Hello_world_1' assert event['seqnum'] == 0 assert 'ips_version' in event + assert 'time' in event # get last event to check event = json.loads(data[-1].split('\r\n')[-1]) @@ -364,6 +365,7 @@ def handle(self): assert event['comment'] == 'Target = Hello_world_1@HelloWorker@2:init(0.000)' assert event['state'] == 'Running' assert event['sim_name'] == 'Hello_world_1' + assert 'time' in event assert 'trace' in event trace = event['trace'] assert 'duration' in trace