diff options
Diffstat (limited to 'test/sbuild/chroot/btrfs-snapshot.cc')
-rw-r--r-- | test/sbuild/chroot/btrfs-snapshot.cc | 456 |
1 files changed, 211 insertions, 245 deletions
diff --git a/test/sbuild/chroot/btrfs-snapshot.cc b/test/sbuild/chroot/btrfs-snapshot.cc index 1b2543de..212d4c1a 100644 --- a/test/sbuild/chroot/btrfs-snapshot.cc +++ b/test/sbuild/chroot/btrfs-snapshot.cc @@ -28,109 +28,33 @@ #include <algorithm> #include <set> -#include <cppunit/extensions/HelperMacros.h> - -using namespace CppUnit; - using sbuild::_; -class test_chroot_btrfs_snapshot : public test_chroot_base +class BtrfsSnapshot : public ChrootBase { - CPPUNIT_TEST_SUITE(test_chroot_btrfs_snapshot); - CPPUNIT_TEST(test_source_subvolume); - CPPUNIT_TEST(test_snapshot_directory); - CPPUNIT_TEST(test_snapshot_name); - CPPUNIT_TEST_EXCEPTION(test_source_subvolume_error, sbuild::chroot::chroot::error); - CPPUNIT_TEST_EXCEPTION(test_snapshot_directory_error, sbuild::chroot::chroot::error); - CPPUNIT_TEST_EXCEPTION(test_snapshot_name_error, sbuild::chroot::chroot::error); - CPPUNIT_TEST(test_chroot_type); - CPPUNIT_TEST(test_setup_env); - CPPUNIT_TEST(test_setup_env_session); - CPPUNIT_TEST(test_setup_env_source); - CPPUNIT_TEST(test_setup_env_session_source); - CPPUNIT_TEST(test_setup_keyfile); - CPPUNIT_TEST(test_setup_keyfile_session); - CPPUNIT_TEST(test_setup_keyfile_source); - CPPUNIT_TEST(test_setup_keyfile_session_source); - CPPUNIT_TEST(test_session_flags); - CPPUNIT_TEST(test_print_details); - CPPUNIT_TEST(test_print_config); - CPPUNIT_TEST(test_run_setup_scripts); - CPPUNIT_TEST_SUITE_END(); - public: - test_chroot_btrfs_snapshot(): - test_chroot_base("btrfs-snapshot") + BtrfsSnapshot(): + ChrootBase("btrfs-snapshot") {} - void setUp() + void SetUp() { - test_chroot_base::setUp(); - CPPUNIT_ASSERT(chroot); - CPPUNIT_ASSERT(session); - CPPUNIT_ASSERT(source); - CPPUNIT_ASSERT(session_source); + ChrootBase::SetUp(); + ASSERT_NE(chroot, nullptr); + ASSERT_NE(session, nullptr); + ASSERT_NE(source, nullptr); + ASSERT_NE(session_source, nullptr); } virtual void setup_chroot_props (sbuild::chroot::chroot::ptr& chroot) { - test_chroot_base::setup_chroot_props(chroot); + ChrootBase::setup_chroot_props(chroot); sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>(); bfac->set_source_subvolume("/srv/chroot/sid"); bfac->set_snapshot_directory("/srv/chroot/snapshot"); } - void - test_source_subvolume() - { - sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>(); - bfac->set_source_subvolume("/srv/chroot/chroot"); - CPPUNIT_ASSERT(bfac->get_source_subvolume() == "/srv/chroot/chroot"); - } - - void - test_snapshot_directory() - { - sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>(); - bfac->set_snapshot_directory("/srv/chroot/snapshot2"); - CPPUNIT_ASSERT(bfac->get_snapshot_directory() == "/srv/chroot/snapshot2"); - } - - void - test_snapshot_name() - { - sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>(); - bfac->set_snapshot_directory("/srv/chroot/snapshot2/test-session-id"); - CPPUNIT_ASSERT(bfac->get_snapshot_directory() == "/srv/chroot/snapshot2/test-session-id"); - } - - void - test_source_subvolume_error() - { - sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>(); - bfac->set_source_subvolume("chroot/invalid"); - } - - void - test_snapshot_directory_error() - { - sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>(); - bfac->set_snapshot_directory("chroot/invalid"); - } - - void - test_snapshot_name_error() - { - sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>(); - bfac->set_snapshot_name("invalid"); - } - - void test_chroot_type() - { - CPPUNIT_ASSERT(chroot->get_chroot_type() == "btrfs-snapshot"); - } - void setup_env_gen(sbuild::environment &expected) { setup_env_chroot(expected); @@ -138,177 +62,219 @@ public: expected.add("CHROOT_PATH", "/mnt/mount-location"); } - void test_setup_env() - { - sbuild::environment expected; - setup_env_gen(expected); - expected.add("CHROOT_TYPE", "btrfs-snapshot"); - expected.add("CHROOT_BTRFS_SOURCE_SUBVOLUME", "/srv/chroot/sid"); - expected.add("CHROOT_BTRFS_SNAPSHOT_DIRECTORY", "/srv/chroot/snapshot"); - expected.add("CHROOT_SESSION_CLONE", "true"); - expected.add("CHROOT_SESSION_CREATE", "true"); - expected.add("CHROOT_SESSION_PURGE", "false"); - - test_chroot_base::test_setup_env(chroot, expected); - } - - void test_setup_env_session() + void setup_keyfile_btrfs(sbuild::keyfile &expected, std::string group) { - sbuild::environment expected; - setup_env_gen(expected); - expected.add("CHROOT_TYPE", "btrfs-snapshot"); - expected.add("SESSION_ID", "test-session-name"); - expected.add("CHROOT_ALIAS", "test-session-name"); - expected.add("CHROOT_DESCRIPTION", chroot->get_description() + ' ' + _("(session chroot)")); - expected.add("CHROOT_BTRFS_SOURCE_SUBVOLUME", "/srv/chroot/sid"); - expected.add("CHROOT_BTRFS_SNAPSHOT_DIRECTORY", "/srv/chroot/snapshot"); - expected.add("CHROOT_BTRFS_SNAPSHOT_NAME", "/srv/chroot/snapshot/test-session-name"); - expected.add("CHROOT_SESSION_CLONE", "false"); - expected.add("CHROOT_SESSION_CREATE", "false"); - expected.add("CHROOT_SESSION_PURGE", "true"); - - test_chroot_base::test_setup_env(session, expected); } +}; - void test_setup_env_source() - { - sbuild::environment expected; - setup_env_gen(expected); - expected.add("CHROOT_TYPE", "directory"); - expected.add("CHROOT_NAME", "test-name"); - expected.add("CHROOT_DESCRIPTION", chroot->get_description() + ' ' + _("(source chroot)")); - expected.add("CHROOT_DIRECTORY", "/srv/chroot/sid"); - expected.add("CHROOT_SESSION_CLONE", "false"); - expected.add("CHROOT_SESSION_CREATE", "true"); - expected.add("CHROOT_SESSION_PURGE", "false"); - - test_chroot_base::test_setup_env(source, expected); - } +TEST_F(BtrfsSnapshot, SourceSubvolume) +{ + sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>(); + bfac->set_source_subvolume("/srv/chroot/chroot"); + ASSERT_EQ(bfac->get_source_subvolume(), "/srv/chroot/chroot"); +} - void test_setup_env_session_source() - { - sbuild::environment expected; - setup_env_gen(expected); - expected.add("CHROOT_TYPE", "directory"); - expected.add("CHROOT_NAME", "test-name"); - expected.add("CHROOT_DESCRIPTION", chroot->get_description() + ' ' + _("(source chroot)")); - expected.add("CHROOT_DIRECTORY", "/srv/chroot/sid"); - expected.add("CHROOT_SESSION_CLONE", "false"); - expected.add("CHROOT_SESSION_CREATE", "true"); - expected.add("CHROOT_SESSION_PURGE", "false"); - - test_chroot_base::test_setup_env(source, expected); - } +TEST_F(BtrfsSnapshot, SnapshotDirectory) +{ + sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>(); + bfac->set_snapshot_directory("/srv/chroot/snapshot2"); + ASSERT_EQ(bfac->get_snapshot_directory(), "/srv/chroot/snapshot2"); +} - void setup_keyfile_btrfs(sbuild::keyfile &expected, std::string group) - { - } +TEST_F(BtrfsSnapshot, SnapshotName) +{ + sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>(); + bfac->set_snapshot_directory("/srv/chroot/snapshot2/test-session-id"); + ASSERT_EQ(bfac->get_snapshot_directory(), "/srv/chroot/snapshot2/test-session-id"); +} - void test_setup_keyfile() - { - sbuild::keyfile expected; - std::string group = chroot->get_name(); - setup_keyfile_chroot(expected, group); - setup_keyfile_source(expected, group); - setup_keyfile_btrfs(expected, group); - expected.set_value(group, "type", "btrfs-snapshot"); - expected.set_value(group, "btrfs-source-subvolume", "/srv/chroot/sid"); - expected.set_value(group, "btrfs-snapshot-directory", "/srv/chroot/snapshot"); - - test_chroot_base::test_setup_keyfile - (chroot,expected, chroot->get_name()); - } +TEST_F(BtrfsSnapshot, SourceSubvolumeFail) +{ + sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>(); + ASSERT_THROW(bfac->set_source_subvolume("chroot/invalid"), sbuild::chroot::chroot::error); +} - void test_setup_keyfile_session() - { - sbuild::keyfile expected; - const std::string group(session->get_name()); - setup_keyfile_session(expected, group); - setup_keyfile_btrfs(expected, group); - expected.set_value(group, "type", "btrfs-snapshot"); - expected.set_value(group, "name", "test-session-name"); - expected.set_value(group, "selected-name", "test-session-name"); - expected.set_value(group, "description", chroot->get_description() + ' ' + _("(session chroot)")); - expected.set_value(group, "aliases", ""); - expected.set_value(group, "btrfs-snapshot-name", "/srv/chroot/snapshot/test-session-name"); - expected.set_value(group, "mount-location", "/mnt/mount-location"); - - test_chroot_base::test_setup_keyfile - (session, expected, group); - } +TEST_F(BtrfsSnapshot, SnapshotDirectoryFail) +{ + sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>(); + ASSERT_THROW(bfac->set_snapshot_directory("chroot/invalid"), sbuild::chroot::chroot::error); +} - void test_setup_keyfile_source() - { - sbuild::keyfile expected; - const std::string group(source->get_name()); - setup_keyfile_chroot(expected, group); - setup_keyfile_btrfs(expected, group); - expected.set_value(group, "type", "directory"); - expected.set_value(group, "description", chroot->get_description() + ' ' + _("(source chroot)")); - expected.set_value(group, "aliases", "test-alias-1-source,test-alias-2-source"); - expected.set_value(group, "directory", "/srv/chroot/sid"); - setup_keyfile_source_clone(expected, group); - - test_chroot_base::test_setup_keyfile - (source, expected, group); - } +TEST_F(BtrfsSnapshot, SnapshotNameFail) +{ + sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>(); + ASSERT_THROW(bfac->set_snapshot_name("invalid"), sbuild::chroot::chroot::error); +} - void test_setup_keyfile_session_source() - { - sbuild::keyfile expected; - const std::string group(source->get_name()); - setup_keyfile_chroot(expected, group); - setup_keyfile_btrfs(expected, group); - expected.set_value(group, "type", "directory"); - expected.set_value(group, "description", chroot->get_description() + ' ' + _("(source chroot)")); - expected.set_value(group, "aliases", "test-alias-1-source,test-alias-2-source"); - expected.set_value(group, "directory", "/srv/chroot/sid"); - expected.set_value(group, "mount-location", "/mnt/mount-location"); - setup_keyfile_session_source_clone(expected, group); - - test_chroot_base::test_setup_keyfile - (session_source, expected, group); - } +TEST_F(BtrfsSnapshot, Type) +{ + ASSERT_EQ(chroot->get_chroot_type(), "btrfs-snapshot"); +} - void test_session_flags() - { - CPPUNIT_ASSERT(chroot->get_session_flags() == - (sbuild::chroot::facet::facet::SESSION_CREATE | - sbuild::chroot::facet::facet::SESSION_CLONE)); - - CPPUNIT_ASSERT(session->get_session_flags() == - (sbuild::chroot::facet::facet::SESSION_PURGE)); - - /// @todo: Should return NOFLAGS? This depends upon if source - /// chroots need transforming into sessions as well (which should - /// probably happen and be tested for independently). - CPPUNIT_ASSERT(source->get_session_flags() == - (sbuild::chroot::facet::facet::SESSION_CREATE)); - } - void test_print_details() - { - std::ostringstream os; - os << chroot; - // TODO: Compare output. - CPPUNIT_ASSERT(!os.str().empty()); - } +TEST_F(BtrfsSnapshot, SetupEnv) +{ + sbuild::environment expected; + setup_env_gen(expected); + expected.add("CHROOT_TYPE", "btrfs-snapshot"); + expected.add("CHROOT_BTRFS_SOURCE_SUBVOLUME", "/srv/chroot/sid"); + expected.add("CHROOT_BTRFS_SNAPSHOT_DIRECTORY", "/srv/chroot/snapshot"); + expected.add("CHROOT_SESSION_CLONE", "true"); + expected.add("CHROOT_SESSION_CREATE", "true"); + expected.add("CHROOT_SESSION_PURGE", "false"); + + ChrootBase::test_setup_env(chroot, expected); +} + +TEST_F(BtrfsSnapshot, SetupEnvSession) +{ + sbuild::environment expected; + setup_env_gen(expected); + expected.add("CHROOT_TYPE", "btrfs-snapshot"); + expected.add("SESSION_ID", "test-session-name"); + expected.add("CHROOT_ALIAS", "test-session-name"); + expected.add("CHROOT_DESCRIPTION", chroot->get_description() + ' ' + _("(session chroot)")); + expected.add("CHROOT_BTRFS_SOURCE_SUBVOLUME", "/srv/chroot/sid"); + expected.add("CHROOT_BTRFS_SNAPSHOT_DIRECTORY", "/srv/chroot/snapshot"); + expected.add("CHROOT_BTRFS_SNAPSHOT_NAME", "/srv/chroot/snapshot/test-session-name"); + expected.add("CHROOT_SESSION_CLONE", "false"); + expected.add("CHROOT_SESSION_CREATE", "false"); + expected.add("CHROOT_SESSION_PURGE", "true"); + + ChrootBase::test_setup_env(session, expected); +} + +TEST_F(BtrfsSnapshot, SetupEnvSource) +{ + sbuild::environment expected; + setup_env_gen(expected); + expected.add("CHROOT_TYPE", "directory"); + expected.add("CHROOT_NAME", "test-name"); + expected.add("CHROOT_DESCRIPTION", chroot->get_description() + ' ' + _("(source chroot)")); + expected.add("CHROOT_DIRECTORY", "/srv/chroot/sid"); + expected.add("CHROOT_SESSION_CLONE", "false"); + expected.add("CHROOT_SESSION_CREATE", "true"); + expected.add("CHROOT_SESSION_PURGE", "false"); + + ChrootBase::test_setup_env(source, expected); +} + +TEST_F(BtrfsSnapshot, SetupEnvSessionSource) +{ + sbuild::environment expected; + setup_env_gen(expected); + expected.add("CHROOT_TYPE", "directory"); + expected.add("CHROOT_NAME", "test-name"); + expected.add("CHROOT_DESCRIPTION", chroot->get_description() + ' ' + _("(source chroot)")); + expected.add("CHROOT_DIRECTORY", "/srv/chroot/sid"); + expected.add("CHROOT_SESSION_CLONE", "false"); + expected.add("CHROOT_SESSION_CREATE", "true"); + expected.add("CHROOT_SESSION_PURGE", "false"); + + ChrootBase::test_setup_env(source, expected); +} + +TEST_F(BtrfsSnapshot, SetupKeyfile) +{ + sbuild::keyfile expected; + std::string group = chroot->get_name(); + setup_keyfile_chroot(expected, group); + setup_keyfile_source(expected, group); + setup_keyfile_btrfs(expected, group); + expected.set_value(group, "type", "btrfs-snapshot"); + expected.set_value(group, "btrfs-source-subvolume", "/srv/chroot/sid"); + expected.set_value(group, "btrfs-snapshot-directory", "/srv/chroot/snapshot"); + + ChrootBase::test_setup_keyfile + (chroot,expected, chroot->get_name()); +} + +TEST_F(BtrfsSnapshot, SetupKeyfileSession) +{ + sbuild::keyfile expected; + const std::string group(session->get_name()); + setup_keyfile_session(expected, group); + setup_keyfile_btrfs(expected, group); + expected.set_value(group, "type", "btrfs-snapshot"); + expected.set_value(group, "name", "test-session-name"); + expected.set_value(group, "selected-name", "test-session-name"); + expected.set_value(group, "description", chroot->get_description() + ' ' + _("(session chroot)")); + expected.set_value(group, "aliases", ""); + expected.set_value(group, "btrfs-snapshot-name", "/srv/chroot/snapshot/test-session-name"); + expected.set_value(group, "mount-location", "/mnt/mount-location"); + + ChrootBase::test_setup_keyfile + (session, expected, group); +} + +TEST_F(BtrfsSnapshot, SetupKeyfileSource) +{ + sbuild::keyfile expected; + const std::string group(source->get_name()); + setup_keyfile_chroot(expected, group); + setup_keyfile_btrfs(expected, group); + expected.set_value(group, "type", "directory"); + expected.set_value(group, "description", chroot->get_description() + ' ' + _("(source chroot)")); + expected.set_value(group, "aliases", "test-alias-1-source,test-alias-2-source"); + expected.set_value(group, "directory", "/srv/chroot/sid"); + setup_keyfile_source_clone(expected, group); + + ChrootBase::test_setup_keyfile + (source, expected, group); +} + +TEST_F(BtrfsSnapshot, SetupKeyfileSessionSource) +{ + sbuild::keyfile expected; + const std::string group(source->get_name()); + setup_keyfile_chroot(expected, group); + setup_keyfile_btrfs(expected, group); + expected.set_value(group, "type", "directory"); + expected.set_value(group, "description", chroot->get_description() + ' ' + _("(source chroot)")); + expected.set_value(group, "aliases", "test-alias-1-source,test-alias-2-source"); + expected.set_value(group, "directory", "/srv/chroot/sid"); + expected.set_value(group, "mount-location", "/mnt/mount-location"); + setup_keyfile_session_source_clone(expected, group); + + ChrootBase::test_setup_keyfile + (session_source, expected, group); +} + +TEST_F(BtrfsSnapshot, SessionFlags) +{ + ASSERT_EQ(chroot->get_session_flags(), + (sbuild::chroot::facet::facet::SESSION_CREATE | + sbuild::chroot::facet::facet::SESSION_CLONE)); - void test_print_config() - { - std::ostringstream os; - sbuild::keyfile config; - config << chroot; - os << sbuild::keyfile_writer(config); - // TODO: Compare output. - CPPUNIT_ASSERT(!os.str().empty()); - } + ASSERT_EQ(session->get_session_flags(), + (sbuild::chroot::facet::facet::SESSION_PURGE)); - void test_run_setup_scripts() - { - CPPUNIT_ASSERT(chroot->get_run_setup_scripts()); - } + /// @todo: Should return NOFLAGS? This depends upon if source + /// chroots need transforming into sessions as well (which should + /// probably happen and be tested for independently). + ASSERT_EQ(source->get_session_flags(), + (sbuild::chroot::facet::facet::SESSION_CREATE)); +} -}; +TEST_F(BtrfsSnapshot, PrintDetails) +{ + std::ostringstream os; + os << chroot; + // TODO: Compare output. + ASSERT_FALSE(os.str().empty()); +} -CPPUNIT_TEST_SUITE_REGISTRATION(test_chroot_btrfs_snapshot); +TEST_F(BtrfsSnapshot, PrintConfig) +{ + std::ostringstream os; + sbuild::keyfile config; + config << chroot; + os << sbuild::keyfile_writer(config); + // TODO: Compare output. + ASSERT_FALSE(os.str().empty()); +} + +TEST_F(BtrfsSnapshot, RunSetupScripts) +{ + ASSERT_TRUE(chroot->get_run_setup_scripts()); +} |