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 uptane_repos_dir;
10 boost::filesystem::path fake_meta_dir;
12 TEST(PrimarySecondaryReg, SecondariesMigration) {
17 auto http = std::make_shared<HttpFake>(temp_dir.Path(),
"noupdates", fake_meta_dir);
19 const auto& url = http->tls_server;
20 Config conf(
"tests/config/basic.toml");
21 conf.uptane.director_server = url +
"/director";
22 conf.uptane.repo_server = url +
"/repo";
23 conf.provision.server = url;
24 conf.provision.primary_ecu_serial =
"CA:FE:A6:D2:84:9D";
25 conf.provision.primary_ecu_hardware_id =
"primary_hw";
26 conf.storage.path = temp_dir.Path();
27 conf.import.base_path = temp_dir.Path() /
"import";
28 conf.tls.server = url;
29 conf.bootloader.reboot_sentinel_dir = temp_dir.Path();
30 const boost::filesystem::path sec_conf_path = temp_dir /
"s_config.json";
31 conf.uptane.secondary_config_file = sec_conf_path;
35 auto storage = INvStorage::newStorage(conf.storage);
44 storage->storeDeviceId(
"device");
45 storage->storeEcuSerials({{primary_serial, primary_hwid}, {secondary_serial, secondary_hwid}});
46 storage->storeEcuRegistered();
48 sec_conf[
"IP"][
"secondary_wait_port"] = 9030;
49 sec_conf[
"IP"][
"secondary_wait_timeout"] = 1;
50 sec_conf[
"IP"][
"secondaries"] = Json::arrayValue;
51 sec_conf[
"IP"][
"secondaries"][0][
"addr"] =
"127.0.0.1:9061";
52 Utils::writeFile(sec_conf_path, sec_conf);
60 Primary::initSecondaries(aktualizr, sec_conf_path);
61 aktualizr.Initialize();
62 aktualizr.CheckUpdates().get();
64 std::vector<SecondaryInfo> secs_info;
65 storage->loadSecondariesInfo(&secs_info);
66 EXPECT_EQ(secs_info[0].serial.ToString(), secondary_serial.ToString());
67 EXPECT_EQ(secs_info[0].type,
"IP");
68 EXPECT_EQ(secs_info[0].extra, R
"({"ip":"127.0.0.1","port":9061})");
75 storage->clearEcuSerials();
76 storage->storeEcuSerials({
77 {primary_serial, primary_hwid},
78 {secondary_serial, secondary_hwid},
79 {secondary_serial2, secondary_hwid2},
82 sec_conf[
"IP"][
"secondaries"][1][
"addr"] =
"127.0.0.1:9062";
83 Utils::writeFile(sec_conf_path, sec_conf);
93 Primary::initSecondaries(aktualizr, sec_conf_path);
94 aktualizr.Initialize();
95 aktualizr.CheckUpdates().get();
98 std::vector<SecondaryInfo> secs_info;
99 storage->loadSecondariesInfo(&secs_info);
100 EXPECT_EQ(secs_info[0].serial.ToString(), secondary_serial.ToString());
101 EXPECT_EQ(secs_info[0].type,
"");
102 EXPECT_EQ(secs_info[0].extra,
"");
103 EXPECT_EQ(secs_info[1].serial.ToString(), secondary_serial2.ToString());
104 EXPECT_EQ(secs_info[1].type,
"");
105 EXPECT_EQ(secs_info[1].extra,
"");
110 int main(
int argc,
char** argv) {
111 ::testing::InitGoogleTest(&argc, argv);
113 std::cerr <<
"Error: " << argv[0] <<
" requires the path to the base directory of Uptane repos.\n";
116 uptane_repos_dir = argv[1];
119 logger_set_threshold(boost::log::trivial::trace);
122 fake_meta_dir = tmp_dir.Path();
125 return RUN_ALL_TESTS();