nirdizati_light.utils.time_metrics

 1from datetime import datetime as dt
 2
 3TIME_FORMAT = "%Y-%m-%dT%H:%M:%S"
 4
 5
 6def duration(trace):
 7    """Calculate the duration of a trace"""
 8    return remaining_time_id(trace, 0)
 9
10
11def elapsed_time_id(trace, event_index: int):
12    """Calculate elapsed time by event index in trace"""
13    try:
14        event = trace[event_index]
15    except IndexError:
16        # catch for 0 padding.
17        # calculate using the last event in trace
18        event = trace[-1]
19    return elapsed_time(trace, event)
20
21
22def elapsed_time(trace, event):
23    """Calculate elapsed time by event in trace"""
24    # FIXME using no timezone info for calculation
25    event_time = event['time:timestamp'].strftime("%Y-%m-%dT%H:%M:%S")
26    first_time = trace[0]['time:timestamp'].strftime("%Y-%m-%dT%H:%M:%S")
27    try:
28        delta = dt.strptime(event_time, TIME_FORMAT) - dt.strptime(first_time, TIME_FORMAT)
29    except ValueError:
30        # Log has no timestamps
31        return 0
32    return delta.total_seconds()
33
34
35def remaining_time_id(trace, event_index: int):
36    """Calculate remaining time by event index in trace"""
37    try:
38        event = trace[event_index]
39        return remaining_time(trace, event)
40    except IndexError:
41        # catch for 0 padding.
42        # cant calculate remaining time if there are no more events
43        return 0
44
45
46def remaining_time(trace, event):
47    """Calculate remaining time by event in trace"""
48    # FIXME using no timezone info for calculation
49    event_time = event['time:timestamp'].strftime("%Y-%m-%dT%H:%M:%S")
50    last_time = trace[-1]['time:timestamp'].strftime("%Y-%m-%dT%H:%M:%S")
51    try:
52        delta = dt.strptime(last_time, TIME_FORMAT) - dt.strptime(event_time, TIME_FORMAT)
53    except ValueError:
54        # Log has no timestamps
55        return 0
56    return delta.total_seconds()
57
58
59def count_on_event_day(trace, date_dict: dict, event_id):
60    """Finds the date of event and returns the value from date_dict
61    :param date_dict one of the dicts from log_metrics.py
62    :param event_id Event id
63    :param trace Log trace
64    """
65    try:
66        event = trace[event_id]
67        date = str(event['time:timestamp'].date())
68        return date_dict.get(date, 0)
69    except IndexError:
70        return 0
TIME_FORMAT = '%Y-%m-%dT%H:%M:%S'
def duration(trace):
7def duration(trace):
8    """Calculate the duration of a trace"""
9    return remaining_time_id(trace, 0)

Calculate the duration of a trace

def elapsed_time_id(trace, event_index: int):
12def elapsed_time_id(trace, event_index: int):
13    """Calculate elapsed time by event index in trace"""
14    try:
15        event = trace[event_index]
16    except IndexError:
17        # catch for 0 padding.
18        # calculate using the last event in trace
19        event = trace[-1]
20    return elapsed_time(trace, event)

Calculate elapsed time by event index in trace

def elapsed_time(trace, event):
23def elapsed_time(trace, event):
24    """Calculate elapsed time by event in trace"""
25    # FIXME using no timezone info for calculation
26    event_time = event['time:timestamp'].strftime("%Y-%m-%dT%H:%M:%S")
27    first_time = trace[0]['time:timestamp'].strftime("%Y-%m-%dT%H:%M:%S")
28    try:
29        delta = dt.strptime(event_time, TIME_FORMAT) - dt.strptime(first_time, TIME_FORMAT)
30    except ValueError:
31        # Log has no timestamps
32        return 0
33    return delta.total_seconds()

Calculate elapsed time by event in trace

def remaining_time_id(trace, event_index: int):
36def remaining_time_id(trace, event_index: int):
37    """Calculate remaining time by event index in trace"""
38    try:
39        event = trace[event_index]
40        return remaining_time(trace, event)
41    except IndexError:
42        # catch for 0 padding.
43        # cant calculate remaining time if there are no more events
44        return 0

Calculate remaining time by event index in trace

def remaining_time(trace, event):
47def remaining_time(trace, event):
48    """Calculate remaining time by event in trace"""
49    # FIXME using no timezone info for calculation
50    event_time = event['time:timestamp'].strftime("%Y-%m-%dT%H:%M:%S")
51    last_time = trace[-1]['time:timestamp'].strftime("%Y-%m-%dT%H:%M:%S")
52    try:
53        delta = dt.strptime(last_time, TIME_FORMAT) - dt.strptime(event_time, TIME_FORMAT)
54    except ValueError:
55        # Log has no timestamps
56        return 0
57    return delta.total_seconds()

Calculate remaining time by event in trace

def count_on_event_day(trace, date_dict: dict, event_id):
60def count_on_event_day(trace, date_dict: dict, event_id):
61    """Finds the date of event and returns the value from date_dict
62    :param date_dict one of the dicts from log_metrics.py
63    :param event_id Event id
64    :param trace Log trace
65    """
66    try:
67        event = trace[event_id]
68        date = str(event['time:timestamp'].date())
69        return date_dict.get(date, 0)
70    except IndexError:
71        return 0

Finds the date of event and returns the value from date_dict :param date_dict one of the dicts from log_metrics.py :param event_id Event id :param trace Log trace