]>
Commit | Line | Data |
---|---|---|
2571715f JB |
1 | From 1d90d844a39eb25ac3423f663b0409f61a064330 Mon Sep 17 00:00:00 2001 |
2 | From: Kokan <kokaipeter@gmail.com> | |
3 | Date: Thu, 27 Aug 2020 23:44:30 +0200 | |
4 | Subject: [PATCH] python/ack_tracker/test: remove dead code | |
5 | ||
6 | Signed-off-by: Kokan <kokaipeter@gmail.com> | |
7 | --- | |
8 | modules/python/tests/test_python_ack_tracker.c | 1 - | |
9 | 1 file changed, 1 deletion(-) | |
10 | ||
11 | diff --git a/modules/python/tests/test_python_ack_tracker.c b/modules/python/tests/test_python_ack_tracker.c | |
12 | index a9ac43f687..2e42e75f3f 100644 | |
13 | --- a/modules/python/tests/test_python_ack_tracker.c | |
14 | +++ b/modules/python/tests/test_python_ack_tracker.c | |
15 | @@ -121,7 +121,6 @@ ParameterizedTest(struct AckTrackerFactoryTestParams *param, python_ack_tracker, | |
16 | PyGILState_STATE gstate = PyGILState_Ensure(); | |
17 | ||
18 | PyObject *factory_args = Py_BuildValue("(N)", PyCFunction_New(&test_ack_callback, NULL)); | |
19 | - log_msg_new_empty(); | |
20 | PyObject *py_ack_tracker_factory_obj = PyObject_CallObject((PyObject *) param->ack_tracker_factory_type, | |
21 | factory_args); | |
22 | Py_XDECREF(factory_args); | |
23 | From 46fa90bdd3adee5bcbb2687cf00c08925c504c07 Mon Sep 17 00:00:00 2001 | |
24 | From: Kokan <kokaipeter@gmail.com> | |
25 | Date: Thu, 27 Aug 2020 23:44:30 +0200 | |
26 | Subject: [PATCH] python/ack_tracker/test: split parameterized test | |
27 | ||
28 | Parameterized tests are the worst in Criterion. Specially with pointers and ASLR. | |
29 | ||
30 | Causes test to fail when executed with ASAN: | |
31 | ``` | |
32 | ==3181004==ERROR: AddressSanitizer: SEGV on unknown address 0x7faeee7938a8 (pc 0x7f0f053880e7 bp 0x7faeee7938a0 sp 0x7ffe7fe59510 T0) | |
33 | ==3181004==The signal is caused by a READ memory access. | |
34 | #0 0x7f0f053880e7 in PyObject_Call (/usr/lib/libpython3.8.so.1.0+0x1420e7) | |
35 | #1 0x4f7f7c in python_ack_tracker_test_ack_tracker_factory_impl /home/kokan/src/syslog-ng/build/../modules/python/tests/test_python_ack_tracker.c:124:42 | |
36 | #2 0x7f0f05225e3e in criterion_internal_test_main (/usr/lib/libcriterion.so.3+0x8e3e) | |
37 | #3 0x4f7e34 in python_ack_tracker_test_ack_tracker_factory_jmp /home/kokan/src/syslog-ng/build/../modules/python/tests/test_python_ack_tracker.c:119:1 | |
38 | #4 0x7f0f05225308 (/usr/lib/libcriterion.so.3+0x8308) | |
39 | #5 0x7f0f05236b4c (/usr/lib/libcriterion.so.3+0x19b4c) | |
40 | #6 0x7f0f04626151 in __libc_start_main (/usr/lib/libc.so.6+0x28151) | |
41 | #7 0x41f43d in _start (/home/kokan/src/syslog-ng/build/modules/python/tests/Debug/test_python_ack_tracker+0x41f43d) | |
42 | ``` | |
43 | ||
44 | Signed-off-by: Kokan <kokaipeter@gmail.com> | |
45 | --- | |
46 | .../python/tests/test_python_ack_tracker.c | 39 +++++++++++-------- | |
47 | 1 file changed, 22 insertions(+), 17 deletions(-) | |
48 | ||
49 | diff --git a/modules/python/tests/test_python_ack_tracker.c b/modules/python/tests/test_python_ack_tracker.c | |
50 | index 2e42e75f3f..b573dc0249 100644 | |
51 | --- a/modules/python/tests/test_python_ack_tracker.c | |
52 | +++ b/modules/python/tests/test_python_ack_tracker.c | |
53 | @@ -97,31 +97,36 @@ struct AckTrackerFactoryTestParams | |
54 | AckTrackerType expected_ack_tracker_type; | |
55 | }; | |
56 | ||
57 | -ParameterizedTestParameters(python_ack_tracker, test_ack_tracker_factory) | |
58 | +Test(python_ack_tracker, test_instant_ack_tracker_factory) | |
59 | { | |
60 | - static struct AckTrackerFactoryTestParams params[2]; | |
61 | + PyGILState_STATE gstate = PyGILState_Ensure(); | |
62 | ||
63 | - /* PyAckTrackerFactory types and AckTrackerFactoryTestParams are all globals. | |
64 | - * Static initialization order is undefined. | |
65 | - */ | |
66 | - params[0] = (struct AckTrackerFactoryTestParams) | |
67 | - { | |
68 | - &py_instant_ack_tracker_factory_type, ACK_INSTANT | |
69 | - }; | |
70 | - params[1] = (struct AckTrackerFactoryTestParams) | |
71 | - { | |
72 | - &py_consecutive_ack_tracker_factory_type, ACK_CONSECUTIVE | |
73 | - }; | |
74 | + PyObject *factory_args = Py_BuildValue("(N)", PyCFunction_New(&test_ack_callback, NULL)); | |
75 | + | |
76 | + PyObject *py_ack_tracker_factory_obj = PyObject_CallObject((PyObject *) &py_instant_ack_tracker_factory_type, | |
77 | + factory_args); | |
78 | + Py_XDECREF(factory_args); | |
79 | + | |
80 | + cr_assert_not_null(py_ack_tracker_factory_obj); | |
81 | + cr_assert(py_is_ack_tracker_factory(py_ack_tracker_factory_obj)); | |
82 | + | |
83 | + PyAckTrackerFactory *py_ack_tracker_factory = (PyAckTrackerFactory *) py_ack_tracker_factory_obj; | |
84 | + cr_assert_not_null(py_ack_tracker_factory->ack_tracker_factory); | |
85 | + cr_assert_eq(ack_tracker_factory_get_type(py_ack_tracker_factory->ack_tracker_factory), | |
86 | + ACK_INSTANT); | |
87 | ||
88 | - return cr_make_param_array(struct AckTrackerFactoryTestParams, params, G_N_ELEMENTS(params)); | |
89 | + Py_XDECREF(py_ack_tracker_factory); | |
90 | + PyGILState_Release(gstate); | |
91 | } | |
92 | ||
93 | -ParameterizedTest(struct AckTrackerFactoryTestParams *param, python_ack_tracker, test_ack_tracker_factory) | |
94 | + | |
95 | +Test(python_ack_tracker, test_consecutive_ack_tracker_factory) | |
96 | { | |
97 | PyGILState_STATE gstate = PyGILState_Ensure(); | |
98 | ||
99 | PyObject *factory_args = Py_BuildValue("(N)", PyCFunction_New(&test_ack_callback, NULL)); | |
100 | - PyObject *py_ack_tracker_factory_obj = PyObject_CallObject((PyObject *) param->ack_tracker_factory_type, | |
101 | + | |
102 | + PyObject *py_ack_tracker_factory_obj = PyObject_CallObject((PyObject *) &py_consecutive_ack_tracker_factory_type, | |
103 | factory_args); | |
104 | Py_XDECREF(factory_args); | |
105 | ||
106 | @@ -131,7 +136,7 @@ ParameterizedTest(struct AckTrackerFactoryTestParams *param, python_ack_tracker, | |
107 | PyAckTrackerFactory *py_ack_tracker_factory = (PyAckTrackerFactory *) py_ack_tracker_factory_obj; | |
108 | cr_assert_not_null(py_ack_tracker_factory->ack_tracker_factory); | |
109 | cr_assert_eq(ack_tracker_factory_get_type(py_ack_tracker_factory->ack_tracker_factory), | |
110 | - param->expected_ack_tracker_type); | |
111 | + ACK_CONSECUTIVE); | |
112 | ||
113 | Py_XDECREF(py_ack_tracker_factory); | |
114 | PyGILState_Release(gstate); |