Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
test
raii_event_tests.cpp
Go to the documentation of this file.
1
// Copyright (c) 2016-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <event2/event.h>
6
7
#include <cstdlib>
8
#include <map>
9
10
#include <
support/events.h
>
11
12
#include <
test/util/setup_common.h
>
13
14
#include <boost/test/unit_test.hpp>
15
16
BOOST_FIXTURE_TEST_SUITE
(raii_event_tests,
BasicTestingSetup
)
17
18
#ifdef EVENT_SET_MEM_FUNCTIONS_IMPLEMENTED
19
20
static
std::map<void*, short> tags;
21
static
std::map<void*, uint16_t> orders;
22
static
uint16_t tagSequence = 0;
23
24
static
void
* tag_malloc(
size_t
sz) {
25
void
* mem = malloc(sz);
26
if
(!mem)
return
mem;
27
tags[mem]++;
28
orders[mem] = tagSequence++;
29
return
mem;
30
}
31
32
static
void
tag_free(
void
* mem) {
33
tags[mem]--;
34
orders[mem] = tagSequence++;
35
free(mem);
36
}
37
38
BOOST_AUTO_TEST_CASE
(raii_event_creation)
39
{
40
event_set_mem_functions(tag_malloc, realloc, tag_free);
41
42
void
* base_ptr =
nullptr
;
43
{
44
auto
base =
obtain_event_base
();
45
base_ptr = (
void
*)base.get();
46
BOOST_CHECK
(tags[base_ptr] == 1);
47
}
48
BOOST_CHECK
(tags[base_ptr] == 0);
49
50
void
* event_ptr =
nullptr
;
51
{
52
auto
base =
obtain_event_base
();
53
auto
event
=
obtain_event
(base.get(), -1, 0,
nullptr
,
nullptr
);
54
55
base_ptr = (
void
*)base.get();
56
event_ptr = (
void
*)event.get();
57
58
BOOST_CHECK
(tags[base_ptr] == 1);
59
BOOST_CHECK
(tags[event_ptr] == 1);
60
}
61
BOOST_CHECK
(tags[base_ptr] == 0);
62
BOOST_CHECK
(tags[event_ptr] == 0);
63
64
event_set_mem_functions(malloc, realloc, free);
65
}
66
67
BOOST_AUTO_TEST_CASE
(raii_event_order)
68
{
69
event_set_mem_functions(tag_malloc, realloc, tag_free);
70
71
void
* base_ptr =
nullptr
;
72
void
* event_ptr =
nullptr
;
73
{
74
auto
base =
obtain_event_base
();
75
auto
event
=
obtain_event
(base.get(), -1, 0,
nullptr
,
nullptr
);
76
77
base_ptr = (
void
*)base.get();
78
event_ptr = (
void
*)event.get();
79
80
// base should have allocated before event
81
BOOST_CHECK
(orders[base_ptr] < orders[event_ptr]);
82
}
83
// base should be freed after event
84
BOOST_CHECK
(orders[base_ptr] > orders[event_ptr]);
85
86
event_set_mem_functions(malloc, realloc, free);
87
}
88
89
#endif
// EVENT_SET_MEM_FUNCTIONS_IMPLEMENTED
90
91
BOOST_AUTO_TEST_SUITE_END
()
BOOST_FIXTURE_TEST_SUITE
BOOST_FIXTURE_TEST_SUITE(cuckoocache_tests, BasicTestingSetup)
Test Suite for CuckooCache.
BOOST_AUTO_TEST_SUITE_END
BOOST_AUTO_TEST_SUITE_END()
events.h
obtain_event
raii_event obtain_event(struct event_base *base, evutil_socket_t s, short events, event_callback_fn cb, void *arg)
Definition
events.h:37
obtain_event_base
raii_event_base obtain_event_base()
Definition
events.h:30
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(ipc_tests)
Definition
ipc_tests.cpp:13
BOOST_CHECK
#define BOOST_CHECK(expr)
Definition
object.cpp:16
setup_common.h
BasicTestingSetup
Basic testing setup.
Definition
setup_common.h:64
Generated on
for Bitcoin Core by
1.17.0