Ejemplo n.º 1
0
    def test_from_locations_json_list_invalid_asf(self):
        options = flexmock(infrastructure='euca',
                           group='group',
                           machine='vm image',
                           instance_type='instance type',
                           keyname='keyname',
                           table='cassandra',
                           verbose=False,
                           test=False,
                           use_spot_instances=False,
                           zone='zone',
                           static_ip=None,
                           replication=None,
                           appengine=None,
                           autoscale=None,
                           user_commands=[],
                           flower_password='',
                           max_memory='X',
                           ips=THREE_NODE_CLOUD)

        node_layout = NodeLayout(options)
        self.assertNotEqual([], node_layout.nodes)

        with self.assertRaises(BadConfigurationException):
            node_layout.from_locations_json_list(self.reattach_node_info)
Ejemplo n.º 2
0
  def test_from_locations_json_list_invalid_asf(self):
    options = flexmock(
      infrastructure='euca',
      group='group',
      machine='vm image',
      instance_type='instance type',
      keyname='keyname',
      table='cassandra',
      verbose=False,
      test=False,
      use_spot_instances=False,
      zone='zone',
      static_ip=None,
      replication=None,
      appengine=None,
      autoscale=None,
      user_commands=[],
      flower_password='',
      max_memory='X',
      ips=THREE_NODE_CLOUD
    )

    node_layout = NodeLayout(options)
    self.assertNotEqual([], node_layout.nodes)

    with self.assertRaises(BadConfigurationException):
      node_layout.from_locations_json_list(self.reattach_node_info)
Ejemplo n.º 3
0
    def test_from_locations_json_list_invalid_locations(self):
        node_layout = NodeLayout(self.reattach_options)
        self.assertNotEqual([], node_layout.nodes)

        node_info = [{
            "public_ip":
            "0.0.0.0",
            "private_ip":
            "0.0.0.0",
            "instance_id":
            "i-APPSCALE1",
            "roles":
            ['load_balancer', 'taskqueue', 'shadow', 'taskqueue_master']
        }, {
            "public_ip": "0.0.0.0",
            "private_ip": "0.0.0.0",
            "instance_id": "i-APPSCALE2",
            "roles": ['memcache', 'appengine']
        }, {
            "public_ip": "0.0.0.0",
            "private_ip": "0.0.0.0",
            "instance_id": "i-APPSCALE3",
            "roles": ['zookeeper']
        }, {
            "public_ip": "0.0.0.0",
            "private_ip": "0.0.0.0",
            "instance_id": "i-APPSCALE4",
            "roles": ['database', 'db_master', 'zookeeper']
        }]

        with self.assertRaises(BadConfigurationException):
            node_layout.from_locations_json_list(node_info)
Ejemplo n.º 4
0
  def test_from_locations_json_list_invalid_locations(self):
    node_layout = NodeLayout(self.reattach_options)
    self.assertNotEqual([], node_layout.nodes)

    node_info = [{ "public_ip": "0.0.0.0",
                   "private_ip": "0.0.0.0",
                   "instance_id": "i-APPSCALE1",
                   "roles": ['load_balancer', 'taskqueue', 'shadow',
                             'taskqueue_master'] },
                 { "public_ip": "0.0.0.0",
                   "private_ip": "0.0.0.0",
                   "instance_id": "i-APPSCALE2",
                   "roles": ['memcache', 'appengine'] },
                 { "public_ip": "0.0.0.0",
                   "private_ip": "0.0.0.0",
                   "instance_id": "i-APPSCALE3",
                   "roles": ['zookeeper'] },
                 { "public_ip": "0.0.0.0",
                   "private_ip": "0.0.0.0",
                   "instance_id": "i-APPSCALE4",
                   "roles": ['database', 'db_master', 'zookeeper'] }
                 ]

    with self.assertRaises(BadConfigurationException):
      node_layout.from_locations_json_list(node_info)
Ejemplo n.º 5
0
    def test_from_locations_json_list_able_to_match(self):
        options = flexmock(infrastructure='euca',
                           group='group',
                           machine='vm image',
                           instance_type='instance type',
                           keyname='keyname',
                           table='cassandra',
                           verbose=False,
                           test=False,
                           use_spot_instances=False,
                           zone='zone',
                           static_ip=None,
                           replication=None,
                           appengine=None,
                           autoscale=None,
                           user_commands=[],
                           flower_password='',
                           max_memory='X',
                           ips=FOUR_NODE_CLOUD)

        node_layout = NodeLayout(options)
        self.assertNotEqual([], node_layout.nodes)
        old_nodes = node_layout.nodes[:]
        new_layout = node_layout.from_locations_json_list(
            self.reattach_node_info)
        for node in new_layout:
            # Match nodes based on jobs/roles.
            for index, old_node in enumerate(old_nodes):
                if set(old_node.roles) == set(node.roles):
                    old_nodes.pop(index)
                    break

        self.assertEqual(old_nodes, [])
