Example #1
0
    def setUp(self):
        EventsMixin.setUp(self)

        self.icestorm_topic_name = 'FF00000100000023.private'

        self.servant = Mimic(Spy, SmartObject.AnalogSink)
        self.proxy = self._adapter_add(AnalogSinkI(self.servant))
        self._subscribe(self.icestorm_topic_name, self.proxy)
    def test_linked_processors(self):
        P0 = self.broker.add_servant(ProcessorI(), Cannon.ProcessorPrx)

        P1_servant = Mimic(Spy, Cannon.Processor)
        P1 = self.broker.add_servant(P1_servant, Cannon.ProcessorPrx)

        P2_servant = Mimic(Spy, Cannon.Processor)
        P2 = self.broker.add_servant(P2_servant, Cannon.ProcessorPrx)

        collector_servant = Mimic(Spy, Cannon.Collector)
        collector = self.broker.add_servant(collector_servant, Cannon.CollectorPrx)

        A00 = M1(1)
        B00 = M1(5)

        P0.init(1, 1, P2, P1, 2, collector)
        P0.injectFirst(A00, 0)
        P0.injectSecond(B00, 0)

        assert_that(P1_servant.injectFirst, called().asyncio(1).with_args(A00, 1, anything()))
        assert_that(P2_servant.injectSecond, called().asyncio(1).with_args(B00, 1, anything()))
    def test_2x2_processors_2x2_operands(self):
        '''
        initial shift:
        1 2     1 2      5 6    5 8
        3 4   < 4 3      7 8    7 6
                                  ^

        processors and collector are distributed objects
        '''
        P = [self.broker.add_servant(ProcessorI(), Cannon.ProcessorPrx) for i in range(4)]

        collector_servant = Mimic(Spy, Cannon.Collector)
        collector = self.broker.add_servant(collector_servant, Cannon.CollectorPrx)

        # by-hand shifted submatrices
        A00 = M1(1)
        A01 = M1(2)
        A10 = M1(4)
        A11 = M1(3)

        B00 = M1(5)
        B01 = M1(8)
        B10 = M1(7)
        B11 = M1(6)

        # by-hand processor initialization
        P[0].init(0, 0, P[2], P[1], 2, collector)
        P[1].init(0, 1, P[3], P[0], 2, collector)
        P[2].init(1, 0, P[0], P[3], 2, collector)
        P[3].init(1, 1, P[1], P[2], 2, collector)

        # by-hand processor loading
        P[0].injectFirst(A00, 0); P[0].injectSecond(B00, 0)
        P[1].injectFirst(A01, 0); P[1].injectSecond(B01, 0)
        P[2].injectFirst(A10, 0); P[2].injectSecond(B10, 0)
        P[3].injectFirst(A11, 0); P[3].injectSecond(B11, 0)

        wait_that(collector_servant.injectSubmatrix,
                  called().times(4))

        # expected result blocks
        C00 = M1(19)
        C01 = M1(22)
        C10 = M1(43)
        C11 = M1(50)

        assert_that(collector_servant.injectSubmatrix, called().with_args(C00, 0, 0, anything()))
        assert_that(collector_servant.injectSubmatrix, called().with_args(C01, 0, 1, anything()))
        assert_that(collector_servant.injectSubmatrix, called().with_args(C10, 1, 0, anything()))
        assert_that(collector_servant.injectSubmatrix, called().with_args(C11, 1, 1, anything()))
