public List<Map<String, Object>> cleanDocs(ProcessorResult<List<Map<String, Object>>> result) { List<Map<String,Object>> docs = result.getResult(); StringBuffer buffer = new StringBuffer(); boolean failed = false; List<Map<String, Object>> ret = new ArrayList<>(); if(result.failed()) { failed = true; result.getBadResults(buffer); buffer.append(String.format("%d Valid messages processed", docs.size())).append("\n"); for (Map<String, Object> doc : docs) { Map<String, Object> msg = new HashMap<>(); for (Map.Entry<String, Object> kv : doc.entrySet()) { //for writers like solr who modify the keys, we want to undo that if we can buffer.append(cleanField(kv.getKey())).append(kv.getValue().toString()).append("\n"); } } Assert.fail(buffer.toString()); }else { for (Map<String, Object> doc : docs) { Map<String, Object> msg = new HashMap<>(); for (Map.Entry<String, Object> kv : doc.entrySet()) { //for writers like solr who modify the keys, we want to undo that if we can msg.put(cleanField(kv.getKey()), kv.getValue()); } ret.add(msg); } } return ret; }
public void runTest(ParserDriver driver) throws Exception { String sensorType = driver.getSensorType(); inputMessages = TestUtils.readSampleData(SampleDataUtils.getSampleDataPath("..", sensorType, TestDataType.RAW)); ProcessorResult<List<byte[]>> result = driver.run(inputMessages); List<byte[]> outputMessages = result.getResult(); StringBuffer buffer = new StringBuffer(); if (result.failed()){ result.getBadResults(buffer); buffer.append(String.format("%d Valid Messages Processed", outputMessages.size())).append("\n"); dumpParsedMessages(outputMessages,buffer); Assert.fail(buffer.toString()); } else { List<ParserValidation> validations = getValidations(); if (validations == null || validations.isEmpty()) { buffer.append("No validations configured for sensorType ").append(sensorType).append(". Dumping parsed messages").append("\n"); dumpParsedMessages(outputMessages,buffer); Assert.fail(buffer.toString()); } else { for (ParserValidation validation : validations) { System.out.println("Running " + validation.getName() + " on sensorType " + sensorType); validation.validate(sensorType, outputMessages); } } } }