Introduce common generic header file
[librseq.git] / tests / run_param_test.tap
CommitLineData
544cdc88 1#!/bin/bash
90702366 2# SPDX-License-Identifier: MIT
f2d7b530 3# SPDX-FileCopyrightText: 2020 EfficiOS Inc.
544cdc88
MJ
4
5SH_TAP=1
6
7if [ "x${RSEQ_TESTS_SRCDIR:-}" != "x" ]; then
8 UTILSSH="$RSEQ_TESTS_SRCDIR/utils/utils.sh"
9else
10 UTILSSH="$(dirname "$0")/utils/utils.sh"
11fi
12
13# shellcheck source=./utils/utils.sh
14source "$UTILSSH"
15
16
17EXTRA_ARGS=("${@}")
18
19REPS=1000
20NR_CPUS=$(nproc)
21NR_THREADS=$((6 * NR_CPUS))
22
23
24function do_test()
25{
26 local test_name=$1
27 shift
28 local args=("$@")
29
30 "$RSEQ_TESTS_BUILDDIR"/param_test "${args[@]}" -r ${REPS} -t ${NR_THREADS} "${EXTRA_ARGS[@]}"
31 ok $? "Running test ${test_name}"
32
33 "$RSEQ_TESTS_BUILDDIR"/param_test_compare_twice "${args[@]}" -r ${REPS} -t ${NR_THREADS} "${EXTRA_ARGS[@]}"
34 ok $? "Running compare-twice test ${test_name}"
369688a5
MD
35
36 "$RSEQ_TESTS_BUILDDIR"/param_test_mm_cid "${args[@]}" -r ${REPS} -t ${NR_THREADS} "${EXTRA_ARGS[@]}"
04bb9984
MD
37 res=$?
38 skip $(($res != 2 )) "Running mm_cid test ${test_name}" 1 || {
39 ok $res "Running mm_cid test ${test_name}"
40 }
369688a5
MD
41
42 "$RSEQ_TESTS_BUILDDIR"/param_test_mm_cid_compare_twice "${args[@]}" -r ${REPS} -t ${NR_THREADS} "${EXTRA_ARGS[@]}"
04bb9984
MD
43 res=$?
44 skip $(($res != 2)) "Running compare-twice mm_cid test ${test_name}" 1 || {
45 ok $res "Running compare-twice mm_cid test ${test_name}"
46 }
544cdc88
MJ
47}
48
49function do_tests()
50{
51 local args=("$@")
52
53 do_test "spinlock" -T s "${@}"
54 do_test "list" -T l "${@}"
55 do_test "buffer" -T b "${@}"
56 do_test "buffer with barrier" -T b -M "${@}"
57 do_test "memcpy" -T m "${@}"
58 do_test "memcpy with barrier" -T m -M "${@}"
59 do_test "increment" -T i "${@}"
5368dcb4 60 do_test "membarrier" -T r "${@}"
544cdc88
MJ
61}
62
63function do_tests_loops()
64{
65 local nr_loops="$1"
66
67 do_tests -1 "${nr_loops}"
68 do_tests -2 "${nr_loops}"
69 do_tests -3 "${nr_loops}"
70 do_tests -4 "${nr_loops}"
71 do_tests -5 "${nr_loops}"
72 do_tests -6 "${nr_loops}"
73 do_tests -7 "${nr_loops}"
74 do_tests -8 "${nr_loops}"
75 do_tests -9 "${nr_loops}"
76}
77
78function do_tests_inject()
79{
80 local args=("$@")
81
82 do_tests -7 -1 "${@}"
83 do_tests -8 -1 "${@}"
84 do_tests -9 -1 "${@}"
85}
86
87
d1cdec98
MJ
88"$RSEQ_TESTS_BUILDDIR"/param_test -c
89if [[ $? == 2 ]]; then
90 plan_skip_all "The rseq syscall is unavailable"
91else
369688a5 92 plan_tests $(( 4 * 8 * 37 ))
d1cdec98 93fi
544cdc88
MJ
94
95diag "Default parameters"
96do_tests
97
98diag "Loop injection: 10000 loops"
99do_tests_loops 10000
100
101diag "Yield injection (25%)"
102do_tests_inject -m 4 -y
103
104diag "Yield injection (50%)"
105do_tests_inject -m 2 -y
106
107diag "Yield injection (100%)"
108do_tests_inject -m 1 -y
109
110diag "Kill injection (25%)"
111do_tests_inject -m 4 -k
112
113diag "Kill injection (50%)"
114do_tests_inject -m 2 -k
115
116diag "Kill injection (100%)"
117do_tests_inject -m 1 -k
118
119diag "Sleep injection (1ms, 25%)"
120do_tests_inject -m 4 -s 1
121
122diag "Sleep injection (1ms, 50%)"
123do_tests_inject -m 2 -s 1
124
125diag "Sleep injection (1ms, 100%)"
126do_tests_inject -m 1 -s 1
This page took 0.028295 seconds and 4 git commands to generate.