1 #include <gtest/gtest.h> 4 #include "primary/aktualizr.h" 6 #include "uptane_test_common.h" 7 #include "utilities/utils.h" 9 boost::filesystem::path fake_meta_dir;
14 TEST(PrimarySecondaryReg, SecondariesMigration) {
21 auto http = std::make_shared<HttpFake>(temp_dir.Path(),
"noupdates", fake_meta_dir);
22 const auto& url = http->tls_server;
24 Config conf(
"tests/config/basic.toml");
25 conf.uptane.director_server = url +
"/director";
26 conf.uptane.repo_server = url +
"/repo";
27 conf.provision.server = url;
28 conf.provision.primary_ecu_serial = primary_serial.ToString();
29 conf.provision.primary_ecu_hardware_id = primary_hwid.ToString();
30 conf.storage.path = temp_dir.Path();
31 conf.import.base_path = temp_dir.Path() /
"import";
32 conf.tls.server = url;
33 conf.bootloader.reboot_sentinel_dir = temp_dir.Path();
34 const boost::filesystem::path sec_conf_path = temp_dir /
"s_config.json";
35 conf.uptane.secondary_config_file = sec_conf_path;
37 auto storage = INvStorage::newStorage(conf.storage);
41 storage->storeDeviceId(
"device");
42 storage->storeEcuSerials({{primary_serial, primary_hwid}, {secondary_serial, secondary_hwid}});
43 storage->storeEcuRegistered();
45 sec_conf[
"IP"][
"secondary_wait_port"] = 9030;
46 sec_conf[
"IP"][
"secondary_wait_timeout"] = 1;
47 sec_conf[
"IP"][
"secondaries"] = Json::arrayValue;
48 sec_conf[
"IP"][
"secondaries"][0][
"addr"] =
"127.0.0.1:9061";
49 Utils::writeFile(sec_conf_path, sec_conf);
53 std::vector<SecondaryInfo> secs_info;
54 storage->loadSecondariesInfo(&secs_info);
55 EXPECT_EQ(secs_info.size(), 1);
56 EXPECT_EQ(secs_info[0].serial.ToString(), secondary_serial.ToString());
57 EXPECT_EQ(secs_info[0].type,
"");
58 EXPECT_EQ(secs_info[0].extra,
"");
65 Primary::initSecondaries(aktualizr, sec_conf_path);
66 aktualizr.Initialize();
67 aktualizr.CheckUpdates().get();
69 std::vector<SecondaryInfo> secs_info;
70 storage->loadSecondariesInfo(&secs_info);
71 EXPECT_EQ(secs_info.size(), 1);
72 EXPECT_EQ(secs_info[0].serial.ToString(), secondary_serial.ToString());
73 EXPECT_EQ(secs_info[0].type,
"IP");
74 EXPECT_EQ(secs_info[0].extra, R
"({"ip":"127.0.0.1","port":9061})"); 81 Primary::initSecondaries(aktualizr, sec_conf_path);
82 aktualizr.Initialize();
83 aktualizr.CheckUpdates().get();
85 std::vector<SecondaryInfo> secs_info;
86 storage->loadSecondariesInfo(&secs_info);
87 EXPECT_EQ(secs_info.size(), 1);
88 EXPECT_EQ(secs_info[0].serial.ToString(), secondary_serial.ToString());
89 EXPECT_EQ(secs_info[0].type,
"IP");
90 EXPECT_EQ(secs_info[0].extra, R
"({"ip":"127.0.0.1","port":9061})"); 98 TEST(PrimarySecondaryReg, VirtualSecondary) {
100 auto http = std::make_shared<HttpFake>(temp_dir.Path(),
"noupdates", fake_meta_dir);
101 Config conf = UptaneTestCommon::makeTestConfig(temp_dir, http->tls_server);
102 auto storage = INvStorage::newStorage(conf.storage);
107 EXPECT_THROW(Primary::initSecondaries(aktualizr, conf.uptane.secondary_config_file), std::exception);
109 boost::filesystem::remove(conf.uptane.secondary_config_file);
110 UptaneTestCommon::addDefaultSecondary(conf, temp_dir,
"serial2",
"hwid2");
111 UptaneTestCommon::addDefaultSecondary(conf, temp_dir,
"serial3",
"hwid3");
112 Primary::initSecondaries(aktualizr, conf.uptane.secondary_config_file);
113 aktualizr.Initialize();
115 std::vector<std::string> expected_ecus = {
"CA:FE:A6:D2:84:9D",
"secondary_ecu_serial",
"serial2",
"serial3"};
116 UptaneTestCommon::verifyEcus(temp_dir, expected_ecus);
120 int main(
int argc,
char** argv) {
121 ::testing::InitGoogleTest(&argc, argv);
124 logger_set_threshold(boost::log::trivial::trace);
127 fake_meta_dir = tmp_dir.Path();
130 return RUN_ALL_TESTS();
Configuration object for an aktualizr instance running on a Primary ECU.