aboutsummaryrefslogtreecommitdiffstats
path: root/experiment/experiment.py
diff options
context:
space:
mode:
Diffstat (limited to 'experiment/experiment.py')
-rw-r--r--experiment/experiment.py32
1 files changed, 17 insertions, 15 deletions
diff --git a/experiment/experiment.py b/experiment/experiment.py
index a44f798..e6dc92d 100644
--- a/experiment/experiment.py
+++ b/experiment/experiment.py
@@ -40,6 +40,8 @@ class Experiment(object):
40 self.finished_dir = finished_dir 40 self.finished_dir = finished_dir
41 self.proc_entries = proc_entries 41 self.proc_entries = proc_entries
42 self.executables = executables 42 self.executables = executables
43 self.exec_out = None
44 self.exec_err = None
43 45
44 self.__make_dirs() 46 self.__make_dirs()
45 self.__assign_executable_cwds() 47 self.__assign_executable_cwds()
@@ -151,23 +153,26 @@ class Experiment(object):
151 print "[Exp %s]: %s" % (self.name, msg) 153 print "[Exp %s]: %s" % (self.name, msg)
152 154
153 def run_exp(self): 155 def run_exp(self):
154 self.setup()
155
156 succ = False 156 succ = False
157
158 try: 157 try:
159 self.__run_tasks() 158 self.setup()
160 self.log("Saving results in %s" % self.finished_dir) 159
161 succ = True 160 try:
161 self.__run_tasks()
162 self.log("Saving results in %s" % self.finished_dir)
163 succ = True
164 finally:
165 self.teardown()
162 finally: 166 finally:
163 self.teardown() 167 self.log("Switching to Linux scheduler")
168 litmus_util.switch_scheduler("Linux")
164 169
165 if succ: 170 if succ:
166 self.__save_results() 171 self.__save_results()
167 self.log("Experiment done!") 172 self.log("Experiment done!")
168 173
169 174
170 def setup(self): 175 def setup(self):
171 self.log("Writing %d proc entries" % len(self.proc_entries)) 176 self.log("Writing %d proc entries" % len(self.proc_entries))
172 map(methodcaller('write_proc'), self.proc_entries) 177 map(methodcaller('write_proc'), self.proc_entries)
173 178
@@ -185,13 +190,13 @@ class Experiment(object):
185 executable.stdout_file = self.exec_out 190 executable.stdout_file = self.exec_out
186 executable.stderr_file = self.exec_err 191 executable.stderr_file = self.exec_err
187 map(set_out, self.executables) 192 map(set_out, self.executables)
188 193
189 time.sleep(4) 194 time.sleep(4)
190 195
191 def teardown(self): 196 def teardown(self):
192 self.exec_out.close() 197 self.exec_out and self.exec_out.close()
193 self.exec_err.close() 198 self.exec_err and self.exec_err.close()
194 199
195 sleep_time = 5 200 sleep_time = 5
196 self.log("Sleeping %d seconds to allow buffer flushing" % sleep_time) 201 self.log("Sleeping %d seconds to allow buffer flushing" % sleep_time)
197 time.sleep(sleep_time) 202 time.sleep(sleep_time)
@@ -199,6 +204,3 @@ class Experiment(object):
199 self.log("Stopping tracers") 204 self.log("Stopping tracers")
200 map(methodcaller('stop_tracing'), self.tracers) 205 map(methodcaller('stop_tracing'), self.tracers)
201 206
202 self.log("Switching to Linux scheduler")
203 litmus_util.switch_scheduler("Linux")
204