📄 sampleresultconverter.java
字号:
writeItem(subResults[i], context, writer);
}
}
}
/**
* @param writer
* @param context
* @param res
* @param save
*/
protected void saveAssertions(HierarchicalStreamWriter writer, MarshallingContext context, SampleResult res,
SampleSaveConfiguration save) {
if (save.saveAssertions()) {
AssertionResult[] assertionResults = res.getAssertionResults();
for (int i = 0; i < assertionResults.length; i++) {
writeItem(assertionResults[i], context, writer);
}
}
}
/**
* @param writer
* @param res
* @param save
*/
protected void setAttributes(HierarchicalStreamWriter writer, MarshallingContext context, SampleResult res,
SampleSaveConfiguration save) {
if (save.saveTime())
writer.addAttribute(ATT_TIME, Long.toString(res.getTime()));
if (save.saveLatency())
writer.addAttribute(ATT_LATENCY, Long.toString(res.getLatency()));
if (save.saveTimestamp())
writer.addAttribute(ATT_TIME_STAMP, Long.toString(res.getTimeStamp()));
if (save.saveSuccess())
writer.addAttribute(ATT_SUCCESS,
Boolean.toString(res.isSuccessful()));
if (save.saveLabel())
writer.addAttribute(ATT_LABEL, ConversionHelp.encode(res.getSampleLabel()));
if (save.saveCode())
writer.addAttribute(ATT_RESPONSE_CODE, ConversionHelp.encode(res.getResponseCode()));
if (save.saveMessage())
writer.addAttribute(ATT_RESPONSE_MESSAGE, ConversionHelp.encode(res.getResponseMessage()));
if (save.saveThreadName())
writer.addAttribute(ATT_THREADNAME, ConversionHelp.encode(res.getThreadName()));
if (save.saveDataType())
writer.addAttribute(ATT_DATA_TYPE, ConversionHelp.encode(res.getDataType()));
if (save.saveEncoding())
writer.addAttribute(ATT_DATA_ENCODING, ConversionHelp.encode(res.getDataEncodingNoDefault()));
if (save.saveBytes())
writer.addAttribute(ATT_BYTES, String.valueOf(res.getBytes()));
if (save.saveSampleCount()){
writer.addAttribute(ATT_SAMPLE_COUNT, String.valueOf(res.getSampleCount()));
writer.addAttribute(ATT_ERROR_COUNT, String.valueOf(res.getErrorCount()));
}
if (save.saveThreadCounts()){
writer.addAttribute(ATT_GRP_THRDS, String.valueOf(res.getGroupThreads()));
writer.addAttribute(ATT_ALL_THRDS, String.valueOf(res.getAllThreads()));
}
if (save.saveHostname()){
SampleEvent event = (SampleEvent) context.get(SaveService.SAMPLE_EVENT_OBJECT);
if (event != null) {
writer.addAttribute(ATT_HOSTNAME, event.getHostname());
}
}
}
/**
* @param writer
* @param tag
* @param value
*/
protected void writeString(HierarchicalStreamWriter writer, String tag, String value) {
if (value != null) {
writer.startNode(tag);
writer.addAttribute(ATT_CLASS, JAVA_LANG_STRING);
writer.setValue(value);
writer.endNode();
}
}
/*
* (non-Javadoc)
*
* @see com.thoughtworks.xstream.converters.Converter#unmarshal(com.thoughtworks.xstream.io.HierarchicalStreamReader,
* com.thoughtworks.xstream.converters.UnmarshallingContext)
*/
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
SampleResult res = (SampleResult) createCollection(context.getRequiredType());
retrieveAttributes(reader, context, res);
while (reader.hasMoreChildren()) {
reader.moveDown();
Object subItem = readItem(reader, context, res);
retrieveItem(reader, context, res, subItem);
reader.moveUp();
}
// If we have a file, but no data, then read the file
String resultFileName = res.getResultFileName();
if (resultFileName.length()>0
&& res.getResponseData().length == 0) {
readFile(resultFileName,res);
}
return res;
}
/**
*
* @param reader
* @param context
* @param res
* @return true if the item was processed (for HTTPResultConverter)
*/
protected boolean retrieveItem(HierarchicalStreamReader reader, UnmarshallingContext context, SampleResult res,
Object subItem) {
String nodeName = reader.getNodeName();
if (subItem instanceof AssertionResult) {
res.addAssertionResult((AssertionResult) subItem);
} else if (subItem instanceof SampleResult) {
res.storeSubResult((SampleResult) subItem);
} else if (nodeName.equals(TAG_RESPONSE_HEADER)) {
res.setResponseHeaders((String) subItem);
} else if (nodeName.equals(TAG_REQUEST_HEADER)) {
res.setRequestHeaders((String) subItem);
} else if (nodeName.equals(TAG_RESPONSE_DATA)) {
final String responseData = (String) subItem;
if (responseData.length() > 0) {
final String dataEncoding = res.getDataEncodingWithDefault();
try {
res.setResponseData(responseData.getBytes(dataEncoding));
} catch (UnsupportedEncodingException e) {
res.setResponseData(("Can't support the char set: " + dataEncoding).getBytes());
res.setDataType(SampleResult.TEXT);
}
}
} else if (nodeName.equals(TAG_SAMPLER_DATA)) {
res.setSamplerData((String) subItem);
} else if (nodeName.equals(TAG_RESPONSE_FILE)) {
res.setResultFileName((String) subItem);
// Don't try restoring the URL TODO: wy not?
} else {
return false;
}
return true;
}
/**
* @param reader
* @param res
*/
protected void retrieveAttributes(HierarchicalStreamReader reader, UnmarshallingContext context, SampleResult res) {
res.setSampleLabel(ConversionHelp.decode(reader.getAttribute(ATT_LABEL)));
res.setDataEncoding(ConversionHelp.decode(reader.getAttribute(ATT_DATA_ENCODING)));
res.setDataType(ConversionHelp.decode(reader.getAttribute(ATT_DATA_TYPE)));
String oldrc=reader.getAttribute(ATT_RESPONSE_CODE_OLD);
if (oldrc!=null) {
res.setResponseCode(ConversionHelp.decode(oldrc));
} else {
res.setResponseCode(ConversionHelp.decode(reader.getAttribute(ATT_RESPONSE_CODE)));
}
res.setResponseMessage(ConversionHelp.decode(reader.getAttribute(ATT_RESPONSE_MESSAGE)));
res.setSuccessful(Converter.getBoolean(reader.getAttribute(ATT_SUCCESS), true));
res.setThreadName(ConversionHelp.decode(reader.getAttribute(ATT_THREADNAME)));
res.setStampAndTime(Converter.getLong(reader.getAttribute(ATT_TIME_STAMP)),
Converter.getLong(reader.getAttribute(ATT_TIME)));
res.setLatency(Converter.getLong(reader.getAttribute(ATT_LATENCY)));
res.setBytes(Converter.getInt(reader.getAttribute(ATT_BYTES)));
res.setSampleCount(Converter.getInt(reader.getAttribute(ATT_SAMPLE_COUNT),1)); // default is 1
res.setErrorCount(Converter.getInt(reader.getAttribute(ATT_ERROR_COUNT),0)); // default is 0
res.setGroupThreads(Converter.getInt(reader.getAttribute(ATT_GRP_THRDS)));
res.setAllThreads(Converter.getInt(reader.getAttribute(ATT_ALL_THRDS)));
}
protected void readFile(String resultFileName, SampleResult res) {
File in = null;
FileInputStream fis = null;
try {
in = new File(resultFileName);
fis = new FileInputStream(in);
ByteArrayOutputStream outstream = new ByteArrayOutputStream(res.getBytes());
byte[] buffer = new byte[4096];
int len;
while ((len = fis.read(buffer)) > 0) {
outstream.write(buffer, 0, len);
}
outstream.close();
res.setResponseData(outstream.toByteArray());
} catch (FileNotFoundException e) {
//log.warn(e.getLocalizedMessage());
} catch (IOException e) {
//log.warn(e.getLocalizedMessage());
} finally {
try {
if (fis != null) fis.close();
} catch (IOException e) {
}
}
}
/**
* @param arg0
*/
public SampleResultConverter(Mapper arg0) {
super(arg0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -