/* * TeleStax, Open Source Cloud Communications * Copyright 2012, Telestax Inc and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.mobicents.protocols.ss7.oam.common.tcap; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import java.util.Date; import org.mobicents.protocols.ss7.indicator.RoutingIndicator; import org.mobicents.protocols.ss7.oam.common.alarm.AlarmProvider; import org.mobicents.protocols.ss7.oam.common.jmxss7.Ss7Management; import org.mobicents.protocols.ss7.oam.common.statistics.api.ComplexValue; import org.mobicents.protocols.ss7.oam.common.statistics.api.CounterCampaign; import org.mobicents.protocols.ss7.oam.common.statistics.api.CounterDefSet; import org.mobicents.protocols.ss7.oam.common.statistics.api.CounterMediator; import org.mobicents.protocols.ss7.oam.common.statistics.api.CounterValue; import org.mobicents.protocols.ss7.oam.common.statistics.api.CounterValueSet; import org.mobicents.protocols.ss7.sccp.impl.SccpStackImpl; import org.mobicents.protocols.ss7.sccp.parameter.SccpAddress; import org.mobicents.protocols.ss7.tcap.TCAPCounterProviderImpl; import org.mobicents.protocols.ss7.tcap.TCAPStackImpl; import org.mobicents.protocols.ss7.tcap.api.tc.dialog.Dialog; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** * * @author sergey vetyutnev * */ public class RegistrationTest { private SccpStackImpl sccpStack; private TCAPStackImpl tcapStack1; private Ss7Management ss7Man; private CounterProviderProxy counterProvider; private AlarmProvider alarmProvider; private TcapManagementJmx tcapManagement; @BeforeMethod public void setUp() throws Exception { MBeanHostProxy mBeanHostProxy = new MBeanHostProxy(); counterProvider = new CounterProviderProxy(mBeanHostProxy); counterProvider.setName("Test"); counterProvider.start(); counterProvider.getCounterCampaignMap().clear(); counterProvider.store(); counterProvider.stop(); counterProvider = null; sccpStack = new SccpStackImpl("SccpStack"); sccpStack.start(); tcapStack1 = new TCAPStackImpl("Test", sccpStack.getSccpProvider(), 8); tcapStack1.start(); tcapStack1.setStatisticsEnabled(true); ss7Man = new Ss7Management(); ss7Man.setRmiPort(9998); counterProvider = new CounterProviderProxy(ss7Man); counterProvider.setName("Test"); alarmProvider = new AlarmProvider(ss7Man, ss7Man); tcapManagement = new TcapManagementJmx(ss7Man, tcapStack1); } @AfterMethod public void tearDown() { tcapManagement.stop(); alarmProvider.stop(); counterProvider.stop(); ss7Man.stop(); this.tcapStack1.stop(); this.sccpStack.stop(); } @Test(groups = { "confuguration" }) public void counterProviderStartsLastTest() throws Exception { ss7Man.start(); tcapManagement.start(); alarmProvider.start(); counterProvider.start(); String csName = tcapManagement.getCounterDefSetList()[0]; String cmName = tcapManagement.getCounterMediatorName(); CounterDefSet cds = tcapManagement.getCounterDefSet(csName); assertEquals(counterProvider.getCampaignsList().length, 0); String[] ss1 = counterProvider.getCounterDefSetList(); assertEquals(ss1.length, 1); assertEquals(counterProvider.getCounterDefSet(ss1[0]).getName(), csName); assertEquals(counterProvider.getCounterMediatorLst().size(), 1); CounterMediator cm = counterProvider.getCounterMediatorLst().get(cmName); assertEquals(cm, tcapManagement); counterProvider.createCampaign("camp_01", csName, 10, 1); assertEquals(counterProvider.getCampaignsList().length, 1); CounterCampaign cc = counterProvider.getCampaign("camp_01"); assertEquals(cc.getCounterSetName(), csName); assertNotNull(cc.getCounterSet()); assertEquals(cc.getDuration(), 10); assertEquals(cc.getCounterSet(), cds); assertFalse(cc.isShortCampaign()); counterProvider.stop(); counterProvider.start(); cds = tcapManagement.getCounterDefSet(csName); ss1 = counterProvider.getCounterDefSetList(); assertEquals(ss1.length, 1); assertEquals(counterProvider.getCounterDefSet(ss1[0]).getName(), csName); assertEquals(counterProvider.getCounterMediatorLst().size(), 1); cm = counterProvider.getCounterMediatorLst().get(cmName); assertEquals(cm, tcapManagement); assertEquals(counterProvider.getCampaignsList().length, 1); cc = counterProvider.getCampaign("camp_01"); assertEquals(cc.getCounterSetName(), csName); assertNotNull(cc.getCounterSet()); assertEquals(cc.getDuration(), 10); assertEquals(cc.getCounterSet(), cds); assertFalse(cc.isShortCampaign()); counterProvider.createShortCampaign("camp_02", csName, 20, 1); assertEquals(counterProvider.getCampaignsList().length, 2); cc = counterProvider.getCampaign("camp_02"); assertEquals(cc.getCounterSetName(), csName); assertNotNull(cc.getCounterSet()); assertEquals(cc.getDuration(), 20); assertEquals(cc.getCounterSet(), cds); assertTrue(cc.isShortCampaign()); } @Test(groups = { "confuguration" }) public void counterProviderStartsFirstTest() throws Exception { ss7Man.start(); counterProvider.start(); tcapManagement.start(); alarmProvider.start(); String csName = tcapManagement.getCounterDefSetList()[0]; String cmName = tcapManagement.getCounterMediatorName(); CounterDefSet cds = tcapManagement.getCounterDefSet(csName); assertEquals(counterProvider.getCampaignsList().length, 0); String[] ss1 = counterProvider.getCounterDefSetList(); assertEquals(ss1.length, 1); assertEquals(counterProvider.getCounterDefSet(ss1[0]).getName(), csName); assertEquals(counterProvider.getCounterMediatorLst().size(), 1); CounterMediator cm = counterProvider.getCounterMediatorLst().get(cmName); assertEquals(cm, tcapManagement); counterProvider.createCampaign("camp_01", csName, 10, 1); assertEquals(counterProvider.getCampaignsList().length, 1); CounterCampaign cc = counterProvider.getCampaign("camp_01"); assertEquals(cc.getCounterSetName(), csName); assertNotNull(cc.getCounterSet()); assertEquals(cc.getDuration(), 10); assertEquals(cc.getCounterSet(), cds); assertFalse(cc.isShortCampaign()); tcapManagement.stop(); counterProvider.stop(); ss7Man.stop(); ss7Man.start(); counterProvider.start(); tcapManagement.start(); cds = tcapManagement.getCounterDefSet(csName); ss1 = counterProvider.getCounterDefSetList(); assertEquals(ss1.length, 1); assertEquals(counterProvider.getCounterDefSet(ss1[0]).getName(), csName); assertEquals(counterProvider.getCounterMediatorLst().size(), 1); cm = counterProvider.getCounterMediatorLst().get(cmName); assertEquals(cm, tcapManagement); assertEquals(counterProvider.getCampaignsList().length, 1); cc = counterProvider.getCampaign("camp_01"); assertEquals(cc.getCounterSetName(), csName); assertNotNull(cc.getCounterSet()); assertEquals(cc.getDuration(), 10); assertEquals(cc.getCounterSet(), cds); assertFalse(cc.isShortCampaign()); } @Test(groups = { "confuguration" }) public void processingStatDataTest() throws Exception { ss7Man.start(); counterProvider.start(); tcapManagement.start(); alarmProvider.start(); String csName = tcapManagement.getCounterDefSetList()[0]; String cmName = tcapManagement.getCounterMediatorName(); CounterDefSet cds = tcapManagement.getCounterDefSet(csName); counterProvider.createCampaign("camp_01", csName, 60, 1); Date tm1 = new Date(2010, 1, 1, 10, 0, 0); Date tm2 = new Date(2010, 1, 1, 11, 0, 0); TCAPCounterProviderImpl cp = tcapStack1.getCounterProviderImpl(); SccpAddress localAddress = sccpStack.getSccpProvider().getParameterFactory().createSccpAddress(RoutingIndicator.ROUTING_BASED_ON_DPC_AND_SSN, null, 20, 8); tcapStack1.getProvider().getNewDialog(localAddress, localAddress); Thread.sleep(500); CounterValueSet cvs1 = counterProvider.getLastCounterValues("camp_01"); counterProvider.processCampaign("camp_01", tm1); Dialog d1 = tcapStack1.getProvider().getNewDialog(localAddress, localAddress); Dialog d2 = tcapStack1.getProvider().getNewDialog(localAddress, localAddress); cp.updateTcBeginSentCount(d1); cp.updateAllEstablishedDialogsCount(); cp.updateAllEstablishedDialogsCount(); cp.updateAllDialogsDuration(1000); cp.updateAllDialogsDuration(2000); cp.updateDialogReleaseCount(d1); cp.updateDialogReleaseCount(d2); cp.updateOutgoingDialogsPerApplicatioContextName("20.1"); Thread.sleep(500); CounterValueSet cvs2 = counterProvider.getLastCounterValues("camp_01"); counterProvider.processCampaign("camp_01", tm2); Thread.sleep(500); CounterValueSet cvs3 = counterProvider.getLastCounterValues("camp_01"); assertNull(cvs1); assertNull(cvs2); assertNotNull(cvs3); assertTrue(cvs3.getStartTime().equals(tm1)); assertTrue(cvs3.getEndTime().equals(tm2)); for (CounterValue cv : cvs3.getCounterValues()) { if (cv.getCounterDef().getCounterName().equals("MinDialogsCount")) { assertEquals(cv.getLongValue(), 1); } else if (cv.getCounterDef().getCounterName().equals("MaxDialogsCount")) { assertEquals(cv.getLongValue(), 3); } else if (cv.getCounterDef().getCounterName().equals("AllEstablishedDialogsCount")) { assertEquals(cv.getLongValue(), 4); } else if (cv.getCounterDef().getCounterName().equals("TcBeginSentCount")) { assertEquals(cv.getLongValue(), 1); } else if (cv.getCounterDef().getCounterName().equals("AllDialogsDuration")) { assertTrue(Math.abs(cv.getDoubleValue() - 3.0) < 0.001); } else if (cv.getCounterDef().getCounterName().equals("AverageDialogsDuration")) { assertTrue(Math.abs(cv.getDoubleValue() - 3.0 / 2) < 0.001); } else if (cv.getCounterDef().getCounterName().equals("OutgoingDialogsPerApplicatioContextName")) { assertEquals(cv.getComplexValue().length, 1); ComplexValue cvv = cv.getComplexValue()[0]; assertEquals(cvv.getKey(), "20.1"); assertEquals(cvv.getValue(), 1); } else if (cv.getCounterDef().getCounterName().equals("IncomingDialogsPerApplicatioContextName")) { assertEquals(cv.getComplexValue().length, 0); } } } }