def setUpClass(cls): """ Check if packages to install through tests are already installed """ cls.client = gen_python_client() cls.cli_client = cli.Client(cfg) cls.PACKAGES = PYTHON_FIXTURES_PACKAGES cls.PACKAGES_URLS = [ urljoin(urljoin(PYTHON_FIXTURE_URL, "packages/"), filename) for filename in PYTHON_FIXTURES_FILENAMES ] cls.PACKAGES_FILES = [{ "file": http_get(file) } for file in cls.PACKAGES_URLS] delete_orphans() for pkg in cls.PACKAGES: cls.assertFalse( cls, cls.check_install(cls.cli_client, pkg), "{} is already installed".format(pkg), ) cls.repo_api = RepositoriesPythonApi(cls.client) cls.remote_api = RemotesPythonApi(cls.client) cls.content_api = ContentPackagesApi(cls.client) cls.publications_api = PublicationsPypiApi(cls.client) cls.distro_api = DistributionsPypiApi(cls.client)
def setUpClass(cls): """Sets up the apis for the tests.""" client = gen_python_client() cls.repo_api = RepositoriesPythonApi(client) cls.rem_api = RemotesPythonApi(client) cls.pub_api = PublicationsPypiApi(client) cls.dis_api = DistributionsPypiApi(client) cls.releases = [PYTHON_EGG_FILENAME, PYTHON_WHEEL_FILENAME]
def setUpClass(cls): """Sets up the class""" client = gen_python_client() cls.cfg = config.get_config() cls.repo_api = RepositoriesPythonApi(client) cls.remote_api = RemotesPythonApi(client) cls.publications_api = PublicationsPypiApi(client) cls.distro_api = DistributionsPypiApi(client)
def setUpClass(cls): """Create class-wide variables.""" cls.cfg = config.get_config() client = gen_python_client() cls.repo_api = RepositoriesPythonApi(client) cls.remote_api = RemotesPythonApi(client) cls.publications = PublicationsPypiApi(client) cls.distributions = DistributionsPypiApi(client)
def setUpClass(cls): """Setup apis for all tests.""" client = gen_python_client() cls.repo_api = RepositoriesPythonApi(client) cls.pub_api = PublicationsPypiApi(client) cls.dis_api = DistributionsPypiApi(client)
def test_all(self): """Verify whether content served by pulp can be downloaded. The process of publishing content is more involved in Pulp 3 than it was under Pulp 2. Given a repository, the process is as follows: 1. Create a publication from the repository. (The latest repository version is selected if no version is specified.) A publication is a repository version plus metadata. 2. Create a distribution from the publication. The distribution defines at which URLs a publication is available, e.g. ``http://example.com/content/foo/`` and ``http://example.com/content/bar/``. Do the following: 1. Create, populate, publish, and distribute a repository. 2. Select a random content unit in the distribution. Download that content unit from Pulp, and verify that the content unit has the same checksum when fetched directly from Pulp-Fixtures. This test targets the following issues: * `Pulp #2895 <https://pulp.plan.io/issues/2895>`_ * `Pulp Smash #872 <https://github.com/pulp/pulp-smash/issues/872>`_ """ client = gen_python_client() repo_api = RepositoriesPythonApi(client) remote_api = RemotesPythonApi(client) publications = PublicationsPypiApi(client) distributions = DistributionsPypiApi(client) repo = repo_api.create(gen_repo()) self.addCleanup(repo_api.delete, repo.pulp_href) body = gen_python_remote() remote = remote_api.create(body) self.addCleanup(remote_api.delete, remote.pulp_href) # Sync a Repository repository_sync_data = RepositorySyncURL(remote=remote.pulp_href) sync_response = repo_api.sync(repo.pulp_href, repository_sync_data) monitor_task(sync_response.task) repo = repo_api.read(repo.pulp_href) # Create a publication. publish_data = PythonPythonPublication(repository=repo.pulp_href) publish_response = publications.create(publish_data) created_resources = monitor_task(publish_response.task) publication_href = created_resources[0] self.addCleanup(publications.delete, publication_href) # Create a distribution. body = gen_distribution() body["publication"] = publication_href distribution_response = distributions.create(body) created_resources = monitor_task(distribution_response.task) distribution = distributions.read(created_resources[0]) self.addCleanup(distributions.delete, distribution.pulp_href) # Pick a content unit (of each type), and download it from both Pulp Fixtures… unit_paths = [ choice(paths) for paths in get_python_content_paths(repo.to_dict()).values() ] fixtures_hashes = [ hashlib.sha256( utils.http_get( urljoin(urljoin(PYTHON_FIXTURE_URL, "packages/"), unit_path[0]))).hexdigest() for unit_path in unit_paths ] # …and Pulp. pulp_hashes = [] cfg = config.get_config() for unit_path in unit_paths: content = download_content_unit(cfg, distribution.to_dict(), unit_path[1]) pulp_hashes.append(hashlib.sha256(content).hexdigest()) self.assertEqual(fixtures_hashes, pulp_hashes)
:param filename: the name of the artifact being uploaded :returns: A semi-random dict for use in creating a content unit. """ return { "artifact": artifact["pulp_href"], "relative_path": filename, } core_client = CoreApiClient(configuration) tasks = TasksApi(core_client) py_client = gen_python_client() repo_api = RepositoriesPythonApi(py_client) remote_api = RemotesPythonApi(py_client) pub_api = PublicationsPypiApi(py_client) distributions_api = DistributionsPypiApi(py_client) content_api = ContentPackagesApi(py_client) def populate_pulp(url=PYTHON_FIXTURE_URL): """Add python contents to Pulp. :param pulp_smash.config.PulpSmashConfig: Information about a Pulp application. :param url: The python repository URL. Defaults to :data:`pulp_smash.constants.PYTHON_FIXTURE_URL` :returns: A list of dicts, where each dict describes one python content in Pulp. """ remote = None repo = None try: remote = remote_api.create(gen_python_remote(url))