public void loadTestProfiles() throws IOException, JDOMException { SAXBuilder parser = new SAXBuilder(); // load constraint profile. Document doc1 = parser.build(new File(traceDir + "SigConstProfile.xml")); for (Object o : doc1.getContent()) { Element root = (Element) o; if (!root.getName().equals("SigConstProfile")) continue; for (Object s : root.getContent()) { // for each SQL signature. if (!(s instanceof Element)) continue; Element sigConstElement = (Element) s; if (!sigConstElement.getName().equals("Signature")) continue; String sig = sigConstElement.getAttributeValue("Sig"); SigProfile profile = new SigProfile(sig); profile.procXMLSigConstProfileElement(sigConstElement); testProfiles.put(sig, profile); } } // load trace summary. Document doc2 = parser.build(new File(traceDir + "TraceSummary.xml")); for (Object o : doc2.getContent()) { Element root = (Element) o; if (!root.getName().equals("TraceSummary")) continue; for (Object s : root.getContent()) { // for each SQL signature. if (!(s instanceof Element)) continue; Element summary = (Element) s; if (!summary.getName().equals("Signature")) continue; String sig = summary.getAttributeValue("Sig"); SigProfile profile = testProfiles.get(sig); profile.procXMLTraceSumElement(summary); } } // prepare sessionVars set. for (String sig : testProfiles.keySet()) { for (String entry : testProfiles.get(sig).getEntries().keySet()) { // System.out.println(sig + " " + entry); Vector<RequestMessage> messageList = testProfiles.get(sig).getMessagesByEntry(entry); // System.out.println(messageList.size()); for (RequestMessage message : messageList) { String stateSig = _stateConstructor.genStateSig(message.getSessionVars()); if (!sessionVarsSet.containsKey(stateSig)) { if (!_stateConstructor.getStateSet().contains(stateSig)) { continue; } System.out.println("Loading state: " + stateSig); sessionVarsSet.put(stateSig, new HashSet<String>()); } sessionVarsSet.get(stateSig).add(message.getSessionVars()); } } } }
// generate the set of test states/session variables. utilize existing traces... public Vector<String> genTestSessionVarsSet(String sig, String entry, String inputParas) { Vector<String> testStates = new Vector<String>(); // abstract states. Vector<String> testSessionVars = new Vector<String>(); // concrete session variables. for (String state : _stateConstructor.getStateSet()) { if (!testProfiles.get(sig).getStatesByEntry(entry).contains(state)) { // System.out.println(state); testStates.add(state); } } for (String state : testStates) { String sessionVar = selectSessionVarsByState( sig, entry, state, inputParas); // randomly pick a set of concrete session variables. testSessionVars.add(sessionVar); // include empty state. } return testSessionVars; }