Merge "Implement docker module unit tests"
This commit is contained in:
commit
f95c5d37fd
0
tobiko/tests/unit/docker/__init__.py
Normal file
0
tobiko/tests/unit/docker/__init__.py
Normal file
137
tobiko/tests/unit/docker/test_shell.py
Normal file
137
tobiko/tests/unit/docker/test_shell.py
Normal file
@ -0,0 +1,137 @@
|
||||
# Copyright 2018 Red Hat
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
from __future__ import absolute_import
|
||||
|
||||
import mock
|
||||
|
||||
from tobiko import docker
|
||||
from tobiko.tests import unit
|
||||
|
||||
|
||||
# This class help us to emulate tobiko.shell.sh.execute
|
||||
# to simulate errors or not and test the tobiko.docker._shell module
|
||||
class FakeProcess:
|
||||
exit_status = 0
|
||||
stdout = ''
|
||||
stderr = ''
|
||||
|
||||
|
||||
class TestShell(unit.TobikoUnitTest):
|
||||
|
||||
def setUp(self):
|
||||
super(TestShell, self).setUp()
|
||||
self.fproc = FakeProcess()
|
||||
|
||||
@mock.patch('tobiko.shell.sh.execute')
|
||||
def test_discover_docker_urls_single(self, mock_execute):
|
||||
self.fproc.exit_status = 0
|
||||
self.fproc.stdout = 'root 1999 0.0 0.2 1456736 85272 ?' \
|
||||
'Ssl 15:16 0:01 /usr/bin/dockerd -H fd:// ' \
|
||||
'--containerd=/run/containerd/containerd.sock'
|
||||
self.fproc.stderr = ''
|
||||
mock_execute.return_value = self.fproc
|
||||
self.assertEqual(docker.discover_docker_urls(), ['fd://'])
|
||||
|
||||
@mock.patch('tobiko.shell.sh.execute')
|
||||
def test_discover_docker_urls_multiple(self, mock_execute):
|
||||
self.fproc.exit_status = 0
|
||||
self.fproc.stdout = 'root 1999 0.0 0.2 1456736 85272 ?' \
|
||||
'Ssl 15:16 0:01 /usr/bin/dockerd -H fd:// ' \
|
||||
'-H fd:// ' \
|
||||
'--containerd=/run/containerd/containerd.sock'
|
||||
self.fproc.stderr = ''
|
||||
mock_execute.return_value = self.fproc
|
||||
self.assertEqual(docker.discover_docker_urls(), ['fd://', 'fd://'])
|
||||
|
||||
@mock.patch('tobiko.shell.sh.execute')
|
||||
def test_discover_docker_urls_separated(self, mock_execute):
|
||||
self.fproc.exit_status = 0
|
||||
self.fproc.stdout = 'root 1999 0.0 0.2 1456736 85272 ?' \
|
||||
'Ssl 15:16 0:01 /usr/bin/dockerd -H fd:// ' \
|
||||
'--containerd=/run/containerd/containerd.sock ' \
|
||||
'-H boom'
|
||||
self.fproc.stderr = ''
|
||||
mock_execute.return_value = self.fproc
|
||||
self.assertEqual(docker.discover_docker_urls(), ['fd://', 'boom'])
|
||||
|
||||
@mock.patch('tobiko.shell.sh.execute')
|
||||
def test_discover_docker_urls_many_daemons(self, mock_execute):
|
||||
self.fproc.exit_status = 0
|
||||
self.fproc.stdout = 'root 1999 0.0 0.2 1456736 85272 ?' \
|
||||
'Ssl 15:16 0:01 /usr/bin/dockerd ' \
|
||||
'-H fd:// -H boom ' \
|
||||
'--containerd=/run/containerd/containerd.sock\n' \
|
||||
'root 1999 0.0 0.2 1456736 85272 ?' \
|
||||
'Ssl 15:16 0:01 /usr/bin/dockerd -H foo ' \
|
||||
'--containerd=/run/containerd/containerd.sock ' \
|
||||
'-H bar'
|
||||
self.fproc.stderr = ''
|
||||
mock_execute.return_value = self.fproc
|
||||
self.assertEqual(docker.discover_docker_urls(),
|
||||
['fd://', 'boom', 'foo', 'bar'])
|
||||
|
||||
@mock.patch('tobiko.shell.sh.execute')
|
||||
def test_discover_docker_urls_no_daemons(self, mock_execute):
|
||||
self.fproc.exit_status = 0
|
||||
self.fproc.stdout = ''
|
||||
self.fproc.stderr = ''
|
||||
mock_execute.return_value = self.fproc
|
||||
self.assertRaises(docker.DockerUrlNotFoundError,
|
||||
docker.discover_docker_urls)
|
||||
|
||||
@mock.patch('tobiko.shell.sh.execute')
|
||||
def test_is_docker_running(self, mock_execute):
|
||||
self.fproc.exit_status = 0
|
||||
self.fproc.stdout = 'root 1999 0.0 0.2 1456736 85272 ?' \
|
||||
'Ssl 15:16 0:01 /usr/bin/dockerd ' \
|
||||
'-H fd:// -H boom ' \
|
||||
'--containerd=/run/containerd/containerd.sock\n' \
|
||||
'root 1999 0.0 0.2 1456736 85272 ?' \
|
||||
'Ssl 15:16 0:01 /usr/bin/dockerd -H foo ' \
|
||||
'--containerd=/run/containerd/containerd.sock ' \
|
||||
'-H bar'
|
||||
self.fproc.stderr = ''
|
||||
mock_execute.return_value = self.fproc
|
||||
self.assertEqual(docker.is_docker_running(), True)
|
||||
|
||||
@mock.patch('tobiko.shell.sh.execute')
|
||||
def test_is_docker_running_without_results(self, mock_execute):
|
||||
self.fproc.exit_status = 0
|
||||
self.fproc.stdout = ''
|
||||
self.fproc.stderr = ''
|
||||
mock_execute.return_value = self.fproc
|
||||
self.assertEqual(docker.is_docker_running(), False)
|
||||
|
||||
@mock.patch('tobiko.shell.sh.execute')
|
||||
def test_is_docker_running_exit_1(self, mock_execute):
|
||||
self.fproc.exit_status = 1
|
||||
self.fproc.stdout = 'root 1999 0.0 0.2 1456736 85272 ?' \
|
||||
'Ssl 15:16 0:01 /usr/bin/dockerd ' \
|
||||
'-H fd:// -H boom ' \
|
||||
'--containerd=/run/containerd/containerd.sock\n' \
|
||||
'root 1999 0.0 0.2 1456736 85272 ?' \
|
||||
'Ssl 15:16 0:01 /usr/bin/dockerd -H foo ' \
|
||||
'--containerd=/run/containerd/containerd.sock ' \
|
||||
'-H bar'
|
||||
self.fproc.stderr = ''
|
||||
mock_execute.return_value = self.fproc
|
||||
self.assertEqual(docker.is_docker_running(), False)
|
||||
|
||||
@mock.patch('tobiko.shell.sh.execute')
|
||||
def test_is_docker_running_error_exist_but_exit_0(self, mock_execute):
|
||||
self.fproc.exit_status = 0
|
||||
self.fproc.stdout = ''
|
||||
self.fproc.stderr = 'boom'
|
||||
mock_execute.return_value = self.fproc
|
||||
self.assertEqual(docker.is_docker_running(), False)
|
Loading…
x
Reference in New Issue
Block a user