acceptance tests: Add base set of acceptance tests for sqliterepo_c
authorTomas Mlcoch <tmlcoch@redhat.com>
Tue, 5 May 2015 11:07:35 +0000 (13:07 +0200)
committerTomas Mlcoch <tmlcoch@redhat.com>
Tue, 5 May 2015 11:07:35 +0000 (13:07 +0200)
acceptance_tests/tests/test_sqliterepo.py [new file with mode: 0644]

diff --git a/acceptance_tests/tests/test_sqliterepo.py b/acceptance_tests/tests/test_sqliterepo.py
new file mode 100644 (file)
index 0000000..e3cf85f
--- /dev/null
@@ -0,0 +1,146 @@
+import os
+import time
+import os.path
+
+from fixtures import PACKAGES
+from base import BaseTestCase
+
+BASE_XML_PATTERNS_SIMPLE = ["repomd\.xml", "primary\.xml\..+", "filelists\.xml\..+", "other\.xml\..+"]
+BASE_XML_PATTERNS_UNIQUE = ["repomd\.xml", ".*-primary\.xml\..+", ".*-filelists\.xml\..+", ".*-other\.xml\..+"]
+
+DBS_PATTERNS = [".*primary\.sqlite\..+", ".*filelists\.sqlite\..+", ".*other\.sqlite\..+"]
+DBS_PATTERNS_SIMPLE = ["primary\.sqlite\..+", "filelists\.sqlite\..+", "other\.sqlite\..+"]
+DBS_PATTERNS_UNIQUE = [".*-primary\.sqlite\..+", ".*-filelists\.sqlite\..+", ".*-other\.sqlite\..+"]
+
+DBS_PATTERNS_UNIQUE_MD5 = ["[0-9a-z]{32}-primary\.sqlite\..+", ".*-filelists\.sqlite\..+", ".*-other\.sqlite\..+"]
+
+DBS_PATTERNS_SIMPLE_GZ = ["primary\.sqlite\.gz", "filelists\.sqlite\.gz", "other\.sqlite\.gz"]
+DBS_PATTERNS_SIMPLE_BZ2 = ["primary\.sqlite\.bz2", "filelists\.sqlite\.bz2", "other\.sqlite\.bz2"]
+DBS_PATTERNS_SIMPLE_XZ = ["primary\.sqlite\.xz", "filelists\.sqlite\.xz", "other\.sqlite\.xz"]
+
+
+class TestCaseSqliterepo_badparams(BaseTestCase):
+    """Use case with bad commandline arguments"""
+
+    def setup(self):
+        self.indir_addpkg(PACKAGES[0])
+
+
+class TestCaseSqliterepo(BaseTestCase):
+    """Base use cases"""
+
+    def setup(self):
+        self.indir_addpkg(PACKAGES[0])
+
+    def test_01_sqliterepo(self):
+        """Sqlitedbs already exists, sqliterepo without --force should fail"""
+        cr_res = self.run_cr(self.indir, c=True)
+        sq_res = self.run_sqlr(cr_res.outdir)
+        self.assertTrue(sq_res.rc)
+        self.assertTrue("already has sqlitedb present" in sq_res.out)
+
+    def test_02_sqliterepo(self):
+        """Sqlitedbs should be created"""
+        outdir = self.tdir_makedirs("repository")
+        self.assert_run_cr(self.indir, args="--no-database", c=True, outdir=outdir)
+        self.assert_run_sqlr(outdir)
+        # Check that DBs really exists
+        self.assert_repo_files(outdir, DBS_PATTERNS, additional_files_allowed=True)
+
+    def test_03_sqliterepo(self):
+        """Sqlitedbs with simple md filenames should be created"""
+        outdir = self.tdir_makedirs("repository")
+        self.assert_run_cr(self.indir, args="--no-database --simple-md-filenames", c=True, outdir=outdir)
+        self.assert_run_sqlr(outdir)
+        # Check that DBs really exists
+        self.assert_repo_files(outdir, DBS_PATTERNS_SIMPLE, additional_files_allowed=True)
+
+    def test_04_sqliterepo(self):
+        """Sqlitedbs with unique md filenames should be created"""
+        outdir = self.tdir_makedirs("repository")
+        self.assert_run_cr(self.indir, args="--no-database --unique-md-filenames", c=True, outdir=outdir)
+        self.assert_run_sqlr(outdir)
+        # Check that DBs really exists
+        self.assert_repo_files(outdir, DBS_PATTERNS_UNIQUE, additional_files_allowed=True)
+
+    def test_05_sqliterepo(self):
+        """--xz is used (old bz2 DBs should be removed)"""
+        outdir = self.tdir_makedirs("repository")
+        self.assert_run_cr(self.indir, args="--database --simple-md-filenames", c=True, outdir=outdir)
+        self.assert_run_sqlr(outdir, args="--force --xz")
+
+        # Check that DBs really exists
+        self.assert_repo_files(outdir,
+                               DBS_PATTERNS_SIMPLE_XZ+BASE_XML_PATTERNS_SIMPLE,
+                               additional_files_allowed=False)
+
+    def test_06_sqliterepo(self):
+        """DBs already exists but --force is used sqlitedbs should be created"""
+        outdir = self.tdir_makedirs("repository")
+        self.assert_run_cr(self.indir, args="--database --simple-md-filenames", c=True, outdir=outdir)
+        old_primary_ts = os.path.getmtime(os.path.join(outdir, "repodata", "primary.sqlite.bz2"))
+
+        self.assert_run_sqlr(outdir, args="--force")
+        new_primary_ts = os.path.getmtime(os.path.join(outdir, "repodata", "primary.sqlite.bz2"))
+
+        # Check that DBs really exists
+        self.assert_repo_files(outdir, DBS_PATTERNS, additional_files_allowed=True)
+
+        # Check that DBs are newer than the old ones
+        self.assertTrue(old_primary_ts < new_primary_ts)
+
+    def test_07_sqliterepo(self):
+        """--force and --keep-old and --xz are used (old bz2 DBs should be keeped)"""
+        outdir = self.tdir_makedirs("repository")
+        self.assert_run_cr(self.indir, args="--database --simple-md-filenames", c=True, outdir=outdir)
+        self.assert_run_sqlr(outdir, args="--force --keep-old --xz")
+
+        # Check that DBs really exists
+        self.assert_repo_files(outdir, DBS_PATTERNS_SIMPLE_BZ2, additional_files_allowed=True)
+        self.assert_repo_files(outdir, DBS_PATTERNS_SIMPLE_XZ, additional_files_allowed=True)
+
+    def test_08_sqliterepo(self):
+        """--local-sqlite is used and old DBs exists (--force is also used)"""
+        outdir = self.tdir_makedirs("repository")
+        self.assert_run_cr(self.indir, args="--database --simple-md-filenames", c=True, outdir=outdir)
+        old_primary_ts = os.path.getmtime(os.path.join(outdir, "repodata", "primary.sqlite.bz2"))
+
+        self.assert_run_sqlr(outdir, args="--local-sqlite --force")
+        new_primary_ts = os.path.getmtime(os.path.join(outdir, "repodata", "primary.sqlite.bz2"))
+
+        # Check that DBs really exists
+        expected_files = DBS_PATTERNS_SIMPLE_BZ2 + BASE_XML_PATTERNS_SIMPLE
+        self.assert_repo_files(outdir, expected_files, additional_files_allowed=False)
+
+        # Check that DBs are newer than the old ones
+        self.assertTrue(old_primary_ts < new_primary_ts)
+
+    def test_09_sqliterepo(self):
+        """--local-sqlite is used with --xz and --force and --keep-old"""
+        outdir = self.tdir_makedirs("repository")
+        self.assert_run_cr(self.indir, args="--database --simple-md-filenames", c=True, outdir=outdir)
+        self.assert_run_sqlr(outdir, args="--local-sqlite --force --keep-old --xz")
+
+        # Check that DBs really exists
+        self.assert_repo_files(outdir, DBS_PATTERNS_SIMPLE_BZ2, additional_files_allowed=True)
+        self.assert_repo_files(outdir, DBS_PATTERNS_SIMPLE_XZ, additional_files_allowed=True)
+
+    def test_10_sqliterepo(self):
+        """--compress-type used"""
+        outdir = self.tdir_makedirs("repository")
+        self.assert_run_cr(self.indir, args="--database --simple-md-filenames", c=True, outdir=outdir)
+        self.assert_run_sqlr(outdir, args="--compress-type gz --force")
+
+        # Check that DBs really exists
+        expected_files = DBS_PATTERNS_SIMPLE_GZ + BASE_XML_PATTERNS_SIMPLE
+        self.assert_repo_files(outdir, expected_files, additional_files_allowed=False)
+
+    def test_11_sqliterepo(self):
+        """--checksum used"""
+        outdir = self.tdir_makedirs("repository")
+        self.assert_run_cr(self.indir, args="--database --unique-md-filenames", c=True, outdir=outdir)
+        self.assert_run_sqlr(outdir, args="--checksum md5 --force")
+
+        # Check that DBs really exists
+        expected_files = DBS_PATTERNS_UNIQUE_MD5 + BASE_XML_PATTERNS_UNIQUE
+        self.assert_repo_files(outdir, expected_files, additional_files_allowed=False)
\ No newline at end of file