<gh_stars>1-10
#! /usr/bin/python
#***********************************************************
#* Software License Agreement (BSD License)
#*
#*  Copyright (c) 2016, <NAME>
#*  All rights reserved.
#*
#*  Redistribution and use in source and binary forms, with or without
#*  modification, are permitted provided that the following conditions
#*  are met:
#*
#*   * Redistributions of source code must retain the above copyright
#*     notice, this list of conditions and the following disclaimer.
#*   * Redistributions in binary form must reproduce the above
#*     copyright notice, this list of conditions and the following
#*     disclaimer in the documentation and/or other materials provided
#*     with the distribution.
#*   * Neither the name of <NAME>, Inc. nor the names of its
#*     contributors may be used to endorse or promote products derived
#*     from this software without specific prior written permission.
#*
#*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#*  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#*  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
#*  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
#*  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
#*  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
#*  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
#*  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
#*  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
#*  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
#*  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#*  POSSIBILITY OF SUCH DAMAGE.
#* 
#* Author: <NAME>
#***********************************************************

import subprocess
import unittest

import rospy
PKG = 'test_tf2'
import roslib; roslib.load_manifest(PKG)


class TestStaticPublisher(unittest.TestCase):
    """
    These tests ensure the static transform publisher dies gracefully when
    provided with an invalid (or non-existent) transform parameter.

    These tests are started by the static_publisher.launch, which loads
    parameters into the param server.

    We check the output to make sure the correct error is occurring, since the
    return code is always -1 (255).

    Note that this *could* cause a problem if a valid TF is stored in the param
    server for one of the names; in this case the subprocess would never return
    and the test would run forever.
    """

    def test_publisher_no_args(self):
        # Start the publisher with no argument.
        cmd = 'rosrun tf2_ros static_transform_publisher'
        with self.assertRaises(subprocess.CalledProcessError) as cm:
            ret = subprocess.check_output(
                cmd.split(' '), stderr=subprocess.STDOUT)
        self.assertEqual(255, cm.exception.returncode)
        self.assertIn('not having the right number of arguments',
                      cm.exception.output)

    def test_publisher_nonexistent_param(self):
        # Here there is no paramater by that name.
        cmd = 'rosrun tf2_ros static_transform_publisher /test_tf2/tf_null'
        with self.assertRaises(subprocess.CalledProcessError) as cm:
            ret = subprocess.check_output(
                cmd.split(' '), stderr=subprocess.STDOUT)

        self.assertEqual(255, cm.exception.returncode)
        self.assertIn('Could not read TF', cm.exception.output)

    def test_publisher_invalid_param(self):
        # Here there is an invalid parameter stored in the parameter server.
        cmd = 'rosrun tf2_ros static_transform_publisher /test_tf2/tf_invalid'
        with self.assertRaises(subprocess.CalledProcessError) as cm:
            ret = subprocess.check_output(
                cmd.split(' '), stderr=subprocess.STDOUT)

        self.assertEqual(255, cm.exception.returncode)
        self.assertIn('Could not validate XmlRpcC', cm.exception.output)


if __name__ == '__main__':
    rospy.init_node("test_static_publisher_py")
    import rostest
    rostest.rosrun(PKG, 'test_static_publisher_py', TestStaticPublisher)

#! /usr/bin/python
#***********************************************************
#* Software License Agreement (BSD License)
#*
#*  Copyright (c) 2016, <NAME>
#*  All rights reserved.
#*
#*  Redistribution and use in source and binary forms, with or without
#*  modification, are permitted provided that the following conditions
#*  are met:
#*
#*   * Redistributions of source code must retain the above copyright
#*     notice, this list of conditions and the following disclaimer.
#*   * Redistributions in binary form must reproduce the above
#*     copyright notice, this list of conditions and the following
#*     disclaimer in the documentation and/or other materials provided
#*     with the distribution.
#*   * Neither the name of <NAME>, Inc. nor the names of its
#*     contributors may be used to endorse or promote products derived
#*     from this software without specific prior written permission.
#*
#*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#*  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#*  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
#*  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
#*  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
#*  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
#*  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
#*  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
#*  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
#*  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
#*  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#*  POSSIBILITY OF SUCH DAMAGE.
#* 
#* Author: <NAME>
#***********************************************************

