예제 #1
0
    def test_ppc_g5_cpu_info_same_as_last_known_cpu_info(self):
        """Test that one message is queued for duplicate G5 CPU info."""
        filename = self.makeFile(self.SMP_PPC_G5)
        plugin = ProcessorInfo(delay=0.1,
                               machine_name="ppc64",
                               source_filename=filename)
        self.monitor.add(plugin)
        plugin.run()
        plugin.run()

        messages = self.mstore.get_pending_messages()
        self.assertEqual(len(messages), 1)

        message = messages[0]
        self.assertEqual(message["type"], "processor-info")
        self.assertEqual(len(message["processors"]), 2)

        processor_0 = message["processors"][0]
        self.assertEqual(len(processor_0), 2)
        self.assertEqual(processor_0["model"], "PPC970FX, altivec supported")
        self.assertEqual(processor_0["processor-id"], 0)

        processor_1 = message["processors"][1]
        self.assertEqual(len(processor_1), 2)
        self.assertEqual(processor_1["model"], "PPC970FX, altivec supported")
        self.assertEqual(processor_1["processor-id"], 1)
예제 #2
0
 def test_unchanging_data(self):
     filename = self.makeFile(self.UP_PENTIUM_M)
     plugin = ProcessorInfo(delay=0.1,
                            machine_name="i686",
                            source_filename=filename)
     self.monitor.add(plugin)
     plugin.run()
     plugin.run()
     self.assertEqual(len(self.mstore.get_pending_messages()), 1)
예제 #3
0
    def test_read_sample_ppc_g4_data(self):
        """Ensure the plugin can parse /proc/cpuinfo from a G4 PowerBook."""
        filename = self.makeFile(self.UP_PPC_G4)
        plugin = ProcessorInfo(machine_name="ppc", source_filename=filename)
        message = plugin.create_message()
        self.assertEqual(message["type"], "processor-info")
        self.assertTrue(len(message["processors"]) == 1)

        processor = message["processors"][0]
        self.assertEqual(len(processor), 2)
        self.assertEqual(processor["processor-id"], 0)
        self.assertEqual(processor["model"], "7447A, altivec supported")
예제 #4
0
    def test_read_sample_armv7_reverse_data(self):
        """Ensure the plugin can parse a reversed sample ARMv7 /proc/cpuinfo"""
        filename = self.makeFile(self.ARMv7_reverse)
        plugin = ProcessorInfo(machine_name="armv7l", source_filename=filename)
        message = plugin.create_message()
        self.assertEqual(message["type"], "processor-info")
        self.assertTrue(len(message["processors"]) == 1)

        processor_0 = message["processors"][0]
        self.assertEqual(len(processor_0), 3)
        self.assertEqual(processor_0["model"], "ARMv7 Processor rev 1 (v7l)")
        self.assertEqual(processor_0["processor-id"], 0)
        self.assertEqual(processor_0["cache-size"], 768)
예제 #5
0
    def test_read_sample_nokia_data(self):
        """Ensure the plugin can parse /proc/cpuinfo from a Nokia N810."""
        filename = self.makeFile(self.ARM_NOKIA)
        plugin = ProcessorInfo(machine_name="armv6l", source_filename=filename)
        message = plugin.create_message()
        self.assertEqual(message["type"], "processor-info")
        self.assertTrue(len(message["processors"]) == 1)

        processor_0 = message["processors"][0]
        self.assertEqual(len(processor_0), 2)
        self.assertEqual(processor_0["model"],
                         "ARMv6-compatible processor rev 2 (v6l)")
        self.assertEqual(processor_0["processor-id"], 0)
예제 #6
0
    def test_read_sample_armv8_data(self):
        """Ensure the plugin can parse /proc/cpuinfo from a sample ARMv8."""
        filename = self.makeFile(self.ARMv8_64)
        plugin = ProcessorInfo(machine_name="aarch64",
                               source_filename=filename)
        message = plugin.create_message()
        self.assertEqual(message["type"], "processor-info")
        self.assertTrue(len(message["processors"]) == 1)

        processor_0 = message["processors"][0]
        self.assertEqual(len(processor_0), 2)
        self.assertEqual(processor_0["model"],
                         "AArch64 Processor rev 0 (aarch64)")
        self.assertEqual(processor_0["processor-id"], 0)
