Skip to content
  1. Apr 19, 2012
  2. Apr 16, 2012
    • Johnny Chen's avatar
      Add the capability of supplying the pre/post-flight functions to the test suite such that · 44d24971
      Johnny Chen authored
      the pre-flight code gets executed during setUp() after the debugger instance is available
      and the post-flight code gets executed during tearDown() after the debugger instance has
      done killing the inferior and deleting all the target programs.
      
      Example:
      
      [11:32:48] johnny:/Volumes/data/lldb/svn/ToT/test $ ./dotest.py -A x86_64 -v -c ../examples/test/.lldb-pre-post-flight  functionalities/watchpoint/hello_watchpoint
      config: {'pre_flight': <function pre_flight at 0x1098541b8>, 'post_flight': <function post_flight at 0x109854230>}
      LLDB build dir: /Volumes/data/lldb/svn/ToT/build/Debug
      LLDB-139
      Path: /Volumes/data/lldb/svn/ToT
      URL: https://johnny@llvm.org/svn/llvm-project/lldb/trunk
      Repository Root: https://johnny@llvm.org/svn/llvm-project
      Repository UUID: 91177308-0d34-0410-b5e6-96231b3b80d8
      Revision: 154753
      Node Kind: directory
      Schedule: normal
      Last Changed Author: gclayton
      Last Changed Rev: 154730
      Last Changed Date: 2012-04-13 18:42:46 -0700 (Fri, 13 Apr 2012)
      
      
      lldb.pre_flight: def pre_flight(test):
          __import__("lldb")
          __import__("lldbtest")
          print "\nRunning pre-flight function:"
          print "for test case:", test
      
      lldb.post_flight: def post_flight(test):
          __import__("lldb")
          __import__("lldbtest")
          print "\nRunning post-flight function:"
          print "for test case:", test
      
      
      Session logs for test failures/errors/unexpected successes will go into directory '2012-04-16-11_34_08'
      Command invoked: python ./dotest.py -A x86_64 -v -c ../examples/test/.lldb-pre-post-flight functionalities/watchpoint/hello_watchpoint
      compilers=['clang']
      
      Configuration: arch=x86_64 compiler=clang
      ----------------------------------------------------------------------
      Collected 2 tests
      
      1: test_hello_watchpoint_with_dsym_using_watchpoint_set (TestMyFirstWatchpoint.HelloWatchpointTestCase)
         Test a simple sequence of watchpoint creation and watchpoint hit. ... 
      Running pre-flight function:
      for test case: test_hello_watchpoint_with_dsym_using_watchpoint_set (TestMyFirstWatchpoint.HelloWatchpointTestCase)
      
      Running post-flight function:
      for test case: test_hello_watchpoint_with_dsym_using_watchpoint_set (TestMyFirstWatchpoint.HelloWatchpointTestCase)
      ok
      2: test_hello_watchpoint_with_dwarf_using_watchpoint_set (TestMyFirstWatchpoint.HelloWatchpointTestCase)
         Test a simple sequence of watchpoint creation and watchpoint hit. ... 
      Running pre-flight function:
      for test case: test_hello_watchpoint_with_dwarf_using_watchpoint_set (TestMyFirstWatchpoint.HelloWatchpointTestCase)
      
      Running post-flight function:
      for test case: test_hello_watchpoint_with_dwarf_using_watchpoint_set (TestMyFirstWatchpoint.HelloWatchpointTestCase)
      ok
      
      ----------------------------------------------------------------------
      Ran 2 tests in 1.584s
      
      OK
      
      llvm-svn: 154847
      44d24971
  3. Apr 06, 2012
    • Johnny Chen's avatar
      Add a new option to the test driver, -N dsym or -N dwarf, in order to exclude tests decorated with · f1548d4f
      Johnny Chen authored
      either @dsym_test or @dwarf_test to be executed during the testsuite run.  There are still lots of
      Test*.py files which have not been decorated with the new decorator.
      
      An example:
      
      # From TestMyFirstWatchpoint.py ->
      class HelloWatchpointTestCase(TestBase):
      
          mydir = os.path.join("functionalities", "watchpoint", "hello_watchpoint")
      
          @dsym_test
          def test_hello_watchpoint_with_dsym_using_watchpoint_set(self):
              """Test a simple sequence of watchpoint creation and watchpoint hit."""
              self.buildDsym(dictionary=self.d)
              self.setTearDownCleanup(dictionary=self.d)
              self.hello_watchpoint()
      
          @dwarf_test
          def test_hello_watchpoint_with_dwarf_using_watchpoint_set(self):
              """Test a simple sequence of watchpoint creation and watchpoint hit."""
              self.buildDwarf(dictionary=self.d)
              self.setTearDownCleanup(dictionary=self.d)
              self.hello_watchpoint()
      
      
      # Invocation ->
      [17:50:14] johnny:/Volumes/data/lldb/svn/ToT/test $ ./dotest.py -N dsym -v -p TestMyFirstWatchpoint.py
      LLDB build dir: /Volumes/data/lldb/svn/ToT/build/Debug
      LLDB-137
      Path: /Volumes/data/lldb/svn/ToT
      URL: https://johnny@llvm.org/svn/llvm-project/lldb/trunk
      Repository Root: https://johnny@llvm.org/svn/llvm-project
      Repository UUID: 91177308-0d34-0410-b5e6-96231b3b80d8
      Revision: 154133
      Node Kind: directory
      Schedule: normal
      Last Changed Author: gclayton
      Last Changed Rev: 154109
      Last Changed Date: 2012-04-05 10:43:02 -0700 (Thu, 05 Apr 2012)
      
      
      
      Session logs for test failures/errors/unexpected successes will go into directory '2012-04-05-17_50_49'
      Command invoked: python ./dotest.py -N dsym -v -p TestMyFirstWatchpoint.py
      compilers=['clang']
      
      Configuration: arch=x86_64 compiler=clang
      ----------------------------------------------------------------------
      Collected 2 tests
      
      1: test_hello_watchpoint_with_dsym_using_watchpoint_set (TestMyFirstWatchpoint.HelloWatchpointTestCase)
         Test a simple sequence of watchpoint creation and watchpoint hit. ... skipped 'dsym tests'
      2: test_hello_watchpoint_with_dwarf_using_watchpoint_set (TestMyFirstWatchpoint.HelloWatchpointTestCase)
         Test a simple sequence of watchpoint creation and watchpoint hit. ... ok
      
      ----------------------------------------------------------------------
      Ran 2 tests in 1.138s
      
      OK (skipped=1)
      Session logs for test failures/errors/unexpected successes can be found in directory '2012-04-05-17_50_49'
      [17:50:50] johnny:/Volumes/data/lldb/svn/ToT/test $ 
      
      llvm-svn: 154154
      f1548d4f
  4. Mar 16, 2012
  5. Mar 15, 2012
  6. Feb 28, 2012
  7. Feb 09, 2012
  8. Feb 03, 2012
  9. Feb 01, 2012
  10. Jan 21, 2012
    • Johnny Chen's avatar
      o CommandObjectSettingsSet.cpp: · 98aceb08
      Johnny Chen authored
        Fix a bug where "settings set -r th" wouldn't complete.
      
      o UserSettingsController.cpp:
      
        Fix a bug where "settings set target.process." wouldn't complete.
      
      o test/functionalities/completion:
      
        Add various completion test cases related to 'settings set' command.
      
      llvm-svn: 148596
      98aceb08
  11. Dec 22, 2011
  12. Dec 03, 2011
  13. Nov 17, 2011
    • Johnny Chen's avatar
      Add an option '-S' to skip the build and cleanup while running the test. · 0fddfb2c
      Johnny Chen authored
      Use this option with care as you would need to build the inferior(s) by hand
      and build the executable(s) with the correct name(s).  This option can be used
      with '-# n' to stress test certain test cases for n number of times.
      
      An example:
      
      [11:55:11] johnny:/Volumes/data/lldb/svn/trunk/test/python_api/value $ ls
      Makefile		TestValueAPI.pyc	linked_list
      TestValueAPI.py		change_values		main.c
      [11:55:14] johnny:/Volumes/data/lldb/svn/trunk/test/python_api/value $ make EXE=test_with_dsym
      clang -gdwarf-2 -O0  -arch x86_64   -c -o main.o main.c
      clang -gdwarf-2 -O0  -arch x86_64   main.o -o "test_with_dsym"
      /usr/bin/dsymutil  -o "test_with_dsym.dSYM" "test_with_dsym"
      [11:55:20] johnny:/Volumes/data/lldb/svn/trunk/test/python_api/value $ cd ../..
      [11:55:24] johnny:/Volumes/data/lldb/svn/trunk/test $ ./dotest.py -v -# 10 -S -f ValueAPITestCase.test_with_dsym
      LLDB build dir: /Volumes/data/lldb/svn/trunk/build/Debug
      LLDB-89
      Path: /Volumes/data/lldb/svn/trunk
      URL: https://johnny@llvm.org/svn/llvm-project/lldb/trunk
      Repository Root: https://johnny@llvm.org/svn/llvm-project
      Repository UUID: 91177308-0d34-0410-b5e6-96231b3b80d8
      Revision: 144914
      Node Kind: directory
      Schedule: normal
      Last Changed Author: gclayton
      Last Changed Rev: 144911
      Last Changed Date: 2011-11-17 09:22:31 -0800 (Thu, 17 Nov 2011)
      
      
      
      Session logs for test failures/errors/unexpected successes will go into directory '2011-11-17-11_55_29'
      Command invoked: python ./dotest.py -v -# 10 -S -f ValueAPITestCase.test_with_dsym
      ----------------------------------------------------------------------
      Collected 1 test
      
      1: test_with_dsym (TestValueAPI.ValueAPITestCase)
         Exercise some SBValue APIs. ... ok
      
      ----------------------------------------------------------------------
      Ran 1 test in 1.163s
      
      OK
      1: test_with_dsym (TestValueAPI.ValueAPITestCase)
         Exercise some SBValue APIs. ... ok
      
      ----------------------------------------------------------------------
      Ran 1 test in 0.200s
      
      OK
      1: test_with_dsym (TestValueAPI.ValueAPITestCase)
         Exercise some SBValue APIs. ... ok
      
      ----------------------------------------------------------------------
      Ran 1 test in 0.198s
      
      OK
      1: test_with_dsym (TestValueAPI.ValueAPITestCase)
         Exercise some SBValue APIs. ... ok
      
      ----------------------------------------------------------------------
      Ran 1 test in 0.199s
      
      OK
      1: test_with_dsym (TestValueAPI.ValueAPITestCase)
         Exercise some SBValue APIs. ... ok
      
      ----------------------------------------------------------------------
      Ran 1 test in 0.239s
      
      OK
      1: test_with_dsym (TestValueAPI.ValueAPITestCase)
         Exercise some SBValue APIs. ... ok
      
      ----------------------------------------------------------------------
      Ran 1 test in 1.215s
      
      OK
      1: test_with_dsym (TestValueAPI.ValueAPITestCase)
         Exercise some SBValue APIs. ... ok
      
      ----------------------------------------------------------------------
      Ran 1 test in 0.105s
      
      OK
      1: test_with_dsym (TestValueAPI.ValueAPITestCase)
         Exercise some SBValue APIs. ... ok
      
      ----------------------------------------------------------------------
      Ran 1 test in 0.098s
      
      OK
      1: test_with_dsym (TestValueAPI.ValueAPITestCase)
         Exercise some SBValue APIs. ... ok
      
      ----------------------------------------------------------------------
      Ran 1 test in 0.195s
      
      OK
      1: test_with_dsym (TestValueAPI.ValueAPITestCase)
         Exercise some SBValue APIs. ... ok
      
      ----------------------------------------------------------------------
      Ran 1 test in 1.197s
      
      OK
      [11:55:34] johnny:/Volumes/data/lldb/svn/trunk/test $ 
      
      llvm-svn: 144919
      0fddfb2c
  14. Nov 16, 2011
  15. Oct 19, 2011
  16. Oct 07, 2011
  17. Sep 30, 2011
    • Johnny Chen's avatar
      o lldbtest.py: · 86268e44
      Johnny Chen authored
      Add a keyword argument 'endstr' to TestBase.expect() method to assert that the output
      will end with 'endstr'.
      
      Add TestBase.switch_to_thread_with_stop_reason(stop_reason) to select the thread with
      the stop reason = 'stop_reason' as the current thread.
      
      o TestWatchLocation.py:
      
      Modified to switch to the stopped thread with stop reason = watchpoint and to evaluate
      an expression with expected output for stronger assertion.
      
      llvm-svn: 140890
      86268e44
  18. Sep 15, 2011
  19. Aug 26, 2011
    • Johnny Chen's avatar
      Add a new attribute self.lldbHere, representing the fullpath to the 'lldb' executable · d890bfc9
      Johnny Chen authored
      built locally from the source tree.  This is distinguished from self.lldbExec, which
      can be used by test/benchmarks to measure the performances against other debuggers.
      
      You can use environment variable LLDB_EXEC to specify self.lldbExec to the dotest.py
      test driver, otherwise it is going to be populated with self.lldbHere.
      
      Modify the regular tests under test dir, i.e., not test/benchmarks, to use self.lldbHere.
      Also modify the benchmarks tests to use self.lldbHere when it needs an 'lldb' executable
      with debug info to do the performance measurements.
      
      llvm-svn: 138608
      d890bfc9
  20. Aug 24, 2011
  21. Aug 19, 2011
  22. Aug 17, 2011
  23. Aug 16, 2011
  24. Aug 12, 2011
    • Johnny Chen's avatar
      Add TestInferiorChanged.py to test that lldb reloads the inferior after it was... · 9f4f5d94
      Johnny Chen authored
      Add TestInferiorChanged.py to test that lldb reloads the inferior after it was changed during the debug session.
      First, main.c causes a crash, the inferior then gets re-built with main2.c which is not crashing.
      
      Add Base.cleanup(self, dictionary=None) for platform specfic way to do cleanup after build.
      This plugin method is used by the above test case to cleanup the main.c build before rebuild for main2.c.
      
      llvm-svn: 137500
      9f4f5d94
  25. Aug 11, 2011
  26. Aug 05, 2011
    • Johnny Chen's avatar
      o modify-python-lldb.py: · 36c5eb13
      Johnny Chen authored
        Add the rich comparison methods (__eq__, __ne__) to SBType, too.
      
      o lldbtest.py:
      
        Add debug utility method TestBase.DebugSBType().
      
      o test/python_api/type:
      
        Add tests for exercising SBType/SBTypeList API, including the SBTarget.FindTypes(type_name)
        API which returns a SBTypeList matching the type_name.
      
      llvm-svn: 136975
      36c5eb13
  27. Aug 03, 2011
    • Johnny Chen's avatar
      Add the real benchmarks comparing lldb against gdb for repeated expression evaluations. · aaa82ff9
      Johnny Chen authored
      Modify lldbbench.py so that lldbtest.line_number() utility function is available to
      BenchBase client as just line_number(), and modify lldbtest.py so that self.lldbExec
      (the full path for the 'lldb' executable) is available to BenchBase client as well.
      
      An example run of the test case on my MacBook Pro running Lion:
      
      1: test_compare_lldb_to_gdb (TestRepeatedExprs.RepeatedExprsCase)
         Test repeated expressions with lldb vs. gdb. ... 
      lldb_avg: 0.204339
      gdb_avg: 0.205721
      lldb_avg/gdb_avg: 0.993284
      ok
      
      llvm-svn: 136740
      aaa82ff9
  28. Aug 01, 2011
  29. Jul 30, 2011
    • Johnny Chen's avatar
      Add a @benchmarks_test decorator for test method we want to categorize as benchmarks test. · 5ccbccfc
      Johnny Chen authored
      The test driver now takes an option "+b" which enables to run just the benchmarks tests.
      By default, tests decorated with the @benchmarks_test decorator do not get run.
      
      Add an example benchmarks test directory which contains nothing for the time being,
      just to demonstrate the @benchmarks_test concept.
      
      For example,
      
      $ ./dotest.py -v benchmarks
      
      ...
      
      ----------------------------------------------------------------------
      Collected 2 tests
      
      1: test_with_gdb (TestRepeatedExprs.RepeatedExprssCase)
         Test repeated expressions with gdb. ... skipped 'benchmarks tests'
      2: test_with_lldb (TestRepeatedExprs.RepeatedExprssCase)
         Test repeated expressions with lldb. ... skipped 'benchmarks tests'
      
      ----------------------------------------------------------------------
      Ran 2 tests in 0.047s
      
      OK (skipped=2)
      $ ./dotest.py -v +b benchmarks
      
      ...
      
      ----------------------------------------------------------------------
      Collected 2 tests
      
      1: test_with_gdb (TestRepeatedExprs.RepeatedExprssCase)
         Test repeated expressions with gdb. ... running test_with_gdb
      benchmarks result for test_with_gdb
      ok
      2: test_with_lldb (TestRepeatedExprs.RepeatedExprssCase)
         Test repeated expressions with lldb. ... running test_with_lldb
      benchmarks result for test_with_lldb
      ok
      
      ----------------------------------------------------------------------
      Ran 2 tests in 0.270s
      
      OK
      
      Also mark some Python API tests which are missing the @python_api_test decorator.
      
      llvm-svn: 136553
      5ccbccfc
  30. Jul 16, 2011
  31. Jul 11, 2011
  32. Jun 27, 2011
    • Johnny Chen's avatar
      Add TestPrintObj.py to go with lang/objc/print-objc, which: · 89109ed1
      Johnny Chen authored
      Test "print object" where another thread blocks the print object from making progress.
      
      Set a breakpoint on the line in my_pthread_routine.  Then switch threads
      to the main thread, and do print the lock_me object.  Since that will
      try to get the lock already gotten by my_pthread_routime thread, it will
      have to switch to running all threads, and that should then succeed.
      
      llvm-svn: 133933
      89109ed1
  33. Jun 24, 2011
    • Johnny Chen's avatar
      o lldbtest.py: · b7373c92
      Johnny Chen authored
      Assign the test method name to self.testMethodName.  This can be useful for the
      test directory (see test/types for a good example) which houses a bunch of executables
      compiled from different source files.  The default build action is to create a.out as
      the binary executable, which can confuse the module cacheing mechanism and result in
      the debugger getting a stale image as the target to be debugged, and chaos ensues.
      
      o AbstractBase.py, TestThreadAPI.py:
      
      Use self.testMethodName to our advantage.
      
      o TestLoadUnload.py:
      
      Add expected failure marker to test case test_modules_search_paths().
      
      llvm-svn: 133768
      b7373c92
Loading