async def process_message(s, path, body, message_id, message_key, progress_cb):
     if path == "/no_error":
         return {"success": True}
     elif path == "/internal_error":
         raise error1
     elif path == "/builder_error":
         builder = ihp.ResultBuilder(["d073d5000001"])
         builder.error(error2)
         s.reply({"progress": {"error": "progress"}}, message_id=message_id)
         return builder
     elif path == "/builder_serial_error":
         builder = ihp.ResultBuilder(["d073d5000001"])
         try:
             raise error5
         except Exception as e:
             builder.error(e)
         return builder
     elif path == "/builder_internal_error":
         builder = ihp.ResultBuilder(["d073d5000001"])
         try:
             raise error3
         except Exception as error:
             builder.error(error)
         return builder
     elif path == "/error":
         raise error4
Beispiel #2
0
    async def execute(self):
        plans = self.sender.make_plans("hev_status", "hev_config")

        serials = await self.serials
        result = ihp.ResultBuilder()

        got = await self.sender.gatherer.gather_all(
            plans,
            serials,
            error_catcher=result.error,
            message_timeout=self.timeout)

        for serial, (complete, info) in got.items():
            if not complete:
                continue

            if info["hev_status"] is Skip:
                continue

            if "hev_status" in info and "hev_config" in info:
                # Create a copy so we don't corrupt the gatherer cache
                final = result.result["results"][serial] = {}
                final["status"] = MergedOptions.using(
                    info["hev_status"]).as_dict()
                final["status"]["last"]["result"] = final["status"]["last"][
                    "result"].name
                final["config"] = info["hev_config"]

        return result
Beispiel #3
0
    async def execute(self):
        plans = self.sender.make_plans("capability", "firmware_effects")
        self.sender.gatherer.clear_cache()

        serials = await self.serials
        result = ihp.ResultBuilder()
        result.add_serials(serials)

        def convert(d):
            for k, v in d.items():
                if isinstance(v, enum.Enum):
                    d[k] = v.name
            return d

        async for serial, complete, info in self.sender.gatherer.gather_per_serial(
                plans,
                serials,
                error_catcher=result.error,
                message_timeout=self.timeout):
            if not complete:
                continue

            cap = info["capability"]["cap"]
            final = {
                "product": {
                    "pid": cap.product.pid,
                    "vid": cap.product.vendor.vid,
                    "cap": convert(cap.as_dict()),
                    "name": cap.product.name,
                },
                "effect": {
                    "type": "SKIP"
                },
            }

            effects = info["firmware_effects"]
            if effects is not Skip:
                final["effect"]["type"] = effects["type"].name
                final["effect"]["options"] = convert(effects["options"])

            result.result["results"][serial] = final

        return result
 async def process_message(s, path, body, message_id, message_key, progress_cb):
     return ihp.ResultBuilder(serials=["d073d5000001"])
Beispiel #5
0
from photons_app.errors import PhotonsAppError

from photons_messages import DeviceMessages

import types


class ATraceback:
    def __eq__(self, other):
        return isinstance(other, types.TracebackType)


describe "ResultBuilder":
    it "initializes itself":
        builder = ihp.ResultBuilder(["one", "two"])
        assert builder.serials == ["one", "two"]
        assert builder.result == {"results": {}}

    it "can add serials":
        builder = ihp.ResultBuilder(["one", "two"])
        assert builder.serials == ["one", "two"]

        builder.add_serials(["three", "two", "four"])
        assert builder.serials == ["one", "two", "three", "four"]

    describe "as_dict":
        it "returns results but with ok for devices":
            builder = ihp.ResultBuilder(["one", "two"])
            dct = builder.as_dict()
            assert builder.result == {"results": {}}