aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/boot.py19
-rw-r--r--scripts/database.py12
-rw-r--r--scripts/databaseinit.sql2
-rw-r--r--scripts/utils.py7
4 files changed, 14 insertions, 26 deletions
diff --git a/scripts/boot.py b/scripts/boot.py
index 2d1461a..6209461 100644
--- a/scripts/boot.py
+++ b/scripts/boot.py
@@ -12,20 +12,7 @@ from exceptions import MissingFile
import database
def boot(config, to_database = True):
- try:
- os.mkdir(sf(conf.output_folder))
- except FileExistsError:
- pass
-
- sprc = subprocess.Popen(conf.boot_command, stdout = subprocess.PIPE)
- with open(os.path.join(sf(conf.output_folder), config.cfile), "a") as f:
- for linen in sprc.stdout:
- line = linen.decode('utf-8')
- if conf.boot_output:
- print(line, end="")
- f.write(line)
-
- # Let user script parse double value
+ out = utils.callsubprocess('boot', conf.boot_command, conf.boot_output, True)
value = None
try:
@@ -38,6 +25,4 @@ def boot(config, to_database = True):
if to_database:
dtb = database.database()
- dtb.add_measure(config.cfile, config.id, value)
-
- return config.cfile
+ dtb.add_measure(out, config.id, value)
diff --git a/scripts/database.py b/scripts/database.py
index 01c341a..df89a9a 100644
--- a/scripts/database.py
+++ b/scripts/database.py
@@ -20,7 +20,7 @@ def __timestamp__():
return datetime.datetime.now().strftime('%y-%m-%d-%H-%M-%S')
Config = collections.namedtuple('Config', 'id hash config') # Named tuple for configuration
-Measure = collections.namedtuple('Measure', 'id conf_id mfile value') # Named tuple for measurement
+Measure = collections.namedtuple('Measure', 'id conf_id output value') # Named tuple for measurement
class database:
"Class used for accessing PostgreSQL project database."
@@ -99,17 +99,17 @@ class database:
rtn.append(Config(dt[0], hash, dt[1]))
return rtn
- def add_measure(self, mfile, conf_id, value = None):
+ def add_measure(self, output, conf_id, value = None):
"Add measurement."
ps = self.db.prepare("""INSERT INTO measure
- (conf, mfile, value, mtime, toolgit, linuxgit, measurement)
+ (conf, output, value, mtime, toolgit, linuxgit, measurement)
VALUES
($1, $2, $3, $4, $5, $6, $7);
""")
gt = self.check_toolsgit()
lgt = self.check_linuxgit()
tm = datetime.datetime.now()
- ps(conf_id, mfile, value, tm, gt, lgt, conf.measure_identifier)
+ ps(conf_id, output, value, tm, gt, lgt, conf.measure_identifier)
def update_measure(self, measure_id, value):
"Update measured value"
@@ -122,7 +122,7 @@ class database:
def get_measures(self, conf_id):
"Get measures for configuration with conf_id id"
- ps = self.db.prepare("""SELECT id, mfile, value FROM measure
+ ps = self.db.prepare("""SELECT id, output, value FROM measure
WHERE conf = $1;
""")
rtn = []
@@ -132,7 +132,7 @@ class database:
def get_unmeasured(self):
"Returns list of all unmeasured configurations."
- ps = self.db.prepare("""SELECT id, hash, cfile FROM configurations
+ ps = self.db.prepare("""SELECT id, hash, config FROM configurations
WHERE id NOT IN
(SELECT conf FROM measure)
""")
diff --git a/scripts/databaseinit.sql b/scripts/databaseinit.sql
index d1ab3e2..0ca9b5a 100644
--- a/scripts/databaseinit.sql
+++ b/scripts/databaseinit.sql
@@ -28,7 +28,7 @@ CREATE TABLE measure (
id BIGSERIAL PRIMARY KEY, -- Id
conf BIGINT REFERENCES configurations (id), -- Reference to configuration
measurement TEXT NOT NULL, -- Text identifivator of measuring tool
- mfile TEXT NOT NULL, -- File with measuring output
+ output TEXT NOT NULL, -- Output of boot
value DOUBLE PRECISION DEFAULT null, -- Measured data value
mtime timestamp NOT NULL, -- Time and date of measurement
linuxgit BIGINT REFERENCES linuxgit (id), -- Reference to git version of Linux
diff --git a/scripts/utils.py b/scripts/utils.py
index 742aec5..e06bdbb 100644
--- a/scripts/utils.py
+++ b/scripts/utils.py
@@ -30,15 +30,18 @@ def build_symbol_map():
def callsubprocess(process_name, process, show_output = True,
return_output = False, env=os.environ, allowed_exit_codes = [0],
- allow_all_exit_codes = False):
+ allow_all_exit_codes = False, stdin = None):
sprc = subprocess.Popen(process, stdout = subprocess.PIPE,
- stderr = subprocess.STDOUT, env = env)
+ stderr = subprocess.STDOUT, stdin = subprocess.PIPE, env = env)
try:
os.mkdir(os.path.join(sf(conf.log_folder), process_name))
except OSError:
pass
+ if stdin != None:
+ sprc.stdin.write(bytes(stdin, sys.getdefaultencoding()))
+
rtn = []
with open(os.path.join(sf(conf.log_folder),
process_name, time.strftime("%y-%m-%d-%H-%M-%S") + ".log"),