Merge pull request #2626 from shin-/dbonev-2503-move-logging-config-under-separate-key
Move logging config under separate key in v2 compose files
This commit is contained in:
commit
52e50a9d9a
16 changed files with 526 additions and 207 deletions
|
|
@ -718,6 +718,34 @@ class CLITestCase(DockerClientTestCase):
|
|||
result = self.dispatch(['start'], returncode=1)
|
||||
assert 'No containers to start' in result.stderr
|
||||
|
||||
def test_up_logging(self):
|
||||
self.base_dir = 'tests/fixtures/logging-composefile'
|
||||
self.dispatch(['up', '-d'])
|
||||
simple = self.project.get_service('simple').containers()[0]
|
||||
log_config = simple.get('HostConfig.LogConfig')
|
||||
self.assertTrue(log_config)
|
||||
self.assertEqual(log_config.get('Type'), 'none')
|
||||
|
||||
another = self.project.get_service('another').containers()[0]
|
||||
log_config = another.get('HostConfig.LogConfig')
|
||||
self.assertTrue(log_config)
|
||||
self.assertEqual(log_config.get('Type'), 'json-file')
|
||||
self.assertEqual(log_config.get('Config')['max-size'], '10m')
|
||||
|
||||
def test_up_logging_legacy(self):
|
||||
self.base_dir = 'tests/fixtures/logging-composefile-legacy'
|
||||
self.dispatch(['up', '-d'])
|
||||
simple = self.project.get_service('simple').containers()[0]
|
||||
log_config = simple.get('HostConfig.LogConfig')
|
||||
self.assertTrue(log_config)
|
||||
self.assertEqual(log_config.get('Type'), 'none')
|
||||
|
||||
another = self.project.get_service('another').containers()[0]
|
||||
log_config = another.get('HostConfig.LogConfig')
|
||||
self.assertTrue(log_config)
|
||||
self.assertEqual(log_config.get('Type'), 'json-file')
|
||||
self.assertEqual(log_config.get('Config')['max-size'], '10m')
|
||||
|
||||
def test_pause_unpause(self):
|
||||
self.dispatch(['up', '-d'], None)
|
||||
service = self.project.get_service('simple')
|
||||
|
|
|
|||
10
tests/fixtures/logging-composefile-legacy/docker-compose.yml
vendored
Normal file
10
tests/fixtures/logging-composefile-legacy/docker-compose.yml
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
simple:
|
||||
image: busybox:latest
|
||||
command: top
|
||||
log_driver: "none"
|
||||
another:
|
||||
image: busybox:latest
|
||||
command: top
|
||||
log_driver: "json-file"
|
||||
log_opt:
|
||||
max-size: "10m"
|
||||
14
tests/fixtures/logging-composefile/docker-compose.yml
vendored
Normal file
14
tests/fixtures/logging-composefile/docker-compose.yml
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
version: 2
|
||||
services:
|
||||
simple:
|
||||
image: busybox:latest
|
||||
command: top
|
||||
logging:
|
||||
driver: "none"
|
||||
another:
|
||||
image: busybox:latest
|
||||
command: top
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
|
|
@ -3,6 +3,8 @@ from __future__ import unicode_literals
|
|||
|
||||
import random
|
||||
|
||||
import py
|
||||
|
||||
from .testcases import DockerClientTestCase
|
||||
from compose.cli.docker_client import docker_client
|
||||
from compose.config import config
|
||||
|
|
@ -534,6 +536,57 @@ class ProjectTest(DockerClientTestCase):
|
|||
self.assertEqual(volume_data['Name'], full_vol_name)
|
||||
self.assertEqual(volume_data['Driver'], 'local')
|
||||
|
||||
def test_project_up_logging_with_multiple_files(self):
|
||||
base_file = config.ConfigFile(
|
||||
'base.yml',
|
||||
{
|
||||
'version': 2,
|
||||
'services': {
|
||||
'simple': {'image': 'busybox:latest', 'command': 'top'},
|
||||
'another': {
|
||||
'image': 'busybox:latest',
|
||||
'command': 'top',
|
||||
'logging': {
|
||||
'driver': "json-file",
|
||||
'options': {
|
||||
'max-size': "10m"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
override_file = config.ConfigFile(
|
||||
'override.yml',
|
||||
{
|
||||
'version': 2,
|
||||
'services': {
|
||||
'another': {
|
||||
'logging': {
|
||||
'driver': "none"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
details = config.ConfigDetails('.', [base_file, override_file])
|
||||
|
||||
tmpdir = py.test.ensuretemp('logging_test')
|
||||
self.addCleanup(tmpdir.remove)
|
||||
with tmpdir.as_cwd():
|
||||
config_data = config.load(details)
|
||||
project = Project.from_config(
|
||||
name='composetest', config_data=config_data, client=self.client
|
||||
)
|
||||
project.up()
|
||||
containers = project.containers()
|
||||
self.assertEqual(len(containers), 2)
|
||||
|
||||
another = project.get_service('another').containers()[0]
|
||||
log_config = another.get('HostConfig.LogConfig')
|
||||
self.assertTrue(log_config)
|
||||
self.assertEqual(log_config.get('Type'), 'none')
|
||||
|
||||
def test_initialize_volumes(self):
|
||||
vol_name = '{0:x}'.format(random.getrandbits(32))
|
||||
full_vol_name = 'composetest_{0}'.format(vol_name)
|
||||
|
|
|
|||
|
|
@ -888,7 +888,7 @@ class ServiceTest(DockerClientTestCase):
|
|||
self.assertNotEqual(one_off_container.name, 'my-web-container')
|
||||
|
||||
def test_log_drive_invalid(self):
|
||||
service = self.create_service('web', log_driver='xxx')
|
||||
service = self.create_service('web', logging={'driver': 'xxx'})
|
||||
expected_error_msg = "logger: no log driver named 'xxx' is registered"
|
||||
|
||||
with self.assertRaisesRegexp(APIError, expected_error_msg):
|
||||
|
|
@ -902,7 +902,7 @@ class ServiceTest(DockerClientTestCase):
|
|||
self.assertFalse(log_config['Config'])
|
||||
|
||||
def test_log_drive_none(self):
|
||||
service = self.create_service('web', log_driver='none')
|
||||
service = self.create_service('web', logging={'driver': 'none'})
|
||||
log_config = create_and_start_container(service).log_config
|
||||
|
||||
self.assertEqual('none', log_config['Type'])
|
||||
|
|
|
|||
|
|
@ -156,7 +156,8 @@ class ServiceTest(unittest.TestCase):
|
|||
self.mock_client.create_host_config.return_value = {}
|
||||
|
||||
log_opt = {'syslog-address': 'tcp://192.168.0.42:123'}
|
||||
service = Service(name='foo', image='foo', hostname='name', client=self.mock_client, log_driver='syslog', log_opt=log_opt)
|
||||
logging = {'driver': 'syslog', 'options': log_opt}
|
||||
service = Service(name='foo', image='foo', hostname='name', client=self.mock_client, logging=logging)
|
||||
service._get_container_create_options({'some': 'overrides'}, 1)
|
||||
|
||||
self.assertTrue(self.mock_client.create_host_config.called)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue