def test_on_create_request(self): """Test processing of a cgroups create request. """ # Access to a protected member _register_oom_handler of a client class # pylint: disable=W0212 svc = cgroup_service.CgroupResourceService(self.running) request = { 'memory': '100M', 'cpu': '100%', } request_id = 'myproid.test-0-ID1234' svc.on_create_request(request_id, request) cgrp = os.path.join('treadmill/apps', request_id) svc._register_oom_handler.assert_called_with(cgrp, request_id) treadmill.cgroups.create.assert_has_calls([ mock.call(ss, cgrp) for ss in ['cpu', 'cpuacct', 'memory', 'blkio'] ]) # Memory calculation: # # (demand * virtual cpu bmips / total bmips) * treadmill.cpu.shares # (100% * 5000 / (24000 * 0.9 ) * 10000) = 2314 treadmill.cgroups.set_value.assert_has_calls([ mock.call('blkio', cgrp, 'blkio.weight', 100), mock.call('memory', cgrp, 'memory.soft_limit_in_bytes', '100M'), mock.call('memory', cgrp, 'memory.limit_in_bytes', '100M'), mock.call('memory', cgrp, 'memory.memsw.limit_in_bytes', '100M'), mock.call('cpu', cgrp, 'cpu.shares', treadmill.sysinfo.BMIPS_PER_CPU) ])
def test_event_handlers(self): """Test event_handlers request. """ svc = cgroup_service.CgroupResourceService(self.running) handlers = svc.event_handlers() self.assertEqual(handlers, [])
def test_report_status(self): """Test processing of status request. """ svc = cgroup_service.CgroupResourceService(self.running) status = svc.report_status() self.assertEqual(status, {'ready': True})
def test__register_oom_handler(self): """Test registration of OOM handler. """ # Access to a protected member _register_oom_handler of a client class # pylint: disable=W0212 svc = cgroup_service.CgroupResourceService(self.running) registered_handlers = svc.event_handlers() self.assertNotIn(('fake_efd', select.POLLIN, mock.ANY), registered_handlers) cgrp = 'treadmill/apps/myproid.test-42-ID1234' svc._register_oom_handler(cgrp, 'myproid.test-42-ID1234') treadmill.cgutils.get_memory_oom_eventfd.assert_called_with(cgrp) registered_handlers = svc.event_handlers() self.assertIn(('fake_efd', select.POLLIN, mock.ANY), registered_handlers)
def test_on_delete_request(self): """Test processing of a cgroups delete request. """ # Access to a protected member _unregister_oom_handler of a client # class # pylint: disable=W0212 svc = cgroup_service.CgroupResourceService(self.running) request_id = 'myproid.test-0-ID1234' svc.on_delete_request(request_id) cgrp = os.path.join('treadmill/apps', request_id) treadmill.cgutils.delete.assert_has_calls([ mock.call(ss, cgrp) for ss in ['cpu', 'cpuacct', 'memory', 'blkio'] ]) svc._unregister_oom_handler.assert_called_with(cgrp)
def test__unregister_oom_handler(self): """Test unregistration of OOM handler. """ # Access to a protected member _unregister_oom_handler of a client # class # pylint: disable=W0212 svc = cgroup_service.CgroupResourceService(self.running, 'treadmill.slice') cgrp = 'treadmill.slice/apps/myproid.test-42-ID1234' svc._register_oom_handler(cgrp, 'myproid.test-42-ID1234') registered_handlers = svc.event_handlers() self.assertIn(('fake_efd', select.POLLIN, mock.ANY), registered_handlers) svc._unregister_oom_handler(cgrp) registered_handlers = svc.event_handlers() self.assertNotIn(('fake_efd', select.POLLIN, mock.ANY), registered_handlers) os.close.assert_called_with('fake_efd')
def test_initialize(self): """Test service initialization. """ svc = cgroup_service.CgroupResourceService(self.running) svc.initialize(self.cgroup_svc)