Esempio n. 1
0
    def test_list_packages(self):
        """
        Test whether list_packages lists our ad-hoc
        repository correctly.
        """

        rpm = glob.glob("sample_rpms/sample*.rpm")[0]

        tmpdir = tempfile.mkdtemp()
        shutil.copyfile(rpm, os.path.join(tmpdir, os.path.basename(rpm)))

        proc = popen("createrepo", tmpdir)
        self.assertIn(b"Workers Finished", proc.stdout)

        yum = Yum("test_repo_name", tmpdir)
        pkgs = yum.list_packages(["noarch"])
        self.assertEqual(len(pkgs), 1)
        pkg = pkgs.pop()
        self.assertEqual(pkg["name"], "sample")
        self.assertEqual(pkg["base_package_name"], "sample")
        self.assertEqual(pkg["version"], "1.0")
        self.assertEqual(pkg["release"], "1.fc18")
        self.assertEqual(pkg["arch"], "noarch")

        self.assertEqual(pkg["filename"], os.path.basename(rpm))
        self.assertEqual(pkg["url"], "file://{0}".format(
            os.path.join(tmpdir, os.path.basename(rpm))))

        self.assertEqual(pkg["type"], "rpm")

        shutil.rmtree(tmpdir)
Esempio n. 2
0
    def test_list_packages(self):
        """
        Test whether list_packages lists our ad-hoc
        repository correctly.
        """

        rpm = "sample_rpms/sample-1.0-1.fc18.noarch.rpm"

        tmpdir = tempfile.mkdtemp()
        shutil.copyfile(rpm, os.path.join(tmpdir, os.path.basename(rpm)))

        proc = popen("createrepo_c", "--verbose", tmpdir)
        self.assertTrue(b"Workers Finished" in proc.stdout
                        or b"Pool finished" in proc.stdout)

        dnf = Dnf("test_repo_name", tmpdir)
        pkgs = dnf.list_packages(["noarch"])
        self.assertEqual(len(pkgs), 1)
        pkg = pkgs.pop()
        self.assertEqual(pkg["name"], "sample")
        self.assertEqual(pkg["base_package_name"], "sample")
        self.assertEqual(pkg["version"], "1.0")
        self.assertEqual(pkg["release"], "1.fc18")
        self.assertEqual(pkg["arch"], "noarch")

        self.assertEqual(pkg["filename"], os.path.basename(rpm))
        self.assertEqual(
            pkg["url"],
            "file://{0}".format(os.path.join(tmpdir, os.path.basename(rpm))))

        self.assertEqual(pkg["type"], "rpm")

        shutil.rmtree(tmpdir)
Esempio n. 3
0
    def reposync_testing(self, repo_type):
        self.rpm = glob.glob("sample_rpms/sample*.rpm")[0]

        self.tmpdir = tempfile.mkdtemp()
        shutil.copyfile(self.rpm,
                        os.path.join(self.tmpdir, os.path.basename(self.rpm)))

        proc = popen("createrepo", "--verbose", self.tmpdir)
        self.assertTrue(b"Workers Finished" in proc.stdout or b"Pool finished" in proc.stdout)

        self.call_action_ordered_args("repoadd", [
            "sample_repo", # NAME
            repo_type, # TYPE
            "file://{0}".format(self.tmpdir), # URL
        ])

        # add release
        self.call_action("releaseadd", {
            "opsys": "fedora",
            "opsys-release": "24",
            "status": "ACTIVE",
        })

        self.call_action_ordered_args("repoassign", [
            "sample_repo", # NAME
            "Fedora 24", # OPSYS
            "x86_64",# ARCH
        ])

        init_bosra = self.db.session.query(BuildOpSysReleaseArch).count()
        init_packages = self.db.session.query(Package).count()
        self.assertEqual(self.call_action("reposync", {
            "NAME": "sample_repo",
            "no-download-rpm": ""
        }), 0)

        bosra = self.db.session.query(BuildOpSysReleaseArch).count()
        self.assertEqual(bosra, init_bosra + 1)
        packages = self.db.session.query(Package).count()
        self.assertEqual(init_packages + 1, packages)

        shutil.rmtree(self.tmpdir)

        self.call_action_ordered_args("repoadd", [
            "fail_repo", # NAME
            repo_type, # TYPE
            "file:///non/existing", # URL
        ])

        self.call_action_ordered_args("repoassign", [
            "fail_repo", # NAME
            "Fedora 24", # OPSYS
            "x86_64",# ARCH
        ])

        self.assertEqual(self.call_action("reposync", {
            "NAME": "fail_repo",
        }), 0)

        self.assertEqual(packages, self.db.session.query(Package).count())
