Adding tests for IpAssocVpc; DeleteIpAlias; DnsMasqConfig

Adding IpAssocVpcCommand to the AbstractConfigItemFacade map
This commit is contained in:
wilderrodrigues 2014-10-16 11:38:27 +02:00
parent 6d7f75e18b
commit 0a1677242a
2 changed files with 136 additions and 0 deletions

View File

@ -30,6 +30,7 @@ import com.cloud.agent.api.routing.DeleteIpAliasCommand;
import com.cloud.agent.api.routing.DhcpEntryCommand;
import com.cloud.agent.api.routing.DnsMasqConfigCommand;
import com.cloud.agent.api.routing.IpAssocCommand;
import com.cloud.agent.api.routing.IpAssocVpcCommand;
import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand;
@ -85,6 +86,7 @@ public abstract class AbstractConfigItemFacade {
flyweight.put(SetNetworkACLCommand.class, new SetNetworkAclConfigItem());
flyweight.put(SetSourceNatCommand.class, new SetSourceNatConfigItem());
flyweight.put(IpAssocCommand.class, new IpAssociationConfigItem());
flyweight.put(IpAssocVpcCommand.class, new IpAssociationConfigItem());
}
protected String destinationFile;

View File

@ -29,14 +29,26 @@ import java.util.UUID;
import org.junit.Test;
import com.cloud.agent.api.routing.DeleteIpAliasCommand;
import com.cloud.agent.api.routing.DnsMasqConfigCommand;
import com.cloud.agent.api.routing.IpAliasTO;
import com.cloud.agent.api.routing.IpAssocVpcCommand;
import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.routing.SetPortForwardingRulesVpcCommand;
import com.cloud.agent.api.to.DhcpTO;
import com.cloud.agent.api.to.IpAddressTO;
import com.cloud.agent.api.to.LoadBalancerTO;
import com.cloud.agent.api.to.NicTO;
import com.cloud.agent.api.to.PortForwardingRuleTO;
import com.cloud.agent.resource.virtualnetwork.model.DhcpConfig;
import com.cloud.agent.resource.virtualnetwork.model.DhcpConfigEntry;
import com.cloud.agent.resource.virtualnetwork.model.ForwardingRule;
import com.cloud.agent.resource.virtualnetwork.model.ForwardingRules;
import com.cloud.agent.resource.virtualnetwork.model.IpAddress;
import com.cloud.agent.resource.virtualnetwork.model.IpAddressAlias;
import com.cloud.agent.resource.virtualnetwork.model.IpAliases;
import com.cloud.agent.resource.virtualnetwork.model.IpAssociation;
import com.cloud.agent.resource.virtualnetwork.model.LoadBalancerRule;
import com.cloud.agent.resource.virtualnetwork.model.LoadBalancerRules;
import com.cloud.network.lb.LoadBalancingRule.LbDestination;
@ -108,6 +120,93 @@ public class ConfigHelperTest {
assertTrue(scriptConfig instanceof ScriptConfigItem);
}
@Test
public void testIpAssocVpc() {
final IpAssocVpcCommand command = generateIpAssocVpcCommand();
final List<ConfigItem> config = ConfigHelper.generateCommandCfg(command);
assertTrue(config.size() > 0);
final ConfigItem fileConfig = config.get(0);
assertNotNull(fileConfig);
assertTrue(fileConfig instanceof FileConfigItem);
final String fileContents = ((FileConfigItem)fileConfig).getFileContents();
assertNotNull(fileContents);
final IpAssociation jsonClass = gson.fromJson(fileContents, IpAssociation.class);
assertNotNull(jsonClass);
assertEquals(jsonClass.getType(), "ips");
final IpAddress [] ips = jsonClass.getIpAddress();
assertNotNull(ips);
assertTrue(ips.length == 3);
assertEquals(ips[0].getPublicIp(), "64.1.1.10");
final ConfigItem scriptConfig = config.get(1);
assertNotNull(scriptConfig);
assertTrue(scriptConfig instanceof ScriptConfigItem);
}
@Test
public void testDnsMasqConfig() {
final DnsMasqConfigCommand command = generateDnsMasqConfigCommand();
final List<ConfigItem> config = ConfigHelper.generateCommandCfg(command);
assertTrue(config.size() > 0);
final ConfigItem fileConfig = config.get(0);
assertNotNull(fileConfig);
assertTrue(fileConfig instanceof FileConfigItem);
final String fileContents = ((FileConfigItem)fileConfig).getFileContents();
assertNotNull(fileContents);
final DhcpConfig jsonClass = gson.fromJson(fileContents, DhcpConfig.class);
assertNotNull(jsonClass);
assertEquals(jsonClass.getType(), "dhcpconfig");
final List<DhcpConfigEntry> entries = jsonClass.getEntries();
assertNotNull(entries);
assertTrue(entries.size() == 2);
assertEquals(entries.get(0).getRouterIpAddress(), "10.1.20.2");
final ConfigItem scriptConfig = config.get(1);
assertNotNull(scriptConfig);
assertTrue(scriptConfig instanceof ScriptConfigItem);
}
@Test
public void testDeleteIpAlias() {
final DeleteIpAliasCommand command = generateDeleteIpAliasCommand();
final List<ConfigItem> config = ConfigHelper.generateCommandCfg(command);
assertTrue(config.size() > 0);
final ConfigItem fileConfig = config.get(0);
assertNotNull(fileConfig);
assertTrue(fileConfig instanceof FileConfigItem);
final String fileContents = ((FileConfigItem)fileConfig).getFileContents();
assertNotNull(fileContents);
final IpAliases jsonClass = gson.fromJson(fileContents, IpAliases.class);
assertNotNull(jsonClass);
assertEquals(jsonClass.getType(), "ipaliases");
final List<IpAddressAlias> aliases = jsonClass.getAliases();
assertNotNull(aliases);
assertTrue(aliases.size() == 6);
assertEquals(aliases.get(0).getIpAddress(), "169.254.3.10");
final ConfigItem scriptConfig = config.get(1);
assertNotNull(scriptConfig);
assertTrue(scriptConfig instanceof ScriptConfigItem);
}
protected LoadBalancerConfigCommand generateLoadBalancerConfigCommand() {
final List<LoadBalancerTO> lbs = new ArrayList<>();
final List<LbDestination> dests = new ArrayList<>();
@ -137,4 +236,39 @@ public class ConfigHelperTest {
return cmd;
}
protected DnsMasqConfigCommand generateDnsMasqConfigCommand() {
final List<DhcpTO> dhcps = new ArrayList<>();
dhcps.add(new DhcpTO("10.1.20.2", "10.1.20.1", "255.255.255.0", "10.1.20.5"));
dhcps.add(new DhcpTO("10.1.21.2", "10.1.21.1", "255.255.255.0", "10.1.21.5"));
final DnsMasqConfigCommand cmd = new DnsMasqConfigCommand(dhcps);
cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, ROUTERNAME);
return cmd;
}
protected DeleteIpAliasCommand generateDeleteIpAliasCommand() {
final List<IpAliasTO> aliases = new ArrayList<>();
aliases.add(new IpAliasTO("169.254.3.10", "255.255.255.0", "1"));
aliases.add(new IpAliasTO("169.254.3.11", "255.255.255.0", "2"));
aliases.add(new IpAliasTO("169.254.3.12", "255.255.255.0", "3"));
final DeleteIpAliasCommand cmd = new DeleteIpAliasCommand("169.254.10.1", aliases, aliases);
cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, ROUTERNAME);
return cmd;
}
protected IpAssocVpcCommand generateIpAssocVpcCommand() {
final List<IpAddressTO> ips = new ArrayList<IpAddressTO>();
ips.add(new IpAddressTO(1, "64.1.1.10", true, true, true, "vlan://64", "64.1.1.1", "255.255.255.0", "01:23:45:67:89:AB", 1000, false));
ips.add(new IpAddressTO(2, "64.1.1.11", false, false, true, "vlan://64", "64.1.1.1", "255.255.255.0", "01:23:45:67:89:AB", 1000, false));
ips.add(new IpAddressTO(3, "65.1.1.11", true, false, false, "vlan://65", "65.1.1.1", "255.255.255.0", "11:23:45:67:89:AB", 1000, false));
final IpAddressTO[] ipArray = ips.toArray(new IpAddressTO[ips.size()]);
final IpAssocVpcCommand cmd = new IpAssocVpcCommand(ipArray);
cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, ROUTERNAME);
assertEquals(6, cmd.getAnswersCount()); // AnswersCount is clearly wrong as it doesn't know enough to tell
return cmd;
}
}