Esempio n. 1
0
    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)
        ])
Esempio n. 2
0
    def test_event_handlers(self):
        """Test event_handlers request.
        """
        svc = cgroup_service.CgroupResourceService(self.running)
        handlers = svc.event_handlers()

        self.assertEqual(handlers, [])
Esempio n. 3
0
    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})
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)
Esempio n. 6
0
    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)