/**
* Copyright 2013 Netflix, Inc.
* <p/>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.netflix.servo.tag.aws;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.testng.Assert.assertTrue;
/**
* AwsInjectableTag tests.
* User: gorzell
* Date: 1/9/12
* Time: 9:11 PM
*/
public class AwsInjectableTagTest {
/**
* getContent from 169.254.169.254.
*/
@BeforeTest(groups = {"aws"})
public void checkEc2() throws Exception {
URL testEc2Url = new URL("http://169.254.169.254/latest/meta-data");
testEc2Url.getContent();
}
/**
* zone comes from a valid region.
*/
@Test(groups = {"aws"})
public void testGetZone() throws Exception {
String zone = AwsInjectableTag.getZone();
assertTrue(zone.startsWith("us-") || zone.startsWith("eu-"));
}
/**
* ami-id looks like a valid ami.
*/
@Test(groups = {"aws"}, enabled = false)
public void testAmiId() throws Exception {
String amiId = AwsInjectableTag.getAmiId();
assertTrue(amiId.startsWith("ami-"));
}
/**
* check instance type.
*/
@Test(groups = {"aws"})
public void testGetInstanceType() throws Exception {
String instanceType = AwsInjectableTag.getInstanceType();
assertTrue(instanceType != null);
}
/**
* localHostname is a domU.
*/
@Test(groups = {"aws"})
public void testGetLocalHostname() throws Exception {
String localHostname = AwsInjectableTag.getLocalHostname();
assertTrue(localHostname.startsWith("domU-"));
}
/**
* privateIp.
*/
@Test(groups = {"aws"})
public void testGetLocalIpv4() throws Exception {
String localIpv4 = AwsInjectableTag.getLocalIpv4();
assertTrue(looksLikeAnIp(localIpv4));
}
/**
* publicHostname.
*/
@Test(groups = {"aws"})
public void testGetPublicHostname() throws Exception {
String publicHostname = AwsInjectableTag.getPublicHostname();
assertTrue(publicHostname.startsWith("ec2-"));
}
/**
* publicIp.
*/
@Test(groups = {"aws"})
public void testGetPublicIpv4() throws Exception {
String publicIpv4 = AwsInjectableTag.getPublicIpv4();
assertTrue(looksLikeAnIp(publicIpv4));
}
/**
* instanceId.
*/
@Test(groups = {"aws"})
public void testGetInstanceId() throws Exception {
String instanceId = AwsInjectableTag.getInstanceId();
assertTrue(instanceId.startsWith("i-"));
}
private static final String IPADDRESS_REGEX = "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
+ "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
+ "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
+ "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
private static final Pattern IP_PATTERN = Pattern.compile(IPADDRESS_REGEX);
/**
* Helper function to check whether a string looks like an IP.
*/
private boolean looksLikeAnIp(String ip) {
Matcher matcher = IP_PATTERN.matcher(ip);
return matcher.matches();
}
}