Instead of always removing the traces and only outputting a diff, if the
test fails, we now keep the trace and the output we got, so it is easy
to reproduce afterwards or just copy the new output to the "expected"
folder if it is correct.
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
class AnalysisTest(unittest.TestCase):
COMMON_OPTIONS = '--no-progress --skip-validation --gmt'
class AnalysisTest(unittest.TestCase):
COMMON_OPTIONS = '--no-progress --skip-validation --gmt'
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.rm_trace = True
+
def set_up_class(self):
dirname = os.path.dirname(os.path.realpath(__file__))
self.data_path = dirname + '/expected/'
def set_up_class(self):
dirname = os.path.dirname(os.path.realpath(__file__))
self.data_path = dirname + '/expected/'
self.write_trace()
def tear_down_class(self):
self.write_trace()
def tear_down_class(self):
- self.trace_writer.rm_trace()
+ if self.rm_trace:
+ self.trace_writer.rm_trace()
def write_trace(self):
raise NotImplementedError
def write_trace(self):
raise NotImplementedError
options, self.trace_writer.trace_root)
return subprocess.getoutput(cmd)
options, self.trace_writer.trace_root)
return subprocess.getoutput(cmd)
+
+ def get_output(self, name, output):
+ out = open(os.path.join(self.trace_writer.trace_root, name), "w")
+ out.write(output)
+ out.close()
+ self.rm_trace = False
+
+ def diff(self, name, result, expected):
+ try:
+ self.assertMultiLineEqual(result, expected)
+ except AssertionError:
+ self.get_output(name, result)
+ raise
expected = self.get_expected_output('cputop.txt')
result = self.get_cmd_output('lttng-cputop')
expected = self.get_expected_output('cputop.txt')
result = self.get_cmd_output('lttng-cputop')
- self.assertMultiLineEqual(result, expected)
+ self.diff("cputop", result, expected)
expected = self.get_expected_output('iousagetop.txt')
result = self.get_cmd_output('lttng-iousagetop')
expected = self.get_expected_output('iousagetop.txt')
result = self.get_cmd_output('lttng-iousagetop')
- self.assertMultiLineEqual(result, expected)
+ self.diff("iousagetop", result, expected)
def test_iolatencytop(self):
expected = self.get_expected_output('iolatencytop.txt')
result = self.get_cmd_output('lttng-iolatencytop')
def test_iolatencytop(self):
expected = self.get_expected_output('iolatencytop.txt')
result = self.get_cmd_output('lttng-iolatencytop')
- self.assertMultiLineEqual(result, expected)
+ self.diff("iolatencytop", result, expected)
expected = self.get_expected_output('irqstats.txt')
result = self.get_cmd_output('lttng-irqstats')
expected = self.get_expected_output('irqstats.txt')
result = self.get_cmd_output('lttng-irqstats')
- self.assertMultiLineEqual(result, expected)
+ self.diff("irqstats", result, expected)
def test_irqlog(self):
expected = self.get_expected_output('irqlog.txt')
result = self.get_cmd_output('lttng-irqlog')
def test_irqlog(self):
expected = self.get_expected_output('irqlog.txt')
result = self.get_cmd_output('lttng-irqlog')
- self.assertMultiLineEqual(result, expected)
+ self.diff("irqlog", result, expected)