def test_no_tasks(self, mock_evg_api, mock_version, mock_build): mock_evg_api.build_by_id.return_value = mock_build mock_build.get_tasks.return_value = [] urls = evergreen_conn.get_compile_artifact_urls( mock_evg_api, mock_version, "test") self.assertEqual(urls, {})
def get_latest_urls(self, version): """Return latest urls.""" urls = {} evg_project = f"mongodb-mongo-v{version}" if version == "master": evg_project = "mongodb-mongo-master" if evg_project not in self.config.evergreen_projects: return urls LOGGER.debug("Found evergreen project.", evergreen_project=evg_project) # Assuming that project names contain <major>.<minor> version major_minor_version = version buildvariant_name = self.get_buildvariant_name(major_minor_version) LOGGER.debug("Found buildvariant.", buildvariant_name=buildvariant_name) evg_versions = evergreen_conn.get_evergreen_versions( self.evg_api, evg_project) for evg_version in evg_versions: if buildvariant_name not in evg_version.build_variants_map: buildvariant_name = self.fallback_to_generic_buildvariant( major_minor_version) curr_urls = evergreen_conn.get_compile_artifact_urls( self.evg_api, evg_version, buildvariant_name) if "Binaries" in curr_urls: urls = curr_urls break return urls
def get_urls(self, version): """Return urls.""" git_tag, commit_hash = github_conn.get_git_tag_and_commit( self.github_oauth_token, version) LOGGER.info("Found git attributes.", git_tag=git_tag, commit_hash=commit_hash) evg_project, evg_version = evergreen_conn.get_evergreen_project_and_version( self.config, self.evg_api, commit_hash) LOGGER.debug("Found evergreen project.", evergreen_project=evg_project) try: major_minor_version = re.findall(r"\d+\.\d+", evg_project)[-1] except IndexError: major_minor_version = "master" buildvariant_name = self.get_buildvariant_name(major_minor_version) LOGGER.debug("Found buildvariant.", buildvariant_name=buildvariant_name) if buildvariant_name not in evg_version.build_variants_map: buildvariant_name = self.fallback_to_generic_buildvariant( major_minor_version) urls = evergreen_conn.get_compile_artifact_urls( self.evg_api, evg_version, buildvariant_name) return urls
def test_no_push_task(self, mock_evg_api, mock_version, mock_build, mock_compile_task): mock_evg_api.build_by_id.return_value = mock_build mock_compile_task.display_name = "compile" mock_compile_task.status = "success" mock_build.get_tasks.return_value = [mock_compile_task] urls = evergreen_conn.get_compile_artifact_urls(mock_evg_api, mock_version, "test") self.assertEqual(urls, {})
def test_urls_found(self, mock_evg_api, mock_version, mock_build, mock_compile_task, mock_push_task, mock_artifact): expected_urls = { "Binaries": "https://mciuploads.s3.amazonaws.com/mongodb-mongo-master/ubuntu1804/90f767adbb1901d007ee4dd8714f53402d893669/binaries/mongo-mongodb_mongo_master_ubuntu1804_90f767adbb1901d007ee4dd8714f53402d893669_20_11_30_03_14_30.tgz" } mock_evg_api.build_by_id.return_value = mock_build mock_artifact.name = "Binaries" mock_artifact.url = expected_urls["Binaries"] mock_compile_task.display_name = "compile" mock_compile_task.artifacts = [mock_artifact] mock_compile_task.status = "success" mock_push_task.display_name = "push" mock_push_task.status = "success" mock_build.get_tasks.return_value = [mock_compile_task, mock_push_task] urls = evergreen_conn.get_compile_artifact_urls( mock_evg_api, mock_version, "test") self.assertEqual(urls, expected_urls)