Esempio n. 4
0
        def reposync(repo, repodir, packages, reuse=False, force_resync=False):
            for package in packages:
                shutil.copyfile(package,
                                os.path.join(repodir, os.path.basename(package)))

            proc = popen("createrepo_c", "--verbose", repodir)
            self.assertTrue(b"Workers Finished" in proc.stdout or b"Pool finished" in proc.stdout)

            if not reuse:
                self.call_action_ordered_args("repoadd", [
                    repo, # NAME
                    repo_type, # TYPE
                    "file://{0}".format(repodir), # URL
                ])

                self.call_action_ordered_args("repoassign", [
                    repo, # NAME
                    "Fedora 24", # OPSYS
                    "x86_64",# ARCH
                ])

            reposync_args = {
                "NAME": repo,
                "no-download-rpm": "",
            }

            if force_resync:
                reposync_args["no-cache"] = ""

            self.assertEqual(self.call_action("reposync", reposync_args), 0)
Esempio n. 5
0
    def setUp(self):
        self.rpm = glob.glob("sample_rpms/sample*.rpm")[0]

        self.tmpdir = tempfile.mkdtemp()
        self.cachedir = tempfile.mkdtemp()
        shutil.copyfile(self.rpm,
                        os.path.join(self.tmpdir, os.path.basename(self.rpm)))

        proc = popen("createrepo", "--verbose", self.tmpdir)
        self.assertTrue(b"Workers Finished" in proc.stdout or b"Pool finished" in proc.stdout)
Esempio n. 6
0
    def setUp(self):
        self.rpm = glob.glob("sample_rpms/sample*.rpm")[0]

        self.tmpdir = tempfile.mkdtemp()
        self.cachedir = tempfile.mkdtemp()
        shutil.copyfile(self.rpm,
                        os.path.join(self.tmpdir, os.path.basename(self.rpm)))

        proc = popen("createrepo", self.tmpdir)
        self.assertTrue(b"Workers Finished" in proc.stdout or b"Pool finished" in proc.stdout)
Esempio n. 7
0
    def setUp(self):
        self.rpm = "sample_rpms/sample-1.0-1.fc18.noarch.rpm"

        self.tmpdir = tempfile.mkdtemp()
        self.cachedir = tempfile.mkdtemp()
        shutil.copyfile(self.rpm,
                        os.path.join(self.tmpdir, os.path.basename(self.rpm)))

        proc = popen("createrepo_c", "--verbose", self.tmpdir)
        self.assertTrue(b"Workers Finished" in proc.stdout
                        or b"Pool finished" in proc.stdout)
Esempio n. 8
0
    def reposync_mirror_testing(self, repo_type):
        self.rpm = glob.glob("sample_rpms/sample*.rpm")[0]

        self.tmpdir = tempfile.mkdtemp()
        shutil.copyfile(self.rpm,
                        os.path.join(self.tmpdir, os.path.basename(self.rpm)))

        proc = popen("createrepo_c", "--verbose", self.tmpdir)
        self.assertTrue(b"Workers Finished" in proc.stdout
                        or b"Pool finished" in proc.stdout)

        self.call_action_ordered_args(
            "repoadd",
            [
                "one_correct_repo",  # NAME
                repo_type,  # TYPE
                "file:///non/existing",  # URL
                "file://{0}".format(self.tmpdir),  # URL
            ])

        self.call_action("releaseadd", {
            "opsys": "fedora",
            "opsys-release": "24",
            "status": "ACTIVE",
        })

        self.call_action_ordered_args(
            "repoassign",
            [
                "one_correct_repo",  # NAME
                "Fedora 24",  # OPSYS
                "x86_64",  # ARCH
            ])

        packages = self.db.session.query(Package).count()
        self.assertEqual(
            self.call_action("reposync", {
                "NAME": "one_correct_repo",
            }), 0)

        self.assertEqual(packages + 1, self.db.session.query(Package).count())
        shutil.rmtree(self.tmpdir)
