mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-02-02 20:59:06 +08:00
Merge #1762 Increase test coverage of code used in local builds:
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# SPDX-License-Identifier: MIT
|
||||
from __future__ import absolute_import
|
||||
import os
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
@@ -16,10 +17,11 @@ from module_build_service.scheduler.db_session import db_session
|
||||
from tests import read_staged_data, scheduler_init_data
|
||||
|
||||
|
||||
@pytest.mark.parametrize("variation", ("none", "empty", "already_downloaded"))
|
||||
@patch("requests.get")
|
||||
@patch("koji.ClientSession")
|
||||
@patch("module_build_service.builder.utils.execute_cmd")
|
||||
def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_get):
|
||||
def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_get, variation):
|
||||
session = Mock()
|
||||
rpms = [
|
||||
{
|
||||
@@ -27,7 +29,7 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_
|
||||
"build_id": 875991,
|
||||
"name": "module-build-macros",
|
||||
"release": "1.module_92011fe6",
|
||||
"size": 6890,
|
||||
"size": 42,
|
||||
"version": "0.1",
|
||||
},
|
||||
{
|
||||
@@ -35,7 +37,7 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_
|
||||
"build_id": 875991,
|
||||
"name": "module-build-macros",
|
||||
"release": "1.module_92011fe6",
|
||||
"size": 6890,
|
||||
"size": 42,
|
||||
"version": "0.1",
|
||||
},
|
||||
{
|
||||
@@ -43,7 +45,7 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_
|
||||
"build_id": 875636,
|
||||
"name": "ed-debuginfo",
|
||||
"release": "2.module_bd6e0eb1",
|
||||
"size": 81438,
|
||||
"size": 42,
|
||||
"version": "1.14.1",
|
||||
},
|
||||
{
|
||||
@@ -51,7 +53,7 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_
|
||||
"build_id": 875636,
|
||||
"name": "ed",
|
||||
"release": "2.module_bd6e0eb1",
|
||||
"size": 80438,
|
||||
"size": 42,
|
||||
"version": "1.14.1",
|
||||
},
|
||||
{
|
||||
@@ -59,7 +61,7 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_
|
||||
"build_id": 875640,
|
||||
"name": "mksh-debuginfo",
|
||||
"release": "2.module_bd6e0eb1",
|
||||
"size": 578774,
|
||||
"size": 42,
|
||||
"version": "54",
|
||||
},
|
||||
{
|
||||
@@ -67,7 +69,7 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_
|
||||
"build_id": 875640,
|
||||
"name": "mksh",
|
||||
"release": "2.module_bd6e0eb1",
|
||||
"size": 267042,
|
||||
"size": 42,
|
||||
"version": "54",
|
||||
},
|
||||
]
|
||||
@@ -96,17 +98,6 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_
|
||||
},
|
||||
]
|
||||
|
||||
session.listTaggedRPMS.return_value = (rpms, builds)
|
||||
session.opts = {"topurl": "https://kojipkgs.stg.fedoraproject.org/"}
|
||||
mock_koji_session.return_value = session
|
||||
|
||||
tag = "module-testmodule-master-20170405123740-build"
|
||||
temp_dir = tempfile.mkdtemp()
|
||||
try:
|
||||
utils.create_local_repo_from_koji_tag(conf, tag, temp_dir)
|
||||
finally:
|
||||
shutil.rmtree(temp_dir)
|
||||
|
||||
url_one = (
|
||||
"https://kojipkgs.stg.fedoraproject.org//vol/prod/packages/module-build-macros/"
|
||||
"0.1/1.module_92011fe6/noarch/module-build-macros-0.1-1.module_92011fe6.noarch.rpm"
|
||||
@@ -120,11 +111,36 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_
|
||||
"2.module_bd6e0eb1/x86_64/mksh-54-2.module_bd6e0eb1.x86_64.rpm"
|
||||
)
|
||||
|
||||
expected_calls = [
|
||||
call(url_one, stream=True, timeout=60),
|
||||
call(url_two, stream=True, timeout=60),
|
||||
call(url_three, stream=True, timeout=60),
|
||||
]
|
||||
if variation == "empty":
|
||||
rpms = []
|
||||
builds = []
|
||||
|
||||
session.listTaggedRPMS.return_value = (rpms, builds)
|
||||
session.opts = {"topurl": "https://kojipkgs.stg.fedoraproject.org/"}
|
||||
mock_koji_session.return_value = session
|
||||
|
||||
tag = "module-testmodule-master-20170405123740-build"
|
||||
temp_dir = tempfile.mkdtemp()
|
||||
try:
|
||||
if variation == "already_downloaded":
|
||||
for url in (url_one, url_two, url_three):
|
||||
print(os.path.join(temp_dir, os.path.basename(url)))
|
||||
with open(os.path.join(temp_dir, os.path.basename(url)), "w") as f:
|
||||
f.write("x" * 42)
|
||||
|
||||
utils.create_local_repo_from_koji_tag(conf, tag, temp_dir)
|
||||
finally:
|
||||
shutil.rmtree(temp_dir)
|
||||
|
||||
if variation == "none":
|
||||
expected_calls = [
|
||||
call(url_one, stream=True, timeout=60),
|
||||
call(url_two, stream=True, timeout=60),
|
||||
call(url_three, stream=True, timeout=60),
|
||||
]
|
||||
else:
|
||||
expected_calls = []
|
||||
|
||||
for expected_call in expected_calls:
|
||||
assert expected_call in mock_get.call_args_list
|
||||
assert len(mock_get.call_args_list) == len(expected_calls)
|
||||
|
||||
@@ -421,6 +421,8 @@ class TestBatches:
|
||||
builder = mock.MagicMock()
|
||||
builder.buildroot_ready.return_value = False
|
||||
|
||||
start_next_batch_build(conf, module_build, builder)
|
||||
|
||||
module_build = models.ModuleBuild.get_by_id(db_session, 3)
|
||||
|
||||
# Batch number should not increase.
|
||||
|
||||
Reference in New Issue
Block a user