From 36493ef3231a513608a91d768345f40618301d47 Mon Sep 17 00:00:00 2001 From: Damian Pietruchowski Date: Thu, 6 Apr 2017 16:13:09 +0200 Subject: [PATCH] [SmokeTest] Add SIGINT and SIGSEGV handling Change-Id: I497435a6d89a7df26bbfe19e4fd308be2dd9b55d Signed-off-by: Damian Pietruchowski --- src/unit_tests/extensive_smoke_test.cc | 4 +++- src/unit_tests/smoke_test.cc | 6 +++--- src/unit_tests/smoke_utils.cc | 6 ++++++ src/unit_tests/smoke_utils.h | 5 +++++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/unit_tests/extensive_smoke_test.cc b/src/unit_tests/extensive_smoke_test.cc index 58f11f6..043c293 100644 --- a/src/unit_tests/extensive_smoke_test.cc +++ b/src/unit_tests/extensive_smoke_test.cc @@ -382,7 +382,9 @@ int main(int argc, char** argv) { ::testing::GTEST_FLAG(filter) = "SmokeTest.*"; } testing::InitGoogleTest(&argc, argv); - testing::Environment *env = testing::AddGlobalTestEnvironment( + env = testing::AddGlobalTestEnvironment( new common_installer::SmokeEnvironment(request_mode)); + signal(SIGINT, signalHandler); + signal(SIGSEGV, signalHandler); return RUN_ALL_TESTS(); } diff --git a/src/unit_tests/smoke_test.cc b/src/unit_tests/smoke_test.cc index 38c2b01..9b90c2a 100644 --- a/src/unit_tests/smoke_test.cc +++ b/src/unit_tests/smoke_test.cc @@ -3,10 +3,8 @@ // found in the LICENSE file. #include - #include -#include #include #include "unit_tests/smoke_utils.h" @@ -711,7 +709,9 @@ int main(int argc, char** argv) { ::testing::GTEST_FLAG(filter) = "SmokeTest.*"; } testing::InitGoogleTest(&argc, argv); - testing::Environment *env = testing::AddGlobalTestEnvironment( + env = testing::AddGlobalTestEnvironment( new common_installer::SmokeEnvironment(request_mode)); + signal(SIGINT, signalHandler); + signal(SIGSEGV, signalHandler); return RUN_ALL_TESTS(); } diff --git a/src/unit_tests/smoke_utils.cc b/src/unit_tests/smoke_utils.cc index 24f92b3..2ef8402 100644 --- a/src/unit_tests/smoke_utils.cc +++ b/src/unit_tests/smoke_utils.cc @@ -75,6 +75,11 @@ const char kPreloadApps[] = "/usr/apps"; const char kPreloadManifestDir[] = "/usr/share/packages"; const char kPreloadIcons[] = "/usr/share/icons"; +testing::Environment *env = nullptr; +void signalHandler(int signum) { + env->TearDown(); + exit(signum); +} ci::RequestMode ParseRequestMode(int argc, char** argv) { bo::options_description desc("Available options"); @@ -817,6 +822,7 @@ void UninstallAllAppsInDirectory(bf::path dir, bool is_preload) { } void UninstallAllSmokeApps(ci::RequestMode request_mode) { + std::cout << "Uninstalling all smoke apps" << std::endl; if (getuid() == 0 && request_mode == ci::RequestMode::GLOBAL) { bf::path root_path = kPreloadApps; UninstallAllAppsInDirectory(root_path, true); diff --git a/src/unit_tests/smoke_utils.h b/src/unit_tests/smoke_utils.h index d0a4b47..448b71f 100644 --- a/src/unit_tests/smoke_utils.h +++ b/src/unit_tests/smoke_utils.h @@ -16,6 +16,8 @@ #include #include +#include + #include #include #include @@ -84,6 +86,9 @@ extern const char kPreloadApps[]; extern const char kPreloadManifestDir[]; extern const char kPreloadIcons[]; +extern testing::Environment *env; +void signalHandler(int signum); + enum class RequestResult { NORMAL, FAIL -- 2.7.4