Esempio n. 9
0
    def check_repo_testing(self, repo_type):
        self.rpm = glob.glob("sample_rpms/sample*.rpm")[0]

        self.tmpdir = tempfile.mkdtemp()
        shutil.copyfile(self.rpm,
                        os.path.join(self.tmpdir, os.path.basename(self.rpm)))

        proc = popen("createrepo_c", "--verbose", self.tmpdir)
        self.assertTrue(b"Workers Finished" in proc.stdout
                        or b"Pool finished" in proc.stdout)

        self.call_action_ordered_args(
            "repoadd",
            [
                "repo_file",  # NAME
                repo_type,  # TYPE
                "file:///non/existing",  # URL
                "file://{0}".format(self.tmpdir),  # URL
            ])
        self.assertEqual(self.call_action("check-repo"), 0)
        self.assertIn("'repo_file' is not assigned with OpSys release",
                      self.action_stdout)

        self.call_action("releaseadd", {
            "opsys": "fedora",
            "opsys-release": "24",
            "status": "ACTIVE",
        })

        self.call_action_ordered_args(
            "repoassign",
            [
                "repo_file",  # NAME
                "Fedora 24",  # OPSYS
            ])

        self.assertEqual(self.call_action("check-repo"), 0)
        self.assertIn("'repo_file' is not assigned with architecture",
                      self.action_stdout)

        self.call_action_ordered_args(
            "repoassign",
            [
                "repo_file",  # NAME
                "x86_64",  # ARCH
            ])

        self.assertEqual(self.call_action("check-repo"), 0)
        self.assertIn("Everything is OK!", self.action_stdout)

        self.call_action_ordered_args(
            "repoadd",
            [
                "fail_repo",  # NAME
                repo_type,  # TYPE
                "file:///non/existing",  # URL
            ])
        self.assertEqual(self.call_action("check-repo"), 0)
        self.assertIn("'fail_repo' does not have a valid url",
                      self.action_stdout)

        tmpdir = tempfile.mkdtemp()
        proc = popen("createrepo_c", "--verbose", tmpdir)

        self.assertTrue(b"Workers Finished" in proc.stdout
                        or b"Pool finished" in proc.stdout)

        handler_class = functools.partial(http.server.SimpleHTTPRequestHandler,
                                          directory=tmpdir)

        with http.server.HTTPServer(('localhost', 0), handler_class) as server:
            server_thread = threading.Thread(target=server.serve_forever)

            server_thread.daemon = True
            server_thread.start()

            self.call_action_ordered_args("repoadd", [
                "remote_repo",
                repo_type,
                ("http://%s:%d/" %
                 (server.server_address[0], server.server_address[1])),
            ])

            self.call_action_ordered_args("repoassign", [
                "remote_repo",
                "Fedora 24",
                "x86_64",
            ])

            self.assertEqual(
                self.call_action("check-repo", {"REPONAME": "remote_repo"}), 0)
            self.assertIn("Everything is OK!", self.action_stdout)

            server.shutdown()

        shutil.rmtree(tmpdir)

        self.assertEqual(
            self.call_action("check-repo", {"REPONAME": "unknown_name"}), 0)

        self.assertIn("Repository 'unknown_name' does not exists",
                      self.action_stdout)

        self.call_action_ordered_args(
            "repoadd",
            [
                "remote_repo_unknown",  # NAME
                repo_type,  # TYPE
                "http://unknow_repo.com/",  # URL
            ])

        self.assertEqual(
            self.call_action("check-repo",
                             {"REPONAME": "remote_repo_unknown"}), 0)
        self.assertIn("'remote_repo_unknown' does not have a valid url",
                      self.action_stdout)

        shutil.rmtree(self.tmpdir)
