summaryrefslogtreecommitdiffstats
path: root/stdout_printer.py
blob: 5bbcead8a6cbc17f68a1605f0b06b37fdfd811a7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
###############################################################################
# Description
###############################################################################

# Prints records to standard out

###############################################################################
# Public functions
###############################################################################

def stdout_printer(stream):
    for record in stream:
        if record.record_type == "event":
            _print_event(record)
        elif record.record_type == "meta" and record.type_name == "stats":
            _print_stats(record)
        elif record.record_type == "error" and record.type_name == 'inversion_start':
            _print_inversion_start(record)
        elif record.record_type == "error" and record.type_name == 'inversion_end':
            _print_inversion_end(record)
        else:
            continue
        print("")

###############################################################################
# Private functions
###############################################################################

def _print_event(record):
    print("Job: {}.{}".format(record.pid,record.job))
    print("Type: {}".format(record.type_name))
    print("Time: {}".format(record.when))

def _print_inversion_start(record):
    print("Type: {}".format("Inversion start"))
    print("Time: {}".format(record.job.inversion_start))
    print("Job: {}.{}".format(record.job.pid,record.job.job))
    print("Deadline: {}".format(record.job.deadline))
    print("Eligible: ",end="")
    for job in record.eligible:
        print(str(job) + " ",end="")
    print("")
    print("On CPU: ",end="")
    for job in record.on_cpu:
        print(str(job) + " ",end="")
    print("") #newline

def _print_inversion_end(record):
    print("Type: {}".format("Inversion end"))
    print("Time: {}".format(record.job.inversion_end))
    print("Duration: {}".format(
        record.job.inversion_end - record.job.inversion_start))
    print("Job: {}.{}".format(record.job.pid,record.job.job))
    print("Deadline: {}".format(record.job.deadline))
    print("Eligible: ",end="")
    for job in record.eligible:
        print(str(job) + " ",end="")
    print("")
    print("On CPU: ",end="")
    for job in record.on_cpu:
        print(str(job) + " ",end="")
    print("") #newline

def _print_stats(record):
    print("Inversion statistics")
    print("Num inversions: {}".format(record.num_inversions))
    print("Min inversion: {}".format(record.min_inversion))
    print("Max inversion: {}".format(record.max_inversion))
    print("Avg inversion: {}".format(record.avg_inversion))