00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
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
00057 a = new AVP(263,true,0);
00058 a.setData("test.open-ims.test;11271298949"+System.currentTimeMillis());
00059 uar.addAVP(a);
00060
00061 a = new AVP(293,true,0);
00062 a.setData("hss.open-ims.test");
00063
00064 a = new AVP(283,true,0);
00065 a.setData("open-ims.test");
00066
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
00076 a = new AVP(277,true,0);
00077 a.setData(1);
00078 uar.addAVP(a);
00079
00080 a = new AVP(1,true,0);
00081 a.setData("alice@open-ims.test");
00082 uar.addAVP(a);
00083
00084 a = new AVP(601,true,10415);
00085 a.setData("sip:alice@open-ims.test");
00086 uar.addAVP(a);
00087
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
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
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 }