예제 #7
0
    def test_read_sample_pentium_m_data(self):
        """Ensure the plugin can parse /proc/cpuinfo from a Pentium-M."""
        filename = self.makeFile(self.UP_PENTIUM_M)
        plugin = ProcessorInfo(machine_name="i686", source_filename=filename)
        message = plugin.create_message()
        self.assertEqual(message["type"], "processor-info")
        self.assertTrue(len(message["processors"]) == 1)

        processor = message["processors"][0]
        self.assertEqual(len(processor), 4)
        self.assertEqual(processor["vendor"], "GenuineIntel")
        self.assertEqual(processor["model"],
                         "Intel(R) Pentium(R) M processor 1.50GHz")
        self.assertEqual(processor["cache-size"], 2048)
        self.assertEqual(processor["processor-id"], 0)
예제 #8
0
    def test_read_sample_s390x_data(self):
        """Ensure the plugin can parse /proc/cpuinfo for IBM zSeries."""
        filename = self.makeFile(self.S390X)
        plugin = ProcessorInfo(machine_name="s390x", source_filename=filename)
        message = plugin.create_message()
        self.assertEqual("processor-info", message["type"])
        self.assertEqual(4, len(message["processors"]))

        for id, processor in enumerate(message["processors"]):
            self.assertEqual(
                {
                    "vendor": "IBM/S390",
                    "model": "2964",
                    "processor-id": id,
                    "cache-size": 491520,
                }, processor)
예제 #9
0
    def test_pentium_m_cpu_info_same_as_last_known_cpu_info(self):
        """Test that one message is queued for duplicate Pentium-M CPU info."""

        filename = self.makeFile(self.UP_PENTIUM_M)
        plugin = ProcessorInfo(delay=0.1,
                               machine_name="i686",
                               source_filename=filename)
        self.monitor.add(plugin)
        self.monitor.add(plugin)
        self.reactor.call_later(0.5, self.reactor.stop)
        self.reactor.run()

        messages = self.mstore.get_pending_messages()
        self.assertEqual(len(messages), 1)

        message = messages[0]
        self.assertEqual(message["type"], "processor-info")
        self.assertEqual(len(message["processors"]), 1)

        processor = message["processors"][0]
        self.assertEqual(len(processor), 4)
        self.assertEqual(processor["vendor"], "GenuineIntel")
        self.assertEqual(processor["model"],
                         "Intel(R) Pentium(R) M processor 1.50GHz")
        self.assertEqual(processor["cache-size"], 2048)
        self.assertEqual(processor["processor-id"], 0)
예제 #10
0
    def test_read_sample_ppc_g5_data(self):
        """Ensure the plugin can parse /proc/cpuinfo from a dual PowerPC G5."""
        filename = self.makeFile(self.SMP_PPC_G5)
        plugin = ProcessorInfo(machine_name="ppc64", source_filename=filename)
        message = plugin.create_message()
        self.assertEqual(message["type"], "processor-info")
        self.assertTrue(len(message["processors"]) == 2)

        processor_0 = message["processors"][0]
        self.assertEqual(len(processor_0), 2)
        self.assertEqual(processor_0["processor-id"], 0)
        self.assertEqual(processor_0["model"], "PPC970FX, altivec supported")

        processor_1 = message["processors"][1]
        self.assertEqual(len(processor_1), 2)
        self.assertEqual(processor_1["processor-id"], 1)
        self.assertEqual(processor_1["model"], "PPC970FX, altivec supported")
예제 #11
0
    def test_read_proc_cpuinfo(self):
        """Ensure the plugin can parse /proc/cpuinfo."""
        message = ProcessorInfo().create_message()
        self.assertEqual(message["type"], "processor-info")
        self.assertTrue(len(message["processors"]) > 0)

        for processor in message["processors"]:
            self.assertTrue("processor-id" in processor)
            self.assertTrue("model" in processor)
