(root)/
glibc-2.38/
nptl/
test-rwlock-printers.py
       1  # Common tests for the RWLockPrinter class.
       2  #
       3  # Copyright (C) 2016-2023 Free Software Foundation, Inc.
       4  # This file is part of the GNU C Library.
       5  #
       6  # The GNU C Library is free software; you can redistribute it and/or
       7  # modify it under the terms of the GNU Lesser General Public
       8  # License as published by the Free Software Foundation; either
       9  # version 2.1 of the License, or (at your option) any later version.
      10  #
      11  # The GNU C Library is distributed in the hope that it will be useful,
      12  # but WITHOUT ANY WARRANTY; without even the implied warranty of
      13  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      14  # Lesser General Public License for more details.
      15  #
      16  # You should have received a copy of the GNU Lesser General Public
      17  # License along with the GNU C Library; if not, see
      18  # <https://www.gnu.org/licenses/>.
      19  
      20  import sys
      21  
      22  from test_printers_common import *
      23  
      24  test_source = sys.argv[1]
      25  test_bin = sys.argv[2]
      26  printer_files = sys.argv[3:]
      27  printer_names = ['global glibc-pthread-locks']
      28  
      29  try:
      30      init_test(test_bin, printer_files, printer_names)
      31      go_to_main()
      32  
      33      var = 'rwlock'
      34      to_string = 'pthread_rwlock_t'
      35  
      36      break_at(test_source, 'Test locking (reader)')
      37      continue_cmd() # Go to test_locking_reader
      38      test_printer(var, to_string, {'Status': 'Not acquired'})
      39      next_cmd()
      40      test_printer(var, to_string, {'Status': r'Acquired \(Read\)', 'Readers': '1'})
      41      next_cmd()
      42      test_printer(var, to_string, {'Readers': '2'})
      43      next_cmd()
      44      test_printer(var, to_string, {'Readers': '3'})
      45  
      46      break_at(test_source, 'Test locking (writer)')
      47      continue_cmd() # Go to test_locking_writer
      48      test_printer(var, to_string, {'Status': 'Not acquired'})
      49      next_cmd()
      50      thread_id = get_current_thread_lwpid()
      51      test_printer(var, to_string, {'Status': r'Acquired \(Write\)',
      52                                    'Writer ID': thread_id})
      53  
      54      continue_cmd() # Exit
      55  
      56  except (NoLineError, pexpect.TIMEOUT) as exception:
      57      print('Error: {0}'.format(exception))
      58      result = FAIL
      59  
      60  else:
      61      print('Test succeeded.')
      62      result = PASS
      63  
      64  exit(result)