mirror of https://github.com/docker/docker-py.git
cpu_quota and cpu_period unit tests
Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
parent
3ee30ed5e4
commit
d89b2a01f0
|
@ -25,6 +25,159 @@ TEST_CERT_DIR = os.path.join(
|
|||
)
|
||||
|
||||
|
||||
class HostConfigTest(base.BaseTestCase):
|
||||
def test_create_host_config_no_options(self):
|
||||
config = create_host_config(version='1.19')
|
||||
self.assertFalse('NetworkMode' in config)
|
||||
|
||||
def test_create_host_config_no_options_newer_api_version(self):
|
||||
config = create_host_config(version='1.20')
|
||||
self.assertEqual(config['NetworkMode'], 'default')
|
||||
|
||||
def test_create_host_config_invalid_cpu_cfs_types(self):
|
||||
with pytest.raises(TypeError):
|
||||
create_host_config(version='1.20', cpu_quota='0')
|
||||
|
||||
with pytest.raises(TypeError):
|
||||
create_host_config(version='1.20', cpu_period='0')
|
||||
|
||||
with pytest.raises(TypeError):
|
||||
create_host_config(version='1.20', cpu_quota=23.11)
|
||||
|
||||
with pytest.raises(TypeError):
|
||||
create_host_config(version='1.20', cpu_period=1999.0)
|
||||
|
||||
def test_create_host_config_with_cpu_quota(self):
|
||||
config = create_host_config(version='1.20', cpu_quota=1999)
|
||||
self.assertEqual(config.get('CpuQuota'), 1999)
|
||||
|
||||
def test_create_host_config_with_cpu_period(self):
|
||||
config = create_host_config(version='1.20', cpu_period=1999)
|
||||
self.assertEqual(config.get('CpuPeriod'), 1999)
|
||||
|
||||
|
||||
class UlimitTest(base.BaseTestCase):
|
||||
def test_create_host_config_dict_ulimit(self):
|
||||
ulimit_dct = {'name': 'nofile', 'soft': 8096}
|
||||
config = create_host_config(
|
||||
ulimits=[ulimit_dct], version=DEFAULT_DOCKER_API_VERSION
|
||||
)
|
||||
self.assertIn('Ulimits', config)
|
||||
self.assertEqual(len(config['Ulimits']), 1)
|
||||
ulimit_obj = config['Ulimits'][0]
|
||||
self.assertTrue(isinstance(ulimit_obj, Ulimit))
|
||||
self.assertEqual(ulimit_obj.name, ulimit_dct['name'])
|
||||
self.assertEqual(ulimit_obj.soft, ulimit_dct['soft'])
|
||||
self.assertEqual(ulimit_obj['Soft'], ulimit_obj.soft)
|
||||
|
||||
def test_create_host_config_dict_ulimit_capitals(self):
|
||||
ulimit_dct = {'Name': 'nofile', 'Soft': 8096, 'Hard': 8096 * 4}
|
||||
config = create_host_config(
|
||||
ulimits=[ulimit_dct], version=DEFAULT_DOCKER_API_VERSION
|
||||
)
|
||||
self.assertIn('Ulimits', config)
|
||||
self.assertEqual(len(config['Ulimits']), 1)
|
||||
ulimit_obj = config['Ulimits'][0]
|
||||
self.assertTrue(isinstance(ulimit_obj, Ulimit))
|
||||
self.assertEqual(ulimit_obj.name, ulimit_dct['Name'])
|
||||
self.assertEqual(ulimit_obj.soft, ulimit_dct['Soft'])
|
||||
self.assertEqual(ulimit_obj.hard, ulimit_dct['Hard'])
|
||||
self.assertEqual(ulimit_obj['Soft'], ulimit_obj.soft)
|
||||
|
||||
def test_create_host_config_obj_ulimit(self):
|
||||
ulimit_dct = Ulimit(name='nofile', soft=8096)
|
||||
config = create_host_config(
|
||||
ulimits=[ulimit_dct], version=DEFAULT_DOCKER_API_VERSION
|
||||
)
|
||||
self.assertIn('Ulimits', config)
|
||||
self.assertEqual(len(config['Ulimits']), 1)
|
||||
ulimit_obj = config['Ulimits'][0]
|
||||
self.assertTrue(isinstance(ulimit_obj, Ulimit))
|
||||
self.assertEqual(ulimit_obj, ulimit_dct)
|
||||
|
||||
def test_ulimit_invalid_type(self):
|
||||
self.assertRaises(ValueError, lambda: Ulimit(name=None))
|
||||
self.assertRaises(ValueError, lambda: Ulimit(name='hello', soft='123'))
|
||||
self.assertRaises(ValueError, lambda: Ulimit(name='hello', hard='456'))
|
||||
|
||||
|
||||
class LogConfigTest(base.BaseTestCase):
|
||||
def test_create_host_config_dict_logconfig(self):
|
||||
dct = {'type': LogConfig.types.SYSLOG, 'config': {'key1': 'val1'}}
|
||||
config = create_host_config(
|
||||
version=DEFAULT_DOCKER_API_VERSION, log_config=dct
|
||||
)
|
||||
self.assertIn('LogConfig', config)
|
||||
self.assertTrue(isinstance(config['LogConfig'], LogConfig))
|
||||
self.assertEqual(dct['type'], config['LogConfig'].type)
|
||||
|
||||
def test_create_host_config_obj_logconfig(self):
|
||||
obj = LogConfig(type=LogConfig.types.SYSLOG, config={'key1': 'val1'})
|
||||
config = create_host_config(
|
||||
version=DEFAULT_DOCKER_API_VERSION, log_config=obj
|
||||
)
|
||||
self.assertIn('LogConfig', config)
|
||||
self.assertTrue(isinstance(config['LogConfig'], LogConfig))
|
||||
self.assertEqual(obj, config['LogConfig'])
|
||||
|
||||
def test_logconfig_invalid_config_type(self):
|
||||
with pytest.raises(ValueError):
|
||||
LogConfig(type=LogConfig.types.JSON, config='helloworld')
|
||||
|
||||
|
||||
class KwargsFromEnvTest(base.BaseTestCase):
|
||||
def setUp(self):
|
||||
self.os_environ = os.environ.copy()
|
||||
|
||||
def tearDown(self):
|
||||
os.environ = self.os_environ
|
||||
|
||||
def test_kwargs_from_env_empty(self):
|
||||
os.environ.update(DOCKER_HOST='',
|
||||
DOCKER_CERT_PATH='',
|
||||
DOCKER_TLS_VERIFY='')
|
||||
|
||||
kwargs = kwargs_from_env()
|
||||
self.assertEqual(None, kwargs.get('base_url'))
|
||||
self.assertEqual(None, kwargs.get('tls'))
|
||||
|
||||
def test_kwargs_from_env_tls(self):
|
||||
os.environ.update(DOCKER_HOST='tcp://192.168.59.103:2376',
|
||||
DOCKER_CERT_PATH=TEST_CERT_DIR,
|
||||
DOCKER_TLS_VERIFY='1')
|
||||
kwargs = kwargs_from_env(assert_hostname=False)
|
||||
self.assertEqual('https://192.168.59.103:2376', kwargs['base_url'])
|
||||
self.assertTrue('ca.pem' in kwargs['tls'].verify)
|
||||
self.assertTrue('cert.pem' in kwargs['tls'].cert[0])
|
||||
self.assertTrue('key.pem' in kwargs['tls'].cert[1])
|
||||
self.assertEqual(False, kwargs['tls'].assert_hostname)
|
||||
try:
|
||||
client = Client(**kwargs)
|
||||
self.assertEqual(kwargs['base_url'], client.base_url)
|
||||
self.assertEqual(kwargs['tls'].verify, client.verify)
|
||||
self.assertEqual(kwargs['tls'].cert, client.cert)
|
||||
except TypeError as e:
|
||||
self.fail(e)
|
||||
|
||||
def test_kwargs_from_env_no_cert_path(self):
|
||||
try:
|
||||
temp_dir = tempfile.mkdtemp()
|
||||
cert_dir = os.path.join(temp_dir, '.docker')
|
||||
shutil.copytree(TEST_CERT_DIR, cert_dir)
|
||||
|
||||
os.environ.update(HOME=temp_dir,
|
||||
DOCKER_CERT_PATH='',
|
||||
DOCKER_TLS_VERIFY='1')
|
||||
|
||||
kwargs = kwargs_from_env()
|
||||
self.assertIn(cert_dir, kwargs['tls'].verify)
|
||||
self.assertIn(cert_dir, kwargs['tls'].cert[0])
|
||||
self.assertIn(cert_dir, kwargs['tls'].cert[1])
|
||||
finally:
|
||||
if temp_dir:
|
||||
shutil.rmtree(temp_dir)
|
||||
|
||||
|
||||
class UtilsTest(base.BaseTestCase):
|
||||
longMessage = True
|
||||
|
||||
|
@ -39,12 +192,6 @@ class UtilsTest(base.BaseTestCase):
|
|||
local_tempfile.close()
|
||||
return local_tempfile.name
|
||||
|
||||
def setUp(self):
|
||||
self.os_environ = os.environ.copy()
|
||||
|
||||
def tearDown(self):
|
||||
os.environ = self.os_environ
|
||||
|
||||
def test_parse_repository_tag(self):
|
||||
self.assertEqual(parse_repository_tag("root"),
|
||||
("root", None))
|
||||
|
@ -103,51 +250,6 @@ class UtilsTest(base.BaseTestCase):
|
|||
|
||||
assert parse_host(val, 'win32') == tcp_port
|
||||
|
||||
def test_kwargs_from_env_empty(self):
|
||||
os.environ.update(DOCKER_HOST='',
|
||||
DOCKER_CERT_PATH='',
|
||||
DOCKER_TLS_VERIFY='')
|
||||
|
||||
kwargs = kwargs_from_env()
|
||||
self.assertEqual(None, kwargs.get('base_url'))
|
||||
self.assertEqual(None, kwargs.get('tls'))
|
||||
|
||||
def test_kwargs_from_env_tls(self):
|
||||
os.environ.update(DOCKER_HOST='tcp://192.168.59.103:2376',
|
||||
DOCKER_CERT_PATH=TEST_CERT_DIR,
|
||||
DOCKER_TLS_VERIFY='1')
|
||||
kwargs = kwargs_from_env(assert_hostname=False)
|
||||
self.assertEqual('https://192.168.59.103:2376', kwargs['base_url'])
|
||||
self.assertTrue('ca.pem' in kwargs['tls'].verify)
|
||||
self.assertTrue('cert.pem' in kwargs['tls'].cert[0])
|
||||
self.assertTrue('key.pem' in kwargs['tls'].cert[1])
|
||||
self.assertEqual(False, kwargs['tls'].assert_hostname)
|
||||
try:
|
||||
client = Client(**kwargs)
|
||||
self.assertEqual(kwargs['base_url'], client.base_url)
|
||||
self.assertEqual(kwargs['tls'].verify, client.verify)
|
||||
self.assertEqual(kwargs['tls'].cert, client.cert)
|
||||
except TypeError as e:
|
||||
self.fail(e)
|
||||
|
||||
def test_kwargs_from_env_no_cert_path(self):
|
||||
try:
|
||||
temp_dir = tempfile.mkdtemp()
|
||||
cert_dir = os.path.join(temp_dir, '.docker')
|
||||
shutil.copytree(TEST_CERT_DIR, cert_dir)
|
||||
|
||||
os.environ.update(HOME=temp_dir,
|
||||
DOCKER_CERT_PATH='',
|
||||
DOCKER_TLS_VERIFY='1')
|
||||
|
||||
kwargs = kwargs_from_env()
|
||||
self.assertIn(cert_dir, kwargs['tls'].verify)
|
||||
self.assertIn(cert_dir, kwargs['tls'].cert[0])
|
||||
self.assertIn(cert_dir, kwargs['tls'].cert[1])
|
||||
finally:
|
||||
if temp_dir:
|
||||
shutil.rmtree(temp_dir)
|
||||
|
||||
def test_parse_env_file_proper(self):
|
||||
env_file = self.generate_tempfile(
|
||||
file_content='USER=jdoe\nPASS=secret')
|
||||
|
@ -181,79 +283,6 @@ class UtilsTest(base.BaseTestCase):
|
|||
for filters, expected in tests:
|
||||
self.assertEqual(convert_filters(filters), expected)
|
||||
|
||||
def test_create_host_config_no_options(self):
|
||||
config = create_host_config(version='1.19')
|
||||
self.assertFalse('NetworkMode' in config)
|
||||
|
||||
def test_create_host_config_no_options_newer_api_version(self):
|
||||
config = create_host_config(version='1.20')
|
||||
self.assertEqual(config['NetworkMode'], 'default')
|
||||
|
||||
def test_create_host_config_dict_ulimit(self):
|
||||
ulimit_dct = {'name': 'nofile', 'soft': 8096}
|
||||
config = create_host_config(
|
||||
ulimits=[ulimit_dct], version=DEFAULT_DOCKER_API_VERSION
|
||||
)
|
||||
self.assertIn('Ulimits', config)
|
||||
self.assertEqual(len(config['Ulimits']), 1)
|
||||
ulimit_obj = config['Ulimits'][0]
|
||||
self.assertTrue(isinstance(ulimit_obj, Ulimit))
|
||||
self.assertEqual(ulimit_obj.name, ulimit_dct['name'])
|
||||
self.assertEqual(ulimit_obj.soft, ulimit_dct['soft'])
|
||||
self.assertEqual(ulimit_obj['Soft'], ulimit_obj.soft)
|
||||
|
||||
def test_create_host_config_dict_ulimit_capitals(self):
|
||||
ulimit_dct = {'Name': 'nofile', 'Soft': 8096, 'Hard': 8096 * 4}
|
||||
config = create_host_config(
|
||||
ulimits=[ulimit_dct], version=DEFAULT_DOCKER_API_VERSION
|
||||
)
|
||||
self.assertIn('Ulimits', config)
|
||||
self.assertEqual(len(config['Ulimits']), 1)
|
||||
ulimit_obj = config['Ulimits'][0]
|
||||
self.assertTrue(isinstance(ulimit_obj, Ulimit))
|
||||
self.assertEqual(ulimit_obj.name, ulimit_dct['Name'])
|
||||
self.assertEqual(ulimit_obj.soft, ulimit_dct['Soft'])
|
||||
self.assertEqual(ulimit_obj.hard, ulimit_dct['Hard'])
|
||||
self.assertEqual(ulimit_obj['Soft'], ulimit_obj.soft)
|
||||
|
||||
def test_create_host_config_obj_ulimit(self):
|
||||
ulimit_dct = Ulimit(name='nofile', soft=8096)
|
||||
config = create_host_config(
|
||||
ulimits=[ulimit_dct], version=DEFAULT_DOCKER_API_VERSION
|
||||
)
|
||||
self.assertIn('Ulimits', config)
|
||||
self.assertEqual(len(config['Ulimits']), 1)
|
||||
ulimit_obj = config['Ulimits'][0]
|
||||
self.assertTrue(isinstance(ulimit_obj, Ulimit))
|
||||
self.assertEqual(ulimit_obj, ulimit_dct)
|
||||
|
||||
def test_ulimit_invalid_type(self):
|
||||
self.assertRaises(ValueError, lambda: Ulimit(name=None))
|
||||
self.assertRaises(ValueError, lambda: Ulimit(name='hello', soft='123'))
|
||||
self.assertRaises(ValueError, lambda: Ulimit(name='hello', hard='456'))
|
||||
|
||||
def test_create_host_config_dict_logconfig(self):
|
||||
dct = {'type': LogConfig.types.SYSLOG, 'config': {'key1': 'val1'}}
|
||||
config = create_host_config(
|
||||
version=DEFAULT_DOCKER_API_VERSION, log_config=dct
|
||||
)
|
||||
self.assertIn('LogConfig', config)
|
||||
self.assertTrue(isinstance(config['LogConfig'], LogConfig))
|
||||
self.assertEqual(dct['type'], config['LogConfig'].type)
|
||||
|
||||
def test_create_host_config_obj_logconfig(self):
|
||||
obj = LogConfig(type=LogConfig.types.SYSLOG, config={'key1': 'val1'})
|
||||
config = create_host_config(
|
||||
version=DEFAULT_DOCKER_API_VERSION, log_config=obj
|
||||
)
|
||||
self.assertIn('LogConfig', config)
|
||||
self.assertTrue(isinstance(config['LogConfig'], LogConfig))
|
||||
self.assertEqual(obj, config['LogConfig'])
|
||||
|
||||
def test_logconfig_invalid_config_type(self):
|
||||
with pytest.raises(ValueError):
|
||||
LogConfig(type=LogConfig.types.JSON, config='helloworld')
|
||||
|
||||
def test_resolve_repository_name(self):
|
||||
# docker hub library image
|
||||
self.assertEqual(
|
||||
|
@ -407,6 +436,8 @@ class UtilsTest(base.BaseTestCase):
|
|||
None,
|
||||
)
|
||||
|
||||
|
||||
class PortsTest(base.BaseTestCase):
|
||||
def test_split_port_with_host_ip(self):
|
||||
internal_port, external_port = split_port("127.0.0.1:1000:2000")
|
||||
self.assertEqual(internal_port, ["2000"])
|
||||
|
|
Loading…
Reference in New Issue