int testElementIndex = -1;\r
\r
for (Node testNode : tests) {\r
- testElementIndex++;\r
- String testID = testNode.valueOf("@ID");\r
- String testIDLabel = Tools.notEmpty(testID) ? (testGroupID+'.'+testID) : (testGroupID+'.'+testElementIndex);\r
- String method = testNode.valueOf("method");\r
- String uri = testNode.valueOf("uri");\r
- String fullURL = Tools.glue(protoHostPort, "/", uri);\r
- String initURI = uri;\r
-\r
- String authIDForTest = testNode.valueOf("@auth");\r
- String currentAuthForTest = authsMap.map.get(authIDForTest);\r
- if (Tools.notEmpty(currentAuthForTest)){\r
- authForTest = currentAuthForTest; //else just run with current from last loop;\r
- }\r
- if (Tools.isEmpty(authForTest)){\r
- authForTest = defaultAuths.getDefaultAuth();\r
- }\r
-\r
- if (uri.indexOf("$")>-1){\r
- uri = evalStruct.eval(uri, serviceResultsMap, jexl, jc);\r
- }\r
- fullURL = fixupFullURL(fullURL, protoHostPort, uri);\r
-\r
- List<Integer> expectedCodes = new ArrayList<Integer>();\r
- String expectedCodesStr = testNode.valueOf("expectedCodes");\r
- if (Tools.notEmpty(expectedCodesStr)){\r
- String[] codesArray = expectedCodesStr.split(",");\r
- for (String code : codesArray){\r
- expectedCodes.add(new Integer(code));\r
- }\r
- }\r
-\r
- ServiceResult serviceResult;\r
- boolean isPOST = method.equalsIgnoreCase("POST");\r
- boolean isPUT = method.equalsIgnoreCase("PUT");\r
- if ( isPOST || isPUT ) {\r
- PartsStruct parts = PartsStruct.readParts(testNode, testID, xmlReplayBaseDir);\r
- if (Tools.notEmpty(parts.overrideTestID)) {\r
- testID = parts.overrideTestID;\r
+ try {\r
+ testElementIndex++;\r
+ String testID = testNode.valueOf("@ID");\r
+ String testIDLabel = Tools.notEmpty(testID) ? (testGroupID+'.'+testID) : (testGroupID+'.'+testElementIndex);\r
+ String method = testNode.valueOf("method");\r
+ String uri = testNode.valueOf("uri");\r
+ String fullURL = Tools.glue(protoHostPort, "/", uri);\r
+ String initURI = uri;\r
+\r
+ String authIDForTest = testNode.valueOf("@auth");\r
+ String currentAuthForTest = authsMap.map.get(authIDForTest);\r
+ if (Tools.notEmpty(currentAuthForTest)){\r
+ authForTest = currentAuthForTest; //else just run with current from last loop;\r
}\r
- if (isPOST){\r
- String csid = CSIDfromTestID(testNode, serviceResultsMap);\r
- if (Tools.notEmpty(csid)) uri = Tools.glue(uri, "/", csid+"/items/");\r
- } else if (isPUT) {\r
- uri = fromTestID(uri, testNode, serviceResultsMap);\r
+ if (Tools.isEmpty(authForTest)){\r
+ authForTest = defaultAuths.getDefaultAuth();\r
}\r
- if (parts.bDoingSinglePartPayload){\r
- serviceResult = XmlReplayTransport.doPOST_PUTFromXML(parts.singlePartPayloadFilename, protoHostPort, uri, "POST", XmlReplayTransport.APPLICATION_XML, evalStruct, authForTest, testIDLabel);\r
- } else {\r
- serviceResult = XmlReplayTransport.doPOST_PUTFromXML_Multipart(parts.filesList, parts.partsList, protoHostPort, uri, "POST", evalStruct, authForTest, testIDLabel);\r
- }\r
- results.add(serviceResult);\r
- if (isPOST){\r
- serviceResultsMap.put(testID, serviceResult); //PUTs do not return a Location, so don't add PUTs to serviceResultsMap.\r
+\r
+ if (uri.indexOf("$")>-1){\r
+ uri = evalStruct.eval(uri, serviceResultsMap, jexl, jc);\r
}\r
fullURL = fixupFullURL(fullURL, protoHostPort, uri);\r
- } else if (method.equalsIgnoreCase("DELETE")){\r
- String fromTestID = testNode.valueOf("fromTestID");\r
- ServiceResult pr = serviceResultsMap.get(fromTestID);\r
- if (pr!=null){\r
- serviceResult = XmlReplayTransport.doDELETE(pr.deleteURL, authForTest, testIDLabel, fromTestID);\r
- serviceResult.fromTestID = fromTestID;\r
+\r
+ List<Integer> expectedCodes = new ArrayList<Integer>();\r
+ String expectedCodesStr = testNode.valueOf("expectedCodes");\r
+ if (Tools.notEmpty(expectedCodesStr)){\r
+ String[] codesArray = expectedCodesStr.split(",");\r
+ for (String code : codesArray){\r
+ expectedCodes.add(new Integer(code.trim()));\r
+ }\r
+ }\r
+\r
+ ServiceResult serviceResult;\r
+ boolean isPOST = method.equalsIgnoreCase("POST");\r
+ boolean isPUT = method.equalsIgnoreCase("PUT");\r
+ if ( isPOST || isPUT ) {\r
+ PartsStruct parts = PartsStruct.readParts(testNode, testID, xmlReplayBaseDir);\r
+ if (Tools.notEmpty(parts.overrideTestID)) {\r
+ testID = parts.overrideTestID;\r
+ }\r
+ if (isPOST){\r
+ String csid = CSIDfromTestID(testNode, serviceResultsMap);\r
+ if (Tools.notEmpty(csid)) uri = Tools.glue(uri, "/", csid+"/items/");\r
+ } else if (isPUT) {\r
+ uri = fromTestID(uri, testNode, serviceResultsMap);\r
+ }\r
+ if (parts.bDoingSinglePartPayload){\r
+ serviceResult = XmlReplayTransport.doPOST_PUTFromXML(parts.singlePartPayloadFilename, protoHostPort, uri, "POST", XmlReplayTransport.APPLICATION_XML, evalStruct, authForTest, testIDLabel);\r
+ } else {\r
+ serviceResult = XmlReplayTransport.doPOST_PUTFromXML_Multipart(parts.filesList, parts.partsList, protoHostPort, uri, "POST", evalStruct, authForTest, testIDLabel);\r
+ }\r
results.add(serviceResult);\r
- if (serviceResult.gotExpectedResult()){\r
- serviceResultsMap.remove(fromTestID);\r
+ if (isPOST){\r
+ serviceResultsMap.put(testID, serviceResult); //PUTs do not return a Location, so don't add PUTs to serviceResultsMap.\r
}\r
- } else {\r
- if (Tools.notEmpty(fromTestID)){\r
- serviceResult = new ServiceResult();\r
- serviceResult.responseCode = 0;\r
- serviceResult.error = "ID not found in element fromTestID: "+fromTestID;\r
- System.err.println("****\r\nServiceResult: "+serviceResult.error+". SKIPPING TEST. Full URL: "+fullURL);\r
+ fullURL = fixupFullURL(fullURL, protoHostPort, uri);\r
+ } else if (method.equalsIgnoreCase("DELETE")){\r
+ String fromTestID = testNode.valueOf("fromTestID");\r
+ ServiceResult pr = serviceResultsMap.get(fromTestID);\r
+ if (pr!=null){\r
+ serviceResult = XmlReplayTransport.doDELETE(pr.deleteURL, authForTest, testIDLabel, fromTestID);\r
+ serviceResult.fromTestID = fromTestID;\r
+ results.add(serviceResult);\r
+ if (serviceResult.gotExpectedResult()){\r
+ serviceResultsMap.remove(fromTestID);\r
+ }\r
} else {\r
- serviceResult = XmlReplayTransport.doDELETE(fullURL, authForTest, testID, fromTestID);\r
+ if (Tools.notEmpty(fromTestID)){\r
+ serviceResult = new ServiceResult();\r
+ serviceResult.responseCode = 0;\r
+ serviceResult.error = "ID not found in element fromTestID: "+fromTestID;\r
+ System.err.println("****\r\nServiceResult: "+serviceResult.error+". SKIPPING TEST. Full URL: "+fullURL);\r
+ } else {\r
+ serviceResult = XmlReplayTransport.doDELETE(fullURL, authForTest, testID, fromTestID);\r
+ }\r
+ serviceResult.fromTestID = fromTestID;\r
+ results.add(serviceResult);\r
}\r
- serviceResult.fromTestID = fromTestID;\r
+ } else if (method.equalsIgnoreCase("GET")){\r
+ fullURL = fromTestID(fullURL, testNode, serviceResultsMap);\r
+ serviceResult = XmlReplayTransport.doGET(fullURL, authForTest, testIDLabel);\r
+ results.add(serviceResult);\r
+ } else if (method.equalsIgnoreCase("LIST")){\r
+ fullURL = fixupFullURL(fullURL, protoHostPort, uri);\r
+ String listQueryParams = ""; //TODO: empty for now, later may pick up from XML control file.\r
+ serviceResult = XmlReplayTransport.doLIST(fullURL, listQueryParams, authForTest, testIDLabel);\r
results.add(serviceResult);\r
+ } else {\r
+ throw new Exception("HTTP method not supported by XmlReplay: "+method);\r
}\r
- } else if (method.equalsIgnoreCase("GET")){\r
- fullURL = fromTestID(fullURL, testNode, serviceResultsMap);\r
- serviceResult = XmlReplayTransport.doGET(fullURL, authForTest, testIDLabel);\r
- results.add(serviceResult);\r
- } else if (method.equalsIgnoreCase("LIST")){\r
- fullURL = fixupFullURL(fullURL, protoHostPort, uri);\r
- String listQueryParams = ""; //TODO: empty for now, later may pick up from XML control file.\r
- serviceResult = XmlReplayTransport.doLIST(fullURL, listQueryParams, authForTest, testIDLabel);\r
- results.add(serviceResult);\r
- } else {\r
- throw new Exception("HTTP method not supported by XmlReplay: "+method);\r
- }\r
\r
- serviceResult.testID = testID;\r
- serviceResult.fullURL = fullURL;\r
- serviceResult.auth = authForTest;\r
- serviceResult.method = method;\r
- if (expectedCodes.size()>0){\r
- serviceResult.expectedCodes = expectedCodes;\r
+ serviceResult.testID = testID;\r
+ serviceResult.fullURL = fullURL;\r
+ serviceResult.auth = authForTest;\r
+ serviceResult.method = method;\r
+ if (expectedCodes.size()>0){\r
+ serviceResult.expectedCodes = expectedCodes;\r
+ }\r
+ if (Tools.isEmpty(serviceResult.testID)) serviceResult.testID = testIDLabel;\r
+ if (Tools.isEmpty(serviceResult.testGroupID)) serviceResult.testGroupID = testGroupID;\r
+\r
+ String serviceResultRow = serviceResult.dump(dump.dumpServiceResult);\r
+ String leader = (dump.dumpServiceResult == ServiceResult.DUMP_OPTIONS.detailed) ? "XmlReplay:"+testIDLabel+": ": "";\r
+ System.out.println(leader+serviceResultRow+"\r\n");\r
+ if (dump.payloads) System.out.println(serviceResult.result);\r
+ } catch (Throwable t) {\r
+ System.out.println("ERROR: XmlReplay experienced an error in a test node: "+testNode+" Throwable: "+t);\r
}\r
- if (Tools.isEmpty(serviceResult.testID)) serviceResult.testID = testIDLabel;\r
- if (Tools.isEmpty(serviceResult.testGroupID)) serviceResult.testGroupID = testGroupID;\r
-\r
- String serviceResultRow = serviceResult.dump(dump.dumpServiceResult);\r
- String leader = (dump.dumpServiceResult == ServiceResult.DUMP_OPTIONS.detailed) ? "XmlReplay:"+testIDLabel+": ": "";\r
- System.out.println(leader+serviceResultRow+"\r\n");\r
- if (dump.payloads) System.out.println(serviceResult.result);\r
}\r
if (Tools.isTrue(autoDeletePOSTS)&¶m_autoDeletePOSTS){\r
autoDelete(serviceResultsMap, "default");\r