Fix: keep the trace and output if a test fails
authorJulien Desfossez <jdesfossez@efficios.com>
Fri, 4 Mar 2016 18:09:41 +0000 (13:09 -0500)
committerJulien Desfossez <jdesfossez@efficios.com>
Fri, 4 Mar 2016 18:12:21 +0000 (13:12 -0500)
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>
tests/analysis_test.py
tests/test_cputop.py
tests/test_io.py
tests/test_irq.py

index 8894f6991828c049b05fe327015ed825a18cf99d..aefef9827e202155b5173b8085cc657493bbb370 100644 (file)
@@ -30,6 +30,10 @@ from .trace_writer import TraceWriter
 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/'
@@ -38,7 +42,8 @@ class AnalysisTest(unittest.TestCase):
         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
@@ -60,3 +65,16 @@ class AnalysisTest(unittest.TestCase):
                              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
index 77256ce7375f4a9eb261fa9207b50ea889d2ae13..50a4aa43b350890b043fc05512e346d5859c21b6 100644 (file)
@@ -44,4 +44,4 @@ class CpuTest(AnalysisTest):
         expected = self.get_expected_output('cputop.txt')
         result = self.get_cmd_output('lttng-cputop')
 
-        self.assertMultiLineEqual(result, expected)
+        self.diff("cputop", result, expected)
index 70a8ac0ce3ff6a7eb7565cbf3743f2371f2bc6fb..6dd764e9c8248ca47b6afaea28ae4f0041411aa8 100644 (file)
@@ -68,10 +68,10 @@ class IoTest(AnalysisTest):
         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')
 
-        self.assertMultiLineEqual(result, expected)
+        self.diff("iolatencytop", result, expected)
index d792e68186e8a0595bc14da202c866f83c15ad87..b8c244401d56a2af6694420da66aaf89a563649a 100644 (file)
@@ -78,10 +78,10 @@ class IrqTest(AnalysisTest):
         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')
 
-        self.assertMultiLineEqual(result, expected)
+        self.diff("irqlog", result, expected)
This page took 0.042893 seconds and 5 git commands to generate.