(root)/
glibc-2.38/
nptl/
test-mutexattr-printers.py
       1  # Common tests for the MutexPrinter and MutexAttributesPrinter 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  PRIOCEILING = 42
      29  
      30  try:
      31      init_test(test_bin, printer_files, printer_names)
      32      go_to_main()
      33  
      34      check_debug_symbol('struct pthread_mutexattr')
      35  
      36      mutex_var = 'mutex'
      37      mutex_to_string = 'pthread_mutex_t'
      38  
      39      attr_var = 'attr'
      40      attr_to_string = 'pthread_mutexattr_t'
      41  
      42      break_at(test_source, 'Set type')
      43      continue_cmd() # Go to test_settype
      44      next_cmd(2)
      45      test_printer(attr_var, attr_to_string, {'Type': 'Error check'})
      46      test_printer(mutex_var, mutex_to_string, {'Type': 'Error check'})
      47      next_cmd(2)
      48      test_printer(attr_var, attr_to_string, {'Type': 'Recursive'})
      49      test_printer(mutex_var, mutex_to_string, {'Type': 'Recursive'})
      50      next_cmd(2)
      51      test_printer(attr_var, attr_to_string, {'Type': 'Normal'})
      52      test_printer(mutex_var, mutex_to_string, {'Type': 'Normal'})
      53  
      54      break_at(test_source, 'Set robust')
      55      continue_cmd() # Go to test_setrobust
      56      next_cmd(2)
      57      test_printer(attr_var, attr_to_string, {'Robust': 'Yes'})
      58      test_printer(mutex_var, mutex_to_string, {'Robust': 'Yes'})
      59      next_cmd(2)
      60      test_printer(attr_var, attr_to_string, {'Robust': 'No'})
      61      test_printer(mutex_var, mutex_to_string, {'Robust': 'No'})
      62  
      63      break_at(test_source, 'Set shared')
      64      continue_cmd() # Go to test_setpshared
      65      next_cmd(2)
      66      test_printer(attr_var, attr_to_string, {'Shared': 'Yes'})
      67      test_printer(mutex_var, mutex_to_string, {'Shared': 'Yes'})
      68      next_cmd(2)
      69      test_printer(attr_var, attr_to_string, {'Shared': 'No'})
      70      test_printer(mutex_var, mutex_to_string, {'Shared': 'No'})
      71  
      72      break_at(test_source, 'Set protocol')
      73      continue_cmd() # Go to test_setprotocol
      74      next_cmd(2)
      75      test_printer(attr_var, attr_to_string, {'Protocol': 'Priority inherit'})
      76      test_printer(mutex_var, mutex_to_string, {'Protocol': 'Priority inherit'})
      77      next_cmd(2)
      78      test_printer(attr_var, attr_to_string, {'Protocol': 'Priority protect'})
      79      test_printer(mutex_var, mutex_to_string, {'Protocol': 'Priority protect'})
      80      next_cmd(2)
      81      test_printer(mutex_var, mutex_to_string, {'Priority ceiling':
      82                                                str(PRIOCEILING)})
      83      next_cmd()
      84      test_printer(attr_var, attr_to_string, {'Protocol': 'None'})
      85      test_printer(mutex_var, mutex_to_string, {'Protocol': 'None'})
      86  
      87      continue_cmd() # Exit
      88  
      89  except (NoLineError, pexpect.TIMEOUT) as exception:
      90      print('Error: {0}'.format(exception))
      91      result = FAIL
      92  
      93  except DebugError as exception:
      94      print(exception)
      95      result = UNSUPPORTED
      96  
      97  else:
      98      print('Test succeeded.')
      99      result = PASS
     100  
     101  exit(result)