/* * TeleStax, Open Source Cloud Communications Copyright 2012. * 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.map.load; import org.apache.log4j.Logger; import org.mobicents.protocols.api.IpChannelType; import org.mobicents.protocols.sctp.netty.NettySctpManagementImpl; import org.mobicents.protocols.ss7.indicator.NatureOfAddress; import org.mobicents.protocols.ss7.indicator.RoutingIndicator; import org.mobicents.protocols.ss7.m3ua.Asp; import org.mobicents.protocols.ss7.m3ua.ExchangeType; import org.mobicents.protocols.ss7.m3ua.Functionality; import org.mobicents.protocols.ss7.m3ua.IPSPType; import org.mobicents.protocols.ss7.m3ua.impl.M3UAManagementImpl; import org.mobicents.protocols.ss7.m3ua.parameter.NetworkAppearance; import org.mobicents.protocols.ss7.m3ua.parameter.RoutingContext; import org.mobicents.protocols.ss7.m3ua.parameter.TrafficModeType; import org.mobicents.protocols.ss7.map.MAPStackImpl; import org.mobicents.protocols.ss7.map.api.MAPApplicationContext; import org.mobicents.protocols.ss7.map.api.MAPApplicationContextName; import org.mobicents.protocols.ss7.map.api.MAPApplicationContextVersion; import org.mobicents.protocols.ss7.map.api.MAPDialog; import org.mobicents.protocols.ss7.map.api.MAPException; import org.mobicents.protocols.ss7.map.api.MAPMessage; import org.mobicents.protocols.ss7.map.api.MAPProvider; import org.mobicents.protocols.ss7.map.api.datacoding.CBSDataCodingScheme; import org.mobicents.protocols.ss7.map.api.dialog.MAPAbortProviderReason; import org.mobicents.protocols.ss7.map.api.dialog.MAPAbortSource; import org.mobicents.protocols.ss7.map.api.dialog.MAPNoticeProblemDiagnostic; import org.mobicents.protocols.ss7.map.api.dialog.MAPRefuseReason; import org.mobicents.protocols.ss7.map.api.dialog.MAPUserAbortChoice; import org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessage; import org.mobicents.protocols.ss7.map.api.primitives.AddressNature; import org.mobicents.protocols.ss7.map.api.primitives.AddressString; import org.mobicents.protocols.ss7.map.api.primitives.ISDNAddressString; import org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer; import org.mobicents.protocols.ss7.map.api.primitives.NumberingPlan; import org.mobicents.protocols.ss7.map.api.primitives.USSDString; import org.mobicents.protocols.ss7.map.api.service.supplementary.ActivateSSRequest; import org.mobicents.protocols.ss7.map.api.service.supplementary.ActivateSSResponse; import org.mobicents.protocols.ss7.map.api.service.supplementary.DeactivateSSRequest; import org.mobicents.protocols.ss7.map.api.service.supplementary.DeactivateSSResponse; import org.mobicents.protocols.ss7.map.api.service.supplementary.EraseSSRequest; import org.mobicents.protocols.ss7.map.api.service.supplementary.EraseSSResponse; import org.mobicents.protocols.ss7.map.api.service.supplementary.GetPasswordRequest; import org.mobicents.protocols.ss7.map.api.service.supplementary.GetPasswordResponse; import org.mobicents.protocols.ss7.map.api.service.supplementary.InterrogateSSRequest; import org.mobicents.protocols.ss7.map.api.service.supplementary.InterrogateSSResponse; import org.mobicents.protocols.ss7.map.api.service.supplementary.MAPDialogSupplementary; import org.mobicents.protocols.ss7.map.api.service.supplementary.ProcessUnstructuredSSRequest; import org.mobicents.protocols.ss7.map.api.service.supplementary.ProcessUnstructuredSSResponse; import org.mobicents.protocols.ss7.map.api.service.supplementary.RegisterPasswordRequest; import org.mobicents.protocols.ss7.map.api.service.supplementary.RegisterPasswordResponse; import org.mobicents.protocols.ss7.map.api.service.supplementary.RegisterSSRequest; import org.mobicents.protocols.ss7.map.api.service.supplementary.RegisterSSResponse; import org.mobicents.protocols.ss7.map.api.service.supplementary.UnstructuredSSNotifyRequest; import org.mobicents.protocols.ss7.map.api.service.supplementary.UnstructuredSSNotifyResponse; import org.mobicents.protocols.ss7.map.api.service.supplementary.UnstructuredSSRequest; import org.mobicents.protocols.ss7.map.api.service.supplementary.UnstructuredSSResponse; import org.mobicents.protocols.ss7.map.datacoding.CBSDataCodingSchemeImpl; import org.mobicents.protocols.ss7.sccp.LoadSharingAlgorithm; import org.mobicents.protocols.ss7.sccp.NetworkIdState; import org.mobicents.protocols.ss7.sccp.OriginationType; import org.mobicents.protocols.ss7.sccp.RuleType; import org.mobicents.protocols.ss7.sccp.SccpResource; import org.mobicents.protocols.ss7.sccp.impl.SccpStackImpl; import org.mobicents.protocols.ss7.sccp.impl.parameter.BCDEvenEncodingScheme; import org.mobicents.protocols.ss7.sccp.impl.parameter.ParameterFactoryImpl; import org.mobicents.protocols.ss7.sccp.impl.parameter.SccpAddressImpl; import org.mobicents.protocols.ss7.sccp.parameter.EncodingScheme; import org.mobicents.protocols.ss7.sccp.parameter.GlobalTitle; import org.mobicents.protocols.ss7.sccp.parameter.SccpAddress; import org.mobicents.protocols.ss7.tcap.TCAPStackImpl; import org.mobicents.protocols.ss7.tcap.api.TCAPStack; import org.mobicents.protocols.ss7.tcap.asn.ApplicationContextName; import org.mobicents.protocols.ss7.tcap.asn.comp.Problem; import com.google.common.util.concurrent.RateLimiter; /** * @author amit bhayani * */ public class Client extends TestHarness { private static Logger logger = Logger.getLogger(Client.class); // TCAP private TCAPStack tcapStack; // MAP private MAPStackImpl mapStack; private MAPProvider mapProvider; // SCCP private SccpStackImpl sccpStack; private SccpResource sccpResource; // M3UA private M3UAManagementImpl clientM3UAMgmt; // SCTP private NettySctpManagementImpl sctpManagement; // a ramp-up period is required for performance testing. int endCount = -100; //AtomicInteger nbConcurrentDialogs = new AtomicInteger(0); volatile long start = 0L; volatile long prev = 0L; private RateLimiter rateLimiterObj = null; protected void initializeStack(IpChannelType ipChannelType) throws Exception { this.rateLimiterObj = RateLimiter.create(MAXCONCURRENTDIALOGS); // rate this.initSCTP(ipChannelType); // Initialize M3UA first this.initM3UA(); // Initialize SCCP this.initSCCP(); // Initialize TCAP this.initTCAP(); // Initialize MAP this.initMAP(); // FInally start ASP // Set 5: Finally start ASP this.clientM3UAMgmt.startAsp("ASP1"); } private void initSCTP(IpChannelType ipChannelType) throws Exception { this.sctpManagement = new NettySctpManagementImpl("Client"); // this.sctpManagement.setSingleThread(false); this.sctpManagement.start(); this.sctpManagement.setConnectDelay(10000); this.sctpManagement.removeAllResourses(); // 1. Create SCTP Association sctpManagement.addAssociation(CLIENT_IP, CLIENT_PORT, SERVER_IP, SERVER_PORT, CLIENT_ASSOCIATION_NAME, ipChannelType, null); } private void initM3UA() throws Exception { this.clientM3UAMgmt = new M3UAManagementImpl("Client", null); this.clientM3UAMgmt.setTransportManagement(this.sctpManagement); this.clientM3UAMgmt.setDeliveryMessageThreadCount(DELIVERY_TRANSFER_MESSAGE_THREAD_COUNT); this.clientM3UAMgmt.start(); this.clientM3UAMgmt.removeAllResourses(); // m3ua as create rc <rc> <ras-name> RoutingContext rc = factory.createRoutingContext(new long[] { 101L }); TrafficModeType trafficModeType = factory.createTrafficModeType(TrafficModeType.Loadshare); NetworkAppearance na = factory.createNetworkAppearance(102L); this.clientM3UAMgmt.createAs("AS1", Functionality.IPSP, ExchangeType.SE, IPSPType.CLIENT, rc, trafficModeType, 1, na); // Step 2 : Create ASP this.clientM3UAMgmt.createAspFactory("ASP1", CLIENT_ASSOCIATION_NAME); // Step3 : Assign ASP to AS Asp asp = this.clientM3UAMgmt.assignAspToAs("AS1", "ASP1"); // Step 4: Add Route. Remote point code is 2 clientM3UAMgmt.addRoute(SERVET_SPC, -1, -1, "AS1"); } private void initSCCP() throws Exception { this.sccpStack = new SccpStackImpl("MapLoadClientSccpStack"); this.sccpStack.setMtp3UserPart(1, this.clientM3UAMgmt); // this.sccpStack.setCongControl_Algo(SccpCongestionControlAlgo.levelDepended); this.sccpStack.start(); this.sccpStack.removeAllResourses(); this.sccpStack.getSccpResource().addRemoteSpc(0, SERVET_SPC, 0, 0); this.sccpStack.getSccpResource().addRemoteSsn(0, SERVET_SPC, SSN, 0, false); this.sccpStack.getRouter().addMtp3ServiceAccessPoint(1, 1, CLIENT_SPC, NETWORK_INDICATOR, 0); this.sccpStack.getRouter().addMtp3Destination(1, 1, SERVET_SPC, SERVET_SPC, 0, 255, 255); ParameterFactoryImpl fact = new ParameterFactoryImpl(); EncodingScheme ec = new BCDEvenEncodingScheme(); GlobalTitle gt1 = fact.createGlobalTitle("-", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, ec, NatureOfAddress.INTERNATIONAL); GlobalTitle gt2 = fact.createGlobalTitle("-", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, ec, NatureOfAddress.INTERNATIONAL); SccpAddress localAddress = new SccpAddressImpl(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt1, CLIENT_SPC, 0); this.sccpStack.getRouter().addRoutingAddress(1, localAddress); SccpAddress remoteAddress = new SccpAddressImpl(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt2, SERVET_SPC, 0); this.sccpStack.getRouter().addRoutingAddress(2, remoteAddress); GlobalTitle gt = fact.createGlobalTitle("*", 0, org.mobicents.protocols.ss7.indicator.NumberingPlan.ISDN_TELEPHONY, ec, NatureOfAddress.INTERNATIONAL); SccpAddress pattern = new SccpAddressImpl(RoutingIndicator.ROUTING_BASED_ON_GLOBAL_TITLE, gt, 0, 0); this.sccpStack.getRouter().addRule(1, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.REMOTE, pattern, "K", 1, -1, null, 0, null); this.sccpStack.getRouter().addRule(2, RuleType.SOLITARY, LoadSharingAlgorithm.Bit0, OriginationType.LOCAL, pattern, "K", 2, -1, null, 0, null); } private void initTCAP() throws Exception { this.tcapStack = new TCAPStackImpl("Test", this.sccpStack.getSccpProvider(), SSN); this.tcapStack.start(); this.tcapStack.setDialogIdleTimeout(60000); this.tcapStack.setInvokeTimeout(30000); this.tcapStack.setMaxDialogs(MAX_DIALOGS); } private void initMAP() throws Exception { // this.mapStack = new MAPStackImpl(this.sccpStack.getSccpProvider(), SSN); this.mapStack = new MAPStackImpl("TestClient", this.tcapStack.getProvider()); this.mapProvider = this.mapStack.getMAPProvider(); this.mapProvider.addMAPDialogListener(this); this.mapProvider.getMAPServiceSupplementary().addMAPServiceListener(this); this.mapProvider.getMAPServiceSupplementary().acivate(); this.mapStack.start(); } private void initiateUSSD() throws MAPException { NetworkIdState networkIdState = this.mapStack.getMAPProvider().getNetworkIdState(0); int executorCongestionLevel = this.mapStack.getMAPProvider().getExecutorCongestionLevel(); if (!(networkIdState == null || networkIdState.isAvailavle() && networkIdState.getCongLevel() <= 0 && executorCongestionLevel <= 0)) { // congestion or unavailable logger.warn("**** Outgoing congestion control: MAP load test client: networkIdState=" + networkIdState + ", executorCongestionLevel=" + executorCongestionLevel); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } this.rateLimiterObj.acquire(); // System.out.println("initiateUSSD"); // First create Dialog AddressString origRef = this.mapProvider.getMAPParameterFactory().createAddressString(AddressNature.international_number, NumberingPlan.ISDN, "12345"); AddressString destRef = this.mapProvider.getMAPParameterFactory().createAddressString(AddressNature.international_number, NumberingPlan.ISDN, "67890"); MAPDialogSupplementary mapDialog = this.mapProvider.getMAPServiceSupplementary().createNewDialog( MAPApplicationContext.getInstance(MAPApplicationContextName.networkUnstructuredSsContext, MAPApplicationContextVersion.version2), SCCP_CLIENT_ADDRESS, origRef, SCCP_SERVER_ADDRESS, destRef); CBSDataCodingScheme ussdDataCodingScheme = new CBSDataCodingSchemeImpl(0x0f); // USSD String: *125*+31628839999# // The Charset is null, here we let system use default Charset (UTF-7 as // explained in GSM 03.38. However if MAP User wants, it can set its own // impl of Charset USSDString ussdString = this.mapProvider.getMAPParameterFactory().createUSSDString("*125*+31628839999#", null, null); ISDNAddressString msisdn = this.mapProvider.getMAPParameterFactory().createISDNAddressString( AddressNature.international_number, NumberingPlan.ISDN, "31628838002"); mapDialog.addProcessUnstructuredSSRequest(ussdDataCodingScheme, ussdString, null, msisdn); //nbConcurrentDialogs.incrementAndGet(); // This will initiate the TC-BEGIN with INVOKE component mapDialog.send(); } public static void main(String[] args) { int noOfCalls = Integer.parseInt(args[0]); int noOfConcurrentCalls = Integer.parseInt(args[1]); IpChannelType ipChannelType = IpChannelType.SCTP; if (args.length >= 3 && args[2].toLowerCase().equals("tcp")) { ipChannelType = IpChannelType.TCP; } else { ipChannelType = IpChannelType.SCTP; } System.out.println("IpChannelType="+ipChannelType); if (args.length >= 4) { TestHarness.CLIENT_IP = args[3]; } System.out.println("CLIENT_IP="+TestHarness.CLIENT_IP); if (args.length >= 5) { TestHarness.CLIENT_PORT = Integer.parseInt(args[4]); } System.out.println("CLIENT_PORT="+TestHarness.CLIENT_PORT); if (args.length >= 6) { TestHarness.SERVER_IP = args[5]; } System.out.println("SERVER_IP="+TestHarness.SERVER_IP); if (args.length >= 7) { TestHarness.SERVER_PORT = Integer.parseInt(args[6]); } System.out.println("SERVER_PORT="+TestHarness.SERVER_PORT); if (args.length >= 8) { TestHarness.CLIENT_SPC = Integer.parseInt(args[7]); } System.out.println("CLIENT_SPC="+TestHarness.CLIENT_SPC); if (args.length >= 9) { TestHarness.SERVET_SPC = Integer.parseInt(args[8]); } System.out.println("SERVET_SPC="+TestHarness.SERVET_SPC); if (args.length >= 10) { TestHarness.NETWORK_INDICATOR = Integer.parseInt(args[9]); } System.out.println("NETWORK_INDICATOR="+TestHarness.NETWORK_INDICATOR); if (args.length >= 11) { TestHarness.SERVICE_INIDCATOR = Integer.parseInt(args[10]); } System.out.println("SERVICE_INIDCATOR="+TestHarness.SERVICE_INIDCATOR); if (args.length >= 12) { TestHarness.SSN = Integer.parseInt(args[11]); } System.out.println("SSN="+TestHarness.SSN); if (args.length >= 13) { TestHarness.ROUTING_CONTEXT = Integer.parseInt(args[12]); } System.out.println("ROUTING_CONTEXT="+TestHarness.ROUTING_CONTEXT); if(args.length >= 14){ TestHarness.DELIVERY_TRANSFER_MESSAGE_THREAD_COUNT = Integer.parseInt(args[13]); } System.out.println("DELIVERY_TRANSFER_MESSAGE_THREAD_COUNT="+TestHarness.DELIVERY_TRANSFER_MESSAGE_THREAD_COUNT); // logger.info("Number of calls to be completed = " + noOfCalls + // " Number of concurrent calls to be maintained = " + // noOfConcurrentCalls); NDIALOGS = noOfCalls; System.out.println("NDIALOGS="+NDIALOGS); MAXCONCURRENTDIALOGS = noOfConcurrentCalls; System.out.println("MAXCONCURRENTDIALOGS="+MAXCONCURRENTDIALOGS); final Client client = new Client(); try { client.initializeStack(ipChannelType); Thread.sleep(20000); while (client.endCount < NDIALOGS) { //while (client.nbConcurrentDialogs.intValue() >= MAXCONCURRENTDIALOGS) { // logger.warn("Number of concurrent MAP dialog's = " + // client.nbConcurrentDialogs.intValue() // + " Waiting for max dialog count to go down!"); //synchronized (client) { // try { // client.wait(); //} catch (Exception ex) { //} //} //}// end of while (client.nbConcurrentDialogs.intValue() >= // MAXCONCURRENTDIALOGS) if (client.endCount < 0) { client.start = System.currentTimeMillis(); client.prev = client.start; //logger.warn("StartTime = " + client.start); } client.initiateUSSD(); } } catch (Exception e) { e.printStackTrace(); } } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPServiceListener#onErrorComponent * (org.mobicents.protocols.ss7.map.api.MAPDialog, java.lang.Long, * org.mobicents.protocols.ss7.map.api.errors.MAPErrorMessage) */ @Override public void onErrorComponent(MAPDialog mapDialog, Long invokeId, MAPErrorMessage mapErrorMessage) { logger.error(String.format("onErrorComponent for Dialog=%d and invokeId=%d MAPErrorMessage=%s", mapDialog.getLocalDialogId(), invokeId, mapErrorMessage)); } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPServiceListener#onRejectComponent * (org.mobicents.protocols.ss7.map.api.MAPDialog, java.lang.Long, org.mobicents.protocols.ss7.tcap.asn.comp.Problem) */ @Override public void onRejectComponent(MAPDialog mapDialog, Long invokeId, Problem problem, boolean isLocalOriginated) { logger.error(String.format("onRejectComponent for Dialog=%d and invokeId=%d Problem=%s isLocalOriginated=%s", mapDialog.getLocalDialogId(), invokeId, problem, isLocalOriginated)); } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPServiceListener#onInvokeTimeout * (org.mobicents.protocols.ss7.map.api.MAPDialog, java.lang.Long) */ @Override public void onInvokeTimeout(MAPDialog mapDialog, Long invokeId) { logger.error(String.format("onInvokeTimeout for Dialog=%d and invokeId=%d", mapDialog.getLocalDialogId(), invokeId)); } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.service.supplementary. MAPServiceSupplementaryListener * #onProcessUnstructuredSSRequestIndication(org .mobicents.protocols.ss7.map. * api.service.supplementary.ProcessUnstructuredSSRequestIndication) */ @Override public void onProcessUnstructuredSSRequest(ProcessUnstructuredSSRequest procUnstrReqInd) { // This error condition. Client should never receive the // ProcessUnstructuredSSRequestIndication logger.error(String.format("onProcessUnstructuredSSRequestIndication for Dialog=%d and invokeId=%d", procUnstrReqInd .getMAPDialog().getLocalDialogId(), procUnstrReqInd.getInvokeId())); } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.service.supplementary. MAPServiceSupplementaryListener * #onProcessUnstructuredSSResponseIndication( org.mobicents.protocols.ss7.map * .api.service.supplementary.ProcessUnstructuredSSResponseIndication) */ @Override public void onProcessUnstructuredSSResponse(ProcessUnstructuredSSResponse procUnstrResInd) { if (logger.isDebugEnabled()) { logger.debug(String.format("Rx ProcessUnstructuredSSResponseIndication. USSD String=%s", procUnstrResInd.getUSSDString())); } } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.service.supplementary. MAPServiceSupplementaryListener * #onUnstructuredSSRequestIndication(org.mobicents .protocols.ss7.map.api.service * .supplementary.UnstructuredSSRequestIndication) */ @Override public void onUnstructuredSSRequest(UnstructuredSSRequest unstrReqInd) { if (logger.isDebugEnabled()) { logger.debug(String.format("Rx UnstructuredSSRequestIndication. USSD String=%s ", unstrReqInd.getUSSDString())); } MAPDialogSupplementary mapDialog = unstrReqInd.getMAPDialog(); try { CBSDataCodingScheme ussdDataCodingScheme = new CBSDataCodingSchemeImpl(0x0f); USSDString ussdString = this.mapProvider.getMAPParameterFactory().createUSSDString("1", null, null); AddressString msisdn = this.mapProvider.getMAPParameterFactory().createAddressString( AddressNature.international_number, NumberingPlan.ISDN, "31628838002"); mapDialog.addUnstructuredSSResponse(unstrReqInd.getInvokeId(), ussdDataCodingScheme, ussdString); mapDialog.send(); } catch (MAPException e) { logger.error(String.format("Error while sending UnstructuredSSResponse for Dialog=%d", mapDialog.getLocalDialogId())); } } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.service.supplementary. MAPServiceSupplementaryListener * #onUnstructuredSSResponseIndication(org.mobicents .protocols.ss7.map.api.service * .supplementary.UnstructuredSSResponseIndication) */ @Override public void onUnstructuredSSResponse(UnstructuredSSResponse unstrResInd) { // This error condition. Client should never receive the // UnstructuredSSResponseIndication logger.error(String.format("onUnstructuredSSResponseIndication for Dialog=%d and invokeId=%d", unstrResInd .getMAPDialog().getLocalDialogId(), unstrResInd.getInvokeId())); } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.service.supplementary. MAPServiceSupplementaryListener * #onUnstructuredSSNotifyRequestIndication(org .mobicents.protocols.ss7.map.api * .service.supplementary.UnstructuredSSNotifyRequestIndication) */ @Override public void onUnstructuredSSNotifyRequest(UnstructuredSSNotifyRequest unstrNotifyInd) { // This error condition. Client should never receive the // UnstructuredSSNotifyRequestIndication logger.error(String.format("onUnstructuredSSNotifyRequestIndication for Dialog=%d and invokeId=%d", unstrNotifyInd .getMAPDialog().getLocalDialogId(), unstrNotifyInd.getInvokeId())); } public void onUnstructuredSSNotifyResponseIndication(UnstructuredSSNotifyResponse unstrNotifyInd) { // This error condition. Client should never receive the // UnstructuredSSNotifyRequestIndication logger.error(String.format("onUnstructuredSSNotifyResponseIndication for Dialog=%d and invokeId=%d", unstrNotifyInd .getMAPDialog().getLocalDialogId(), unstrNotifyInd.getInvokeId())); } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogDelimiter * (org.mobicents.protocols.ss7.map.api.MAPDialog) */ @Override public void onDialogDelimiter(MAPDialog mapDialog) { if (logger.isDebugEnabled()) { logger.debug(String.format("onDialogDelimiter for DialogId=%d", mapDialog.getLocalDialogId())); } } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogRequest * (org.mobicents.protocols.ss7.map.api.MAPDialog, org.mobicents.protocols.ss7.map.api.primitives.AddressString, * org.mobicents.protocols.ss7.map.api.primitives.AddressString, * org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer) */ @Override public void onDialogRequest(MAPDialog mapDialog, AddressString destReference, AddressString origReference, MAPExtensionContainer extensionContainer) { if (logger.isDebugEnabled()) { logger.debug(String.format( "onDialogRequest for DialogId=%d DestinationReference=%s OriginReference=%s MAPExtensionContainer=%s", mapDialog.getLocalDialogId(), destReference, origReference, extensionContainer)); } } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogRequestEricsson * (org.mobicents.protocols.ss7.map.api.MAPDialog, org.mobicents.protocols.ss7.map.api.primitives.AddressString, * org.mobicents.protocols.ss7.map.api.primitives.AddressString, org.mobicents.protocols.ss7.map.api.primitives.IMSI, * org.mobicents.protocols.ss7.map.api.primitives.AddressString) */ @Override public void onDialogRequestEricsson(MAPDialog mapDialog, AddressString destReference, AddressString origReference, AddressString arg3, AddressString arg4) { if (logger.isDebugEnabled()) { logger.debug(String.format("onDialogRequest for DialogId=%d DestinationReference=%s OriginReference=%s ", mapDialog.getLocalDialogId(), destReference, origReference)); } } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogAccept( org.mobicents.protocols.ss7.map.api.MAPDialog, * org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer) */ @Override public void onDialogAccept(MAPDialog mapDialog, MAPExtensionContainer extensionContainer) { if (logger.isDebugEnabled()) { logger.debug(String.format("onDialogAccept for DialogId=%d MAPExtensionContainer=%s", mapDialog.getLocalDialogId(), extensionContainer)); } } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogReject( org.mobicents.protocols.ss7.map.api.MAPDialog, * org.mobicents.protocols.ss7.map.api.dialog.MAPRefuseReason, org.mobicents.protocols.ss7.map.api.dialog.MAPProviderError, * org.mobicents.protocols.ss7.tcap.asn.ApplicationContextName, * org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer) */ @Override public void onDialogReject(MAPDialog mapDialog, MAPRefuseReason refuseReason, ApplicationContextName alternativeApplicationContext, MAPExtensionContainer extensionContainer) { logger.error(String.format( "onDialogReject for DialogId=%d MAPRefuseReason=%s ApplicationContextName=%s MAPExtensionContainer=%s", mapDialog.getLocalDialogId(), refuseReason, alternativeApplicationContext, extensionContainer)); } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogUserAbort * (org.mobicents.protocols.ss7.map.api.MAPDialog, org.mobicents.protocols.ss7.map.api.dialog.MAPUserAbortChoice, * org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer) */ @Override public void onDialogUserAbort(MAPDialog mapDialog, MAPUserAbortChoice userReason, MAPExtensionContainer extensionContainer) { logger.error(String.format("onDialogUserAbort for DialogId=%d MAPUserAbortChoice=%s MAPExtensionContainer=%s", mapDialog.getLocalDialogId(), userReason, extensionContainer)); } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogProviderAbort * (org.mobicents.protocols.ss7.map.api.MAPDialog, org.mobicents.protocols.ss7.map.api.dialog.MAPAbortProviderReason, * org.mobicents.protocols.ss7.map.api.dialog.MAPAbortSource, * org.mobicents.protocols.ss7.map.api.primitives.MAPExtensionContainer) */ @Override public void onDialogProviderAbort(MAPDialog mapDialog, MAPAbortProviderReason abortProviderReason, MAPAbortSource abortSource, MAPExtensionContainer extensionContainer) { logger.error(String.format( "onDialogProviderAbort for DialogId=%d MAPAbortProviderReason=%s MAPAbortSource=%s MAPExtensionContainer=%s", mapDialog.getLocalDialogId(), abortProviderReason, abortSource, extensionContainer)); } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogClose(org .mobicents.protocols.ss7.map.api.MAPDialog) */ @Override public void onDialogClose(MAPDialog mapDialog) { if (logger.isDebugEnabled()) { logger.debug(String.format("DialogClose for Dialog=%d", mapDialog.getLocalDialogId())); } } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogNotice( org.mobicents.protocols.ss7.map.api.MAPDialog, * org.mobicents.protocols.ss7.map.api.dialog.MAPNoticeProblemDiagnostic) */ @Override public void onDialogNotice(MAPDialog mapDialog, MAPNoticeProblemDiagnostic noticeProblemDiagnostic) { logger.error(String.format("onDialogNotice for DialogId=%d MAPNoticeProblemDiagnostic=%s ", mapDialog.getLocalDialogId(), noticeProblemDiagnostic)); } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogResease * (org.mobicents.protocols.ss7.map.api.MAPDialog) */ @Override public void onDialogRelease(MAPDialog mapDialog) { if (logger.isDebugEnabled()) { logger.debug(String.format("onDialogResease for DialogId=%d", mapDialog.getLocalDialogId())); } this.endCount++; if (this.endCount < NDIALOGS) { if ((this.endCount % 2000) == 0) { long current = System.currentTimeMillis(); float sec = (float) (current - prev) / 1000f; prev = current; logger.warn("Completed 2000 Dialogs, dlg per a sec: " + (float) (2000 / sec)); } } else { if (this.endCount == NDIALOGS) { long current = System.currentTimeMillis(); logger.warn("Start Time = " + start); logger.warn("Current Time = " + current); float sec = (float) (current - start) / 1000f; logger.warn("Total time in sec = " + sec); logger.warn("Throughput = " + (float) (NDIALOGS / sec)); } } } /* * (non-Javadoc) * * @see org.mobicents.protocols.ss7.map.api.MAPDialogListener#onDialogTimeout * (org.mobicents.protocols.ss7.map.api.MAPDialog) */ @Override public void onDialogTimeout(MAPDialog mapDialog) { logger.error(String.format("onDialogTimeout for DialogId=%d", mapDialog.getLocalDialogId())); } @Override public void onUnstructuredSSNotifyResponse(UnstructuredSSNotifyResponse unstrNotifyInd) { // TODO Auto-generated method stub } @Override public void onMAPMessage(MAPMessage mapMessage) { // TODO Auto-generated method stub } @Override public void onRegisterSSRequest(RegisterSSRequest request) { // TODO Auto-generated method stub } @Override public void onRegisterSSResponse(RegisterSSResponse response) { // TODO Auto-generated method stub } @Override public void onEraseSSRequest(EraseSSRequest request) { // TODO Auto-generated method stub } @Override public void onEraseSSResponse(EraseSSResponse response) { // TODO Auto-generated method stub } @Override public void onActivateSSRequest(ActivateSSRequest request) { // TODO Auto-generated method stub } @Override public void onActivateSSResponse(ActivateSSResponse response) { // TODO Auto-generated method stub } @Override public void onDeactivateSSRequest(DeactivateSSRequest request) { // TODO Auto-generated method stub } @Override public void onDeactivateSSResponse(DeactivateSSResponse response) { // TODO Auto-generated method stub } @Override public void onInterrogateSSRequest(InterrogateSSRequest request) { // TODO Auto-generated method stub } @Override public void onInterrogateSSResponse(InterrogateSSResponse response) { // TODO Auto-generated method stub } @Override public void onGetPasswordRequest(GetPasswordRequest request) { // TODO Auto-generated method stub } @Override public void onGetPasswordResponse(GetPasswordResponse response) { // TODO Auto-generated method stub } @Override public void onRegisterPasswordRequest(RegisterPasswordRequest request) { // TODO Auto-generated method stub } @Override public void onRegisterPasswordResponse(RegisterPasswordResponse response) { // TODO Auto-generated method stub } }