Ejemplo n.º 1
0
    def test_env_object(self):
        class S(Node):
            class Hosts:
                role1 = LocalHost
                role2 = LocalHost2

            def my_action(self):
                return 'result'

            def return_name_of_self(self):
                return self.__class__.__name__

            def echo_on_all(self):
                return self.hosts.run('/bin/echo echo', interactive=False)

            def echo_on_role1(self):
                return self.hosts.filter('role1').run('/bin/echo echo', interactive=False)

            def echo_on_role2(self):
                return self.hosts.get('role2').run('/bin/echo echo', interactive=False)

        s = S()
        env = Env(s)

        self.assertEqual(env.my_action(), 'result')
        self.assertEqual(env.return_name_of_self(), 'Env')
        self.assertEqual(env.echo_on_all(), [ 'echo\r\n', 'echo\r\n' ])
        self.assertEqual(env.echo_on_role1(), [ 'echo\r\n' ])
        self.assertEqual(env.echo_on_role2(), 'echo\r\n')

        # Isinstance hooks
        self.assertIsInstance(s, S)
        self.assertIsInstance(env, S)
    def test_env_object(self):
        class S(Node):
            class Hosts:
                role1 = LocalHost
                role2 = LocalHost2

            def my_action(self):
                return 'result'

            def return_name_of_self(self):
                return self.__class__.__name__

            def echo_on_all(self):
                return self.hosts.run('/bin/echo echo', interactive=False)

            def echo_on_role1(self):
                return self.hosts.filter('role1').run('/bin/echo echo',
                                                      interactive=False)

            def echo_on_role2(self):
                return self.hosts.filter('role2')[0].run('/bin/echo echo',
                                                         interactive=False)

        s = S()
        env = Env(s)

        self.assertEqual(env.my_action(), 'result')
        self.assertEqual(env.return_name_of_self(), 'Env')
        self.assertEqual(env.echo_on_all(), ['echo\r\n', 'echo\r\n'])
        self.assertEqual(env.echo_on_role1(), ['echo\r\n'])
        self.assertEqual(env.echo_on_role2(), 'echo\r\n')

        # Isinstance hooks
        self.assertIsInstance(s, S)
        self.assertIsInstance(env, S)
    def test_q_navigation(self):
        this = self

        class DummyException(Exception):
            pass

        class MyNode(Node):
            class Hosts:
                host = LocalHost

            # 1. Normal query from node.
            attr = 'value'
            query = Q.attr
            query2 = Q.attr + Q.attr

            def my_action(self):
                return self.query

            # 2. Exception in query from node.

            @property
            def this_raises(self):
                raise DummyException

            query3 = Q.this_raises + Q.attr

            def my_action2(self):
                # Calling query3 raises a QueryException
                # The inner exception that one is the DummyException
                try:
                    return self.query3
                except Exception as e:
                    this.assertIsInstance(e, ActionException)

                    this.assertIsInstance(e.inner_exception, QueryException)
                    this.assertIsInstance(e.inner_exception.node, MyNode)
                    this.assertIsInstance(e.inner_exception.query, Query)

                    this.assertIsInstance(e.inner_exception.inner_exception,
                                          DummyException)

                    # Raising the exception again at this point, will turn it
                    # into an action exception.
                    raise

        s = MyNode()
        env = Env(s)

        # 1.
        self.assertEqual(env.my_action(), 'value')
        self.assertEqual(env.query2, 'valuevalue')

        # 2.
        self.assertRaises(ActionException, env.my_action2)
        try:
            env.my_action2()
        except Exception as e:
            self.assertIsInstance(e, ActionException)
Ejemplo n.º 4
0
    def test_q_navigation(self):
        this = self
        class DummyException(Exception):
            pass

        class MyNode(Node):
            class Hosts:
                host = LocalHost

            # 1. Normal query from node.
            attr = 'value'
            query = Q.attr
            query2 = Q.attr + Q.attr

            def my_action(self):
                return self.query

            # 2. Exception in query from node.

            @property
            def this_raises(self):
                raise DummyException

            query3 = Q.this_raises + Q.attr

            def my_action2(self):
                # Calling query3 raises a QueryException
                # The inner exception that one is the DummyException
                try:
                    return self.query3
                except Exception as e:
                    this.assertIsInstance(e, ActionException)

                    this.assertIsInstance(e.inner_exception, QueryException)
                    this.assertIsInstance(e.inner_exception.node, MyNode)
                    this.assertIsInstance(e.inner_exception.query, Query)

                    this.assertIsInstance(e.inner_exception.inner_exception, DummyException)

                    # Raising the exception again at this point, will turn it
                    # into an action exception.
                    raise

        s = MyNode()
        env = Env(s)

        # 1.
        self.assertEqual(env.my_action(), 'value')
        self.assertEqual(env.query2, 'valuevalue')

        # 2.
        self.assertRaises(ActionException, env.my_action2)
        try:
            env.my_action2()
        except Exception as e:
            self.assertIsInstance(e, ActionException)
Ejemplo n.º 5
0
    def test_action_with_params(self):
        class MyNode(Node):
            class Hosts:
                host = LocalHost

            def my_action(self, param1, *a, **kw):
                return (param1, a, kw)

        s = MyNode()
        env = Env(s)
        result = env.my_action('param1', 1, 2, k=3, v=4)
        self.assertEqual(result, ('param1', (1, 2), { 'k': 3, 'v': 4 }) )
    def test_action_with_params(self):
        class MyNode(Node):
            class Hosts:
                host = LocalHost

            def my_action(self, param1, *a, **kw):
                return (param1, a, kw)

        s = MyNode()
        env = Env(s)
        result = env.my_action('param1', 1, 2, k=3, v=4)
        self.assertEqual(result, ('param1', (1, 2), {'k': 3, 'v': 4}))
Ejemplo n.º 7
0
    def test_property(self):
        class MyNode(Node):
            class Hosts:
                host = LocalHost

            @property
            def p(self):
                return 'value'

            def my_action(self):
                return self.p

        s = MyNode()
        env = Env(s)
        self.assertEqual(env.my_action(), 'value')
    def test_property(self):
        class MyNode(Node):
            class Hosts:
                host = LocalHost

            @property
            def p(self):
                return 'value'

            def my_action(self):
                return self.p

        s = MyNode()
        env = Env(s)
        self.assertEqual(env.my_action(), 'value')
Ejemplo n.º 9
0
    def test_q_navigation(self):
        class MyNode(Node):
            class Hosts:
                host = LocalHost

            attr = 'value'
            query = Q.attr
            query2 = Q.attr + Q.attr

            def my_action(self):
                return self.query

        s = MyNode()
        env = Env(s)
        self.assertEqual(env.my_action(), 'value')
        self.assertEqual(env.query2, 'valuevalue')