⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sampleresultconverter.java

📁 测试工具
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				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 + -