Ejemplo n.º 6
0
    def test_from_locations_json_list_invalid_asf(self):
        options = flexmock(infrastructure='euca',
                           group='group',
                           machine='vm image',
                           instance_type='instance type',
                           keyname='keyname',
                           table='cassandra',
                           verbose=False,
                           test=False,
                           use_spot_instances=False,
                           zone='zone',
                           static_ip=None,
                           replication=None,
                           appengine=None,
                           autoscale=None,
                           user_commands=[],
                           flower_password='',
                           max_memory='X',
                           ips={
                               'master': 'node-1',
                               'zookeeper': 'node-2',
                               'appengine': 'node-3',
                               'database': 'node-3'
                           })

        node_layout = NodeLayout(options)
        self.assertTrue(node_layout.is_valid())

        new_layout = node_layout.from_locations_json_list(
            self.reattach_node_info)
        self.assertEqual(new_layout, None)
Ejemplo n.º 7
0
    def test_from_locations_json_list_invalid_locations(self):
        node_layout = NodeLayout(self.reattach_options)
        self.assertTrue(node_layout.is_valid())

        node_info = [{
            "public_ip":
            "0.0.0.0",
            "private_ip":
            "0.0.0.0",
            "instance_id":
            "i-APPSCALE1",
            "jobs": [
                'load_balancer', 'taskqueue', 'shadow', 'login',
                'taskqueue_master'
            ]
        }, {
            "public_ip": "0.0.0.0",
            "private_ip": "0.0.0.0",
            "instance_id": "i-APPSCALE2",
            "jobs": ['memcache', 'appengine']
        }, {
            "public_ip": "0.0.0.0",
            "private_ip": "0.0.0.0",
            "instance_id": "i-APPSCALE3",
            "jobs": ['zookeeper']
        }, {
            "public_ip": "0.0.0.0",
            "private_ip": "0.0.0.0",
            "instance_id": "i-APPSCALE4",
            "jobs": ['db_master', 'zookeeper']
        }]

        new_layout = node_layout.from_locations_json_list(node_info)
        self.assertEqual(new_layout, None)
Ejemplo n.º 8
0
  def test_from_locations_json_list_able_to_match(self):
    options = flexmock(
      infrastructure='euca',
      group='group',
      machine='vm image',
      instance_type='instance type',
      keyname='keyname',
      table='cassandra',
      verbose=False,
      test=False,
      use_spot_instances=False,
      zone='zone',
      static_ip=None,
      replication=None,
      appengine=None,
      autoscale=None,
      user_commands=[],
      flower_password='',
      max_memory='X',
      ips=FOUR_NODE_CLOUD
    )

    node_layout = NodeLayout(options)
    self.assertNotEqual([], node_layout.nodes)
    old_nodes = node_layout.nodes[:]
    new_layout = node_layout.from_locations_json_list(self.reattach_node_info)
    for node in new_layout:
      # Match nodes based on jobs/roles.
      for index, old_node in enumerate(old_nodes):
        if set(old_node.roles) == set(node.roles):
          old_nodes.pop(index)
          break

    self.assertEqual(old_nodes, [])
Ejemplo n.º 9
0
  def test_from_locations_json_list_after_clean(self):
    options = flexmock(
      infrastructure='euca',
      group='group',
      machine='vm image',
      instance_type='instance type',
      keyname='keyname',
      table='cassandra',
      verbose=False,
      test=False,
      use_spot_instances=False,
      zone='zone',
      static_ip=None,
      replication=None,
      appengine=None,
      autoscale=None,
      user_commands=[],
      flower_password='',
      max_memory='X',
      ips=FOUR_NODE_CLOUD
    )
    cleaned_node_info = [{"public_ip": "0.0.0.0",
                           "private_ip": "0.0.0.0",
                           "instance_id": "i-APPSCALE1",
                           "roles": ['load_balancer', 'taskqueue', 'shadow',
                                     'taskqueue_master'],
                           "instance_type": "instance_type_1"},
                          {"public_ip": "0.0.0.0",
                           "private_ip": "0.0.0.0",
                           "instance_id": "i-APPSCALE2",
                           "roles": ['open'],
                           "instance_type": "instance_type_1"},
                          {"public_ip": "0.0.0.0",
                           "private_ip": "0.0.0.0",
                           "instance_id": "i-APPSCALE3",
                           "roles": ['open'],
                           "instance_type": "instance_type_1"},
                          {"public_ip": "0.0.0.0",
                           "private_ip": "0.0.0.0",
                           "instance_id": "i-APPSCALE4",
                           "roles": ['open'],
                           "instance_type": "instance_type_1"}
                          ]
    node_layout = NodeLayout(options)
    self.assertNotEqual([], node_layout.nodes)
    old_nodes = node_layout.nodes[:]
    new_layout = node_layout.from_locations_json_list(cleaned_node_info)
    for node in new_layout:
      # Match nodes based on jobs/roles.
      for index, old_node in enumerate(old_nodes):
        if set(old_node.roles) == set(node.roles):
          old_nodes.pop(index)
          break

    self.assertEqual(old_nodes, [])
