def test_parse_cpu_info(filename, expected_cpus, expected_cpu):
    with patch('builtins.open',
               new=create_open_mock(
                   {"/proc/cpuinfo": open(relative_module_path(__file__, filename)).read()})
               ):
        got_data = _parse_cpuinfo()
        assert len(got_data) == expected_cpus
        assert _is_dict_match(got_data[0], expected_cpu), 'some keys do not match!'
def test_collect_topology_information(filename, expected_cpus, expected_cores,
                                      expected_sockets):
    with patch('builtins.open',
               new=create_open_mock(
                   {"/proc/cpuinfo": open(relative_module_path(__file__, filename)).read()})
               ):
        cpuinfo = _parse_cpuinfo()
        got_cpus, got_cores, got_sockets, got_topology = collect_topology_information(cpuinfo)
        assert got_cpus == expected_cpus
        assert got_cores == expected_cores
        assert got_sockets == expected_sockets