diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 | 
| commit | 14f1b3e8826ce43b978db93a62d1166055db5394 (patch) | |
| tree | 0a00ad8d3498783fe0193f3b656bca17c4c8697d /packages/Python/lldbsuite/test/functionalities/tsan/multiple | |
| parent | 4ee8c119c71a06dcad1e0fecc8c675e480e59337 (diff) | |
Notes
Diffstat (limited to 'packages/Python/lldbsuite/test/functionalities/tsan/multiple')
| -rw-r--r-- | packages/Python/lldbsuite/test/functionalities/tsan/multiple/TestTsanMultiple.py | 61 | 
1 files changed, 39 insertions, 22 deletions
| diff --git a/packages/Python/lldbsuite/test/functionalities/tsan/multiple/TestTsanMultiple.py b/packages/Python/lldbsuite/test/functionalities/tsan/multiple/TestTsanMultiple.py index c22501141cca..436fcf63d07d 100644 --- a/packages/Python/lldbsuite/test/functionalities/tsan/multiple/TestTsanMultiple.py +++ b/packages/Python/lldbsuite/test/functionalities/tsan/multiple/TestTsanMultiple.py @@ -2,33 +2,38 @@  Test ThreadSanitizer when multiple different issues are found.  """ -import os, time +import os +import time  import lldb  from lldbsuite.test.lldbtest import *  from lldbsuite.test.decorators import *  import lldbsuite.test.lldbutil as lldbutil  import json +  class TsanMultipleTestCase(TestBase):      mydir = TestBase.compute_mydir(__file__) -    @expectedFailureAll(oslist=["linux"], bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)") -    @skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default +    @expectedFailureAll( +        oslist=["linux"], +        bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)") +    @skipIfFreeBSD  # llvm.org/pr21136 runtimes not yet available by default      @skipIfRemote -    @skipUnlessCompilerRt      @skipUnlessThreadSanitizer -    def test (self): -        self.build () -        self.tsan_tests () +    def test(self): +        self.build() +        self.tsan_tests()      def setUp(self):          # Call super's setUp().          TestBase.setUp(self) -    def tsan_tests (self): -        exe = os.path.join (os.getcwd(), "a.out") -        self.expect("file " + exe, patterns = [ "Current executable set to .*a.out" ]) +    def tsan_tests(self): +        exe = os.path.join(os.getcwd(), "a.out") +        self.expect( +            "file " + exe, +            patterns=["Current executable set to .*a.out"])          self.runCmd("env TSAN_OPTIONS=abort_on_error=0") @@ -36,34 +41,46 @@ class TsanMultipleTestCase(TestBase):          stop_reason = self.dbg.GetSelectedTarget().process.GetSelectedThread().GetStopReason()          if stop_reason == lldb.eStopReasonExec: -            # On OS X 10.10 and older, we need to re-exec to enable interceptors. +            # On OS X 10.10 and older, we need to re-exec to enable +            # interceptors.              self.runCmd("continue")          report_count = 0 -        while self.dbg.GetSelectedTarget().process.GetSelectedThread().GetStopReason() == lldb.eStopReasonInstrumentation: +        while self.dbg.GetSelectedTarget().process.GetSelectedThread( +        ).GetStopReason() == lldb.eStopReasonInstrumentation:              report_count += 1 -            stop_description = self.dbg.GetSelectedTarget().process.GetSelectedThread().GetStopDescription(100) +            stop_description = self.dbg.GetSelectedTarget( +            ).process.GetSelectedThread().GetStopDescription(100)              self.assertTrue( -                 (stop_description == "Data race detected") or -                 (stop_description == "Use of deallocated memory detected") or -                 (stop_description == "Thread leak detected") or -                 (stop_description == "Use of an uninitialized or destroyed mutex detected") or -                 (stop_description == "Unlock of an unlocked mutex (or by a wrong thread) detected") +                (stop_description == "Data race detected") or +                (stop_description == "Use of deallocated memory detected") or +                (stop_description == "Thread leak detected") or +                (stop_description == "Use of an uninitialized or destroyed mutex detected") or +                (stop_description == "Unlock of an unlocked mutex (or by a wrong thread) detected")              ) -            self.expect("thread info -s", "The extended stop info should contain the TSan provided fields", -                substrs = ["instrumentation_class", "description", "mops"]) +            self.expect( +                "thread info -s", +                "The extended stop info should contain the TSan provided fields", +                substrs=[ +                    "instrumentation_class", +                    "description", +                    "mops"])              output_lines = self.res.GetOutput().split('\n')              json_line = '\n'.join(output_lines[2:])              data = json.loads(json_line)              self.assertEqual(data["instrumentation_class"], "ThreadSanitizer") -            backtraces = self.dbg.GetSelectedTarget().process.GetSelectedThread().GetStopReasonExtendedBacktraces(lldb.eInstrumentationRuntimeTypeThreadSanitizer) +            backtraces = self.dbg.GetSelectedTarget().process.GetSelectedThread( +            ).GetStopReasonExtendedBacktraces(lldb.eInstrumentationRuntimeTypeThreadSanitizer)              self.assertTrue(backtraces.GetSize() >= 1)              self.runCmd("continue") -        self.assertEqual(self.dbg.GetSelectedTarget().process.GetState(), lldb.eStateExited, PROCESS_EXITED) +        self.assertEqual( +            self.dbg.GetSelectedTarget().process.GetState(), +            lldb.eStateExited, +            PROCESS_EXITED) | 