Ejemplo n.º 10
0
 def test_from_locations_json_list_valid(self):
     node_layout = NodeLayout(self.reattach_options)
     self.assertTrue(node_layout.is_valid())
     new_layout = node_layout.from_locations_json_list(
         self.reattach_node_info)
     self.assertNotEqual(new_layout, None)
     nodes_copy = new_layout[:]
     for old_node in node_layout.nodes:
         for _, node in enumerate(nodes_copy):
             # Match nodes based on jobs/roles.
             if set(old_node.roles) == set(node.roles):
                 nodes_copy.remove(node)
     self.assertEqual(nodes_copy, [])
Ejemplo n.º 11
0
  def test_from_locations_json_list_valid(self):
    node_layout = NodeLayout(self.reattach_options)
    self.assertNotEqual([], node_layout.nodes)
    old_nodes = node_layout.nodes[:]
    new_layout = node_layout.from_locations_json_list(self.reattach_node_info)
    for node in new_layout:
      # Match nodes based on jobs/roles.
      for index, old_node in enumerate(old_nodes):
        if set(old_node.roles) == set(node.roles):
          old_nodes.pop(index)
          break

    self.assertEqual(old_nodes, [])
Ejemplo n.º 12
0
    def test_from_locations_json_list_valid(self):
        node_layout = NodeLayout(self.reattach_options)
        self.assertNotEqual([], node_layout.nodes)
        old_nodes = node_layout.nodes[:]
        new_layout = node_layout.from_locations_json_list(
            self.reattach_node_info)
        for node in new_layout:
            # Match nodes based on jobs/roles.
            for index, old_node in enumerate(old_nodes):
                if set(old_node.roles) == set(node.roles):
                    old_nodes.pop(index)
                    break

        self.assertEqual(old_nodes, [])
Ejemplo n.º 13
0
    def test_from_locations_json_list_able_to_match(self):
        options = flexmock(infrastructure='euca',
                           group='group',
                           machine='vm image',
                           instance_type='instance type',
                           keyname='keyname',
                           table='cassandra',
                           verbose=False,
                           test=False,
                           use_spot_instances=False,
                           zone='zone',
                           static_ip=None,
                           replication=None,
                           appengine=None,
                           autoscale=None,
                           user_commands=[],
                           flower_password='',
                           max_memory='X',
                           ips={
                               'master': 'node-1',
                               'zookeeper': 'node-2',
                               'appengine': 'node-4',
                               'database': 'node-3'
                           })

        node_layout = NodeLayout(options)
        self.assertTrue(node_layout.is_valid())

        new_layout = node_layout.from_locations_json_list(
            self.reattach_node_info)
        self.assertNotEqual(new_layout, None)
        nodes_copy = new_layout[:]
        for old_node in node_layout.nodes:
            for _, node in enumerate(nodes_copy):
                # Match nodes based on jobs/roles.
                if set(old_node.roles) == set(node.roles):
                    nodes_copy.remove(node)
        self.assertEqual(nodes_copy, [])
Ejemplo n.º 14
0
    def test_from_locations_json_list_after_clean(self):
        options = flexmock(infrastructure='euca',
                           group='group',
                           machine='vm image',
                           instance_type='instance type',
                           keyname='keyname',
                           table='cassandra',
                           verbose=False,
                           test=False,
                           use_spot_instances=False,
                           zone='zone',
                           static_ip=None,
                           replication=None,
                           appengine=None,
                           autoscale=None,
                           user_commands=[],
                           flower_password='',
                           max_memory='X',
                           ips=FOUR_NODE_CLOUD)
        cleaned_node_info = [{
            "public_ip":
            "0.0.0.0",
            "private_ip":
            "0.0.0.0",
            "instance_id":
            "i-APPSCALE1",
            "roles":
            ['load_balancer', 'taskqueue', 'shadow', 'taskqueue_master'],
            "instance_type":
            "instance_type_1"
        }, {
            "public_ip": "0.0.0.0",
            "private_ip": "0.0.0.0",
            "instance_id": "i-APPSCALE2",
            "roles": ['open'],
            "instance_type": "instance_type_1"
        }, {
            "public_ip": "0.0.0.0",
            "private_ip": "0.0.0.0",
            "instance_id": "i-APPSCALE3",
            "roles": ['open'],
            "instance_type": "instance_type_1"
        }, {
            "public_ip": "0.0.0.0",
            "private_ip": "0.0.0.0",
            "instance_id": "i-APPSCALE4",
            "roles": ['open'],
            "instance_type": "instance_type_1"
        }]
        node_layout = NodeLayout(options)
        self.assertNotEqual([], node_layout.nodes)
        old_nodes = node_layout.nodes[:]
        new_layout = node_layout.from_locations_json_list(cleaned_node_info)
        for node in new_layout:
            # Match nodes based on jobs/roles.
            for index, old_node in enumerate(old_nodes):
                if set(old_node.roles) == set(node.roles):
                    old_nodes.pop(index)
                    break

        self.assertEqual(old_nodes, [])