From 0c03f22061afd37600d28493f0a3c4d1569efb5e Mon Sep 17 00:00:00 2001 From: Andrea Terzolo Date: Wed, 15 Mar 2023 19:15:54 +0100 Subject: [PATCH] tests: add 2 new tests Signed-off-by: Andrea Terzolo --- userspace/libsinsp/test/table/event_table.cpp | 51 +++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/userspace/libsinsp/test/table/event_table.cpp b/userspace/libsinsp/test/table/event_table.cpp index 46b35948ab..f9288f8225 100644 --- a/userspace/libsinsp/test/table/event_table.cpp +++ b/userspace/libsinsp/test/table/event_table.cpp @@ -2,7 +2,7 @@ #include /* These numbers must be updated when we add new events */ -#define SYSCALL_EVENTS_NUM 344 +#define SYSCALL_EVENTS_NUM 346 #define TRACEPOINT_EVENTS_NUM 6 #define METAEVENTS_NUM 19 #define PLUGIN_EVENTS_NUM 1 @@ -101,14 +101,59 @@ TEST(event_table, check_unique_events_syscall_category) case EC_SCHEDULER: case EC_INTERNAL: break; - + /* If we fall here it means that some events have more than one syscall category! */ default: goto end; break; - } + } } end: ASSERT_EQ(event_num, PPM_EVENT_MAX); } + +TEST(events, check_event_names) +{ + std::map event_names_count; + + for(int evt = 0; evt < PPM_EVENT_MAX; evt++) + { + if(libsinsp::events::is_old_version_event((ppm_event_code)evt)) + { + continue; + } + + event_names_count[scap_get_event_info_table()[evt].name]++; + } + + for(const auto& evt : event_names_count) + { + /* NA occurrences should be equal to unknown events number, so more than 2 */ + if(evt.first.compare("NA") != 0) + { + /* all events that use exit and enter events should have `evt.second == 2` + * while events paired with a `NA` event should have `evt.second == 1` + */ + ASSERT_TRUE(evt.second <= 2) << "[fail] " << evt.first << " = " << evt.second << std::endl; + } + } +} + +TEST(events, check_usage_of_EC_UNKNOWN_flag) +{ + /* Every time an event is marked with the `EC_UNKNOWN` flag we should use `NA` as its name */ + std::string unknown_name = "NA"; + for(int evt = 0; evt < PPM_EVENT_MAX; evt++) + { + if(unknown_name.compare(scap_get_event_info_table()[evt].name) == 0) + { + ASSERT_TRUE(libsinsp::events::is_unknown_event((ppm_event_code)evt)) << "[fail] event " << evt << " should have the EC_UNKNOWN flag"; + } + + if(libsinsp::events::is_unknown_event((ppm_event_code)evt)) + { + ASSERT_TRUE(unknown_name.compare(scap_get_event_info_table()[evt].name) == 0) << "[fail] event " << evt << " should have NA as its name"; + } + } +}