| # Common tests for the MutexPrinter and MutexAttributesPrinter classes. |
| # |
| # Copyright (C) 2016-2018 Free Software Foundation, Inc. |
| # This file is part of the GNU C Library. |
| # |
| # The GNU C Library is free software; you can redistribute it and/or |
| # modify it under the terms of the GNU Lesser General Public |
| # License as published by the Free Software Foundation; either |
| # version 2.1 of the License, or (at your option) any later version. |
| # |
| # The GNU C Library is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| # Lesser General Public License for more details. |
| # |
| # You should have received a copy of the GNU Lesser General Public |
| # License along with the GNU C Library; if not, see |
| # <http://www.gnu.org/licenses/>. |
| |
| import sys |
| |
| from test_printers_common import * |
| |
| test_source = sys.argv[1] |
| test_bin = sys.argv[2] |
| printer_files = sys.argv[3:] |
| printer_names = ['global glibc-pthread-locks'] |
| PRIOCEILING = 42 |
| |
| try: |
| init_test(test_bin, printer_files, printer_names) |
| go_to_main() |
| |
| check_debug_symbol('struct pthread_mutexattr') |
| |
| mutex_var = 'mutex' |
| mutex_to_string = 'pthread_mutex_t' |
| |
| attr_var = 'attr' |
| attr_to_string = 'pthread_mutexattr_t' |
| |
| break_at(test_source, 'Set type') |
| continue_cmd() # Go to test_settype |
| next_cmd(2) |
| test_printer(attr_var, attr_to_string, {'Type': 'Error check'}) |
| test_printer(mutex_var, mutex_to_string, {'Type': 'Error check'}) |
| next_cmd(2) |
| test_printer(attr_var, attr_to_string, {'Type': 'Recursive'}) |
| test_printer(mutex_var, mutex_to_string, {'Type': 'Recursive'}) |
| next_cmd(2) |
| test_printer(attr_var, attr_to_string, {'Type': 'Normal'}) |
| test_printer(mutex_var, mutex_to_string, {'Type': 'Normal'}) |
| |
| break_at(test_source, 'Set robust') |
| continue_cmd() # Go to test_setrobust |
| next_cmd(2) |
| test_printer(attr_var, attr_to_string, {'Robust': 'Yes'}) |
| test_printer(mutex_var, mutex_to_string, {'Robust': 'Yes'}) |
| next_cmd(2) |
| test_printer(attr_var, attr_to_string, {'Robust': 'No'}) |
| test_printer(mutex_var, mutex_to_string, {'Robust': 'No'}) |
| |
| break_at(test_source, 'Set shared') |
| continue_cmd() # Go to test_setpshared |
| next_cmd(2) |
| test_printer(attr_var, attr_to_string, {'Shared': 'Yes'}) |
| test_printer(mutex_var, mutex_to_string, {'Shared': 'Yes'}) |
| next_cmd(2) |
| test_printer(attr_var, attr_to_string, {'Shared': 'No'}) |
| test_printer(mutex_var, mutex_to_string, {'Shared': 'No'}) |
| |
| break_at(test_source, 'Set protocol') |
| continue_cmd() # Go to test_setprotocol |
| next_cmd(2) |
| test_printer(attr_var, attr_to_string, {'Protocol': 'Priority inherit'}) |
| test_printer(mutex_var, mutex_to_string, {'Protocol': 'Priority inherit'}) |
| next_cmd(2) |
| test_printer(attr_var, attr_to_string, {'Protocol': 'Priority protect'}) |
| test_printer(mutex_var, mutex_to_string, {'Protocol': 'Priority protect'}) |
| next_cmd(2) |
| test_printer(mutex_var, mutex_to_string, {'Priority ceiling': |
| str(PRIOCEILING)}) |
| next_cmd() |
| test_printer(attr_var, attr_to_string, {'Protocol': 'None'}) |
| test_printer(mutex_var, mutex_to_string, {'Protocol': 'None'}) |
| |
| continue_cmd() # Exit |
| |
| except (NoLineError, pexpect.TIMEOUT) as exception: |
| print('Error: {0}'.format(exception)) |
| result = FAIL |
| |
| except DebugError as exception: |
| print(exception) |
| result = UNSUPPORTED |
| |
| else: |
| print('Test succeeded.') |
| result = PASS |
| |
| exit(result) |