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)
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)
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())
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)
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)
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)
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)
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)
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)
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)
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)
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())