DiameterPeerTest.java

Go to the documentation of this file.
00001 /*
00002  * $Id: DiameterPeerTest.java 2 2006-11-14 22:37:20Z vingarzan $
00003  *
00004  * Copyright (C) 2004-2006 FhG Fokus
00005  *
00006  * This file is part of Open IMS Core - an open source IMS CSCFs & HSS
00007  * implementation
00008  *
00009  * Open IMS Core is free software; you can redistribute it and/or modify
00010  * it under the terms of the GNU General Public License as published by
00011  * the Free Software Foundation; either version 2 of the License, or
00012  * (at your option) any later version.
00013  *
00014  * For a license to use the Open IMS Core software under conditions
00015  * other than those described here, or to purchase support for this
00016  * software, please contact Fraunhofer FOKUS by e-mail at the following
00017  * addresses:
00018  *     info@open-ims.org
00019  *
00020  * Open IMS Core is distributed in the hope that it will be useful,
00021  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00022  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00023  * GNU General Public License for more details.
00024  *
00025  * You should have received a copy of the GNU General Public License
00026  * along with this program; if not, write to the Free Software
00027  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00028  *
00029  */
00030 
00031 package de.fhg.fokus.diameter.DiameterPeer;
00032 
00033 import org.apache.log4j.Logger;
00034 
00035 import de.fhg.fokus.diameter.DiameterPeer.data.AVP;
00036 import de.fhg.fokus.diameter.DiameterPeer.data.DiameterMessage;
00037 import de.fhg.fokus.diameter.DiameterPeer.transaction.TransactionListener;
00038 
00039 
00040 
00047 public class DiameterPeerTest {
00048     
00050     private static final Logger LOGGER = Logger.getLogger(DiameterPeerTest.class);
00051 
00052     public static DiameterMessage UAR(DiameterPeer dp)
00053     {
00054         AVP a,b;
00055         DiameterMessage uar = dp.newRequest(300,16777216);
00056         /*session-id*/
00057         a = new AVP(263,true,0);
00058         a.setData("test.open-ims.test;11271298949"+System.currentTimeMillis());
00059         uar.addAVP(a);
00060         /*destination-host*/
00061         a = new AVP(293,true,0);
00062         a.setData("hss.open-ims.test");
00063         /*destination-realm*/
00064         a = new AVP(283,true,0);
00065         a.setData("open-ims.test");
00066         /*vendor-specific app id */
00067         a = new AVP(260,true,0);
00068             b = new AVP(266,true,0);
00069             b.setData(10415);
00070             a.addChildAVP(b);
00071             b = new AVP(258,true,0);
00072             b.setData(16777216);
00073             a.addChildAVP(b);
00074         uar.addAVP(a);
00075         /*auth-session-state*/
00076         a = new AVP(277,true,0);
00077         a.setData(1);
00078         uar.addAVP(a);
00079         /*user-name*/
00080         a = new AVP(1,true,0);
00081         a.setData("alice@open-ims.test");       
00082         uar.addAVP(a);
00083         /*public-id*/
00084         a = new AVP(601,true,10415);
00085         a.setData("sip:alice@open-ims.test");
00086         uar.addAVP(a);
00087         /*visited-network-id*/
00088         a = new AVP(600,true,10415);
00089         a.setData("open-ims.test");
00090         uar.addAVP(a);
00091 
00092         return uar;
00093     }
00094     
00095     
00096     
00097     public static void test(String[] args) throws InterruptedException {
00098         
00099         if (args.length != 2) {
00100             LOGGER.error("Provide two XML config files as input");
00101             System.exit(0);
00102         } else {
00103             LOGGER.info("DiameterPeer Starting...");
00104             
00105             // Create a Diameter client.
00106             String filename = args[0];
00107             LOGGER.debug("Opening Config file: "+filename);
00108             DiameterPeer dp1 = new DiameterPeer(filename);
00109             dp1.enableTransactions(10,1);
00110             
00111             // Create a Diameter server.
00112             String filename2 = args[1];
00113             LOGGER.debug("Opening Config file: "+filename2);
00114             DiameterPeer dp2 = new DiameterPeer(filename2);
00115             TestEventListener eventlistener = new TestEventListener();
00116             eventlistener.diameterPeer = dp2;
00117             dp2.addEventListener(eventlistener);
00118             
00119             
00120             Thread.sleep(2000);
00121             DiameterMessage uar = UAR(dp1);
00122             
00123             DiameterMessage uaa = dp1.sendRequestBlocking("cartman",uar);
00124             if (uaa==null) LOGGER.debug("SendBlocking timed-out");
00125             else LOGGER.debug("SendBlocking answer: "+uaa.toString());
00126     
00127             Thread.sleep(600*1000);
00128         
00129             dp1.shutdown();
00130             Thread.sleep(10000);
00131             LOGGER.debug("... DiameterPeer Done");
00132         }
00133     }   
00134     
00135     
00136     
00137     public static void main(String[] args) throws InterruptedException {
00138         test(args);
00139     }
00140 }
00141 
00142 class TestEventListener implements EventListener{
00143 
00144     DiameterPeer diameterPeer;
00145     
00146     public void recvMessage(String FQDN, DiameterMessage msg) {
00147         int i;
00148         DiameterMessage response;
00149         response = diameterPeer.newResponse(msg);
00150         AVP a = new AVP(602,true,0);
00151         a.setData("HelloWorld!");
00152         
00153         for(i=0;i<10;i++){
00154             response.addAVP(a);
00155         }
00156         diameterPeer.sendMessage(FQDN,response);
00157     }
00158 }
00159 
00160 class TestTransactionListener implements TransactionListener{
00161 
00163     private final Logger LOG = Logger.getLogger(DiameterPeerTest.class);
00164     
00165     DiameterPeer diameterPeer;
00166 
00167     public void receiveAnswer(String FQDN, DiameterMessage request, DiameterMessage answer) {
00168         LOG.debug("Transaction received an answer: "+answer.toString());        
00169     }
00170 
00171     public void timeout(DiameterMessage request) {
00172         LOG.debug("Transaction received an timeout");
00173     }
00174 
00175 }

Generated on Thu Oct 23 04:07:36 2008 for Open IMS Core JavaDiameterPeer by  doxygen 1.5.2