Example #4
0
    def test_linked_processors(self):
        P0 = self.broker.add_servant(ProcessorI(), Cannon.ProcessorPrx)

        P1_servant = Mimic(Spy, Cannon.Processor)
        P1 = self.broker.add_servant(P1_servant, Cannon.ProcessorPrx)

        P2_servant = Mimic(Spy, Cannon.Processor)
        P2 = self.broker.add_servant(P2_servant, Cannon.ProcessorPrx)

        collector_servant = Mimic(Spy, Cannon.Collector)
        collector = self.broker.add_servant(collector_servant,
                                            Cannon.CollectorPrx)

        A0 = M1(1)
        B0 = M1(5)

        P0.init(3, 2, P2, P1, collector)
        P0.injectA(A0, 0)
        P0.injectB(B0, 0)

        assert_that(P1_servant.injectA,
                    called(). async (1).with_args(A0, 1, anything()))
        assert_that(P2_servant.injectB,
                    called(). async (1).with_args(B0, 1, anything()))
    def test_collector_called(self):
        # given
        processor = self.broker.add_servant(ProcessorI(), Cannon.ProcessorPrx)

        collector_servant = Mimic(Spy, Cannon.Collector)
        collector = self.broker.add_servant(collector_servant, Cannon.CollectorPrx)

        A = M2(1, 2, 3, 4)
        B = M2(5, 6, 7, 8)

        # when
        processor.init(1, 1, None, None, 1, collector)
        processor.injectFirst(A, 0)
        processor.injectSecond(B, 0)

        # then
        C = M2(19, 22, 43, 50)
        assert_that(collector_servant.injectSubmatrix,
                    called().asyncio(1).with_args(C, 1, 1, anything()))
Example #6
0
    def test_event_from_unconfigured_sensor_magnitude(self):
        self.icestorm_topic_name_unconfigured = "Unconfigured"
        self.servant_unconfigured = Mimic(Spy, SmartObject.AnalogSink)
        self.proxy_unconfigured = self._adapter_add(self.servant_unconfigured)
        self._subscribe(self.icestorm_topic_name_unconfigured,
                        self.proxy_unconfigured)

        self.mqtt_msg = mqtt.MQTTMessage(mid=0, topic=b'meshliumf958/SCP4/HUM')
        self.mqtt_msg.payload = (
            '{\r\n  "id": "186897",\r\n  "id_wasp": "SCP4", \r\n '
            '"id_secret": "751C67057C105442",\r\n  '
            '"sensor": "HUM",\r\n  "value": "25.6",\r\n  '
            '"timestamp": "2018-07-19T11:01:41+03:00"\r\n}').encode()
        self.mqtt_msg.payload = self.mqtt_msg.payload
        self.formatted_timestamp = '1531987301'

        self.mqtt_adapter.on_message(client=self.mqtt_client,
                                     userdata=None,
                                     msg=self.mqtt_msg)
        meta = {SmartObject.MetadataField.Timestamp: self.formatted_timestamp}

        assert_that(self.servant_unconfigured.notify, is_not(called()))
Example #7
0
    def test_2x2_processors_2x2_operands(self):
        '''
        initial shift:
        1 2     1 2      5 6    5 8
        3 4 <   4 3      7 8    7 6
                           ^

        processors and collectors are distributed objects
        '''

        P = [
            self.broker.add_servant(ProcessorI(), Cannon.ProcessorPrx)
            for i in range(4)
        ]

        collector_servant = Mimic(Spy, Cannon.Collector)
        collector = self.broker.add_servant(collector_servant,
                                            Cannon.CollectorPrx)

        # by-hand shifted submatrices
        A0 = M1(1)
        A1 = M1(2)
        A2 = M1(4)
        A3 = M1(3)

        B0 = M1(5)
        B1 = M1(8)
        B2 = M1(7)
        B3 = M1(6)

        # by-hand processor initialization
        P[0].init(0, 2, P[2], P[1], collector)
        P[1].init(1, 2, P[3], P[0], collector)
        P[2].init(2, 2, P[0], P[3], collector)
        P[3].init(3, 2, P[1], P[2], collector)

        # by-hand processor loading
        P[0].injectA(A0, 0)
        P[0].injectB(B0, 0)
        P[1].injectA(A1, 0)
        P[1].injectB(B1, 0)
        P[2].injectA(A2, 0)
        P[2].injectB(B2, 0)
        P[3].injectA(A3, 0)
        P[3].injectB(B3, 0)

        wait_that(collector_servant.inject, called().times(4))

        # expected result blocks
        C0 = M1(19)
        C1 = M1(22)
        C2 = M1(43)
        C3 = M1(50)

        assert_that(collector_servant.inject,
                    called().with_args(0, C0, anything()))
        assert_that(collector_servant.inject,
                    called().with_args(1, C1, anything()))
        assert_that(collector_servant.inject,
                    called().with_args(2, C2, anything()))
        assert_that(collector_servant.inject,
                    called().with_args(3, C3, anything()))