import subprocess
import unittest

import rospy
PKG = 'test_tf2'
import roslib; roslib.load_manifest(PKG)


class TestStaticPublisher(unittest.TestCase):
    """
    These tests ensure the static transform publisher dies gracefully when
    provided with an invalid (or non-existent) transform parameter.

    These tests are started by the static_publisher.launch, which loads
    parameters into the param server.

    We check the output to make sure the correct error is occurring, since the
    return code is always -1 (255).

    Note that this *could* cause a problem if a valid TF is stored in the param
    server for one of the names; in this case the subprocess would never return
    and the test would run forever.
    """

    def test_publisher_no_args(self):
        # Start the publisher with no argument.
        cmd = 'rosrun tf2_ros static_transform_publisher'
        with self.assertRaises(subprocess.CalledProcessError) as cm:
            ret = subprocess.check_output(
                cmd.split(' '), stderr=subprocess.STDOUT)
        self.assertEqual(255, cm.exception.returncode)
        self.assertIn('not having the right number of arguments',
                      cm.exception.output)

    def test_publisher_nonexistent_param(self):
        # Here there is no paramater by that name.
        cmd = 'rosrun tf2_ros static_transform_publisher /test_tf2/tf_null'
        with self.assertRaises(subprocess.CalledProcessError) as cm:
            ret = subprocess.check_output(
                cmd.split(' '), stderr=subprocess.STDOUT)

        self.assertEqual(255, cm.exception.returncode)
        self.assertIn('Could not read TF', cm.exception.output)

    def test_publisher_invalid_param(self):
        # Here there is an invalid parameter stored in the parameter server.
        cmd = 'rosrun tf2_ros static_transform_publisher /test_tf2/tf_invalid'
        with self.assertRaises(subprocess.CalledProcessError) as cm:
            ret = subprocess.check_output(
                cmd.split(' '), stderr=subprocess.STDOUT)

        self.assertEqual(255, cm.exception.returncode)
        self.assertIn('Could not validate XmlRpcC', cm.exception.output)


if __name__ == '__main__':
    rospy.init_node("test_static_publisher_py")
    import rostest
    rostest.rosrun(PKG, 'test_static_publisher_py', TestStaticPublisher)
#! /usr/bin/python #*********************************************************** #* Software License Agreement (BSD License) #* #*  Copyright (c) 2016, <NAME> #*  All rights reserved. #* #*  Redistribution and use in source and binary forms, with or without #*  modification, are permitted provided that the following conditions #*  are met: #* #*   * Redistributions of source code must retain the above copyright #*     notice, this list of conditions and the following disclaimer. #*   * Redistributions in binary form must reproduce the above #*     copyright notice, this list of conditions and the following #*     disclaimer in the documentation and/or other materials provided #*     with the distribution. #*   * Neither the name of <NAME>, Inc. nor the names of its #*     contributors may be used to endorse or promote products derived #*     from this software without specific prior written permission. #* #*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS #*  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT #*  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS #*  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE #*  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, #*  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, #*  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; #*  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER #*  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT #*  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN #*  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE #*  POSSIBILITY OF SUCH DAMAGE. #* #* Author: <NAME> #*********************************************************** These tests ensure the static transform publisher dies gracefully when     provided with an invalid (or non-existent) transform parameter.      These tests are started by the static_publisher.launch, which loads     parameters into the param server.      We check the output to make sure the correct error is occurring, since the     return code is always -1 (255).      Note that this *could* cause a problem if a valid TF is stored in the param     server for one of the names; in this case the subprocess would never return     and the test would run forever. # Start the publisher with no argument. # Here there is no paramater by that name. # Here there is an invalid parameter stored in the parameter server.