diff options
Diffstat (limited to 'spss.test/src/testclient/LasttestClient.java')
-rw-r--r-- | spss.test/src/testclient/LasttestClient.java | 389 |
1 files changed, 0 insertions, 389 deletions
diff --git a/spss.test/src/testclient/LasttestClient.java b/spss.test/src/testclient/LasttestClient.java deleted file mode 100644 index 339b6609d..000000000 --- a/spss.test/src/testclient/LasttestClient.java +++ /dev/null @@ -1,389 +0,0 @@ -package testclient; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.PrintStream; -import java.io.RandomAccessFile; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.Date; - - -/** - * @author Sven - * - * To change this generated comment edit the template variable "typecomment": - * Window>Preferences>Java>Templates. - * To enable and disable the creation of type comments go to - * Window>Preferences>Java>Code Generation. - */ -public class LasttestClient { - - - public int max_thread_count = 300; - public int thread_counter = 0; - public int error_count = 0; - public int turns = 0; - - public long max = 0; - public long min = Long.MAX_VALUE; - - public PrintStream Log = null; - - public boolean stop = false; - - private String readFile(String filename) throws Exception - { - RandomAccessFile raf = new RandomAccessFile(filename, "r"); - if (raf.length() > Integer.MAX_VALUE) - throw new IOException("file too big to fit in byte array."); - - byte[] result = new byte[(int) raf.length()]; - - raf.read(result); - - return new String(result); - - } - - - - public String buildRequest(String filename) throws Exception - { - String data = readFile(filename); - int index = data.indexOf(">"); - - String xml_head = data.substring(0,index+1); - data = data.substring(index+1); - //Log.println("Data2:\n"+data); - - data = - xml_head + - "<soap:Envelope "+ - "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\" "+ - "soap:encodingStyle=\"http://www.w3.org/2001/12/soap-encoding\"> "+ - "<soap:Body> "+ - data + - "</soap:Body>"+ - "</soap:Envelope>"; - - if(data.indexOf("10.16.46.109")!=-1) - data = replaceString(data,"10.16.46.109","127.0.0.1"); - - System.out.println("Request:"+data); - - return data; - - } - - public String buildEndpoint(String request,String server) - { - String ep = null; - if(request.indexOf("<Create")!=-1) ep = server + "moa-spss/services/SignatureCreation"; - else ep = server + "moa-spss/services/SignatureVerification"; - return ep; - } - - public void startTest(String filename,String server,int req_per_second,int turns) throws Exception - { - this.turns = turns; - String request = buildRequest(filename); - String ep = buildEndpoint(request,server); - - boolean result = doTestRequest(request,ep); - - if(result) - { - System.out.println("TestRequest OK. Lasttest wird gestartet."); - Dispatcher dp = new Dispatcher(this,request,ep,req_per_second,turns); - dp.start(); - while(!stop) - { - System.out.println("Checking Stop Condition ...(Running "+thread_counter+", Min "+(min)+", Max "+(max)+", "+new Date(System.currentTimeMillis())+")"); - Thread.sleep(3000); - } - System.out.println("Fehler:"+error_count+" (Running "+thread_counter+", Min "+(min)+", Max "+(max)+", "+new Date(System.currentTimeMillis())+")"); - } - else - { - System.out.println("TestRequest lieferte einen Fehler. Lasttest wird nicht gestartet."); - } - } - - public boolean doTestRequest(String request,String endpoint) throws Exception - { - HttpURLConnection urlc = (HttpURLConnection)(new URL(endpoint)).openConnection(); - urlc.setDoInput(true); - urlc.setDoOutput(true); - urlc.setRequestProperty("SOAPAction",""); - BufferedWriter ow = new BufferedWriter(new OutputStreamWriter(urlc.getOutputStream())); - ow.write(request); - ow.flush(); - - int code = 0; - try { - code = urlc.getResponseCode(); - } - catch(IOException ioe) - { - ow.close(); - urlc.disconnect(); - return false; - } - BufferedReader iw = new BufferedReader(new InputStreamReader(urlc.getInputStream())); - while(iw.readLine()!=null) {} - ow.close(); - - if(code==500) - { - return false; - } - else - { - BufferedReader br = new BufferedReader(new InputStreamReader(urlc.getInputStream())); - StringBuffer response = new StringBuffer(); - String line = null; - while((line = br.readLine()) != null) - { - response.append(line); - } - - iw.close(); - urlc.disconnect(); - - String resp = response.toString(); - - int pos = resp.indexOf("ErrorCode>"); - if(pos==-1) - { - return true; - } - else - { - return false; - } - } - - } - - private String replaceString( - String input, - String oldPart, - String newPart) - throws Exception { - String erg = null; - - //First Part - erg = input.substring(0, input.indexOf(oldPart)); - //Insert new Part - erg += newPart; - - //insert REST - erg - += input.substring( - input.indexOf(oldPart) + oldPart.length(), - input.length()); - - return erg; - } - - public static void main(String[] args) throws Exception - { - int sek = 0; - int turns = 0; - - if(args.length!=4) - { - System.out.println("Parameteranzahl falsch. Bitte verwenden Sie die Syntax <Requestdatei><ServerURL><Request_pro_Sekunde(Zahl)><Anzahl_der_Durchläufe(Zahl oder INF)>"); - return; - } - - try { - sek = Integer.parseInt(args[2]); - if(args[3].equals("INF")) - { - turns = 0; - } - else - turns = Integer.parseInt(args[3]); - } - catch(NumberFormatException e) - { - System.out.println("Einer der Parameter (Requestanzahl oder Testanzahl) ist keine Zahl !"); - return; - } - - System.out.println("Starte Lastest mit folgenden Parametern ..."); - System.out.println("Requestdatei: "+args[0]); - System.out.println("ServerURL: "+args[1]); - System.out.println("Requests pro Sekunde: "+sek); - System.out.println("Durchläufe: "+(turns==0?"INF":turns+"")); - - - LasttestClient lc = new LasttestClient(); - //lc.startTest("data/CX0/TestGeneratorCX0.001.Req.xml","http://161.106.2.255:8080/",10,1000); - lc.startTest(args[0],args[1],sek,turns); - } -} - -class Dispatcher extends Thread -{ - private String request = null; - private String endpoint = null; - private LasttestClient parent = null; - private int max; - private int turns; - public Dispatcher(LasttestClient parent,String request,String endpoint,int max,int turns) - { - this.request = request; - this.endpoint = endpoint; - this.parent = parent; - this.max = max; - this.turns = turns; - } - - public void run() - { - this.setPriority(Thread.NORM_PRIORITY+1); - System.out.println("Dispatcher wird gestartet..."); - TestThread[] old_reqs = buildRequests(); - for(int turn_counter=0;turns==0?true:(turn_counter<turns);turn_counter++) - { - System.out.println("Durchlauf "+turn_counter); - if(turns==0) turn_counter--; - TestThread[] reqs = buildRequests(); - for(int counter=0;counter<max;counter++) - { - old_reqs[counter].start(); - } - old_reqs = reqs; - try { - Thread.sleep(1000); - } - catch(Exception e) { e.printStackTrace(); } - } - parent.stop = true; - } - - public TestThread[] buildRequests() - { - TestThread[] ret = new TestThread[max]; - for(int counter=0;counter<max;counter++) - { - ret[counter] = new TestThread(parent,request,endpoint); - } - return ret; - } -} - -class TestThread extends Thread -{ - private String request = null; - private String endpoint = null; - private LasttestClient parent = null; - public TestThread(LasttestClient parent,String request,String endpoint) - { - this.request = request; - this.endpoint = endpoint; - this.parent = parent; - - } - - - /** - * @see java.lang.Runnable#run() - */ - public void run() { - parent.thread_counter++; - - try { - if(!doRequest()) - { - parent.error_count++; - } - } - catch(Exception e) - { - e.printStackTrace(); - parent.error_count++; - } - parent.thread_counter--; - } - - public boolean doRequest() throws Exception - { - long start = System.currentTimeMillis(); - HttpURLConnection urlc = (HttpURLConnection)(new URL(endpoint)).openConnection(); - urlc.setDoInput(true); - urlc.setDoOutput(true); - urlc.setAllowUserInteraction(false); - urlc.setUseCaches(false); - HttpURLConnection.setFollowRedirects(false); - urlc.setRequestProperty("SOAPAction",""); - - - BufferedWriter ow = new BufferedWriter(new OutputStreamWriter(urlc.getOutputStream())); - ow.write(request); - ow.flush(); - - int code = 0; - /*try { - code = urlc.getResponseCode(); - } - catch(IOException ioe) - { - ow.close(); - urlc.disconnect(); - return false; - }*/ - ow.close(); - BufferedReader iw = new BufferedReader(new InputStreamReader(urlc.getInputStream())); - while(iw.readLine()!=null) {} - - if(code==500) - { - return false; - } - else - { - BufferedReader br = new BufferedReader(new InputStreamReader(urlc.getInputStream())); - StringBuffer response = new StringBuffer(); - String line = null; - while((line = br.readLine()) != null) - { - response.append(line); - } - - iw.close(); - urlc.disconnect(); - long end = System.currentTimeMillis(); - - String resp = response.toString(); - - int pos = resp.indexOf("ErrorCode>"); - if(pos==-1) - { - long diff = end-start; - if(parent.max<diff) - { - parent.max=diff; - } - if(parent.min>diff) - { - parent.min=diff; - } - return true; - - } - else - { - return false; - } - } - - } - -}
\ No newline at end of file |