def test_resgroup_add_pids(makedirs_mock, set_effective_root_uid_mock, resgroup_name, pids, mongroup_name, expected_writes, expected_setuid_calls_count, expected_makedirs): """Test that for ResGroup created with resgroup_name, when add_pids() is called with pids and given mongroup_name, expected writes (filenames with expected bytes writes) will happen together with number of setuid calls and makedirs calls. """ write_mocks = {filename: mock_open() for filename in expected_writes} resgroup = ResGroup(name=resgroup_name) # if expected_log: with patch('builtins.open', new=create_open_mock(write_mocks)): resgroup.add_pids(pids, mongroup_name) for filename, write_mock in write_mocks.items(): expected_filename_writes = expected_writes[filename] expected_write_calls = [ call().write(write_body) for write_body in expected_filename_writes ] write_mock.assert_has_calls(expected_write_calls, any_order=True) # makedirs used makedirs_mock.assert_has_calls(expected_makedirs) # setuid used (at least number of times) expected_setuid_calls = [call.__enter__()] * expected_setuid_calls_count set_effective_root_uid_mock.assert_has_calls(expected_setuid_calls, any_order=True)
def test_resgroup_add_pids_invalid(makedirs_mock, set_effective_root_uid_mock, side_effect, log_call): resgroup = ResGroup(name='') writes_mock = { '/sys/fs/resctrl/tasks': Mock(return_value=Mock(write=Mock(side_effect=side_effect))), '/sys/fs/resctrl/mon_groups/c1/tasks': MagicMock() } with patch('builtins.open', new=create_open_mock(writes_mock)), patch( 'wca.resctrl.log') as log_mock: resgroup.add_pids(['123'], 'c1') log_mock.assert_has_calls([log_call])