Esempio n. 10
0
    def check_repo_testing(self, repo_type):
        self.rpm = glob.glob("sample_rpms/sample*.rpm")[0]

        self.tmpdir = tempfile.mkdtemp()
        shutil.copyfile(self.rpm,
                        os.path.join(self.tmpdir, os.path.basename(self.rpm)))

        proc = popen("createrepo_c", "--verbose", self.tmpdir)
        self.assertTrue(b"Workers Finished" in proc.stdout
                        or b"Pool finished" in proc.stdout)

        self.call_action_ordered_args(
            "repoadd",
            [
                "repo_file",  # NAME
                repo_type,  # TYPE
                "file:///non/existing",  # URL
                "file://{0}".format(self.tmpdir),  # URL
            ])
        self.assertEqual(self.call_action("check-repo"), 0)
        self.assertIn("'repo_file' is not assigned with OpSys release",
                      self.action_stdout)

        self.call_action("releaseadd", {
            "opsys": "fedora",
            "opsys-release": "24",
            "status": "ACTIVE",
        })

        self.call_action_ordered_args(
            "repoassign",
            [
                "repo_file",  # NAME
                "Fedora 24",  # OPSYS
            ])

        self.assertEqual(self.call_action("check-repo"), 0)
        self.assertIn("'repo_file' is not assigned with architecture",
                      self.action_stdout)

        self.call_action_ordered_args(
            "repoassign",
            [
                "repo_file",  # NAME
                "x86_64",  # ARCH
            ])

        self.assertEqual(self.call_action("check-repo"), 0)
        self.assertIn("Everything is OK!", self.action_stdout)

        self.call_action_ordered_args(
            "repoadd",
            [
                "fail_repo",  # NAME
                repo_type,  # TYPE
                "file:///non/existing",  # URL
            ])
        self.assertEqual(self.call_action("check-repo"), 0)
        self.assertIn("'fail_repo' does not have a valid url",
                      self.action_stdout)

        self.call_action_ordered_args(
            "repoadd",
            [
                "remote_repo",  # NAME
                repo_type,  # TYPE
                ("http://dl.fedoraproject.org/pub/fedora/linux/development"
                 "/rawhide/Everything/x86_64/os/"),  # URL
            ])

        self.call_action_ordered_args(
            "repoassign",
            [
                "remote_repo",  # NAME
                "Fedora 24",  # OPSYS
                "x86_64",  # ARCH
            ])

        self.assertEqual(
            self.call_action("check-repo", {"REPONAME": "remote_repo"}), 0)
        self.assertIn("Everything is OK!", self.action_stdout)

        self.assertEqual(
            self.call_action("check-repo", {"REPONAME": "unknown_name"}), 0)

        self.assertIn("Repository 'unknown_name' does not exists",
                      self.action_stdout)

        self.call_action_ordered_args(
            "repoadd",
            [
                "remote_repo_unknown",  # NAME
                repo_type,  # TYPE
                "http://unknow_repo.com/",  # URL
            ])

        self.assertEqual(
            self.call_action("check-repo",
                             {"REPONAME": "remote_repo_unknown"}), 0)
        self.assertIn("'remote_repo_unknown' does not have a valid url",
                      self.action_stdout)

        shutil.rmtree(self.tmpdir)
