]>
Commit | Line | Data |
---|---|---|
23b5cae1 MG |
1 | # Common tests for the RWLockPrinter class. |
2 | # | |
6d7e8eda | 3 | # Copyright (C) 2016-2023 Free Software Foundation, Inc. |
23b5cae1 MG |
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 | |
5a82c748 | 18 | # <https://www.gnu.org/licenses/>. |
23b5cae1 MG |
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 | |
cc25c8b4 | 38 | test_printer(var, to_string, {'Status': 'Not acquired'}) |
23b5cae1 | 39 | next_cmd() |
cc25c8b4 | 40 | test_printer(var, to_string, {'Status': r'Acquired \(Read\)', 'Readers': '1'}) |
23b5cae1 MG |
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 | |
cc25c8b4 | 48 | test_printer(var, to_string, {'Status': 'Not acquired'}) |
23b5cae1 MG |
49 | next_cmd() |
50 | thread_id = get_current_thread_lwpid() | |
cc25c8b4 | 51 | test_printer(var, to_string, {'Status': r'Acquired \(Write\)', |
23b5cae1 MG |
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) |