Example #1
0
 def setUp(self):
     self.pool = LoadBalancerPool(id=text_type("pool_id"),
                                  virtual_ip=text_type("10.0.0.1"))
     for i in range(10):
         self.pool.nodes.append(
             LoadBalancerPoolNode(id=text_type("node_{0}".format(i)),
                                  created="2000-01-01T00:00:00Z",
                                  load_balancer_pool=self.pool,
                                  updated=None,
                                  cloud_server=text_type(
                                      "server_{0}".format(i))))
 def setUp(self):
     self.pool = LoadBalancerPool(id=text_type("pool_id"),
                                  virtual_ip=text_type("10.0.0.1"))
     for i in range(10):
         self.pool.nodes.append(
             LoadBalancerPoolNode(id=text_type("node_{0}".format(i)),
                                  created="2000-01-01T00:00:00Z",
                                  load_balancer_pool=self.pool,
                                  updated=None,
                                  cloud_server=text_type(
                                      "server_{0}".format(i))))
class LoadBalancerObjectTests(SynchronousTestCase):

    """
    Tests for :class:`LoadBalancerPool` and :class:`LoadBalancerPoolNode`
    """

    def setUp(self):
        self.pool = LoadBalancerPool(id=text_type("pool_id"),
                                     virtual_ip=text_type("10.0.0.1"))
        for i in range(10):
            self.pool.nodes.append(
                LoadBalancerPoolNode(id=text_type("node_{0}".format(i)),
                                     created="2000-01-01T00:00:00Z",
                                     load_balancer_pool=self.pool,
                                     updated=None,
                                     cloud_server=text_type(
                                         "server_{0}".format(i))))

    def test_LBPoolNode_short_json(self):
        """
        Valid JSON response (as would be displayed when listing nodes) is
        produced by :func:`LoadBalancerPoolNode.short_json`
        """
        self.assertEqual(
            {
                "id": "node_0",
                "created": "2000-01-01T00:00:00Z",
                "updated": None,
                "load_balancer_pool": {
                    "id": "pool_id"
                },
                "cloud_server": {
                    "id": "server_0"
                },
                "status": "ACTIVE",
                "status_detail": None
            },
            self.pool.nodes[0].short_json())

    def test_LBPoolNode_update(self):
        """
        Updating the status changes the 'now', 'status', and 'status_detail'
        attributes.
        """
        self.pool.nodes[0].update(now="2000-01-02T00:00:00Z",
                                  status="DISABLED",
                                  status_detail="Broken.")
        self.assertEqual(
            {
                "id": "node_0",
                "created": "2000-01-01T00:00:00Z",
                "updated": "2000-01-02T00:00:00Z",
                "load_balancer_pool": {
                    "id": "pool_id"
                },
                "cloud_server": {
                    "id": "server_0"
                },
                "status": "DISABLED",
                "status_detail": "Broken."
            },
            self.pool.nodes[0].short_json())

    def test_LBPool_short_json(self):
        """
        Valid JSON response (as would be displayed when listing pools or
        getting pool details) is produced by :func:`LoadBalancerPool.as_json`.
        """
        self.assertEqual(
            {
                "id": "pool_id",
                "name": "default",
                "node_counts": {
                    "cloud_servers": 10,
                    "external": 0,
                    "total": 10
                },
                "port": 80,
                "virtual_ip": "10.0.0.1",
                "status": "ACTIVE",
                "status_detail": None
            },
            self.pool.as_json())

    def test_LBPool_find_nodes_by_id(self):
        """
        A node can be retrieved by its ID.
        """
        self.assertIs(self.pool.nodes[5], self.pool.node_by_id("node_5"))

    def test_LBPool_find_no_nodes_by_id(self):
        """
        If a node ID is specified that does not exist, ``node_by_id`` returns
        None.
        """
        self.assertIs(None, self.pool.node_by_id("not_a_node"))

    def test_LBPool_find_nodes_by_server_id(self):
        """
        A node can be retrieved by its cloud server ID.
        """
        self.assertIs(self.pool.nodes[3],
                      self.pool.node_by_cloud_server("server_3"))
Example #4
0
class LoadBalancerObjectTests(SynchronousTestCase):
    """
    Tests for :class:`LoadBalancerPool` and :class:`LoadBalancerPoolNode`
    """
    def setUp(self):
        self.pool = LoadBalancerPool(id=text_type("pool_id"),
                                     virtual_ip=text_type("10.0.0.1"))
        for i in range(10):
            self.pool.nodes.append(
                LoadBalancerPoolNode(id=text_type("node_{0}".format(i)),
                                     created="2000-01-01T00:00:00Z",
                                     load_balancer_pool=self.pool,
                                     updated=None,
                                     cloud_server=text_type(
                                         "server_{0}".format(i))))

    def test_LBPoolNode_short_json(self):
        """
        Valid JSON response (as would be displayed when listing nodes) is
        produced by :func:`LoadBalancerPoolNode.short_json`
        """
        self.assertEqual(
            {
                "id": "node_0",
                "created": "2000-01-01T00:00:00Z",
                "updated": None,
                "load_balancer_pool": {
                    "id": "pool_id"
                },
                "cloud_server": {
                    "id": "server_0"
                },
                "status": "ACTIVE",
                "status_detail": None
            }, self.pool.nodes[0].short_json())

    def test_LBPoolNode_update(self):
        """
        Updating the status changes the 'now', 'status', and 'status_detail'
        attributes.
        """
        self.pool.nodes[0].update(now="2000-01-02T00:00:00Z",
                                  status="DISABLED",
                                  status_detail="Broken.")
        self.assertEqual(
            {
                "id": "node_0",
                "created": "2000-01-01T00:00:00Z",
                "updated": "2000-01-02T00:00:00Z",
                "load_balancer_pool": {
                    "id": "pool_id"
                },
                "cloud_server": {
                    "id": "server_0"
                },
                "status": "DISABLED",
                "status_detail": "Broken."
            }, self.pool.nodes[0].short_json())

    def test_LBPool_short_json(self):
        """
        Valid JSON response (as would be displayed when listing pools or
        getting pool details) is produced by :func:`LoadBalancerPool.as_json`.
        """
        self.assertEqual(
            {
                "id": "pool_id",
                "name": "default",
                "node_counts": {
                    "cloud_servers": 10,
                    "external": 0,
                    "total": 10
                },
                "port": 80,
                "virtual_ip": "10.0.0.1",
                "status": "ACTIVE",
                "status_detail": None
            }, self.pool.as_json())

    def test_LBPool_find_nodes_by_id(self):
        """
        A node can be retrieved by its ID.
        """
        self.assertIs(self.pool.nodes[5], self.pool.node_by_id("node_5"))

    def test_LBPool_find_no_nodes_by_id(self):
        """
        If a node ID is specified that does not exist, ``node_by_id`` returns
        None.
        """
        self.assertIs(None, self.pool.node_by_id("not_a_node"))

    def test_LBPool_find_nodes_by_server_id(self):
        """
        A node can be retrieved by its cloud server ID.
        """
        self.assertIs(self.pool.nodes[3],
                      self.pool.node_by_cloud_server("server_3"))