mirror of
https://github.com/thegeeklab/docker-tidy.git
synced 2024-11-16 09:40:40 +00:00
76 lines
2.8 KiB
Python
76 lines
2.8 KiB
Python
try:
|
|
from unittest import mock
|
|
except ImportError:
|
|
import mock
|
|
|
|
from docker_custodian.docker_autostop import build_container_matcher
|
|
from docker_custodian.docker_autostop import get_opts
|
|
from docker_custodian.docker_autostop import has_been_running_since
|
|
from docker_custodian.docker_autostop import main
|
|
from docker_custodian.docker_autostop import stop_container
|
|
from docker_custodian.docker_autostop import stop_containers
|
|
|
|
|
|
def test_stop_containers(mock_client, container, now):
|
|
matcher = mock.Mock()
|
|
mock_client.containers.return_value = [container]
|
|
mock_client.inspect_container.return_value = container
|
|
|
|
stop_containers(mock_client, now, matcher, False)
|
|
matcher.assert_called_once_with('container_name')
|
|
mock_client.stop.assert_called_once_with(container['Id'])
|
|
|
|
|
|
def test_stop_container(mock_client):
|
|
id = 'asdb'
|
|
stop_container(mock_client, id)
|
|
mock_client.stop.assert_called_once_with(id)
|
|
|
|
|
|
def test_build_container_matcher():
|
|
prefixes = ['one_', 'two_']
|
|
matcher = build_container_matcher(prefixes)
|
|
|
|
assert matcher('one_container')
|
|
assert matcher('two_container')
|
|
assert not matcher('three_container')
|
|
assert not matcher('one')
|
|
|
|
|
|
def test_has_been_running_since_true(container, later_time):
|
|
assert has_been_running_since(container, later_time)
|
|
|
|
|
|
def test_has_been_running_since_false(container, earlier_time):
|
|
assert not has_been_running_since(container, earlier_time)
|
|
|
|
|
|
@mock.patch('docker_custodian.docker_autostop.build_container_matcher', autospec=True)
|
|
@mock.patch('docker_custodian.docker_autostop.stop_containers', autospec=True)
|
|
@mock.patch('docker_custodian.docker_autostop.get_opts', autospec=True)
|
|
@mock.patch('docker_custodian.docker_autostop.docker', autospec=True)
|
|
def test_main(mock_docker, mock_get_opts, mock_stop_containers, mock_build_matcher):
|
|
mock_get_opts.return_value.timeout = 30
|
|
main()
|
|
mock_get_opts.assert_called_once_with()
|
|
mock_build_matcher.assert_called_once_with(mock_get_opts.return_value.prefix)
|
|
mock_stop_containers.assert_called_once_with(mock.ANY, mock_get_opts.return_value.max_run_time,
|
|
mock_build_matcher.return_value,
|
|
mock_get_opts.return_value.dry_run)
|
|
|
|
|
|
def test_get_opts_with_defaults():
|
|
opts = get_opts(args=['--prefix', 'one', '--prefix', 'two'])
|
|
assert opts.timeout == 60
|
|
assert opts.dry_run is False
|
|
assert opts.prefix == ['one', 'two']
|
|
assert opts.max_run_time is None
|
|
|
|
|
|
def test_get_opts_with_args(now):
|
|
with mock.patch('docker_custodian.docker_autostop.timedelta_type',
|
|
autospec=True) as mock_timedelta_type:
|
|
opts = get_opts(args=['--prefix', 'one', '--max-run-time', '24h'])
|
|
assert opts.max_run_time == mock_timedelta_type.return_value
|
|
mock_timedelta_type.assert_called_once_with('24h')
|