Enable use of Docker networking with the --x-networking flag
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
This commit is contained in:
parent
f228173660
commit
d5f5eb1924
14 changed files with 240 additions and 24 deletions
|
|
@ -185,6 +185,49 @@ class CLITestCase(DockerClientTestCase):
|
|||
set(self.project.containers())
|
||||
)
|
||||
|
||||
def test_up_without_networking(self):
|
||||
self.require_engine_version("1.9")
|
||||
|
||||
self.command.base_dir = 'tests/fixtures/links-composefile'
|
||||
self.command.dispatch(['up', '-d'], None)
|
||||
|
||||
networks = [n for n in self.client.networks(names=[self.project.name])]
|
||||
self.assertEqual(len(networks), 0)
|
||||
|
||||
for service in self.project.get_services():
|
||||
containers = service.containers()
|
||||
self.assertEqual(len(containers), 1)
|
||||
self.assertNotEqual(containers[0].get('Config.Hostname'), service.name)
|
||||
|
||||
web_container = self.project.get_service('web').containers()[0]
|
||||
self.assertTrue(web_container.get('HostConfig.Links'))
|
||||
|
||||
def test_up_with_networking(self):
|
||||
self.require_engine_version("1.9")
|
||||
|
||||
self.command.base_dir = 'tests/fixtures/links-composefile'
|
||||
self.command.dispatch(['--x-networking', 'up', '-d'], None)
|
||||
|
||||
services = self.project.get_services()
|
||||
|
||||
networks = [n for n in self.client.networks(names=[self.project.name])]
|
||||
for n in networks:
|
||||
self.addCleanup(self.client.remove_network, n['id'])
|
||||
self.assertEqual(len(networks), 1)
|
||||
self.assertEqual(networks[0]['driver'], 'bridge')
|
||||
|
||||
network = self.client.inspect_network(networks[0]['id'])
|
||||
self.assertEqual(len(network['containers']), len(services))
|
||||
|
||||
for service in services:
|
||||
containers = service.containers()
|
||||
self.assertEqual(len(containers), 1)
|
||||
self.assertIn(containers[0].id, network['containers'])
|
||||
self.assertEqual(containers[0].get('Config.Hostname'), service.name)
|
||||
|
||||
web_container = self.project.get_service('web').containers()[0]
|
||||
self.assertFalse(web_container.get('HostConfig.Links'))
|
||||
|
||||
def test_up_with_links(self):
|
||||
self.command.base_dir = 'tests/fixtures/links-composefile'
|
||||
self.command.dispatch(['up', '-d', 'web'], None)
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ from __future__ import absolute_import
|
|||
from __future__ import unicode_literals
|
||||
|
||||
from docker import errors
|
||||
from docker.utils import version_lt
|
||||
from pytest import skip
|
||||
|
||||
from .. import unittest
|
||||
from compose.cli.docker_client import docker_client
|
||||
|
|
@ -73,3 +75,12 @@ class DockerClientTestCase(unittest.TestCase):
|
|||
kwargs.setdefault('rm', True)
|
||||
build_output = self.client.build(*args, **kwargs)
|
||||
stream_output(build_output, open('/dev/null', 'w'))
|
||||
|
||||
def require_engine_version(self, minimum):
|
||||
# Drop '-dev' or '-rcN' suffix
|
||||
engine = self.client.version()['Version'].split('-', 1)[0]
|
||||
if version_lt(engine, minimum):
|
||||
skip(
|
||||
"Engine version is too low ({} < {})"
|
||||
.format(engine, minimum)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -203,6 +203,26 @@ class ServiceTest(unittest.TestCase):
|
|||
self.assertEqual(opts['hostname'], 'name.sub', 'hostname')
|
||||
self.assertEqual(opts['domainname'], 'domain.tld', 'domainname')
|
||||
|
||||
def test_no_default_hostname_when_not_using_networking(self):
|
||||
service = Service(
|
||||
'foo',
|
||||
image='foo',
|
||||
use_networking=False,
|
||||
client=self.mock_client,
|
||||
)
|
||||
opts = service._get_container_create_options({'image': 'foo'}, 1)
|
||||
self.assertIsNone(opts.get('hostname'))
|
||||
|
||||
def test_hostname_defaults_to_service_name_when_using_networking(self):
|
||||
service = Service(
|
||||
'foo',
|
||||
image='foo',
|
||||
use_networking=True,
|
||||
client=self.mock_client,
|
||||
)
|
||||
opts = service._get_container_create_options({'image': 'foo'}, 1)
|
||||
self.assertEqual(opts['hostname'], 'foo')
|
||||
|
||||
def test_get_container_create_options_with_name_option(self):
|
||||
service = Service(
|
||||
'foo',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue