From 61a433f1c60239d2b0c17f19448b53649d9a8699 Mon Sep 17 00:00:00 2001 From: Luca Guerra Date: Mon, 17 Jun 2024 14:18:39 +0000 Subject: [PATCH] new(test): add test for gvisor config generator Signed-off-by: Luca Guerra --- userspace/libsinsp/test/CMakeLists.txt | 1 + userspace/libsinsp/test/gvisor_config.ut.cpp | 48 ++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 userspace/libsinsp/test/gvisor_config.ut.cpp diff --git a/userspace/libsinsp/test/CMakeLists.txt b/userspace/libsinsp/test/CMakeLists.txt index 3ea523ffa8..d19164013b 100644 --- a/userspace/libsinsp/test/CMakeLists.txt +++ b/userspace/libsinsp/test/CMakeLists.txt @@ -95,6 +95,7 @@ set(LIBSINSP_UNIT_TESTS_SOURCES events_proc.ut.cpp events_user.ut.cpp external_processor.ut.cpp + gvisor_config.ut.cpp mpsc_priority_queue.ut.cpp token_bucket.ut.cpp ppm_api_version.ut.cpp diff --git a/userspace/libsinsp/test/gvisor_config.ut.cpp b/userspace/libsinsp/test/gvisor_config.ut.cpp new file mode 100644 index 0000000000..46aa1e7159 --- /dev/null +++ b/userspace/libsinsp/test/gvisor_config.ut.cpp @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +/* +Copyright (C) 2024 The Falco Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +*/ + +#include + +#include +#include + +#include +#include + +TEST(gvisor_config, generate_parse) +{ + std::string socket_path = "/run/falco/gvisor.sock"; + std::string config = gvisor_config::generate(socket_path); + Json::Value root; + Json::CharReaderBuilder builder; + const std::unique_ptr reader(builder.newCharReader()); + std::string err; + + // check that the output is valid json + bool json_parse = reader->parse(config.c_str(), config.c_str() + config.size(), &root, &err); + EXPECT_TRUE(json_parse) << "Could not parse configuration file contents: " + err; + + // check that the sink is defined + // according to https://github.com/google/gvisor/blob/master/tools/tracereplay/README.md#how-to-use-it + EXPECT_EQ(root["trace_session"]["sinks"][0]["config"]["endpoint"].asCString(), socket_path); + + // check that we can parse it + auto parse_result = scap_gvisor::parsers::parse_config(config); + EXPECT_EQ(parse_result.status, SCAP_SUCCESS); + EXPECT_EQ(parse_result.socket_path, socket_path); +}