def test_should_throw_exception_when_node_is_not_up_and_running(self):
        mock_connection_provider = mock()
        tags = {
            'services' : """
                'apache' :
                     80: 80""",
            'credentials_name': 'test',
            'env_name' : 'test',
            'env_def_name' : 'Single-AZ Deployment',
            }
        fake_boto_instance1 = mock()
        fake_boto_instance1.tags = tags
        stub_region = mock()
        stub_region.name = 'eu-west'
        fake_boto_instance1.region = stub_region
        fake_boto_instance1.id = 'id1234'
        fake_boto_instance1.ip_address = 'test_ip'
        fake_boto_instance1.state = 'running'
        fake_boto_instance1.placement='us-east-1'
        aws_node = AWSRunningNode(fake_boto_instance1, None, mock_connection_provider)

        when(mock_connection_provider).connected_to_node('test_ip', 22).thenReturn(False)

        with self.assertRaisesRegexp(Exception, "Node id1234 is not running"):
            aws_node.wait_for_ready(lambda : None, 5)
    def test_can_match_a_node_def_with_service_port_mappings(self):
        fake_boto_instance = mock()

        tags = {
            'services' : """
            apache :
              80: 80""",
            'env_name' : 'my_environment',
            'env_def_name' : 'Single-AZ Deployment',
            'credentials_name' : 'bob'
        }
        fake_boto_instance.tags = tags
        stub_region = mock()
        stub_region.name = 'eu-west'
        fake_boto_instance.region = stub_region
        fake_boto_instance.image_id = '1234'
        fake_boto_instance.instance_type = 'large'

        running_node = AWSRunningNode(fake_boto_instance, None)
        node_def = AWSNodeDefinition(ami_id='1234', size='large', credentials_name='bob', region='eu-west', services=['apache'])

        self.assertTrue(running_node.matches_definition(node_def))