Skip to content

Commit 4283225

Browse files
committed
cleanup(sinsp): remove some duplicated code
Signed-off-by: Andrea Terzolo <[email protected]>
1 parent 0e177db commit 4283225

File tree

2 files changed

+46
-18
lines changed

2 files changed

+46
-18
lines changed

userspace/libsinsp/sinsp_filtercheck_event.cpp

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1517,30 +1517,23 @@ uint8_t* sinsp_filter_check_event::extract_single(sinsp_evt* evt,
15171517
} else {
15181518
return NULL;
15191519
}
1520-
case TYPE_COUNT_PROCINFO: {
1521-
uint16_t etype = evt->get_type();
1520+
case TYPE_COUNT_PROCINFO:
1521+
case TYPE_COUNT_THREADINFO: {
1522+
m_val.u32 = 0;
1523+
if(evt->get_type() != PPME_PROCINFO_E) {
1524+
RETURN_EXTRACT_VAR(m_val.u32);
1525+
}
15221526

1523-
if(etype == PPME_PROCINFO_E) {
1527+
if(m_field_id == TYPE_COUNT_THREADINFO) {
1528+
m_val.u32 = 1;
1529+
} else if(m_field_id == TYPE_COUNT_PROCINFO) {
15241530
sinsp_threadinfo* tinfo = evt->get_thread_info();
1525-
15261531
if(tinfo != NULL && tinfo->is_main_thread()) {
15271532
m_val.u32 = 1;
1528-
RETURN_EXTRACT_VAR(m_val.u32);
15291533
}
15301534
}
1535+
RETURN_EXTRACT_VAR(m_val.u32);
15311536
}
1532-
1533-
break;
1534-
case TYPE_COUNT_THREADINFO: {
1535-
uint16_t etype = evt->get_type();
1536-
1537-
if(etype == PPME_PROCINFO_E) {
1538-
m_val.u32 = 1;
1539-
RETURN_EXTRACT_VAR(m_val.u32);
1540-
}
1541-
}
1542-
1543-
break;
15441537
case TYPE_ABSPATH:
15451538
return extract_abspath(evt, len);
15461539
case TYPE_BUFLEN_IN:

userspace/libsinsp/test/filterchecks/evt.cpp

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ TEST_F(sinsp_with_test_input, EVT_FILTER_check_evt_arg_uid) {
212212
}
213213

214214
// Test that for rawarg.X we are correctly retrieving the correct field type/format.
215-
TEST_F(sinsp_with_test_input, rawarg_madness) {
215+
TEST_F(sinsp_with_test_input, EVT_FILTER_rawarg_madness) {
216216
add_default_init_thread();
217217
open_inspector();
218218

@@ -255,3 +255,38 @@ TEST_F(sinsp_with_test_input, rawarg_madness) {
255255
ASSERT_EQ(get_field_as_string(evt, "evt.rawarg.addr"), "FFFFFFFFFFFFFFFF");
256256
ASSERT_ANY_THROW(eval_filter(evt, "evt.rawarg.addr > 0")); // PT_SOCKADDR is not comparable
257257
}
258+
259+
TEST_F(sinsp_with_test_input, EVT_FILTER_thread_proc_info) {
260+
DEFAULT_TREE
261+
262+
// Random event on the init process (main thread) the field should be 0. This field are used
263+
// only when the event is `PPME_PROCINFO_E`
264+
auto evt = generate_random_event(INIT_TID);
265+
ASSERT_EQ(get_field_as_string(evt, "evt.count.procinfo"), "0");
266+
ASSERT_EQ(get_field_as_string(evt, "evt.count.threadinfo"), "0");
267+
268+
// Same for a secondary thread
269+
evt = generate_random_event(p1_t2_tid);
270+
ASSERT_EQ(get_field_as_string(evt, "evt.count.procinfo"), "0");
271+
ASSERT_EQ(get_field_as_string(evt, "evt.count.threadinfo"), "0");
272+
273+
// Now both field shoul be 1
274+
evt = add_event_advance_ts(increasing_ts(),
275+
INIT_TID,
276+
PPME_PROCINFO_E,
277+
2,
278+
(uint64_t)0,
279+
(uint64_t)0);
280+
ASSERT_EQ(get_field_as_string(evt, "evt.count.procinfo"), "1");
281+
ASSERT_EQ(get_field_as_string(evt, "evt.count.threadinfo"), "1");
282+
283+
// Since this is not a main thread only `evt.count.threadinfo` should be 1
284+
evt = add_event_advance_ts(increasing_ts(),
285+
p1_t2_tid,
286+
PPME_PROCINFO_E,
287+
2,
288+
(uint64_t)0,
289+
(uint64_t)0);
290+
ASSERT_EQ(get_field_as_string(evt, "evt.count.procinfo"), "0");
291+
ASSERT_EQ(get_field_as_string(evt, "evt.count.threadinfo"), "1");
292+
}

0 commit comments

Comments
 (0)