def test_set_parameter(self):
     # make sure client copied each parameter correct
     ns_source = rospy.get_param('parameter_namespace')
     ns_target = rospy.get_param('target_namespace')
     tests = self.tests
     for t in tests:
         source_name = roslib.names.ns_join(ns_source, t)
         target_name = roslib.names.ns_join(ns_target, t)
         source_value = rospy.get_param(source_name)
         target_value = rospy.get_param(target_name)
         if t != 'float':
             self.assertEquals(source_value, target_value)
         else:
             self.assertAlmostEquals(source_value, target_value)
Example #2
0
    def test_parameter_client_read(self):
        timeout_t = time.time() + 20.
        print("waiting for 20 seconds for client to load")

        tests = self.tests
        msgs = [None]
        while any(1 for m in msgs if m is None) and \
                not rospy.is_shutdown() and \
                timeout_t > time.time():
            time.sleep(0.2)
            msgs = [getattr(self, t + '_msg') for t in tests]

        print("msgs: %s" % (msgs))

        self.assertFalse(timeout_t < time.time(), "timeout exceeded")
        self.assertFalse(rospy.is_shutdown(), "node shutdown")
        self.assertFalse(any(1 for m in msgs if m is None),
                         "did not receive all expected messages: " + str(msgs))

        ns = rospy.get_param('parameter_namespace')
        for t in tests:
            p_name = roslib.names.ns_join(ns, t)
            value = rospy.get_param(p_name, t)
            msg = getattr(self, "%s_msg" % (t))
            print("get param: %s" % (p_name))
            print("param value: %s" % (value))
            print("msg value: %s" % (msg))
            if t == 'composite':
                print("value", p_name, value)
                m = Composite(CompositeA(**value['a']),
                              CompositeB(**value['b']))
                self.assertAlmostEqual(m.a.x, msg.a.x)
                self.assertAlmostEqual(m.a.y, msg.a.y)
                self.assertAlmostEqual(m.a.z, msg.a.z)
                self.assertAlmostEqual(m.a.w, msg.a.w)
                self.assertAlmostEqual(m.b.x, msg.b.x)
                self.assertAlmostEqual(m.b.y, msg.b.y)
                self.assertAlmostEqual(m.b.z, msg.b.z)
            elif t == 'list':
                self.assertEqual(list(value), list(msg.int32_array))
            elif t == 'float':
                self.assertAlmostEqual(value, msg.data)
            else:
                self.assertEqual(value, msg.data)
    def test_parameter_client_read(self):
        timeout_t = time.time() + 20.
        print "waiting for 20 seconds for client to load"

        tests = self.tests
        msgs = [None]
        while any(1 for m in msgs if m is None) and \
                not rospy.is_shutdown() and \
                timeout_t > time.time():
            time.sleep(0.2)
            msgs = [getattr(self, t+'_msg') for t in tests]

        print "msgs: %s"%(msgs)
        
        self.failIf(timeout_t < time.time(), "timeout exceeded")
        self.failIf(rospy.is_shutdown(), "node shutdown")            
        self.failIf(any(1 for m in msgs if m is None), "did not receive all expected messages: "+str(msgs))

        ns = rospy.get_param('parameter_namespace')
        for t in tests:
            p_name = roslib.names.ns_join(ns, t)
            value = rospy.get_param(p_name, t)
            msg = getattr(self, "%s_msg"%(t))
            print "get param: %s"%(p_name)
            print "param value: %s"%(value)
            print "msg value: %s"%(msg)
            if t == 'composite':
                print "value", p_name, value
                m = Composite(CompositeA(**value['a']), CompositeB(**value['b']))
                self.assertAlmostEquals(m.a.x, msg.a.x)
                self.assertAlmostEquals(m.a.y, msg.a.y)
                self.assertAlmostEquals(m.a.z, msg.a.z)
                self.assertAlmostEquals(m.a.w, msg.a.w)
                self.assertAlmostEquals(m.b.x, msg.b.x)
                self.assertAlmostEquals(m.b.y, msg.b.y)
                self.assertAlmostEquals(m.b.z, msg.b.z)
            elif t == 'list':
                self.assertEquals(list(value), list(msg.int32_array))
            elif t == 'float':
                self.assertAlmostEquals(value, msg.data)
            else:
                self.assertEquals(value, msg.data)
    def test_tilde_parameter(self):
        timeout_t = time.time() + 20.
        print "waiting for 20 seconds for client to load"
        while self.tilde_msg is None and \
                not rospy.is_shutdown() and \
                timeout_t > time.time():
            time.sleep(0.2)

        self.failIf(timeout_t < time.time(), "timeout exceeded")
        self.failIf(rospy.is_shutdown(), "node shutdown")            
        self.failIf(self.tilde_msg is None)
        
        self.assertEquals(rospy.get_param('param_client/tilde'), self.tilde_msg.data)