Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
fiuinfo_test.cc
1 #include <gtest/gtest.h>
2 #include <unistd.h>
3 
4 #include "utilities/fault_injection.h"
5 #include "utilities/utils.h"
6 
7 std::string fiu_script;
8 
9 TEST(Fiuinfo, PassInfoWithRun) {
10  EXPECT_TRUE(fiu_fail("fail"));
11  EXPECT_EQ(fault_injection_last_info(), "fiurun_failure");
12 
13  // check that `fiu ctrl` overrides value at `run`
14  Utils::shell(fiu_script + " ctrl -c 'enable name=fail,failinfo=failure2' " + std::to_string(getpid()), nullptr);
15  EXPECT_TRUE(fiu_fail("fail"));
16  EXPECT_EQ(fault_injection_last_info(), "failure2");
17 
18  // check that it can be controlled with fault_injection_enable
19  fault_injection_enable("fail", 1, "failure3", 0);
20  EXPECT_TRUE(fiu_fail("fail"));
21  EXPECT_EQ(fault_injection_last_info(), "failure3");
22 
23  fiu_disable("fail");
24  EXPECT_FALSE(fiu_fail("fail"));
25 }
26 
27 TEST(Fiuinfo, PassInfoWithCtrl) {
28  EXPECT_FALSE(fiu_fail("failctrl"));
29  Utils::shell(fiu_script + " ctrl -c 'enable name=failctrl,failinfo=test_ctrl' " + std::to_string(getpid()), nullptr);
30  EXPECT_TRUE(fiu_fail("failctrl"));
31 
32  Utils::shell(fiu_script + " ctrl -c 'disable name=failctrl' " + std::to_string(getpid()), nullptr);
33  EXPECT_FALSE(fiu_fail("failctrl"));
34 }
35 
36 #ifndef __NO_MAIN__
37 int main(int argc, char **argv) {
38  ::testing::InitGoogleTest(&argc, argv);
39 
40  if (argc != 2) {
41  std::cerr << "Error: " << argv[0] << " requires the path to the fiu wrapper script.\n";
42  return EXIT_FAILURE;
43  }
44  fiu_script = argv[1];
45 
46  return RUN_ALL_TESTS();
47 }
48 #endif