예제 #12
0
    def test_read_sample_sparc_data(self):
        """Ensure the plugin can parse /proc/cpuinfo from a dual UltraSparc."""
        filename = self.makeFile(self.SMP_SPARC)
        plugin = ProcessorInfo(machine_name="sparc64",
                               source_filename=filename)
        message = plugin.create_message()
        self.assertEqual(message["type"], "processor-info")
        self.assertTrue(len(message["processors"]) == 2)

        processor_0 = message["processors"][0]
        self.assertEqual(len(processor_0), 2)
        self.assertEqual(processor_0["model"], "TI UltraSparc IIIi (Jalapeno)")
        self.assertEqual(processor_0["processor-id"], 0)

        processor_1 = message["processors"][1]
        self.assertEqual(len(processor_1), 2)
        self.assertEqual(processor_1["model"], "TI UltraSparc IIIi (Jalapeno)")
        self.assertEqual(processor_1["processor-id"], 1)
예제 #13
0
    def test_call_on_accepted(self):
        """
        When processor-info messages are accepted, send ProcessorInfo message.
        """
        plugin = ProcessorInfo()
        self.monitor.add(plugin)

        self.remote.send_message = Mock()
        self.reactor.fire(
            ("message-type-acceptance-changed", "processor-info"), True)
        self.remote.send_message.assert_called_once_with(ANY, ANY, urgent=True)
예제 #14
0
    def test_read_sample_opteron_data(self):
        """Ensure the plugin can parse /proc/cpuinfo from a dual Opteron."""
        filename = self.makeFile(self.SMP_OPTERON)
        plugin = ProcessorInfo(machine_name="x86_64", source_filename=filename)
        message = plugin.create_message()
        self.assertEqual(message["type"], "processor-info")
        self.assertTrue(len(message["processors"]) == 2)

        processor_0 = message["processors"][0]
        self.assertEqual(len(processor_0), 4)
        self.assertEqual(processor_0["vendor"], "AuthenticAMD")
        self.assertEqual(processor_0["model"], "AMD Opteron(tm) Processor 250")
        self.assertEqual(processor_0["cache-size"], 1024)
        self.assertEqual(processor_0["processor-id"], 0)

        processor_1 = message["processors"][1]
        self.assertEqual(len(processor_1), 4)
        self.assertEqual(processor_1["vendor"], "AuthenticAMD")
        self.assertEqual(processor_1["model"], "AMD Opteron(tm) Processor 250")
        self.assertEqual(processor_1["cache-size"], 1024)
        self.assertEqual(processor_1["processor-id"], 1)
예제 #15
0
    def test_no_message_if_not_accepted(self):
        """
        Don't add any messages at all if the broker isn't currently
        accepting their type.
        """
        self.mstore.set_accepted_types([])
        filename = self.makeFile(self.UP_PENTIUM_M)
        plugin = ProcessorInfo(delay=0.1,
                               machine_name="i686",
                               source_filename=filename)
        self.monitor.add(plugin)

        self.mstore.set_accepted_types(["processor-info"])
        self.assertMessages(list(self.mstore.get_pending_messages()), [])
예제 #16
0
 def test_resynchronize(self):
     """
     The "resynchronize" reactor message should cause the plugin to
     send fresh data.
     """
     self.mstore.set_accepted_types(["processor-info"])
     plugin = ProcessorInfo()
     self.monitor.add(plugin)
     plugin.run()
     self.reactor.fire("resynchronize", scopes=["cpu"])
     plugin.run()
     messages = self.mstore.get_pending_messages()
     self.assertEqual(len(messages), 2)
예제 #17
0
    def test_plugin_manager(self):
        """Test plugin manager integration."""
        filename = self.makeFile(self.UP_PENTIUM_M)
        plugin = ProcessorInfo(delay=0.1,
                               machine_name="i686",
                               source_filename=filename)
        self.monitor.add(plugin)
        self.reactor.advance(0.5)
        self.monitor.exchange()

        self.assertMessages(self.mstore.get_pending_messages(), [{
            "type":
            "processor-info",
            "processors": [{
                "vendor": "GenuineIntel",
                "model": "Intel(R) Pentium(R) M processor 1.50GHz",
                "cache-size": 2048,
                "processor-id": 0
            }],
        }])
예제 #18
0
 def test_unknown_machine_name(self):
     """Ensure a PluginConfigError is raised for unknown machines."""
     self.assertRaises(PluginConfigError,
                       lambda: ProcessorInfo(machine_name="wubble"))