[BUILD] Add tests for docker downloader script
[oom/offline-installer.git] / build / download / tests / conftest.py
1 import pytest
2 from download import *
3 from sys import version_info,exit
4 from test_settings import *
5 from timeit import default_timer
6 from docker import from_env
7
8 @pytest.fixture
9 def check_python_version():
10     if version_info.major < 3:
11         print('Python 2 is not supported.')
12         exit(1)
13
14 @pytest.fixture
15 def init_cli(check_python_version): # pylint: disable=E0613,W0613
16     # initialize DockerDownloader
17     args = parse_args().parse_args(['--docker', TEST_IMAGE_LIST_FILE]) # pylint: disable=E0602
18     interval_start = default_timer()
19     docker = docker_downloader.DockerDownloader(False, *args.docker, mirror=args.docker_private_registry_mirror, mirror_exclude=args.docker_private_registry_exclude, workers=1) # pylint: disable=E0602
20     handle_download(docker, args.check, [], interval_start) # pylint: disable=E0602
21
22 @pytest.fixture
23 def init_cli_with_registry_mirror(check_python_version): # pylint: disable=E0613,W0613
24     # initialize DockerDownloader
25     args = parse_args().parse_args(['--docker-private-registry-mirror', TEST_REGISTRY_MIRROR, '--docker', TEST_IMAGE_LIST_FILE]) # pylint: disable=E0602
26     interval_start = default_timer()
27     docker = docker_downloader.DockerDownloader(False, *args.docker, mirror=args.docker_private_registry_mirror, mirror_exclude=args.docker_private_registry_exclude, workers=1) # pylint: disable=E0602
28     handle_download(docker, args.check, [], interval_start) # pylint: disable=E0602
29
30 @pytest.fixture
31 def init_cli_check(check_python_version, capfd): # pylint: disable=W0613
32     # initialize DockerDownloader
33     args = parse_args().parse_args(['--docker', TEST_IMAGE_LIST_FILE, '--check']) # pylint: disable=E0602
34     interval_start = default_timer()
35     docker = docker_downloader.DockerDownloader(False, *args.docker, mirror=args.docker_private_registry_mirror, mirror_exclude=args.docker_private_registry_exclude, workers=1) # pylint: disable=E0602
36     handle_download(docker, args.check, [], interval_start) # pylint: disable=E0602
37     msg = capfd.readouterr()
38     return msg.out
39
40 @pytest.fixture
41 def test_image_list():
42     img_list = []
43     with open(TEST_IMAGE_LIST_FILE, 'r') as list:
44         for line in list:
45             img_list.append(line.strip())
46     return img_list
47
48 @pytest.fixture
49 def docker_image_list():
50     docker_client = from_env()
51     image_list = []
52     for img in docker_client.images.list():
53         for tag in img.tags:
54             image_list.append(tag)
55     return image_list
56
57 @pytest.fixture
58 def drop_test_images(test_image_list, docker_image_list):
59     dc = from_env()
60     image_list = docker_image_list
61     for img in test_image_list:
62         if img in image_list:
63             dc.images.remove(img)