def test_targeted_event_handling(self):
        event_maker = EventProducerTestClass()
        event_maker.configure({'name': 'EventProducerTester', 'parent': '/'})
        event_maker.start()
        nr = {1: event_maker}
        sid = SUBSCRIPTION_MANAGER.create_delivered(self, nr)

        # Wait for polling to start and verify value made it without any events
        t1 = time.time()
        while (time.time() - t1) < 1.0:
            all_values = SUBSCRIPTION_MANAGER.poll_all(sid)
            time.sleep(0.1)
        # Check that subscription value is the initial value of 100
        if all_values[1]['value'] != 100:
            raise ("polled_event_handling did not return inital value: " +
                   str(all_values[1]['value']))
        # make a rapid series of changes to the node value
        for i in range(10):
            event_maker._cov_check(i)
            time.sleep(0.1)
        # check change count, should be approx 10
        value_updates = self.__event_updated_values[1]['changes']
        cov_counts = self._cov_counter
        if value_updates < cov_counts:
            raise (
                "Targeted event handling event count did not match %d vs %d" %
                (value_updates, cov_counts))
    def test_targeted_event_handling(self):
        event_maker = EventProducerTestClass()
        event_maker.configure({'name':'EventProducerTester','parent':'/'})
        event_maker.start()
        nr = {1:event_maker}
        sid = SUBSCRIPTION_MANAGER.create_delivered(self, nr)

        # Wait for polling to start and verify value made it without any events
        t1 = time.time()
        while (time.time() - t1) < 1.0:
            all_values = SUBSCRIPTION_MANAGER.poll_all(sid)
            time.sleep(0.1)
        # Check that subscription value is the initial value of 100
        if all_values[1]['value'] != 100:
            raise ("polled_event_handling did not return inital value: " +
                   str(all_values[1]['value']))
        # make a rapid series of changes to the node value
        for i in range(10):
            event_maker._cov_check(i)
            time.sleep(0.1)
        # check change count, should be approx 10
        value_updates = self.__event_updated_values[1]['changes']
        cov_counts = self._cov_counter
        if value_updates < cov_counts:
            raise (
                "Targeted event handling event count did not match %d vs %d"
                % (value_updates, cov_counts)
                )
Example #3
0
 def get(self, skipcache=0):
     if self.link:
         if not self._smid:
             try:
                 value = self.as_node(self.link).get() #get it once to force autodiscovery
                 if hasattr(value, 'as_magnitude'):
                     value = value.as_magnitude()
                 self._last_value = value
                 self._smid = SM.create_delivered(self, {1:self.link}) #ID of subscription used for all descendent mpx_get templates
             except:
                 msglog.exception()
     return self._last_value
Example #4
0
 def get(self, skipcache=0):
     if self.link:
         if not self._smid:
             try:
                 value = self.as_node(
                     self.link).get()  #get it once to force autodiscovery
                 if hasattr(value, 'as_magnitude'):
                     value = value.as_magnitude()
                 self._last_value = value
                 self._smid = SM.create_delivered(
                     self, {1: self.link}
                 )  #ID of subscription used for all descendent mpx_get templates
             except:
                 msglog.exception()
     return self._last_value
 def test_create_delivered(self):
     sid = SUBSCRIPTION_MANAGER.create_delivered(self, self.nrt1to4)
     nrt = SUBSCRIPTION_MANAGER.node_reference_table(sid)
     if nrt != self.nrt1to4:
         raise "Initial node reference table mismatch."
     time.sleep(0.1)
     t1 = time.time()
     while (time.time() - t1) < 1.0:
         self.__event_lock.acquire()
         try:
             if len(self.__event_updated_values) == 4:
                 # We got all 4 values!
                 return
         finally:
             self.__event_lock.release()
         time.sleep(0.1)
     if len(self.__event_updated_values) != 4:
         raise (("Never got changes for all four values, only %d.\n"
                 "Values: %r") % (len(self.__event_updated_values),
                                  self.__event_updated_values))
 def test_create_delivered(self):
     sid = SUBSCRIPTION_MANAGER.create_delivered(self, self.nrt1to4)
     nrt = SUBSCRIPTION_MANAGER.node_reference_table(sid)
     if nrt != self.nrt1to4:
         raise "Initial node reference table mismatch."
     time.sleep(0.1)
     t1 = time.time()
     while (time.time() - t1) < 1.0:
         self.__event_lock.acquire()
         try:
             if len(self.__event_updated_values) == 4:
                 # We got all 4 values!
                 return
         finally:
             self.__event_lock.release()
         time.sleep(0.1)
     if len(self.__event_updated_values) != 4:
         raise (("Never got changes for all four values, only %d.\n"
                 "Values: %r") % (len(self.__event_updated_values),
                                  self.__event_updated_values))