Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 53 additions & 45 deletions tests/integration/container_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,22 +37,6 @@ def test_list_containers(self):


class CreateContainerTest(api_test.BaseTestCase):
def setUp(self):
super(CreateContainerTest, self).setUp()

self.mount_dest = '/mnt'

# Get a random pathname - we don't need it to exist locally
self.mount_origin = tempfile.mkdtemp()
shutil.rmtree(self.mount_origin)

self.filename = 'shared.txt'

self.run_with_volume(
False,
BUSYBOX,
['touch', os.path.join(self.mount_dest, self.filename)],
)

def test_create(self):
res = self.client.create_container(BUSYBOX, 'true')
Expand Down Expand Up @@ -176,35 +160,6 @@ def test_create_container_with_volumes_from(self):
info = self.client.inspect_container(res2['Id'])
self.assertCountEqual(info['HostConfig']['VolumesFrom'], vol_names)

def test_create_with_binds_rw(self):
container = self.run_with_volume(
False,
BUSYBOX,
['ls', self.mount_dest],
)
logs = self.client.logs(container)

if six.PY3:
logs = logs.decode('utf-8')
self.assertIn(self.filename, logs)
inspect_data = self.client.inspect_container(container)
self.check_container_data(inspect_data, True)

def test_create_with_binds_ro(self):
container = self.run_with_volume(
True,
BUSYBOX,
['ls', self.mount_dest],
)
logs = self.client.logs(container)

if six.PY3:
logs = logs.decode('utf-8')
self.assertIn(self.filename, logs)

inspect_data = self.client.inspect_container(container)
self.check_container_data(inspect_data, False)

def create_container_readonly_fs(self):
if not api_test.exec_driver_is_native():
pytest.skip('Exec driver not native')
Expand Down Expand Up @@ -382,6 +337,59 @@ def test_valid_no_config_specified(self):
self.assertEqual(container_log_config['Type'], "json-file")
self.assertEqual(container_log_config['Config'], {})


class VolumeBindTest(api_test.BaseTestCase):
def setUp(self):
super(VolumeBindTest, self).setUp()

self.mount_dest = '/mnt'

# Get a random pathname - we don't need it to exist locally
self.mount_origin = tempfile.mkdtemp()
shutil.rmtree(self.mount_origin)
self.filename = 'shared.txt'

self.run_with_volume(
False,
BUSYBOX,
['touch', os.path.join(self.mount_dest, self.filename)],
)

def test_create_with_binds_rw(self):

container = self.run_with_volume(
False,
BUSYBOX,
['ls', self.mount_dest],
)
logs = self.client.logs(container)

if six.PY3:
logs = logs.decode('utf-8')
self.assertIn(self.filename, logs)
inspect_data = self.client.inspect_container(container)
self.check_container_data(inspect_data, True)

def test_create_with_binds_ro(self):
self.run_with_volume(
False,
BUSYBOX,
['touch', os.path.join(self.mount_dest, self.filename)],
)
container = self.run_with_volume(
True,
BUSYBOX,
['ls', self.mount_dest],
)
logs = self.client.logs(container)

if six.PY3:
logs = logs.decode('utf-8')
self.assertIn(self.filename, logs)

inspect_data = self.client.inspect_container(container)
self.check_container_data(inspect_data, False)

def check_container_data(self, inspect_data, rw):
if docker.utils.compare_version('1.20', self.client._version) < 0:
self.assertIn('Volumes', inspect_data)
Expand Down