blob: 11b449e03bc24b1c82082cc8f3e5638b2a33e1eb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
// SPDX-License-Identifier: GPL-3.0-or-later
#include "ebpf_unittest.h"
ebpf_module_t test_em;
/**
* Initialize structure
*
* Initialize structure used to run unittests
*/
void ebpf_ut_initialize_structure(netdata_run_mode_t mode)
{
memset(&test_em, 0, sizeof(ebpf_module_t));
test_em.info.thread_name = strdupz("process");
test_em.info.config_name = test_em.info.thread_name;
test_em.kernels = NETDATA_V3_10 | NETDATA_V4_14 | NETDATA_V4_16 | NETDATA_V4_18 | NETDATA_V5_4 | NETDATA_V5_10 |
NETDATA_V5_14;
test_em.pid_map_size = ND_EBPF_DEFAULT_PID_SIZE;
test_em.apps_level = NETDATA_APPS_LEVEL_REAL_PARENT;
test_em.mode = mode;
}
/**
* Clean UP Memory
*
* Clean up allocated data during unit test;
*/
void ebpf_ut_cleanup_memory()
{
freez((void *)test_em.info.thread_name);
}
/**
* Load Binary
*
* Test load of legacy eBPF programs.
*
* @return It returns 0 on success and -1 otherwise.
*/
static int ebpf_ut_load_binary()
{
test_em.probe_links = ebpf_load_program(ebpf_plugin_dir, &test_em, running_on_kernel, isrh, &test_em.objects);
if (!test_em.probe_links)
return -1;
ebpf_unload_legacy_code(test_em.objects, test_em.probe_links);
return 0;
}
/**
* Load Real Binary
*
* Load an existent binary inside plugin directory.
*
* @return It returns 0 on success and -1 otherwise.
*/
int ebpf_ut_load_real_binary()
{
return ebpf_ut_load_binary();
}
/**
* Load fake Binary
*
* Try to load a binary not generated by netdata.
*
* @return It returns 0 on success and -1 otherwise. The success for this function means we could work properly with
* expected fails.
*/
int ebpf_ut_load_fake_binary()
{
const char *original = test_em.info.thread_name;
test_em.info.thread_name = strdupz("I_am_not_here");
int ret = ebpf_ut_load_binary();
ebpf_ut_cleanup_memory();
test_em.info.thread_name = original;
return !ret;
}
|