Esempio n. 11
0
    def check_repo_testing(self, repo_type):
        self.rpm = glob.glob("sample_rpms/sample*.rpm")[0]

        self.tmpdir = tempfile.mkdtemp()
        shutil.copyfile(self.rpm,
                        os.path.join(self.tmpdir, os.path.basename(self.rpm)))

        proc = popen("createrepo", "--verbose", self.tmpdir)
        self.assertTrue(b"Workers Finished" in proc.stdout or b"Pool finished" in proc.stdout)

        self.call_action_ordered_args("repoadd", [
            "repo_file", # NAME
            repo_type, # TYPE
            "file:///non/existing", # URL
            "file://{0}".format(self.tmpdir), # URL
        ])
        self.assertEqual(self.call_action("check-repo"), 0)
        self.assertIn("'repo_file' is not assigned with OpSys release",
                      self.action_stdout)

        self.call_action("releaseadd", {
            "opsys": "fedora",
            "opsys-release": "24",
            "status": "ACTIVE",
        })

        self.call_action_ordered_args("repoassign", [
            "repo_file", # NAME
            "Fedora 24", # OPSYS
        ])

        self.assertEqual(self.call_action("check-repo"), 0)
        self.assertIn("'repo_file' is not assigned with architecture",
                      self.action_stdout)

        self.call_action_ordered_args("repoassign", [
            "repo_file", # NAME
            "x86_64",# ARCH
        ])

        self.assertEqual(self.call_action("check-repo"), 0)
        self.assertIn("Everything is OK!", self.action_stdout)

        self.call_action_ordered_args("repoadd", [
            "fail_repo", # NAME
            repo_type, # TYPE
            "file:///non/existing", # URL
        ])
        self.assertEqual(self.call_action("check-repo"), 0)
        self.assertIn("'fail_repo' does not have a valid url",
                      self.action_stdout)

        self.call_action_ordered_args("repoadd", [
            "remote_repo", # NAME
            repo_type, # TYPE
            ("http://dl.fedoraproject.org/pub/fedora/linux/development"
             "/rawhide/Everything/x86_64/os/"), # URL
        ])

        self.call_action_ordered_args("repoassign", [
            "remote_repo", # NAME
            "Fedora 24", # OPSYS
            "x86_64",# ARCH
        ])

        self.assertEqual(self.call_action("check-repo",
                                          {"REPONAME" :"remote_repo"}),
                         0)
        self.assertIn("Everything is OK!", self.action_stdout)

        self.assertEqual(self.call_action("check-repo",
                                          {"REPONAME" :"unknown_name"}),
                         0)

        self.assertIn("Repository 'unknown_name' does not exists",
                      self.action_stdout)

        self.call_action_ordered_args("repoadd", [
            "remote_repo_unknown", # NAME
            repo_type, # TYPE
            "http://unknow_repo.com/", # URL
        ])

        self.assertEqual(self.call_action("check-repo",
                                          {"REPONAME" :"remote_repo_unknown"}),
                         0)
        self.assertIn("'remote_repo_unknown' does not have a valid url",
                      self.action_stdout)

        shutil.rmtree(self.tmpdir)
Esempio n. 12
0
    def reposync_testing(self, repo_type):
        self.rpm = glob.glob("sample_rpms/sample*.rpm")[0]

        self.tmpdir = tempfile.mkdtemp()
        shutil.copyfile(self.rpm,
                        os.path.join(self.tmpdir, os.path.basename(self.rpm)))

        proc = popen("createrepo", self.tmpdir)
        self.assertTrue(b"Workers Finished" in proc.stdout
                        or b"Pool finished" in proc.stdout)

        self.call_action_ordered_args(
            "repoadd",
            [
                "sample_repo",  # NAME
                repo_type,  # TYPE
                "file://{0}".format(self.tmpdir),  # URL
            ])

        # add release
        self.call_action("releaseadd", {
            "opsys": "fedora",
            "opsys-release": "24",
            "status": "ACTIVE",
        })

        self.call_action_ordered_args(
            "repoassign",
            [
                "sample_repo",  # NAME
                "Fedora 24",  # OPSYS
                "x86_64",  # ARCH
            ])

        init_bosra = self.db.session.query(BuildOpSysReleaseArch).count()
        init_packages = self.db.session.query(Package).count()
        self.assertEqual(
            self.call_action("reposync", {
                "NAME": "sample_repo",
                "no-download-rpm": ""
            }), 0)

        bosra = self.db.session.query(BuildOpSysReleaseArch).count()
        self.assertEqual(bosra, init_bosra + 1)
        packages = self.db.session.query(Package).count()
        self.assertEqual(init_packages + 1, packages)

        shutil.rmtree(self.tmpdir)

        self.call_action_ordered_args(
            "repoadd",
            [
                "fail_repo",  # NAME
                repo_type,  # TYPE
                "file:///non/existing",  # URL
            ])

        self.call_action_ordered_args(
            "repoassign",
            [
                "fail_repo",  # NAME
                "Fedora 24",  # OPSYS
                "x86_64",  # ARCH
            ])

        self.assertEqual(self.call_action("reposync", {
            "NAME": "fail_repo",
        }), 0)

        self.assertEqual(packages, self.db.session.query(Package).count())