summaryrefslogtreecommitdiff
path: root/tests/integration
diff options
context:
space:
mode:
Diffstat (limited to 'tests/integration')
-rw-r--r--tests/integration/network_test.py20
-rw-r--r--tests/integration/project_test.py47
-rw-r--r--tests/integration/service_test.py43
3 files changed, 109 insertions, 1 deletions
diff --git a/tests/integration/network_test.py b/tests/integration/network_test.py
index 2ff610fb..a2493fda 100644
--- a/tests/integration/network_test.py
+++ b/tests/integration/network_test.py
@@ -1,7 +1,10 @@
from __future__ import absolute_import
from __future__ import unicode_literals
+import pytest
+
from .testcases import DockerClientTestCase
+from compose.config.errors import ConfigurationError
from compose.const import LABEL_NETWORK
from compose.const import LABEL_PROJECT
from compose.network import Network
@@ -15,3 +18,20 @@ class NetworkTest(DockerClientTestCase):
labels = net_data['Labels']
assert labels[LABEL_NETWORK] == net.name
assert labels[LABEL_PROJECT] == net.project
+
+ def test_network_external_default_ensure(self):
+ net = Network(
+ self.client, 'composetest', 'foonet',
+ external=True
+ )
+
+ with pytest.raises(ConfigurationError):
+ net.ensure()
+
+ def test_network_external_overlay_ensure(self):
+ net = Network(
+ self.client, 'composetest', 'foonet',
+ driver='overlay', external=True
+ )
+
+ assert net.ensure() is None
diff --git a/tests/integration/project_test.py b/tests/integration/project_test.py
index 0acb8028..3960d12e 100644
--- a/tests/integration/project_test.py
+++ b/tests/integration/project_test.py
@@ -4,6 +4,7 @@ from __future__ import unicode_literals
import json
import os
import random
+import shutil
import tempfile
import py
@@ -1538,6 +1539,52 @@ class ProjectTest(DockerClientTestCase):
) in str(e.value)
@v2_only()
+ @no_cluster('inspect volume by name defect on Swarm Classic')
+ def test_initialize_volumes_updated_driver_opts(self):
+ vol_name = '{0:x}'.format(random.getrandbits(32))
+ full_vol_name = 'composetest_{0}'.format(vol_name)
+ tmpdir = tempfile.mkdtemp(prefix='compose_test_')
+ self.addCleanup(shutil.rmtree, tmpdir)
+ driver_opts = {'o': 'bind', 'device': tmpdir, 'type': 'none'}
+
+ config_data = build_config(
+ version=V2_0,
+ services=[{
+ 'name': 'web',
+ 'image': 'busybox:latest',
+ 'command': 'top'
+ }],
+ volumes={
+ vol_name: {
+ 'driver': 'local',
+ 'driver_opts': driver_opts
+ }
+ },
+ )
+ project = Project.from_config(
+ name='composetest',
+ config_data=config_data, client=self.client
+ )
+ project.volumes.initialize()
+
+ volume_data = self.get_volume_data(full_vol_name)
+ assert volume_data['Name'].split('/')[-1] == full_vol_name
+ assert volume_data['Driver'] == 'local'
+ assert volume_data['Options'] == driver_opts
+
+ driver_opts['device'] = '/opt/data/localdata'
+ project = Project.from_config(
+ name='composetest',
+ config_data=config_data,
+ client=self.client
+ )
+ with pytest.raises(config.ConfigurationError) as e:
+ project.volumes.initialize()
+ assert 'Configuration for volume {0} specifies "device" driver_opt {1}'.format(
+ vol_name, driver_opts['device']
+ ) in str(e.value)
+
+ @v2_only()
def test_initialize_volumes_updated_blank_driver(self):
vol_name = '{0:x}'.format(random.getrandbits(32))
full_vol_name = 'composetest_{0}'.format(vol_name)
diff --git a/tests/integration/service_test.py b/tests/integration/service_test.py
index 6e86a02d..d8f4d094 100644
--- a/tests/integration/service_test.py
+++ b/tests/integration/service_test.py
@@ -122,10 +122,19 @@ class ServiceTest(DockerClientTestCase):
assert container.get('HostConfig.CpuShares') == 73
def test_create_container_with_cpu_quota(self):
- service = self.create_service('db', cpu_quota=40000)
+ service = self.create_service('db', cpu_quota=40000, cpu_period=150000)
container = service.create_container()
container.start()
assert container.get('HostConfig.CpuQuota') == 40000
+ assert container.get('HostConfig.CpuPeriod') == 150000
+
+ @pytest.mark.xfail(raises=OperationFailedError, reason='not supported by kernel')
+ def test_create_container_with_cpu_rt(self):
+ service = self.create_service('db', cpu_rt_runtime=40000, cpu_rt_period=150000)
+ container = service.create_container()
+ container.start()
+ assert container.get('HostConfig.CpuRealtimeRuntime') == 40000
+ assert container.get('HostConfig.CpuRealtimePeriod') == 150000
@v2_2_only()
def test_create_container_with_cpu_count(self):
@@ -1096,6 +1105,38 @@ class ServiceTest(DockerClientTestCase):
service.build()
assert service.image()
+ def test_build_with_gzip(self):
+ base_dir = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, base_dir)
+ with open(os.path.join(base_dir, 'Dockerfile'), 'w') as f:
+ f.write('\n'.join([
+ 'FROM busybox',
+ 'COPY . /src',
+ 'RUN cat /src/hello.txt'
+ ]))
+ with open(os.path.join(base_dir, 'hello.txt'), 'w') as f:
+ f.write('hello world\n')
+
+ service = self.create_service('build_gzip', build={
+ 'context': text_type(base_dir),
+ })
+ service.build(gzip=True)
+ assert service.image()
+
+ @v2_1_only()
+ def test_build_with_isolation(self):
+ base_dir = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, base_dir)
+ with open(os.path.join(base_dir, 'Dockerfile'), 'w') as f:
+ f.write('FROM busybox\n')
+
+ service = self.create_service('build_isolation', build={
+ 'context': text_type(base_dir),
+ 'isolation': 'default',
+ })
+ service.build()
+ assert service.image()
+
def test_start_container_stays_unprivileged(self):
service = self.create_service('web')
container = create_and_start_container(service).inspect()