(root)/
glibc-2.38/
nptl/
test-rwlockattr-printers.py
       1  # Common tests for the RWLockPrinter and RWLockAttributesPrinter classes.
       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      check_debug_symbol('struct pthread_rwlockattr')
      34  
      35      rwlock_var = 'rwlock'
      36      rwlock_to_string = 'pthread_rwlock_t'
      37  
      38      attr_var = 'attr'
      39      attr_to_string = 'pthread_rwlockattr_t'
      40  
      41      break_at(test_source, 'Set kind')
      42      continue_cmd() # Go to test_setkind_np
      43      next_cmd(2)
      44      test_printer(rwlock_var, rwlock_to_string, {'Prefers': 'Readers'})
      45      test_printer(attr_var, attr_to_string, {'Prefers': 'Readers'})
      46      next_cmd(2)
      47      test_printer(rwlock_var, rwlock_to_string, {'Prefers': 'Writers'})
      48      test_printer(attr_var, attr_to_string, {'Prefers': 'Writers'})
      49      next_cmd(2)
      50      test_printer(rwlock_var, rwlock_to_string, {'Prefers': 'Writers no recursive readers'})
      51      test_printer(attr_var, attr_to_string, {'Prefers': 'Writers no recursive readers'})
      52  
      53      break_at(test_source, 'Set shared')
      54      continue_cmd() # Go to test_setpshared
      55      next_cmd(2)
      56      test_printer(rwlock_var, rwlock_to_string, {'Shared': 'Yes'})
      57      test_printer(attr_var, attr_to_string, {'Shared': 'Yes'})
      58      next_cmd(2)
      59      test_printer(rwlock_var, rwlock_to_string, {'Shared': 'No'})
      60      test_printer(attr_var, attr_to_string, {'Shared': 'No'})
      61  
      62      continue_cmd() # Exit
      63  
      64  except (NoLineError, pexpect.TIMEOUT) as exception:
      65      print('Error: {0}'.format(exception))
      66      result = FAIL
      67  
      68  except DebugError as exception:
      69      print(exception)
      70      result = UNSUPPORTED
      71  
      72  else:
      73      print('Test succeeded.')
      74      result = PASS
      75  
      76  exit(result)