source: branches/reconfiguration/platforms/tsar_generic_iob/scripts/parse.py @ 782

Last change on this file since 782 was 782, checked in by cfuguet, 8 years ago

reconfiguration/tsar_generic_iob: adding script for plotting

File size: 2.3 KB
Line 
1#!/usr/bin/python
2# @author Cesar Fuguet <cesar.fuguet-tortolero@lip6.fr>
3# @date   28 August, 2014
4# @desc   generate output file containing a table with the format below:
5#
6#                              fault configurations
7#                   | faultconfig 0 | faultconfig 1 | faultconfig M
8#               ----------------------------------------------------
9#               4   |    cycles     |    cycles     |    cycles
10#  # clusters   16  |    cycles     |    cycles     |    cycles
11#               64  |    cycles     |    cycles     |    cycles
12#               N   |    cycles     |    cycles     |    cycles
13
14import os
15import sys
16
17def parse_ffstend(configs, faultconfigs, confpath, outpath):
18    # write header
19    ffst_end = open(outpath, "w")
20    ffst_end.write("#  ffst end (cycles)\n")
21
22    # repeat while configurations is not empty
23    quit = 0
24    for x,y in configs:
25        ffst_end.write("\n")
26        ffst_end.write(str(x*y))
27        for f in xrange(faultconfigs):
28            temp = "config_{0}c{1}f/".format(x*y, f)
29            confdir = os.path.join(confpath, temp)
30
31            #  parse term log and get relevant information
32            termname = os.path.join(confdir, "term")
33            try:
34                termlog = open(termname, "r")
35            except IOError as e:
36                print "IOError {0}: {1}".format(termname, e.strerror)
37                quit = 1
38                break
39
40            found = False
41            for line in termlog:
42                partitions = line.partition(':')
43                if partitions[0].strip() == "FFST (END)":
44                    found = True
45                    value = int(partitions[2])
46                    ffst_end.write("   {0}".format(value))
47                    break
48
49            if not found: ffst_end.write("   -1")
50            # end for faultconfig
51
52        if quit: break
53        # end for configs
54
55    ffst_end.close()
56    # end def parse_ffstend
57
58if __name__ == "__main__":
59    configs = []
60    configs.append([2 , 2 ])
61    configs.append([4 , 4 ])
62    configs.append([8 , 8 ])
63    configs.append([16, 16])
64
65    assert len(sys.argv) > 3,\
66           "Introduce number of faulty configs, config path and output path"
67
68    parse_ffstend(configs, int(sys.argv[1]), sys.argv[2], sys.argv[3])
69
70# vim: tabstop=4 : softtabstop=4 : shiftwidth=4 : expandtab
Note: See TracBrowser for help on using the repository browser.