def test_adjusted_minimum_poll_interval(self): SUBSCRIPTION_MANAGER._set_tunable_parameters({"minimum_poll_interval": 0.2}) sid = SUBSCRIPTION_MANAGER.create_polled(self.nrt1to4) nrt = SUBSCRIPTION_MANAGER.node_reference_table(sid) if nrt != self.nrt1to4: raise "Initial node reference table mismatch." # Check that each invokation gets all values. for i in range(0, 10): all_values = SUBSCRIPTION_MANAGER.poll_all(sid) if len(all_values) != len(self.nrt1to4): # We did not get all 4 values! raise ( "poll_all(self.nrt1to4) did not return all values." " (%d out of %d)" % (len(all_values), len(self.nrt1to4)) ) # Check that (eventually) all the values are result dictionaries. t1 = time.time() while (time.time() - t1) < 1.0: all_values = SUBSCRIPTION_MANAGER.poll_all(sid) if None not in all_values.values(): # ID3 is /services/time/UTC/milliseconds which should # change "really fast." c1 = all_values[self.ID3]["changes"] time.sleep(1.0) all_values = SUBSCRIPTION_MANAGER.poll_all(sid) c2 = all_values[self.ID3]["changes"] if (c2 - c1) > 6: # 0.2 == Max 5/second. raise ("1/5th second throttle failed," " %r changed %d times in one second.") % ( self.ID3, (c2 - c1), ) return time.sleep(0.1) raise ("Never got changes for all four result dictionaries, %d." % len(all_values)) return
def test_fast_minimum_poll_interval(self): SUBSCRIPTION_MANAGER._set_tunable_parameters({"minimum_poll_interval": 0.0}) sid = SUBSCRIPTION_MANAGER.create_polled(self.nrt1to4) nrt = SUBSCRIPTION_MANAGER.node_reference_table(sid) if nrt != self.nrt1to4: raise "Initial node reference table mismatch." # Check that each invokation gets all values. for i in range(0, 10): all_values = SUBSCRIPTION_MANAGER.poll_all(sid) if len(all_values) != len(self.nrt1to4): # We did not get all 4 values! raise ( "poll_all(self.nrt1to4) did not return all values." " (%d out of %d)" % (len(all_values), len(self.nrt1to4)) ) # Check that (eventually) all the values are result dictionaries. all_values = SUBSCRIPTION_MANAGER.poll_all(sid) t1 = time.time() while (time.time() - t1) < 1.0: time.sleep(0.1) all_values = SUBSCRIPTION_MANAGER.poll_all(sid) if None in all_values.values(): raise ( ("Never got changes for all four result dictionaries, %d.\n" "Values: %r") % (len(all_values), all_values) ) # ID3 is /services/time/UTC/milliseconds which should # change "really fast." c1 = all_values[self.ID3]["changes"] time.sleep(1.0) all_values = SUBSCRIPTION_MANAGER.poll_all(sid) c2 = all_values[self.ID3]["changes"] if (c2 - c1) < 25: # It's usually 500 on fearfactory... raise "%r only changed %d times in one second." % (self.ID3, (c2 - c1)) return
def test_poll_all_plus_exceptions(self): SUBSCRIPTION_MANAGER._set_tunable_parameters({ 'minimum_poll_interval':0.0, }) nrt1to4bad5to6 = {} nrt1to4bad5to6.update(self.nrt1to4) nrt1to4bad5to6['/services/time/is/an/illusion'] = ( '/services/time/is/an/illusion' ) nrt1to4bad5to6['/services/exception'] = '/services/exception' sid = SUBSCRIPTION_MANAGER.create_polled(nrt1to4bad5to6) nrt = SUBSCRIPTION_MANAGER.node_reference_table(sid) if nrt != nrt1to4bad5to6: raise "Initial node reference table mismatch." # Check that each invokation gets all values. for i in range(0,10): all_values = SUBSCRIPTION_MANAGER.poll_all(sid) if len(all_values) != len(nrt1to4bad5to6): # We did not get all 4 values! raise ( "poll_all(self.nrt1to4) did not return all values." " (%d out of %d)" % (len(all_values),len(nrt1to4bad5to6)) ) # Check that (eventually) all the values are result dictionaries. all_values = SUBSCRIPTION_MANAGER.poll_all(sid) t1 = time.time() while (time.time() - t1) < 1.0: if None not in all_values.values(): self.__all_plus_exceptions_check(all_values) # Finally, test that a new subscription gets the correct # results. time.sleep(0.1) sid = SUBSCRIPTION_MANAGER.create_polled(nrt1to4bad5to6) time.sleep(0.1) all_values = SUBSCRIPTION_MANAGER.poll_all(sid) self.__all_plus_exceptions_check(all_values) time.sleep(0.1) all_values = SUBSCRIPTION_MANAGER.poll_all(sid) self.__all_plus_exceptions_check(all_values) return time.sleep(0.1) all_values = SUBSCRIPTION_MANAGER.poll_all(sid) if None in all_values.values(): raise ("Never got values for all nodes: %r." % all_values) return
def test_poll_all_plus_exceptions(self): SUBSCRIPTION_MANAGER._set_tunable_parameters({ 'minimum_poll_interval': 0.0, }) nrt1to4bad5to6 = {} nrt1to4bad5to6.update(self.nrt1to4) nrt1to4bad5to6['/services/time/is/an/illusion'] = ( '/services/time/is/an/illusion') nrt1to4bad5to6['/services/exception'] = '/services/exception' sid = SUBSCRIPTION_MANAGER.create_polled(nrt1to4bad5to6) nrt = SUBSCRIPTION_MANAGER.node_reference_table(sid) if nrt != nrt1to4bad5to6: raise "Initial node reference table mismatch." # Check that each invokation gets all values. for i in range(0, 10): all_values = SUBSCRIPTION_MANAGER.poll_all(sid) if len(all_values) != len(nrt1to4bad5to6): # We did not get all 4 values! raise ("poll_all(self.nrt1to4) did not return all values." " (%d out of %d)" % (len(all_values), len(nrt1to4bad5to6))) # Check that (eventually) all the values are result dictionaries. all_values = SUBSCRIPTION_MANAGER.poll_all(sid) t1 = time.time() while (time.time() - t1) < 1.0: if None not in all_values.values(): self.__all_plus_exceptions_check(all_values) # Finally, test that a new subscription gets the correct # results. time.sleep(0.1) sid = SUBSCRIPTION_MANAGER.create_polled(nrt1to4bad5to6) time.sleep(0.1) all_values = SUBSCRIPTION_MANAGER.poll_all(sid) self.__all_plus_exceptions_check(all_values) time.sleep(0.1) all_values = SUBSCRIPTION_MANAGER.poll_all(sid) self.__all_plus_exceptions_check(all_values) return time.sleep(0.1) all_values = SUBSCRIPTION_MANAGER.poll_all(sid) if None in all_values.values(): raise ("Never got values for all nodes: %r." % all_values) return
def test_adjusted_minimum_poll_interval(self): SUBSCRIPTION_MANAGER._set_tunable_parameters({ 'minimum_poll_interval': 0.2, }) sid = SUBSCRIPTION_MANAGER.create_polled(self.nrt1to4) nrt = SUBSCRIPTION_MANAGER.node_reference_table(sid) if nrt != self.nrt1to4: raise "Initial node reference table mismatch." # Check that each invokation gets all values. for i in range(0, 10): all_values = SUBSCRIPTION_MANAGER.poll_all(sid) if len(all_values) != len(self.nrt1to4): # We did not get all 4 values! raise ("poll_all(self.nrt1to4) did not return all values." " (%d out of %d)" % (len(all_values), len(self.nrt1to4))) # Check that (eventually) all the values are result dictionaries. t1 = time.time() while (time.time() - t1) < 1.0: all_values = SUBSCRIPTION_MANAGER.poll_all(sid) if None not in all_values.values(): # ID3 is /services/time/UTC/milliseconds which should # change "really fast." c1 = all_values[self.ID3]['changes'] time.sleep(1.0) all_values = SUBSCRIPTION_MANAGER.poll_all(sid) c2 = all_values[self.ID3]['changes'] if (c2 - c1) > 6: # 0.2 == Max 5/second. raise ("1/5th second throttle failed," " %r changed %d times in one second.") % ( self.ID3, (c2 - c1), ) return time.sleep(0.1) raise ("Never got changes for all four result dictionaries, %d." % len(all_values)) return
def test_fast_minimum_poll_interval(self): SUBSCRIPTION_MANAGER._set_tunable_parameters({ 'minimum_poll_interval': 0.0, }) sid = SUBSCRIPTION_MANAGER.create_polled(self.nrt1to4) nrt = SUBSCRIPTION_MANAGER.node_reference_table(sid) if nrt != self.nrt1to4: raise "Initial node reference table mismatch." # Check that each invokation gets all values. for i in range(0, 10): all_values = SUBSCRIPTION_MANAGER.poll_all(sid) if len(all_values) != len(self.nrt1to4): # We did not get all 4 values! raise ("poll_all(self.nrt1to4) did not return all values." " (%d out of %d)" % (len(all_values), len(self.nrt1to4))) # Check that (eventually) all the values are result dictionaries. all_values = SUBSCRIPTION_MANAGER.poll_all(sid) t1 = time.time() while (time.time() - t1) < 1.0: time.sleep(0.1) all_values = SUBSCRIPTION_MANAGER.poll_all(sid) if None in all_values.values(): raise (("Never got changes for all four result dictionaries, %d.\n" "Values: %r") % (len(all_values), all_values)) # ID3 is /services/time/UTC/milliseconds which should # change "really fast." c1 = all_values[self.ID3]['changes'] time.sleep(1.0) all_values = SUBSCRIPTION_MANAGER.poll_all(sid) c2 = all_values[self.ID3]['changes'] if (c2 - c1) < 25: # It's usually 500 on fearfactory... raise "%r only changed %d times in one second." % ( self.ID3, (c2 - c1), ) return