ln -s %{_bindir}/tpk-backend %{buildroot}%{_sysconfdir}/package-manager/backend/rpm
%post tests
-/usr/sbin/setcap cap_chown,cap_dac_override,cap_fowner=eip %{_bindir}/tpk-backend-ut/smoke-test
-/usr/sbin/setcap cap_chown,cap_dac_override,cap_fowner=eip %{_bindir}/tpk-backend-ut/smoke-test-helper
-/usr/sbin/setcap cap_chown,cap_dac_override,cap_fowner=eip %{_bindir}/tpk-backend-ut/recovery-test
+/usr/sbin/setcap cap_chown,cap_dac_override,cap_fowner,cap_mac_override=eip %{_bindir}/tpk-backend-ut/smoke-test
+/usr/sbin/setcap cap_chown,cap_dac_override,cap_fowner,cap_mac_override=eip %{_bindir}/tpk-backend-ut/smoke-test-helper
+/usr/sbin/setcap cap_chown,cap_dac_override,cap_fowner,cap_mac_override=eip %{_bindir}/tpk-backend-ut/recovery-test
%files
%{_sysconfdir}/package-manager/backend/tpk
namespace bpo = boost::program_options;
namespace ci = common_installer;
+enum class BackupType : int {
+ MOVE,
+ COPY_AND_REMOVE,
+};
+
namespace smoke_test {
class SmokeEnvironment : public testing::Environment {
public:
- explicit SmokeEnvironment(ci::RequestMode mode, bool no_backup) :
- request_mode_(mode), no_backup_(no_backup) {
+ explicit SmokeEnvironment(ci::RequestMode mode, bool no_backup,
+ BackupType backup_type) :
+ request_mode_(mode), no_backup_(no_backup),
+ backup_type_(backup_type) {
}
void SetUp() override {
if (request_mode_ == ci::RequestMode::USER)
if (no_backup_)
return;
backups_ = SetupBackupDirectories(test_user.uid);
- for (auto& path : backups_)
- ASSERT_TRUE(BackupPath(path));
+ if (backup_type_ == BackupType::MOVE) {
+ for (auto& path : backups_)
+ ASSERT_TRUE(BackupPath(path));
+ } else if (backup_type_ == BackupType::COPY_AND_REMOVE) {
+ for (auto& path : backups_)
+ ASSERT_TRUE(BackupPathCopyAndRemove(path));
+ }
}
void TearDown() override {
ASSERT_TRUE(request_mode_ == ci::RequestMode::GLOBAL ||
ASSERT_TRUE(DeleteTestUser());
if (no_backup_)
return;
- for (auto& path : backups_)
- ASSERT_TRUE(RestorePath(path));
+ if (backup_type_ == BackupType::MOVE) {
+ for (auto& path : backups_)
+ ASSERT_TRUE(RestorePath(path));
+ } else if (backup_type_ == BackupType::COPY_AND_REMOVE) {
+ for (auto& path : backups_)
+ ASSERT_TRUE(RestorePathCopyAndRemove(path));
+ }
}
User test_user;
ci::RequestMode request_mode_;
std::vector<bf::path> backups_;
bool no_backup_;
+ BackupType backup_type_;
};
} // namespace smoke_test
int main(int argc, char** argv) {
try {
bool no_backup = false;
+ BackupType backup_type = BackupType::MOVE;
+
ci::RequestMode request_mode = smoke_test::ParseRequestMode(argc, argv);
if (getuid() != 0 || request_mode != ci::RequestMode::GLOBAL) {
std::cout << "Skip tests for preload request" << std::endl;
try {
options.add_options()
("help", "display this help message")
- ("no-backup", "Do test without backup");
+ ("no-backup", "Do test without backup")
+ ("backup-type", bpo::value<std::string>(), "<move|copy> set test's "
+ "backup type \'move\', \'copy and remove\'");
bpo::store(bpo::parse_command_line(argc, argv, options), opt_map);
if (opt_map.count("help")) {
std::cerr << options << std::endl;
if (opt_map.count("no-backup"))
no_backup = true;
+ if (opt_map.count("backup-type")) {
+ if (opt_map["backup-type"].as<std::string>() == "move") {
+ backup_type = BackupType::MOVE;
+ } else if (opt_map["backup-type"].as<std::string>() == "copy") {
+ backup_type = BackupType::COPY_AND_REMOVE;
+ } else {
+ std::cerr << options << std::endl;
+ return -1;
+ }
+ }
bpo::notify(opt_map);
} catch (...) {
std::cerr << "Exception occurred: "
::env = static_cast<smoke_test::SmokeEnvironment*>(
testing::AddGlobalTestEnvironment(
- new smoke_test::SmokeEnvironment(request_mode, no_backup)));
+ new smoke_test::SmokeEnvironment(request_mode,
+ no_backup, backup_type)));
signal(SIGINT, ::signalHandler);
signal(SIGSEGV, ::signalHandler);
return RUN_ALL_TESTS();
MOUNT_UPDATE_REQ,
};
+enum class BackupType : int {
+ MOVE,
+ COPY_AND_REMOVE,
+};
+
std::map<ReqType, std::string> install_req_filter = {
{ ReqType::INSTALL_REQ,
"--gtest_filter=SmokeTest.RecoveryMode_Tpk_Installation" },
class SmokeEnvironment : public testing::Environment {
public:
- explicit SmokeEnvironment(ci::RequestMode mode, bool no_backup) :
- request_mode_(mode), no_backup_(no_backup) {
+ explicit SmokeEnvironment(ci::RequestMode mode, bool no_backup,
+ BackupType backup_type) :
+ request_mode_(mode), no_backup_(no_backup),
+ backup_type_(backup_type) {
}
void SetUp() override {
if (request_mode_ == ci::RequestMode::USER)
ASSERT_TRUE(AddTestUser(&test_user));
-
if (no_backup_)
return;
backups_ = SetupBackupDirectories(test_user.uid);
- for (auto& path : backups_)
- ASSERT_TRUE(BackupPath(path));
+ if (backup_type_ == BackupType::MOVE) {
+ for (auto& path : backups_)
+ ASSERT_TRUE(BackupPath(path));
+ } else if (backup_type_ == BackupType::COPY_AND_REMOVE) {
+ for (auto& path : backups_)
+ ASSERT_TRUE(BackupPathCopyAndRemove(path));
+ }
}
void TearDown() override {
ASSERT_TRUE(DeleteTestUser());
if (no_backup_)
return;
- for (auto& path : backups_)
- ASSERT_TRUE(RestorePath(path));
+ if (backup_type_ == BackupType::MOVE) {
+ for (auto& path : backups_)
+ ASSERT_TRUE(RestorePath(path));
+ } else if (backup_type_ == BackupType::COPY_AND_REMOVE) {
+ for (auto& path : backups_)
+ ASSERT_TRUE(RestorePathCopyAndRemove(path));
+ }
}
User test_user;
ci::RequestMode request_mode_;
std::vector<bf::path> backups_;
bool no_backup_;
+ BackupType backup_type_;
};
} // namespace smoke_test
int repeat_count = 10;
ReqType req_type = ReqType::UNKNOWN_REQ;
bool repeat = false;
+ BackupType backup_type = BackupType::MOVE;
bpo::options_description options("Allowed options");
bpo::variables_map opt_map;
"use with repeat option. "
"as it repeat the interval is added to delay")
("repeat", bpo::value<int>(), "option for performing tests repeatedly")
- ("no-backup", "Do test without backup");
+ ("no-backup", "Do test without backup")
+ ("backup-type", bpo::value<std::string>(), "<move|copy> set test's "
+ "backup type \'move\', \'copy and remove\'");
bpo::store(bpo::parse_command_line(argc, argv, options), opt_map);
if (opt_map.count("help")) {
std::cerr << options << std::endl;
if (opt_map.count("no-backup"))
no_backup = true;
+ if (opt_map.count("backup-type")) {
+ if (opt_map["backup-type"].as<std::string>() == "move") {
+ backup_type = BackupType::MOVE;
+ } else if (opt_map["backup-type"].as<std::string>() == "copy") {
+ backup_type = BackupType::COPY_AND_REMOVE;
+ } else {
+ std::cerr << options << std::endl;
+ return -1;
+ }
+ }
bpo::notify(opt_map);
} catch (...) {
std::cerr << "Exception occurred: "
::env = static_cast<smoke_test::SmokeEnvironment*>(
testing::AddGlobalTestEnvironment(
new smoke_test::SmokeEnvironment(ci::RequestMode::GLOBAL,
- no_backup)));
+ no_backup, backup_type)));
signal(SIGINT, ::signalHandler);
signal(SIGSEGV, ::signalHandler);
return RUN_ALL_TESTS();
namespace ci = common_installer;
namespace bpo = boost::program_options;
+enum class BackupType : int {
+ MOVE,
+ COPY_AND_REMOVE,
+};
+
namespace smoke_test {
class SmokeEnvironment : public testing::Environment {
public:
- explicit SmokeEnvironment(ci::RequestMode mode, bool no_backup) :
- request_mode_(mode), no_backup_(no_backup) {
+ explicit SmokeEnvironment(ci::RequestMode mode, bool no_backup,
+ BackupType backup_type) :
+ request_mode_(mode), no_backup_(no_backup),
+ backup_type_(backup_type) {
}
void SetUp() override {
if (request_mode_ == ci::RequestMode::USER)
if (no_backup_)
return;
backups_ = SetupBackupDirectories(test_user.uid);
- for (auto& path : backups_)
- ASSERT_TRUE(BackupPath(path));
+ if (backup_type_ == BackupType::MOVE) {
+ for (auto& path : backups_)
+ ASSERT_TRUE(BackupPath(path));
+ } else if (backup_type_ == BackupType::COPY_AND_REMOVE) {
+ for (auto& path : backups_)
+ ASSERT_TRUE(BackupPathCopyAndRemove(path));
+ }
}
void TearDown() override {
ASSERT_TRUE(request_mode_ == ci::RequestMode::GLOBAL ||
ASSERT_TRUE(DeleteTestUser());
if (no_backup_)
return;
- for (auto& path : backups_)
- ASSERT_TRUE(RestorePath(path));
+ if (backup_type_ == BackupType::MOVE) {
+ for (auto& path : backups_)
+ ASSERT_TRUE(RestorePath(path));
+ } else if (backup_type_ == BackupType::COPY_AND_REMOVE) {
+ for (auto& path : backups_)
+ ASSERT_TRUE(RestorePathCopyAndRemove(path));
+ }
}
User test_user;
ci::RequestMode request_mode_;
std::vector<bf::path> backups_;
bool no_backup_;
+ BackupType backup_type_;
};
} // namespace smoke_test
int main(int argc, char** argv) {
try {
bool no_backup = false;
+ BackupType backup_type = BackupType::MOVE;
+
ci::RequestMode request_mode = st::ParseRequestMode(argc, argv);
if (getuid() != 0 || request_mode != ci::RequestMode::GLOBAL) {
std::cout << "Skip tests for preload request" << std::endl;
try {
options.add_options()
("help", "display this help message")
- ("no-backup", "Do test without backup");
+ ("no-backup", "Do test without backup")
+ ("backup-type", bpo::value<std::string>(), "<move|copy> set test's "
+ "backup type \'move\', \'copy and remove\'");
bpo::store(bpo::parse_command_line(argc, argv, options), opt_map);
if (opt_map.count("help")) {
std::cerr << options << std::endl;
if (opt_map.count("no-backup"))
no_backup = true;
+ if (opt_map.count("backup-type")) {
+ if (opt_map["backup-type"].as<std::string>() == "move") {
+ backup_type = BackupType::MOVE;
+ } else if (opt_map["backup-type"].as<std::string>() == "copy") {
+ backup_type = BackupType::COPY_AND_REMOVE;
+ } else {
+ std::cerr << options << std::endl;
+ return -1;
+ }
+ }
bpo::notify(opt_map);
} catch (...) {
std::cerr << "Exception occurred: "
::env = static_cast<smoke_test::SmokeEnvironment*>(
testing::AddGlobalTestEnvironment(
- new smoke_test::SmokeEnvironment(request_mode, no_backup)));
+ new smoke_test::SmokeEnvironment(request_mode,
+ no_backup, backup_type)));
signal(SIGINT, ::signalHandler);
signal(SIGSEGV, ::signalHandler);