commit
7466d14826
6 changed files with 164 additions and 0 deletions
|
|
@ -349,6 +349,66 @@ class ConfigTest(unittest.TestCase):
|
|||
)
|
||||
)
|
||||
|
||||
def test_config_ulimits_invalid_keys_validation_error(self):
|
||||
expected_error_msg = "Service 'web' configuration key 'ulimits' contains unsupported option: 'not_soft_or_hard'"
|
||||
|
||||
with self.assertRaisesRegexp(ConfigurationError, expected_error_msg):
|
||||
config.load(
|
||||
build_config_details(
|
||||
{'web': {
|
||||
'image': 'busybox',
|
||||
'ulimits': {
|
||||
'nofile': {
|
||||
"not_soft_or_hard": 100,
|
||||
"soft": 10000,
|
||||
"hard": 20000,
|
||||
}
|
||||
}
|
||||
}},
|
||||
'working_dir',
|
||||
'filename.yml'
|
||||
)
|
||||
)
|
||||
|
||||
def test_config_ulimits_required_keys_validation_error(self):
|
||||
expected_error_msg = "Service 'web' configuration key 'ulimits' u?'hard' is a required property"
|
||||
|
||||
with self.assertRaisesRegexp(ConfigurationError, expected_error_msg):
|
||||
config.load(
|
||||
build_config_details(
|
||||
{'web': {
|
||||
'image': 'busybox',
|
||||
'ulimits': {
|
||||
'nofile': {
|
||||
"soft": 10000,
|
||||
}
|
||||
}
|
||||
}},
|
||||
'working_dir',
|
||||
'filename.yml'
|
||||
)
|
||||
)
|
||||
|
||||
def test_config_ulimits_soft_greater_than_hard_error(self):
|
||||
expected_error_msg = "cannot contain a 'soft' value higher than 'hard' value"
|
||||
|
||||
with self.assertRaisesRegexp(ConfigurationError, expected_error_msg):
|
||||
config.load(
|
||||
build_config_details(
|
||||
{'web': {
|
||||
'image': 'busybox',
|
||||
'ulimits': {
|
||||
'nofile': {
|
||||
"soft": 10000,
|
||||
"hard": 1000
|
||||
}
|
||||
}
|
||||
}},
|
||||
'working_dir',
|
||||
'filename.yml'
|
||||
)
|
||||
)
|
||||
|
||||
def test_valid_config_which_allows_two_type_definitions(self):
|
||||
expose_values = [["8000"], [8000]]
|
||||
for expose in expose_values:
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ from compose.const import LABEL_ONE_OFF
|
|||
from compose.const import LABEL_PROJECT
|
||||
from compose.const import LABEL_SERVICE
|
||||
from compose.container import Container
|
||||
from compose.service import build_ulimits
|
||||
from compose.service import build_volume_binding
|
||||
from compose.service import ConfigError
|
||||
from compose.service import ContainerNet
|
||||
|
|
@ -497,6 +498,47 @@ class ServiceTest(unittest.TestCase):
|
|||
self.assertEqual(service._get_links(link_to_self=True), [])
|
||||
|
||||
|
||||
def sort_by_name(dictionary_list):
|
||||
return sorted(dictionary_list, key=lambda k: k['name'])
|
||||
|
||||
|
||||
class BuildUlimitsTestCase(unittest.TestCase):
|
||||
|
||||
def test_build_ulimits_with_dict(self):
|
||||
ulimits = build_ulimits(
|
||||
{
|
||||
'nofile': {'soft': 10000, 'hard': 20000},
|
||||
'nproc': {'soft': 65535, 'hard': 65535}
|
||||
}
|
||||
)
|
||||
expected = [
|
||||
{'name': 'nofile', 'soft': 10000, 'hard': 20000},
|
||||
{'name': 'nproc', 'soft': 65535, 'hard': 65535}
|
||||
]
|
||||
assert sort_by_name(ulimits) == sort_by_name(expected)
|
||||
|
||||
def test_build_ulimits_with_ints(self):
|
||||
ulimits = build_ulimits({'nofile': 20000, 'nproc': 65535})
|
||||
expected = [
|
||||
{'name': 'nofile', 'soft': 20000, 'hard': 20000},
|
||||
{'name': 'nproc', 'soft': 65535, 'hard': 65535}
|
||||
]
|
||||
assert sort_by_name(ulimits) == sort_by_name(expected)
|
||||
|
||||
def test_build_ulimits_with_integers_and_dicts(self):
|
||||
ulimits = build_ulimits(
|
||||
{
|
||||
'nproc': 65535,
|
||||
'nofile': {'soft': 10000, 'hard': 20000}
|
||||
}
|
||||
)
|
||||
expected = [
|
||||
{'name': 'nofile', 'soft': 10000, 'hard': 20000},
|
||||
{'name': 'nproc', 'soft': 65535, 'hard': 65535}
|
||||
]
|
||||
assert sort_by_name(ulimits) == sort_by_name(expected)
|
||||
|
||||
|
||||
class NetTestCase(unittest.TestCase):
|
||||
|
||||
def test_net(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue