Exemple #1
0
    def __init__(self, test_run_factory, **kwargs):
        self.test_run_factory = test_run_factory
        self.test_run_kwargs = kwargs
        self.dispatcher = DispatcherQueue()

        # Register handlers to incrementally add information
        register = self.dispatcher.registerHandler
        register((
            "cpu",
            "architecture",
        ), self.addCpuArchitecture)
        register(("identifier", ), self.addIdentifier)
        register((
            "test_run",
            "attachment",
        ), self.addAttachment)
        register((
            "test_run",
            "device",
        ), self.addDeviceState)
        register((
            "test_run",
            "dmi_device",
        ), self.addDmiDeviceState)
        register((
            "test_run",
            "distribution",
        ), self.setDistribution)
        register((
            "test_run",
            "package_version",
        ), self.addPackageVersion)
        register((
            "test_run",
            "test_result",
        ), self.addTestResult)

        # Register handlers to set information once
        register(("architecture", ), self.setArchitecture, count=1)
        register((
            "cpuinfo",
            "machine",
            "cpuinfo_result",
        ),
                 self.setCpuinfo,
                 count=1)
        register((
            "meminfo",
            "meminfo_result",
        ), self.setMeminfo, count=1)
        register((
            "project",
            "series",
        ), self.setTestRun, count=1)
        register((
            "test_run",
            "architecture",
        ),
                 self.setArchitectureState,
                 count=1)
        register((
            "test_run",
            "kernel",
        ), self.setKernelState, count=1)
        register((
            "test_run",
            "memory",
        ), self.setMemoryState, count=1)
        register((
            "test_run",
            "processor",
        ), self.setProcessorState, count=1)
        register((
            "udevadm",
            "bits",
            "udevadm_result",
        ),
                 self.setUdevadm,
                 count=1)

        # Publish events passed as keyword arguments
        if "project" in kwargs:
            self.dispatcher.publishEvent("project", kwargs.pop("project"))
            self.dispatcher.publishEvent("series", kwargs.pop("series", None))