def test_simple_node(self):
        class N(SimpleNode):
            class Hosts:
                host = {LocalHost1, LocalHost2}

            def func(self):
                return 'result'

        # SimpleNode executes for each host separately.
        env = Env(N())
        self.assertEqual(list(env.func()), ['result', 'result'])

        # Test return value of SimpleNode
        result = env.func()
        self.assertIsInstance(result, ParallelActionResult)

        # (The key is the Env, containing the isolation)
        self.assertIsInstance(result.keys()[0], Env)
        self.assertIsInstance(result.keys()[1], Env)
        self.assertIn(result.keys()[0]._node.Hosts.host,
                      {LocalHost1, LocalHost2})
        self.assertIn(result.keys()[1]._node.Hosts.host,
                      {LocalHost1, LocalHost2})

        self.assertEqual(result.values()[0], 'result')
        self.assertEqual(result.values()[1], 'result')
Example #2
0
    def test_simple_nodes_in_normal_node(self):
        class N(Node):
            class Hosts:
                role1 = LocalHost1, LocalHost
                role2 = LocalHost3

            @map_roles('role1')
            class M(SimpleNode.Array):
                def func(self):
                    return 'func-m'

                class X(SimpleNode):
                    def func(self):
                        return 'func-x'

            def func(self):
                return 'func-n'

        # `M` should behave as an array.
        env = Env(N())
        self.assertEqual(env.func(), 'func-n')
        self.assertEqual(env.M.func(), ['func-m', 'func-m' ])
        self.assertEqual(env.M[0].func(), 'func-m')
        self.assertEqual(env.M.X.func(), ['func-x', 'func-x'])
        self.assertEqual(env.M[0].X.func(), 'func-x')
        self.assertEqual(env.M.X[0].func(), 'func-x')
Example #3
0
    def test_simple_node_getitem(self):
        class N(SimpleNode):
            class Hosts:
                host = LocalHost1, LocalHost2

            def func(self):
                return 'result'

        n = N()
        self.assertIsInstance(n[0], SimpleNode)
        self.assertIsInstance(n[1], SimpleNode)
        self.assertIsInstance(n[LocalHost1], SimpleNode)
        self.assertIsInstance(n[LocalHost2], SimpleNode)
        self.assertEqual(n[0]._node_is_isolated, True)
        self.assertEqual(n[1]._node_is_isolated, True)
        self.assertEqual(n[LocalHost1]._node_is_isolated, True)
        self.assertEqual(n[LocalHost2]._node_is_isolated, True)
        self.assertRaises(KeyError, lambda: n[2])
        self.assertRaises(KeyError, lambda: n[LocalHost3])

        # Calling the isolated item should not return an array
        env = Env(N())
        self.assertEqual(env.func(), ['result', 'result' ])
        self.assertEqual(env[0].func(), 'result')
        self.assertEqual(env[1].func(), 'result')
        self.assertRaises(KeyError, lambda: env[2])
        self.assertRaises(KeyError, lambda: env[LocalHost3])
    def test_simple_nodes_in_normal_node(self):
        class N(Node):
            class Hosts:
                role1 = {LocalHost1, LocalHost}
                role2 = LocalHost3

            @map_roles('role1')
            class M(SimpleNode.Array):
                def func(self):
                    return 'func-m'

                class X(SimpleNode):
                    def func(self):
                        return 'func-x'

            def func(self):
                return 'func-n'

        # `M` should behave as an array.
        env = Env(N())
        self.assertEqual(env.func(), 'func-n')
        self.assertEqual(list(env.M.func()), ['func-m', 'func-m'])
        self.assertIsInstance(env.M.func(), ParallelActionResult)
        self.assertEqual(env.M[0].func(), 'func-m')
        self.assertEqual(list(env.M.X.func()), ['func-x', 'func-x'])
        self.assertIsInstance(env.M.X.func(), ParallelActionResult)
        self.assertEqual(env.M[0].X.func(), 'func-x')
        self.assertEqual(env.M.X[0].func(), 'func-x')
    def test_simple_node_getitem(self):
        class N(SimpleNode):
            class Hosts:
                host = {LocalHost1, LocalHost2}

            def func(self):
                return 'result'

        n = N()
        self.assertIsInstance(n[0], SimpleNode)
        self.assertIsInstance(n[1], SimpleNode)
        self.assertIsInstance(n[LocalHost1], SimpleNode)
        self.assertIsInstance(n[LocalHost2], SimpleNode)
        self.assertEqual(n[0]._node_is_isolated, True)
        self.assertEqual(n[1]._node_is_isolated, True)
        self.assertEqual(n[LocalHost1]._node_is_isolated, True)
        self.assertEqual(n[LocalHost2]._node_is_isolated, True)
        self.assertRaises(KeyError, lambda: n[2])
        self.assertRaises(KeyError, lambda: n[LocalHost3])

        # Calling the isolated item should not return an array
        env = Env(N())
        self.assertEqual(list(env.func()), ['result', 'result'])
        self.assertIsInstance(env.func(), ParallelActionResult)
        self.assertEqual(env[0].func(), 'result')
        self.assertEqual(env[1].func(), 'result')
        self.assertRaises(KeyError, lambda: env[2])
        self.assertRaises(KeyError, lambda: env[LocalHost3])
Example #6
0
    def test_simple_node(self):
        class N(SimpleNode):
            class Hosts:
                host = LocalHost1, LocalHost2

            def func(self):
                return 'result'

        # SimpleNode executes for each host separately.
        env = Env(N())
        self.assertEqual(env.func(), ['result', 'result' ])
Example #7
0
    def test_simple_node(self):
        class N(SimpleNode):
            class Hosts:
                host = { LocalHost1, LocalHost2 }

            def func(self):
                return 'result'

        # SimpleNode executes for each host separately.
        env = Env(N())
        self.assertEqual(list(env.func()), ['result', 'result' ])

        # Test return value of SimpleNode
        result = env.func()
        self.assertIsInstance(result, ParallelActionResult)

            # (The key is the Env, containing the isolation)
        self.assertIsInstance(result.keys()[0], Env)
        self.assertIsInstance(result.keys()[1], Env)
        self.assertIn(result.keys()[0]._node.Hosts.host, { LocalHost1, LocalHost2 })
        self.assertIn(result.keys()[1]._node.Hosts.host, { LocalHost1, LocalHost2 })

        self.assertEqual(result.values()[0], 'result')
        self.assertEqual(result.values()[1], 'result')