package org.opennaas.extensions.genericnetwork.test.actionsets.internal.cicruitaggregation.actions;
/*
* #%L
* OpenNaaS :: Generic Network
* %%
* Copyright (C) 2007 - 2014 FundaciĆ³ Privada i2CAT, Internet i InnovaciĆ³ a Catalunya
* %%
* 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
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
* #L%
*/
import java.util.HashSet;
import java.util.Set;
import org.apache.commons.lang.SerializationUtils;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.opennaas.core.resources.action.ActionException;
import org.opennaas.core.resources.action.ActionResponse;
import org.opennaas.core.resources.action.ActionResponse.STATUS;
import org.opennaas.core.resources.action.IAction;
import org.opennaas.extensions.genericnetwork.actionsets.internal.circuitaggregation.actions.CalculateAggregatedCircuitsAction;
import org.opennaas.extensions.genericnetwork.model.circuit.Circuit;
import org.opennaas.extensions.genericnetwork.model.helpers.GenericNetworkModelUtils;
/**
*
* @author Isart Canyameres Gimenez (i2cat)
*
*/
public class CalculateAggregatedCircuitsActionTest {
public static final String SRC_BASE_IP24_1 = "192.168.1.";
public static final String DST_BASE_IP24_1 = "192.168.2.";
public static final String SRC_BASE_IP24_2 = "192.168.3.";
public static final String DST_BASE_IP24_2 = "192.168.4.";
public static final String TOS_1 = "4";
public static final String TOS_2 = "8";
IAction action;
Set<Circuit> notAggregated;
@Before
public void init() throws Exception {
action = new CalculateAggregatedCircuitsAction();
notAggregated = generateSampleCircuits();
}
@Test
public void aggregationTest() throws ActionException {
action.checkParams(notAggregated);
action.setParams(notAggregated);
ActionResponse response = action.execute(null);
Assert.assertNotNull(response);
Assert.assertEquals(STATUS.OK, response.getStatus());
Assert.assertNotNull(response.getResult());
Assert.assertTrue(response.getResult() instanceof Set<?>);
for (Object obj : (Set<?>) response.getResult()) {
Assert.assertTrue(obj instanceof Circuit);
}
@SuppressWarnings("unchecked")
Set<Circuit> aggregated = (Set<Circuit>) response.getResult();
Assert.assertEquals(3, aggregated.size());
Circuit aggregatedWithIp1Tos1 = null;
Circuit aggregatedWithIp2Tos1 = null;
Circuit aggregatedWithIp2Tos2 = null;
for (Circuit c : aggregated) {
if (c.getTrafficFilter().getSrcIp().equals(SRC_BASE_IP24_1 + "0/24")
&& c.getTrafficFilter().getDstIp().equals(DST_BASE_IP24_1 + "0/24")
&& c.getTrafficFilter().getTosBits().equals(TOS_1)) {
aggregatedWithIp1Tos1 = c;
} else if (c.getTrafficFilter().getSrcIp().equals(SRC_BASE_IP24_2 + "0/24")
&& c.getTrafficFilter().getDstIp().equals(DST_BASE_IP24_2 + "0/24")
&& c.getTrafficFilter().getTosBits().equals(TOS_1)) {
aggregatedWithIp2Tos1 = c;
} else if (c.getTrafficFilter().getSrcIp().equals(SRC_BASE_IP24_2 + "0/24")
&& c.getTrafficFilter().getDstIp().equals(DST_BASE_IP24_2 + "0/24")
&& c.getTrafficFilter().getTosBits().equals(TOS_2)) {
aggregatedWithIp2Tos2 = c;
}
}
Assert.assertNotNull(aggregatedWithIp1Tos1);
Assert.assertNotNull(aggregatedWithIp2Tos1);
Assert.assertNotNull(aggregatedWithIp2Tos2);
Assert.assertFalse(aggregatedWithIp1Tos1.equals(aggregatedWithIp2Tos1));
Assert.assertFalse(aggregatedWithIp1Tos1.equals(aggregatedWithIp2Tos2));
Assert.assertFalse(aggregatedWithIp2Tos1.equals(aggregatedWithIp2Tos2));
}
private Set<Circuit> generateSampleCircuits() throws Exception {
Set<Circuit> circuits = new HashSet<Circuit>();
Circuit circuit = GenericNetworkModelUtils.generateSampleCircuit();
circuit.setCircuitId("ORIGINAL");
circuit.getTrafficFilter().setSrcIp(SRC_BASE_IP24_1 + String.valueOf(255));
circuit.getTrafficFilter().setDstIp(DST_BASE_IP24_1 + String.valueOf(255));
circuit.getTrafficFilter().setTosBits(TOS_1);
Circuit circuit1;
// aggregation group
for (int i = 0; i < 10; i++) {
circuit1 = (Circuit) SerializationUtils.clone(circuit);
circuit1.setCircuitId(String.valueOf(i));
circuit1.getTrafficFilter().setSrcIp(SRC_BASE_IP24_1 + String.valueOf(i));
circuit1.getTrafficFilter().setDstIp(DST_BASE_IP24_1 + String.valueOf(i + 100));
circuits.add(circuit1);
}
// aggregation group using different ip/24
for (int i = 10; i < 20; i++) {
circuit1 = (Circuit) SerializationUtils.clone(circuit);
circuit1.setCircuitId(String.valueOf(i));
circuit1.getTrafficFilter().setSrcIp(SRC_BASE_IP24_2 + String.valueOf(i));
circuit1.getTrafficFilter().setDstIp(DST_BASE_IP24_2 + String.valueOf(i + 100));
circuits.add(circuit1);
}
// aggregation group using different ToS
for (int i = 10; i < 20; i++) {
circuit1 = (Circuit) SerializationUtils.clone(circuit);
circuit1.setCircuitId(String.valueOf(i + 1000));
circuit.getTrafficFilter().setTosBits(TOS_2);
circuit1.getTrafficFilter().setSrcIp(SRC_BASE_IP24_2 + String.valueOf(i));
circuit1.getTrafficFilter().setDstIp(DST_BASE_IP24_2 + String.valueOf(i + 100));
circuits.add(circuit1);
}
return circuits;
}
}