aboutsummaryrefslogtreecommitdiff
path: root/spss.test/src/testclient
diff options
context:
space:
mode:
Diffstat (limited to 'spss.test/src/testclient')
-rw-r--r--spss.test/src/testclient/LasttestClient.java389
-rw-r--r--spss.test/src/testclient/TestClient.java1665
2 files changed, 0 insertions, 2054 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
diff --git a/spss.test/src/testclient/TestClient.java b/spss.test/src/testclient/TestClient.java
deleted file mode 100644
index aac30499f..000000000
--- a/spss.test/src/testclient/TestClient.java
+++ /dev/null
@@ -1,1665 +0,0 @@
-package testclient;
-
-import iaik.ixsil.algorithms.Transform;
-import iaik.ixsil.algorithms.TransformImplExclusiveCanonicalXML;
-import iaik.ixsil.init.IXSILInit;
-import iaik.ixsil.util.URI;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.PrintStream;
-import java.io.RandomAccessFile;
-import java.io.UTFDataFormatException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.security.KeyStore;
-import java.security.Principal;
-import java.security.Security;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.StringTokenizer;
-import java.util.TreeMap;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-import org.xml.sax.SAXParseException;
-
-import at.gv.egovernment.moa.spss.client.call.SignatureCreationCaller;
-import at.gv.egovernment.moa.spss.client.call.SignatureVerificationCaller;
-import at.gv.egovernment.moa.util.Base64Utils;
-import at.gv.egovernment.moa.util.Constants;
-import at.gv.egovernment.moa.util.DOMUtils;
-import at.gv.egovernment.moa.util.XPathUtils;
-
-import com.sun.net.ssl.internal.ssl.Provider;
-
-/**
- * @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 TestClient
-{
-
- // stats
- private int pos_ok = 0;
- private int pos_nok = 0;
- private int pos_exc = 0;
- private int neg_ok = 0;
- private int neg_nok = 0;
- private int neg_exc = 0;
- private long max_request = 0;
- private long min_request = 99999;
- private long all_request = 0;
- private int count_all_request = 0;
- private int count_tests = 0;
-
- private TreeMap suits = new TreeMap();
- private PrintStream Log = null;
- private static File directory = null;
- private static String directorystring = null;
- private static Provider ssl_provider = null;
- private static boolean ssl_connection = false;
- private static String defaultserver = "http://localhost:8080/";
- private static String defaultdirectory = "data/feature41/";
- private static String server;
-
- private static boolean ignoreSignatureValue = false;
-
- // end points
- private static String VERIFICATION_ENDPOINT = "moa-spss/services/SignatureVerification";
- private static String CREATION_ENDPOINT = "moa-spss/services/SignatureCreation";
- private static String SSL_VERIFICATION_ENDPOINT = null;
- private static String SSL_CREATION_ENDPOINT = null;
-
- private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss.SSS");
-
- // super cool stuff
- private static ArrayList testtimes = new ArrayList();
- private static ArrayList testnames = new ArrayList();
- private static ArrayList testvalues = new ArrayList();
- private static ArrayList testerrors = new ArrayList();
- private static int ELEMS_MAX = 40;
- private static String ELEMS_ICON = "O";
- private static String ELEMS_ICON_BAD = "X";
-
- private static final boolean debug = true;
-
- public static void main(String[] args)
- {
- long start = System.currentTimeMillis();
- long end = 0;
- System.out.println("Lade IXSIL ...");
- try
- {
- IXSILInit.init(new URI("init/properties/init.properties"));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- System.exit(1);
- }
-
- System.out.println("Starte TestClient @ " + sdf.format(new Date(start)) + "...");
-
- if (args.length == 0)
- {
- directory = new File(defaultdirectory);
- server = defaultserver;
- System.out.println("DefaultPfad wird benutzt (" + directory.getPath() + ")");
- System.out.println("DefaultServer wird benutzt (" + server + ")");
- }
- else if (args.length == 1)
- {
- System.out.println("Pfad " + args[0] + " wird benutzt ");
- directory = new File(args[0]);
- server = defaultserver;
- System.out.println("DefaultServer wird benutzt (" + server + ")");
- }
- else if (args.length == 2)
- {
- System.out.println("Pfad " + args[0] + " wird benutzt ");
- directory = new File(args[0]);
- System.out.println("Server " + args[1] + " wird benutzt ");
- server = args[1];
- }
-
- VERIFICATION_ENDPOINT = server + VERIFICATION_ENDPOINT;
- CREATION_ENDPOINT = server + CREATION_ENDPOINT;
- TestClient tc = new TestClient();
- tc.run();
- end = System.currentTimeMillis();
- System.out.println("Ende TestClient @ " + sdf.format(new Date(end)) + "...");
- System.out.println("Durchlaufzeit: " + ((end - start) / 1000) + " sekunden");
-
- }
-
- public void run()
- {
- ssl_provider = new Provider();
- Security.addProvider(ssl_provider);
- Log = System.out;
- try
- {
- prepareFiles();
- runSuits();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
-
- Log.println("----- Auswertung:");
- Log.println("----- Positiv Tests:" + (pos_ok + pos_nok + pos_exc));
- Log.println("----- OK:" + (pos_ok));
- Log.println("----- nicht OK:" + (pos_nok));
- Log.println("----- Exception aufgetreten:" + (pos_exc));
- Log.println("----- Negativ Test:" + (neg_ok + neg_nok + neg_exc));
- Log.println("----- OK:" + (neg_ok));
- Log.println("----- nicht OK:" + (neg_nok));
- Log.println("----- Exception aufgetreten:" + (neg_exc));
- Log.println("----- schnellste Anfrage:" + min_request + " ms");
- Log.println("----- langsamste Anfrage:" + max_request + " ms");
- if (count_all_request > 2)
- Log.println(
- "----- durchschnittliche Anfrage:"
- + ((all_request - max_request - min_request) / (count_all_request - 2))
- + " ms");
- else if (count_all_request == 0)
- Log.println("----- keine gültigen Messungen für Durchschnittsermittlung");
- else
- Log.println("----- durchschnittliche Anfrage:" + ((all_request) / (count_all_request)) + " ms");
- }
-
- private void prepareFiles() throws Exception
- {
-
- if (!directory.isDirectory())
- {
- throw new Exception("Das angegebene Verzeichnis ist kein Verzeichnis. Bitte Pfad überprüfen.");
- }
-
- directorystring = directory.getAbsolutePath();
-
- String[] list = directory.list();
- for (int counter = 0; counter < list.length; counter++)
- {
-
- if (list[counter].endsWith("Req.xml")
- || list[counter].endsWith("Res.xml")
- || list[counter].endsWith("Config.xml"))
- {
- String suitename = list[counter].substring(0, list[counter].indexOf("."));
-
- if (!suits.containsKey(suitename))
- suits.put(suitename, null);
-
- ArrayList al = (ArrayList) suits.get(suitename);
- if (al == null)
- {
- al = new ArrayList();
- suits.put(suitename, al);
- }
- al.add(list[counter]);
- }
- }
-
- }
-
- private void runSuits()
- {
- Iterator i = suits.keySet().iterator();
- while (i.hasNext())
- {
- String suitename = (String) i.next();
- Log.println("Suite:" + suitename);
- ArrayList al = (ArrayList) suits.get(suitename);
- testtimes.clear();
- testnames.clear();
- testvalues.clear();
- testerrors.clear();
- runTests(al, suitename);
- printGraph(testnames, testtimes, testvalues, testerrors, suitename);
- }
- }
-
- private void runTests(ArrayList testlist, String suitename)
- {
- TreeMap tests = new TreeMap();
- String config = null;
-
- int size = testlist.size();
- for (int counter = 0; counter < size; counter++)
- {
- String filename = (String) testlist.get(counter);
- StringTokenizer st = new StringTokenizer(filename, ".");
- String prefix = st.nextToken();
- String number = st.nextToken();
-
- if (number.equals("Config"))
- {
- config = filename;
- continue;
- }
-
- ArrayList testfiles = null;
- if (!tests.containsKey(number))
- {
- testfiles = new ArrayList();
- tests.put(number, testfiles);
- }
- else
- {
- testfiles = (ArrayList) tests.get(number);
- }
- testfiles.add(filename);
- }
-
- Iterator i = tests.keySet().iterator();
- while (i.hasNext())
- {
- String number = (String) i.next();
- runTest((ArrayList) tests.get(number), null, number, suitename);
- }
- }
-
- private void runTest(ArrayList files, String config, String number, String suitename)
- {
- String request = null;
- String response = null;
- String errorresponse = null;
-
- //Log.println("Test:"+number+" Mit Config:"+config);
- int size = files.size();
- for (int counter = 0; counter < size; counter++)
- {
- String filename = (String) files.get(counter);
- //Log.println("File:"+filename);
- if (filename.endsWith("ErrRes.xml"))
- errorresponse = filename;
- else if (filename.endsWith("Res.xml"))
- response = filename;
- else if (filename.endsWith("Req.xml"))
- request = filename;
- else
- Log.println("Nicht relevant:" + filename);
- }
-
- if (request != null)
- {
- for (int counter = 0; counter < 1; counter++)
- {
- if (response != null && errorresponse != null)
- Log.println(
- "Test " + number + " nicht gültig ! Sowohl Response als auch ErrorResponse vorhanden !");
- else if (response != null)
- runPosTest(request, response, config, number, suitename);
- else if (errorresponse != null)
- runNegTest(request, errorresponse, config, number, suitename);
- }
- }
- else
- {
- Log.println("Test " + number + " nicht gültig ! Kein Request vorhanden !");
- }
- }
-
- private void runPosTest(String request, String response, String config, String number, String suitename)
- {
- long start = System.currentTimeMillis();
- long end = 0;
- Log.println("\n----- Starte Test <" + number + "> (positiv) -----");
- Log.println("----- Request: " + request);
- Log.println("----- Response: " + response);
- try
- {
- long start_req = 0;
- long end_req = 0;
-
- Log.println("----- Lade Request:" + directorystring + "/" + request);
- FileInputStream fis = new FileInputStream(directorystring + "/" + request);
- Document root_doc = DOMUtils.parseDocument(fis, false, Constants.ALL_SCHEMA_LOCATIONS, null);
- Element root = root_doc.getDocumentElement();
- if (debug)
- Log.println(DOMUtils.serializeNode(root));
-
- Log.println("----- Lade Response:" + directorystring + "/" + response);
- FileInputStream fis2 = new FileInputStream(directorystring + "/" + response);
- Document root_response_doc = DOMUtils.parseDocument(fis2, true, Constants.ALL_SCHEMA_LOCATIONS, null);
- Element root_response = root_response_doc.getDocumentElement();
-
- //can_root_response.normalize();
-
- if (request.endsWith("CX3.001.Req.xml"))
- {
- printKeyStoreInformation("./resources/client.keystore", "changeit");
- System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
- System.setProperty("javax.net.ssl.keyStore", "./resources/client.keystore");
- System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
- System.setProperty("javax.net.ssl.trustStore", "./resources/client.keystore");
- System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
-
- ssl_connection = true;
- }
- else
- ssl_connection = false;
-
- if (request.endsWith("CX0.005.Req.xml")) // ECDSA
- ignoreSignatureValue = true;
- else
- ignoreSignatureValue = false;
-
- boolean compare = false;
-
- Transform can = new TransformImplExclusiveCanonicalXML();
- can.setInput(XPathUtils.selectNodeList(root_response, XPathUtils.ALL_NODES_XPATH), null);
-
- InputStream is = (InputStream) can.transform();
- Document can_root_response_doc =
- DOMUtils.parseDocument(is, true, Constants.ALL_SCHEMA_LOCATIONS, null);
- Element can_root_response = root_response_doc.getDocumentElement();
-
- if (checkNode(root, "VerifyCMSSignatureRequest"))
- {
- Log.println("----- Anfrage wird gesendet ...");
- SignatureVerificationCaller svc = new SignatureVerificationCaller();
- start_req = System.currentTimeMillis();
- Element root_serverresponse = svc.verifyCMSSignature(root, VERIFICATION_ENDPOINT);
- end_req = System.currentTimeMillis();
-
- Transform can2 = new TransformImplExclusiveCanonicalXML();
- can2.setInput(XPathUtils.selectNodeList(root_serverresponse, XPathUtils.ALL_NODES_XPATH), null);
- InputStream is2 = (InputStream) can2.transform();
-
- Document can_root_serverresponse_doc =
- DOMUtils.parseDocument(is2, true, Constants.ALL_SCHEMA_LOCATIONS, null);
- Element can_root_serverresponse = can_root_serverresponse_doc.getDocumentElement();
- if (debug)
- Log.println("----- Antwort sollte so aussehen ...\n" + DOMUtils.serializeNode(can_root_response));
- if (debug)
- Log.println("----- Antwort vom Server ...\n" + DOMUtils.serializeNode(can_root_serverresponse));
-
- Log.println("----- Antwort validieren ...\n");
- DOMUtils.validateElement(can_root_serverresponse, Constants.ALL_SCHEMA_LOCATIONS, null);
- Log.println("----- Antwort vergleichen ...\n");
-
- String error = findErrorNode(can_root_serverresponse);
- if (error != null)
- {
- compare = false;
- Log.println("----- ServerError: " + error);
- testerrors.add(error);
- }
- else
- {
- compare = compareElements(can_root_response, can_root_serverresponse);
- testerrors.add(null);
- }
-
- }
- else if (checkNode(root, "VerifyXMLSignatureRequest"))
- {
- Log.println("----- Anfrage wird gesendet ...");
- SignatureVerificationCaller svc = new SignatureVerificationCaller();
- start_req = System.currentTimeMillis();
- Element root_serverresponse = svc.verifyXMLSignature(root, VERIFICATION_ENDPOINT);
- end_req = System.currentTimeMillis();
-
- Transform can2 = new TransformImplExclusiveCanonicalXML();
- can2.setInput(XPathUtils.selectNodeList(root_serverresponse, XPathUtils.ALL_NODES_XPATH), null);
- InputStream is2 = (InputStream) can2.transform();
-
- Document can_root_serverresponse_doc =
- DOMUtils.parseDocument(is2, false, Constants.ALL_SCHEMA_LOCATIONS, null);
- Element can_root_serverresponse = can_root_serverresponse_doc.getDocumentElement();
-
- if (debug)
- Log.println("----- Antwort sollte so aussehen ...\n" + DOMUtils.serializeNode(can_root_response));
- if (debug)
- Log.println("----- Antwort vom Server ...\n" + DOMUtils.serializeNode(can_root_serverresponse));
-
- Log.println("----- Antwort validieren ...\n");
- DOMUtils.validateElement(can_root_serverresponse, Constants.ALL_SCHEMA_LOCATIONS, null);
- Log.println("----- Antwort vergleichen ...\n");
- String error = findErrorNode(can_root_serverresponse);
- if (error != null)
- {
- compare = false;
- Log.println("----- ServerError: " + error);
- testerrors.add(error);
- }
- else
- {
- compare = compareElements(can_root_response, can_root_serverresponse);
- testerrors.add(null);
- }
- }
- else if (checkNode(root, "CreateXMLSignatureRequest"))
- {
- Log.println("----- Anfrage wird gesendet ...");
- SignatureCreationCaller scc = new SignatureCreationCaller();
- start_req = System.currentTimeMillis();
- Element root_serverresponse = scc.createXMLSignature(root, CREATION_ENDPOINT);
- end_req = System.currentTimeMillis();
-
- Transform can2 = new TransformImplExclusiveCanonicalXML();
- can2.setInput(XPathUtils.selectNodeList(root_serverresponse, XPathUtils.ALL_NODES_XPATH), null);
- InputStream is2 = (InputStream) can2.transform();
-
- Document can_root_serverresponse_doc =
- DOMUtils.parseDocument(is2, false, Constants.ALL_SCHEMA_LOCATIONS, null);
- Element can_root_serverresponse = can_root_serverresponse_doc.getDocumentElement();
-
- if (debug)
- Log.println("----- Antwort sollte so aussehen ...\n" + DOMUtils.serializeNode(can_root_response));
- //Log.println("----- Antwort vom Server (von Can)...\n"+DOMUtils.serializeNode(root_serverresponse));
- if (debug)
- Log.println("----- Antwort vom Server ...\n" + DOMUtils.serializeNode(can_root_serverresponse));
-
- Log.println("----- Antwort validieren ...\n");
- DOMUtils.validateElement(can_root_serverresponse, Constants.ALL_SCHEMA_LOCATIONS, null);
- Log.println("----- Antwort vergleichen ...\n");
-
- String error = findErrorNode(can_root_serverresponse);
- if (error != null)
- {
- compare = false;
- Log.println("----- ServerError: " + error);
- testerrors.add(error);
- }
- else
- {
- compare = compareElements(can_root_response, can_root_serverresponse);
- testerrors.add(null);
- }
-
- }
- else
- {
- throw new Exception("Responsetyp nicht bekannt");
- }
-
- if (compare)
- {
- pos_ok++;
- testvalues.add(" OK");
- Log.println("----- Keine Fehler aufgetreten");
- }
- else
- {
- pos_nok++;
- testvalues.add("NOK");
- Log.println("----- Response war nicht ok !");
- }
-
- Date start_date = new Date(start_req);
- Date end_date = new Date(end_req);
- long diff = end_req - start_req;
- Log.println("----- Requeststart: " + sdf.format(start_date));
- Log.println("----- Requestende: " + sdf.format(end_date));
- Log.println("----- Requestdauer: " + diff + " ms");
- if (diff > max_request)
- max_request = diff;
- if (diff < min_request)
- min_request = diff;
- all_request += diff;
- count_all_request++;
-
- // :)
- testtimes.add(new Long(diff));
- testnames.add(number);
- }
- catch (Exception e)
- {
- testtimes.add(new Long(-1L));
- testnames.add(number);
- testvalues.add("EXC");
- testerrors.add(e.getMessage());
- pos_exc++;
- Log.println("----- Exception:\n");
- e.printStackTrace(Log);
- }
- end = System.currentTimeMillis();
- Log.println("----- Durchlaufzeit: " + ((end - start) / 1000) + " sekunden");
- Log.println("----- Ende Test <" + number + "> -----\n");
- }
-
- private void runNegTest(
- String request,
- String errorresponse,
- String config,
- String number,
- String suitename)
- {
- long start = System.currentTimeMillis();
- long end = 0;
- Log.println("\n----- Starte Test <" + number + "> (negativ) -----");
- Log.println("----- Config: " + config);
- Log.println("----- Request: " + request);
- Log.println("----- ErrorResponse: " + errorresponse);
- int error_no = 0;
- try
- {
-
- FileInputStream fis = null;
- Document root_doc = null;
- Element root = null;
- long start_req = 0;
- long end_req = 0;
-
- try
- {
- error_no = Integer.parseInt(readFile(directorystring + "/" + errorresponse));
- }
- catch (NumberFormatException nfe)
- {
- throw new Exception(
- "Fehler beim Lesen der Datei "
- + directorystring
- + "/"
- + errorresponse
- + ". Die Fehlernummer konnte nicht ermittelt werden");
- }
-
- try
- {
- Log.println("----- Lade Request: " + directorystring + "/" + request);
- fis = new FileInputStream(directorystring + "/" + request);
- root_doc = DOMUtils.parseDocument(fis, false, Constants.ALL_SCHEMA_LOCATIONS, null);
- root = root_doc.getDocumentElement();
- }
- catch (SAXParseException saxpe)
- {
- Log.println("Fehler beim Lesen der Requestdatei !");
- throw saxpe;
- }
-
- try
- {
- if (request.endsWith("CX4.051.Req.xml"))
- {
- printKeyStoreInformation("./resources/sven.keystore", "example");
- System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
- System.setProperty("javax.net.ssl.keyStore", "./resources/sven.keystore");
- System.setProperty("javax.net.ssl.keyStorePassword", "example");
- System.setProperty("javax.net.ssl.trustStore", "./resources/sven.keystore");
- System.setProperty("javax.net.ssl.trustStorePassword", "example");
-
- ssl_connection = true;
- }
- else if (request.endsWith("CX3.052.Req.xml"))
- {
- printKeyStoreInformation("./resources/client.keystore", "changeit");
- System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
- System.setProperty("javax.net.ssl.keyStore", "./resources/client.keystore");
- System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
- System.setProperty("javax.net.ssl.trustStore", "./resources/client.keystore");
- System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
-
- ssl_connection = true;
- }
- else
- ssl_connection = false;
-
- Element root_serverresponse = null;
-
- if (checkNode(root, "VerifyCMSSignatureRequest"))
- {
- SignatureVerificationCaller svc = new SignatureVerificationCaller();
- start_req = System.currentTimeMillis();
- root_serverresponse = svc.verifyCMSSignature(root, VERIFICATION_ENDPOINT);
- end_req = System.currentTimeMillis();
- Log.println(DOMUtils.serializeNode(root_serverresponse));
- }
- else if (checkNode(root, "VerifyXMLSignatureRequest"))
- {
- SignatureVerificationCaller svc = new SignatureVerificationCaller();
- start_req = System.currentTimeMillis();
- root_serverresponse = svc.verifyXMLSignature(root, VERIFICATION_ENDPOINT);
- end_req = System.currentTimeMillis();
- Log.println(DOMUtils.serializeNode(root_serverresponse));
- }
- else if (checkNode(root, "CreateXMLSignatureRequest"))
- {
- SignatureCreationCaller svc = new SignatureCreationCaller();
- start_req = System.currentTimeMillis();
- root_serverresponse = svc.createXMLSignature(root, CREATION_ENDPOINT);
- end_req = System.currentTimeMillis();
- Log.println(DOMUtils.serializeNode(root_serverresponse));
- }
-
- Transform can2 = new TransformImplExclusiveCanonicalXML();
- can2.setInput(XPathUtils.selectNodeList(root_serverresponse, XPathUtils.ALL_NODES_XPATH), null);
- InputStream is2 = (InputStream) can2.transform();
-
- Document can_root_serverresponse_doc =
- DOMUtils.parseDocument(is2, false, Constants.ALL_SCHEMA_LOCATIONS, null);
- Element can_root_serverresponse = can_root_serverresponse_doc.getDocumentElement();
-
- int errno = getErrorNumber(can_root_serverresponse);
-
- if (errno == -1)
- {
- Log.println("Kein Fehler aufgetreten oder Fehlernummer konnte nicht ermittelt werden.");
- neg_nok++;
- testvalues.add("NOK");
- testerrors.add("Kein Fehler aufgetreten oder Fehlernummer konnte nicht ermittelt werden.");
- }
- else
- {
- Log.println("----- Fehlercode vom Server:" + errno);
- Log.println("----- Fehlercode vom Test:" + error_no);
- if (errno == error_no)
- {
- Log.println("Test erfolgreich !");
- testvalues.add(" OK");
- testerrors.add(null);
- neg_ok++;
- }
- else
- {
- Log.println("Test nicht erfolgreich !");
- neg_nok++;
- testvalues.add("NOK");
- testerrors.add("Fehlercodes nicht gleich: Server " + errno + " Client " + error_no);
- }
- }
-
- }
- catch (org.apache.axis.AxisFault af)
- {
- end_req = System.currentTimeMillis();
- /*
- * Sample Fault:
- AxisFault
- faultCode: {http://xml.apache.org/axis/}Server.userException
- faultString: at.gv.egovernment.moa.spss.server.MOAApplicationException: Fehler beim Validieren der Anfrage
- faultActor: null
- faultDetail:
- ErrorResponse:
- <ns2:ErrorCode>1100</ns2:ErrorCode>
- <ns2:Info>Fehler beim Validieren der Anfrage</ns2:Info>
- */
- Element base = af.getFaultDetails()[0];
- System.out.println(DOMUtils.serializeNode(base));
-
- int error_no_server = getErrorNumber(base);
- if (error_no_server == -1)
- {
- Log.println("Kein Fehler aufgetreten oder Fehlernummer konnte nicht ermittelt werden.");
- neg_nok++;
- testvalues.add("NOK");
- testerrors.add("Kein Fehler aufgetreten oder Fehlernummer konnte nicht ermittelt werden.");
- }
- else
- {
- Log.println("----- Fehlercode vom Server:" + error_no_server);
- Log.println("----- Fehlercode vom Test:" + error_no);
- if (error_no_server == error_no)
- {
- Log.println("Test erfolgreich !");
- testvalues.add(" OK");
- testerrors.add(null);
- neg_ok++;
- }
- else
- {
- Log.println("Test nicht erfolgreich !");
- neg_nok++;
- testvalues.add("NOK");
- testerrors.add("Fehlercodes nicht gleich: Server " + error_no_server + " Client " + error_no);
- }
- }
- }
- long diff = end_req - start_req;
- Log.println("----- Requestdauer: " + diff + " ms");
- if (diff > max_request)
- max_request = diff;
- if (diff < min_request)
- min_request = diff;
- all_request += diff;
- count_all_request++;
- testtimes.add(new Long(diff));
- testnames.add(number);
-
- }
- catch (UTFDataFormatException e)
- {
- method2(request, error_no, number);
- }
- catch (SAXParseException e)
- {
- method2(request, error_no, number);
- }
- catch (Exception e)
- {
- neg_exc++;
- testtimes.add(new Long(-1L));
- testnames.add(number);
- testvalues.add("EXC");
- testerrors.add(e.getMessage());
- Log.println("----- Exception:\n");
- e.printStackTrace(Log);
- }
- end = System.currentTimeMillis();
- Log.println("----- Durchlaufzeit: " + ((end - start) / 1000) + " sekunden");
- Log.println("----- Ende Test <" + number + "> -----\n");
- }
-
- private void method2(String request, int error_no, String number)
- {
- try
- {
- Log.println("----- Methode 2\n");
- String data = readFile(directorystring + "/" + request);
- //Log.println("Data:\n"+data);
- int index = data.indexOf(">");
- if (index != -1)
- {
- String xml_head = data.substring(0, index);
- 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>";
- //Log.println("Data3:\n"+data);
-
- String ep = null;
- if (data.indexOf("<Create") != -1)
- ep = server + "moa-spss/services/SignatureCreation";
- else
- ep = server + "moa-spss/services/SignatureVerification";
-
- HttpURLConnection urlc = (HttpURLConnection) (new URL(ep)).openConnection();
- urlc.setDoInput(true);
- urlc.setDoOutput(true);
- urlc.setRequestProperty("SOAPAction", "");
- BufferedWriter ow = new BufferedWriter(new OutputStreamWriter(urlc.getOutputStream()));
- ow.write(data);
- ow.flush();
- int code = 0;
- try
- {
- code = urlc.getResponseCode();
- }
- catch (IOException ioe)
- {
- code = 500;
- }
-
- if (code == 500)
- {
- BufferedReader err_br = new BufferedReader(new InputStreamReader(urlc.getErrorStream()));
- StringBuffer err_response = new StringBuffer();
- String err_line = null;
- while ((err_line = err_br.readLine()) != null)
- {
- err_response.append(err_line);
- }
-
- Log.println("ErrResponse:\n" + err_response);
-
- if (error_no == 0)
- {
- Log.println("Test erfolgreich !");
- testvalues.add(" OK");
- testtimes.add(new Long(-1));
- testnames.add(number);
- testerrors.add(null);
- neg_ok++;
- }
- else
- {
- Log.println("Test nicht erfolgreich !");
- neg_nok++;
- testvalues.add("NOK");
- testtimes.add(new Long(-1));
- testnames.add(number);
- testerrors.add("Test nicht erfolgreich !");
- }
-
- }
- else
- {
- BufferedReader br = new BufferedReader(new InputStreamReader(urlc.getInputStream()));
- StringBuffer response = new StringBuffer();
- String line = null;
- while ((line = br.readLine()) != null)
- {
- response.append(line);
- }
- String resp = response.toString();
- Log.println("Response:\n" + response);
-
- int pos = resp.indexOf("ErrorCode>");
- if (pos == -1)
- {
- Log.println("Test nicht erfolgreich !");
- neg_nok++;
- testvalues.add("NOK");
- testtimes.add(new Long(-1));
- testnames.add(number);
- testerrors.add("Test nicht erfolgreich !");
- }
- else
- {
- resp = resp.substring(pos + "ErrorCode>".length());
- pos = resp.indexOf("<");
- if (pos == -1)
- {
- Log.println("Test nicht erfolgreich !");
- neg_nok++;
- testvalues.add("NOK");
- testtimes.add(new Long(-1));
- testnames.add(number);
- testerrors.add("Test nicht erfolgreich !");
- }
- else
- {
- resp = resp.substring(0, pos);
-
- int err_resp = -1;
- try
- {
- err_resp = Integer.parseInt(resp);
- }
- catch (NumberFormatException nfe)
- {
- }
- //Log.println("ResponseCode:\n"+resp);
-
- Log.println("----- Fehlercode vom Server:" + err_resp);
- Log.println("----- Fehlercode vom Test:" + error_no);
-
- if (err_resp == error_no)
- {
- Log.println("Test erfolgreich !");
- neg_ok++;
- testvalues.add(" OK");
- testtimes.add(new Long(-1));
- testnames.add(number);
- testerrors.add(null);
- }
- else
- {
- Log.println("Test nicht erfolgreich !");
- neg_ok++;
- testvalues.add("NOK");
- testtimes.add(new Long(-1));
- testnames.add(number);
- testerrors.add("Fehlercodes nicht gleich: Server " + err_resp + " Client " + error_no);
- }
- }
- }
- }
- }
- }
- catch (Exception ee)
- {
- ee.printStackTrace();
- }
- }
-
- private boolean compareElements(Element root1, Element root2)
- {
- //Log.println("----- Compare Elements:"+root1.getNodeName()+" "+root2.getNodeName());
- filterTree(root1);
- filterTree(root2);
- return compareNodes(root1, root2, 0, "root/", false);
- }
-
- private boolean compareNodes(Node n1, Node n2, int level, String path, boolean attribute)
- {
- /*try {
- Log.println(DOMUtils.serializeNode(n1));
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }*/
- boolean equal = false;
- //Log.println("----- Compare Node "+level+":"+n1+" "+n2);
- //Log.println("----- Compare Node "+level+":"+n1.getNodeName()+" "+n2.getNodeName());
- //Log.println("----- Checking:"+path+getPathString(n1));
- NodeList nl1 = n1.getChildNodes();
- NodeList nl2 = n2.getChildNodes();
-
- int size1 = nl1.getLength();
- int size2 = nl2.getLength();
-
- if (debug)
- display_one(n1);
- if (debug)
- display_one(n2);
-
- if (debug)
- if (n1.getNodeName().equals("Base64Content") && n2.getNodeName().equals("Base64Content"))
- {
- try
- {
- Log.println(
- "CONT:"
- + new String(Base64Utils.decode(strip(n1.getChildNodes().item(0).getNodeValue()), false)));
- Log.println(
- "CONT:"
- + new String(Base64Utils.decode(strip(n2.getChildNodes().item(0).getNodeValue()), false)));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- if (size1 != size2)
- {
- Log.println(
- "----- Anzahl der Kinder nicht gleich:"
- + path
- + getPathString(n1)
- + "("
- + size1
- + ") / "
- + getPathString(n2)
- + "("
- + size2
- + ")");
- return false;
- }
-
- equal = compareNodeExact(n1, n2, level, path + getPathString(n1) + "/");
- if (!equal)
- {
- Log.println("----- Knoten sind nicht identisch:" + path + getPathString(n1));
- return false;
- }
-
- if (n1.hasAttributes() || n2.hasAttributes())
- {
- equal = compareNodeAttriubtes(n1, n2, level + 1, path + getPathString(n1) + "/(a)");
- if (!equal)
- {
- Log.println("----- Attribute stimmen nicht überein:" + path + getPathString(n1));
- return false;
- }
- }
- if (size1 == 0)
- {
- return true;
- }
-
- for (int counter = 0; counter < size1; counter++)
- {
- boolean found = false;
- Node comp_n1 = nl1.item(counter);
-
- //if(comp_n1==null) return false;
-
- Node comp_n2 = null;
- size2 = nl2.getLength();
- for (int counter2 = 0; counter2 < size2; counter2++)
- {
- comp_n2 = nl2.item(counter2);
-
- /*equal = compareNodeExact(comp_n1,comp_n2,level+1);
- if(equal) return false;*/
- //Log.println("COMP_N1:"+comp_n1);
- //Log.println("COMP_N2:"+comp_n2);
- equal = compareNodes(comp_n1, comp_n2, level + 1, path + getPathString(comp_n1) + "/", false);
- if (equal)
- {
- n2.removeChild(comp_n2);
- counter2 = size2;
- nl2 = n2.getChildNodes();
- size2 = nl2.getLength();
- }
-
- }
-
- if (!equal)
- {
- Log.println("----- Keine Übereinstimmung gefunden:" + path + getPathString(comp_n1));
- return false;
- }
- }
- return true;
- }
-
- private boolean compareNodeExact(Node n1, Node n2, int level, String path)
- {
- if (n1.getNodeType() == Node.TEXT_NODE)
- {
- Text textnode = (Text) n1;
- /*Log.println("----- *****"+textnode.getNodeName());
- Log.println("----- *****"+textnode.getParentNode().getNodeName());
- Log.println("----- *****"+textnode.getNodeValue());*/
- }
-
- //Log.println("----- Checking:"+path);
- String n1_name = n1.getNodeName();
- String n2_name = n2.getNodeName();
- /*Log.println("----- !!!!!"+n1.getNodeName());
- Log.println("----- !!!!!"+n1.getNodeValue());
- Log.println("----- !!!!!"+n1.getLocalName());
- Log.println("----- !!!!!"+n1.getPrefix());
- Log.println("----- !!!!!"+n1.getNextSibling());
- Log.println("----- !!!!!"+n1.getPreviousSibling());*/
-
- //Log.println("----- Compare Node "+level+":"+n1_name+" "+n2_name);
- if (!((n1_name == null && n2_name == null)
- || (n1_name != null && n2_name != null && n1_name.equals(n2_name))))
- {
- Log.println("----- Name stimmt nicht überein:" + path);
- return false;
- }
-
- //Log.println("----- Compare Node "+level+":"+n1.getNodeType()+" "+n2.getNodeType());
- if (n1.getNodeType() != n2.getNodeType())
- {
- Log.println("----- Knotentyp stimmt nicht überein:" + path);
- return false;
- }
-
- String n1_ns = n1.getPrefix();
- String n2_ns = n2.getPrefix();
- //Log.println("----- Compare Node "+level+":"+n1_ns+" "+n2_ns);
- if (!((n1_ns == null && n2_ns == null) || (n1_ns != null && n2_ns != null && n1_ns.equals(n2_ns))))
- {
- Log.println("----- NameSpace stimmt nicht überein:" + path);
- return false;
- }
-
- String n1_value = n1.getNodeValue();
- String n2_value = n2.getNodeValue();
-
- boolean special = false;
- special = specialValues(n1_value, n2_value, path);
- if (special)
- return true;
-
- //Log.println("----- Compare Node "+level+":"+n1_value+" "+n2_value);
- if (!((n1_value == null && n2_value == null)
- || (n1_value != null && n2_value != null && n1_value.equals(n2_value))))
- {
- Log.println("----- Wert stimmt nicht überein:" + path);
- Log.println("----- Value1:\n" + n1_value);
- Log.println("----- Value2:\n" + n2_value);
- return false;
- }
-
- return true;
- }
-
- private boolean compareNodeAttriubtesWithoutSize(Node n1, Node n2, int level, String path)
- {
- return true;
- }
-
- private boolean compareNodeAttriubtes(Node n1, Node n2, int level, String path)
- {
- //Log.println("----- Compare NodeAttributes "+level+":"+n1.getNodeName()+" "+n2.getNodeName());
- Element n1elem = (Element) n1;
- Element n2elem = (Element) n2;
-
- NamedNodeMap nnm1 = n1.getAttributes();
- NamedNodeMap nnm2 = n2.getAttributes();
-
- int size1 = 0;
- int size2 = 0;
-
- boolean specialattrs = specialAttributesSize(path);
-
- if (!specialattrs)
- {
-
- if (nnm1 == null && nnm2 == null)
- return true;
- if (nnm1 == null || nnm2 == null)
- {
- Log.println("----- Anzahl der Attribute nicht gleich:" + path + ":" + getPathString(n1));
- return false;
- }
- size1 = nnm1.getLength();
- size2 = nnm2.getLength();
-
- if (size1 != size2)
- {
- Log.println("----- Anzahl der Attribute nicht gleich:" + path + ":" + getPathString(n1));
- return false;
- }
-
- }
- else
- {
- return compareNodeAttriubtesWithoutSize(n1, n2, level, path);
- }
-
- for (int counter = 0; counter < size1; counter++)
- {
- Node attribute_node1 = nnm1.item(counter);
- Node attribute_node2 = nnm2.item(counter);
-
- String attr1_name = attribute_node1.getNodeName();
- String attr2_name = attribute_node2.getNodeName();
-
- //Log.println("----- Checking:"+path+">"+attr1_name);
-
- String value1 = n1elem.getAttribute(attr1_name);
- String value2 = n2elem.getAttribute(attr2_name);
-
- boolean special = false;
-
- special = specialAttributes(value1, value2);
- if (special)
- {
- return special;
- }
-
- if (!value1.equals(value2))
- {
- Log.println("----- Keine Übereinstimmung gefunden:" + path + getPathString(n1));
- return false;
- }
- //Log.println("----- Compare NodeAttributes > "+level+":"+attribute_node1+" "+attribute_node2);
-
- /*boolean equal = compareNodes(attribute_node1,attribute_node2,level+1,path+attribute_node1.getNodeName()+"/",true);
- if(!equal)
- {
- //Log.println("----- no match for:"+attribute_node1.getNodeName());
- return false;
- }*/
-
- }
-
- return true;
- }
-
- private boolean checkNode(Node base, String name)
- {
- if (base.getNodeName().equals(name))
- {
- return true;
- }
-
- NodeList children = base.getChildNodes();
- int size = children.getLength();
- for (int counter = 0; counter < size; counter++)
- {
- boolean found = checkNode(children.item(counter), name);
- if (found)
- return true;
- }
- return false;
- }
-
- private void display_one(Node base)
- {
- int att_size = 0;
- if (base.getAttributes() != null)
- {
- att_size = base.getAttributes().getLength();
- }
- if (base.getNodeName().equals("#text"))
- Log.println(
- base.getNodeName()
- + base.getChildNodes().getLength()
- + ":"
- + att_size
- + " ("
- + base.getNodeValue()
- + ")");
- else
- Log.println(base.getNodeName() + base.getChildNodes().getLength() + ":" + att_size);
- }
-
- private void display(Node base)
- {
- display(base, 1);
- }
-
- private void display(Node base, int level)
- {
- String spacer = "";
- for (int counter = 0; counter < level; counter++)
- {
- spacer += " ";
- }
-
- int att_size = 0;
- if (base.getAttributes() != null)
- {
- att_size = base.getAttributes().getLength();
- }
- if (base.getNodeName().equals("#text"))
- Log.println(
- spacer
- + base.getNodeName()
- + base.getChildNodes().getLength()
- + ":"
- + att_size
- + " ("
- + base.getNodeValue()
- + ")");
- else
- Log.println(spacer + base.getNodeName() + base.getChildNodes().getLength() + ":" + att_size);
-
- NodeList children = base.getChildNodes();
- int size = children.getLength();
- for (int counter = 0; counter < size; counter++)
- {
- display(children.item(counter), level + 1);
- }
- }
-
- private void filterTree(Node base)
- {
- ArrayList removeList = new ArrayList();
-
- NodeList children = base.getChildNodes();
- int size = children.getLength();
- for (int counter = 0; counter < size; counter++)
- {
- Node child1 = children.item(counter);
- if (child1.getNodeType() == Node.TEXT_NODE && child1.getNodeValue().trim().equals(""))
- {
- removeList.add(child1);
- }
- }
-
- size = removeList.size();
- for (int counter = 0; counter < size; counter++)
- {
- base.removeChild((Node) removeList.get(counter));
- }
-
- children = base.getChildNodes();
- size = children.getLength();
- for (int counter = 0; counter < size; counter++)
- {
- filterTree(children.item(counter));
- }
-
- }
-
- 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);
-
- }
-
- private String getPathString(Node n)
- {
- if (n.getNodeType() == Node.TEXT_NODE)
- {
- return n.getParentNode().getNodeName() + "(text)";
- }
- else
- {
- return n.getNodeName();
- }
-
- }
-
- 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;
- }
-
- private String replaceStringWithCheck(String input, String oldPart, String newPart) throws Exception
- {
- String erg = null;
-
- if (input.indexOf(oldPart) == -1)
- return input;
-
- return replaceString(input, oldPart, newPart);
- }
-
- private void printKeyStoreInformation(String keystore, String pw) throws Exception
- {
- KeyStore ks = KeyStore.getInstance("JKS", "SUN");
- ks.load(new FileInputStream(keystore), pw.toCharArray());
- Enumeration enum = ks.aliases();
- while (enum.hasMoreElements())
- {
- String certname = (String) enum.nextElement();
- Log.println("Cert:" + certname);
- sun.security.x509.X509CertImpl c = (sun.security.x509.X509CertImpl) ks.getCertificate(certname);
- Principal p = c.getIssuerDN();
- Log.println(" Issuer:" + p.getName());
- p = c.getSubjectDN();
- Log.println(" Subject:" + p.getName());
- Log.println(" Serial:" + c.getSerialNumber());
- }
- }
-
- private void printGraph(
- ArrayList names,
- ArrayList times,
- ArrayList values,
- ArrayList errors,
- String suitename)
- {
- long max = getMax(times, names);
- //Log.println("MAX:"+max);
- if (max == -1)
- {
- Log.println("Kein Graph möglich !");
- return;
- }
- Log.println("names:" + names.size());
- Log.println("times:" + times.size());
- Log.println("values:" + values.size());
- Log.println("errors:" + errors.size());
- Log.println("# | Status | Suite:" + suitename);
- int size = times.size();
- for (int counter = 0; counter < size; counter++)
- {
- String output = "";
- long value = ((Long) times.get(counter)).longValue();
- if (value != -1)
- {
- output = names.get(counter) + " | " + values.get(counter) + " | " + getElement(value, max);
-
- }
- else
- {
- output = names.get(counter) + " | " + values.get(counter) + " | " + ELEMS_ICON_BAD;
- }
-
- if (errors.get(counter) != null)
- {
- output += buildSpacer(70 - output.length()) + errors.get(counter);
- }
- Log.println(output);
- }
-
- }
-
- private String getElement(long value, long max)
- {
- boolean plus = false;
- int elems = (int) (((((double) value) / ((double) max)) * (ELEMS_MAX / 2)));
- if (elems > ELEMS_MAX)
- {
- elems = ELEMS_MAX;
- plus = true;
- }
- StringBuffer sb = new StringBuffer();
- for (int counter = 0; counter < elems; counter++)
- {
- sb.append(ELEMS_ICON);
- }
- for (int counter = 0; counter < (ELEMS_MAX - elems); counter++)
- {
- sb.append(" ");
- }
- if (plus)
- sb.append("> ");
- else
- sb.append(" ");
-
- sb.append(value + " ms");
-
- return sb.toString();
- }
-
- private long getMax(ArrayList times, ArrayList names)
- {
- int count = 0;
- double sum = 0;
- int size = times.size();
- for (int counter = 0; counter < size; counter++)
- {
- //Log.println(times.get(counter)+":"+names.get(counter));
- long value = ((Long) times.get(counter)).longValue();
- if (value != -1)
- {
- sum += value;
- count++;
- }
- }
-
- if (count == 0)
- return -1;
-
- return ((long) (sum / count));
- }
-
- private boolean specialAttributes(String value1, String value2)
- {
- //if(value1.startsWith("reference-") && value2.startsWith("reference-")) return true;
- if (value1.startsWith("signature-") && value2.startsWith("signature-"))
- return true;
-
- return false;
- }
-
- private boolean specialAttributesSize(String path)
- {
- if (path.endsWith("/xsl:template/(a)"))
- return true;
- return false;
- }
-
- private boolean specialValues(String value1, String value2, String path)
- {
-
- //Log.println(path);
- if (ignoreSignatureValue)
- {
- if (path.endsWith("/dsig:SignatureValue(text)/"))
- {
- return true;
- }
- }
- else
- {
- if (path.endsWith("/dsig:SignatureValue(text)/"))
- {
- String stripped_1 = strip(value1);
- String stripped_2 = strip(value2);
- return stripped_1.equals(stripped_2);
- }
- }
-
- if (path.endsWith("/dsig:X509Certificate(text)/"))
- {
- String stripped_1 = strip(value1);
- String stripped_2 = strip(value2);
- return stripped_1.equals(stripped_2);
- }
-
- if (path.endsWith("/dsig:Object(text)/"))
- {
- String stripped_1 = strip(value1);
- String stripped_2 = strip(value2);
- return stripped_1.equals(stripped_2);
- }
-
- if (path.endsWith("/Base64Content(text)/"))
- {
- String stripped_1 = strip(value1);
- String stripped_2 = strip(value2);
- return stripped_1.equals(stripped_2);
- }
-
- if (path.endsWith("/FailedReference(text)/"))
- {
- try
- {
- int stripped_1 = Integer.parseInt(value1);
- int stripped_2 = Integer.parseInt(value2);
- return stripped_1 == stripped_2;
- }
- catch (Exception e)
- {
- return false;
- }
- }
-
- return false;
- }
-
- private String strip(String input)
- {
- String output = replaceStringAll(input, " ", "");
- output = replaceStringAll(output, "\n", "");
- output = replaceStringAll(output, "\r", "");
- return output;
- }
-
- public static String replaceStringAll(String input, String oldPart, String newPart)
- {
-
- String erg = null;
-
- int pos = input.indexOf(oldPart);
- if (pos == -1)
- return input;
-
- while (true)
- {
-
- //First Part
- pos = input.indexOf(oldPart);
- if (pos == -1)
- break;
- erg = input.substring(0, pos);
-
- //Insert new Part
- erg += newPart;
-
- //insert REST
- erg += input.substring(input.indexOf(oldPart) + oldPart.length(), input.length());
-
- input = erg;
- }
- return erg;
- }
-
- private int getErrorNumber(Element root)
- {
- ArrayList result = new ArrayList();
- findNode(root, "ErrorCode", result);
- if (result.size() != 1)
- return -1;
- Node n = (Node) result.get(0);
- String text = (String) n.getChildNodes().item(0).getNodeValue();
- try
- {
- int error = Integer.parseInt(text);
- return error;
- }
- catch (NumberFormatException nfe)
- {
- Log.println(text + " ist keine gültige Fehlernummer");
- return -1;
- }
- }
-
- private void findNode(Node base, String name, ArrayList foundNodes)
- {
- findNode(base, name, foundNodes, -1);
- }
-
- private void findNode(Node base, String name, ArrayList foundNodes, int max_level)
- {
- findNode(base, name, foundNodes, max_level, 0);
- }
-
- private void findNode(Node base, String name, ArrayList foundNodes, int max_level, int level)
- {
- if (max_level != -1 && max_level <= level)
- return;
- //System.out.println("FINDNODE "+name);
- //System.out.println("CHECKING "+base.getNodeName());
- if (base.getNodeName().endsWith(name))
- {
- //System.out.println("ADD BASE !"+name);
- foundNodes.add(base);
- }
-
- NodeList children = base.getChildNodes();
- int size = children.getLength();
- for (int counter = 0; counter < size; counter++)
- {
- findNode(children.item(counter), name, foundNodes, max_level, level + 1);
- }
- }
-
- private String findErrorNode(Node n)
- {
- ArrayList al = new ArrayList();
- findNode(n, "ErrorResponse", al);
- if (al.size() != 0)
- {
- al.clear();
- findNode(n, "ErrorCode", al);
- String code = ((Node) al.get(0)).getChildNodes().item(0).getNodeValue();
- al.clear();
- findNode(n, "Info", al);
- String msg = ((Node) al.get(0)).getChildNodes().item(0).getNodeValue();
-
- return "ErrorCode: " + code + " / ErrorMsg: " + msg;
- }
- else
- return null;
- }
-
- private String buildSpacer(int length)
- {
- if (length <= 0)
- return "";
- else
- {
- StringBuffer output = new StringBuffer();
- for (int counter = 0; counter < length; counter++)
- {
- output.append(" ");
- }
- return output.toString();
- }
- }
-
-} \ No newline at end of file