Index: src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java =================================================================== --- src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java (revision 1091668) +++ src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java (working copy) @@ -60,6 +60,7 @@ import org.apache.commons.httpclient.params.HttpClientParams; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.commons.httpclient.protocol.Protocol; +import org.apache.commons.io.input.CountingInputStream; import org.apache.jmeter.protocol.http.control.AuthManager; import org.apache.jmeter.protocol.http.control.Authorization; import org.apache.jmeter.protocol.http.control.CacheManager; @@ -244,15 +245,17 @@ res.setRequestHeaders(getConnectionHeaders(httpMethod)); // Request sent. Now get the response: - InputStream instream = httpMethod.getResponseBodyAsStream(); + InputStream instream = new CountingInputStream(httpMethod.getResponseBodyAsStream()); if (instream != null) {// will be null for HEAD try { Header responseHeader = httpMethod.getResponseHeader(HEADER_CONTENT_ENCODING); if (responseHeader!= null && ENCODING_GZIP.equals(responseHeader.getValue())) { - instream = new GZIPInputStream(instream); + InputStream tmpInput = new GZIPInputStream(instream); // tmp inputstream needs to hava a good counting + res.setResponseData(readResponse(res, tmpInput, (int) httpMethod.getResponseContentLength())); + } else { + res.setResponseData(readResponse(res, instream, (int) httpMethod.getResponseContentLength())); } - res.setResponseData(readResponse(res, instream, (int) httpMethod.getResponseContentLength())); } finally { JOrphanUtils.closeQuietly(instream); } @@ -290,11 +293,11 @@ } // record some sizes to allow HTTPSampleResult.getBytes() with different options - res.setContentLength((int) httpMethod.getResponseContentLength()); + res.setBodySize(((CountingInputStream) instream).getCount()); res.setHeadersSize(calculateHeadersSize(httpMethod)); if (log.isDebugEnabled()) { - log.debug("ResponseHeadersSize=" + res.getHeadersSize() + " Content-Length=" + res.getContentLength() - + " Total=" + (res.getHeadersSize() + res.getContentLength())); + log.debug("Response headersSize=" + res.getHeadersSize() + " bodySize=" + res.getBodySize() + + " Total=" + (res.getHeadersSize() + res.getBodySize())); } // If we redirected automatically, the URL may have changed Index: src/core/org/apache/jmeter/samplers/SampleResult.java =================================================================== --- src/core/org/apache/jmeter/samplers/SampleResult.java (revision 1091668) +++ src/core/org/apache/jmeter/samplers/SampleResult.java (working copy) @@ -93,6 +93,15 @@ private static final SampleResult[] EMPTY_SR = new SampleResult[0]; private static final AssertionResult[] EMPTY_AR = new AssertionResult[0]; + + private static final boolean GETBYTES_BODY_REALSIZE = + JMeterUtils.getPropDefault("sampleresult.getbytes.body_real_size", true); // $NON-NLS-1$ + + private static final boolean GETBYTES_HEADERS_SIZE = + JMeterUtils.getPropDefault("sampleresult.getbytes.headers_size", true); // $NON-NLS-1$ + + private static final boolean GETBYTES_NETWORK_SIZE = + GETBYTES_HEADERS_SIZE && GETBYTES_BODY_REALSIZE ? true : false; private SampleSaveConfiguration saveConfig; @@ -181,6 +190,10 @@ private int sampleCount = 1; private int bytes = 0; // Allows override of sample size in case sampler does not want to store all the data + + private int headersSize = 0; + + private int bodySize = 0; /** Currently active threads in this thread group */ private volatile int groupThreads = 0; @@ -1082,6 +1095,14 @@ * @return byte count */ public int getBytes() { + if (GETBYTES_NETWORK_SIZE) { + int tmpSum = this.getHeadersSize() + this.getBodySize(); + return tmpSum == 0 ? bytes : tmpSum; + } else if (GETBYTES_HEADERS_SIZE) { + return this.getHeadersSize(); + } else if (GETBYTES_BODY_REALSIZE) { + return this.getBodySize(); + } return bytes == 0 ? responseData.length : bytes; } @@ -1192,4 +1213,37 @@ public void removeSubResults() { this.subResults = null; } + + /** + * Set the headers size in bytes + * + * @param size + */ + public void setHeadersSize(int size) { + this.headersSize = size; + } + + /** + * Get the headers size in bytes + * + * @return the headers size + */ + public int getHeadersSize() { + return headersSize; + } + + /** + * @return the body size in bytes + */ + public int getBodySize() { + return bodySize == 0 ? responseData.length : bodySize; + } + + /** + * @param bodySize the body size to set + */ + public void setBodySize(int bodySize) { + this.bodySize = bodySize; + } + } Index: test/src/org/apache/jmeter/assertions/SizeAssertionTest.java =================================================================== --- test/src/org/apache/jmeter/assertions/SizeAssertionTest.java (revision 1091668) +++ test/src/org/apache/jmeter/assertions/SizeAssertionTest.java (working copy) @@ -39,6 +39,7 @@ jmctx = JMeterContextService.getContext(); assertion = new SizeAssertion(); assertion.setThreadContext(jmctx); + assertion.setTestFieldResponseBody(); vars = new JMeterVariables(); jmctx.setVariables(vars); sample0 = new SampleResult(); Index: bin/jmeter.properties =================================================================== --- bin/jmeter.properties (revision 1091668) +++ bin/jmeter.properties (working copy) @@ -243,17 +243,6 @@ #log_config=logkit.xml #--------------------------------------------------------------------------- -# HTTP common configuration -#--------------------------------------------------------------------------- - -# Response size calculate method -# Include headers: add the headers size in total of response size -# Use Content-Length: if web server uses a deflate/gzip module, -# gets the value of Content-Length to get response size rather uncompressed length -#http.getbytes.include.headers=false -#http.getbytes.use.contentlength=false - -#--------------------------------------------------------------------------- # HTTP Java configuration #--------------------------------------------------------------------------- @@ -699,6 +688,14 @@ # The encoding to be used if none is provided (default ISO-8859-1) #sampleresult.default.encoding=ISO-8859-1 +# Network response size calculation method +# Use real size: number of bytes for response body return by webserver +# (i.e. the network bytes received for response) +# if set to false, the (uncompressed) response data size will used (default before 2.4.1) +# Include headers: add the headers size in real size +#sampleresult.getbytes.body_real_size=true +#sampleresult.getbytes.headers_size=true + # CookieManager behaviour - should cookies with null/empty values be deleted? # Default is true. Use false to revert to original behaviour #CookieManager.delete_null_cookies=true Index: src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java =================================================================== --- src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java (revision 1091668) +++ src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java (working copy) @@ -34,6 +34,7 @@ import java.util.Set; import java.util.zip.GZIPInputStream; +import org.apache.commons.io.input.CountingInputStream; import org.apache.jmeter.protocol.http.control.AuthManager; import org.apache.jmeter.protocol.http.control.Authorization; import org.apache.jmeter.protocol.http.control.CacheManager; @@ -241,12 +242,13 @@ // works OK even if ContentEncoding is null boolean gzipped = ENCODING_GZIP.equals(conn.getContentEncoding()); - + InputStream instream = null; try { + instream = new CountingInputStream(conn.getInputStream()); if (gzipped) { - in = new BufferedInputStream(new GZIPInputStream(conn.getInputStream())); + in = new BufferedInputStream(new GZIPInputStream(instream)); } else { - in = new BufferedInputStream(conn.getInputStream()); + in = new BufferedInputStream(instream); } } catch (IOException e) { if (! (e.getCause() instanceof FileNotFoundException)) @@ -281,7 +283,9 @@ } in = new BufferedInputStream(conn.getErrorStream()); } - return readResponse(res, in, contentLength); + byte[] responseData = readResponse(res, in, contentLength); + res.setBodySize(((CountingInputStream) instream).getCount()); + return responseData; } /** @@ -562,14 +566,12 @@ res.setRedirectLocation(conn.getHeaderField(HEADER_LOCATION)); } - // record some sizes to allow HTTPSampleResult.getBytes() with different options - String contentLength = conn.getHeaderField(HEADER_CONTENT_LENGTH); - res.setContentLength(contentLength != null ? Integer.parseInt(contentLength) : 0); // 0 to getBytes with responseData length + // record headers size to allow HTTPSampleResult.getBytes() with different options res.setHeadersSize(responseHeaders.replaceAll("\n", "\r\n") // $NON-NLS-1$ $NON-NLS-2$ .length() + 2); // add 2 for a '\r\n' at end of headers (before data) if (log.isDebugEnabled()) { - log.debug("ResponseHeadersSize=" + res.getHeadersSize() + " Content-Length=" + res.getContentLength() - + " Total=" + (res.getHeadersSize() + res.getContentLength())); + log.debug("Response headersSize=" + res.getHeadersSize() + " bodySize=" + res.getBodySize() + + " Total=" + (res.getHeadersSize() + res.getBodySize())); } // If we redirected automatically, the URL may have changed Index: src/core/org/apache/jmeter/resources/messages.properties =================================================================== --- src/core/org/apache/jmeter/resources/messages.properties (revision 1091668) +++ src/core/org/apache/jmeter/resources/messages.properties (working copy) @@ -65,16 +65,19 @@ appearance=Look and Feel argument_must_not_be_negative=The Argument must not be negative\! assertion_assume_success=Ignore Status +assertion_body_resp=Response Body assertion_code_resp=Response Code assertion_contains=Contains assertion_equals=Equals assertion_headers=Response Headers assertion_matches=Matches assertion_message_resp=Response Message +assertion_network_size=Full Response assertion_not=Not assertion_pattern_match_rules=Pattern Matching Rules assertion_patterns_to_test=Patterns to Test assertion_resp_field=Response Field to Test +assertion_resp_size_field=Response Size Field to Test assertion_substring=Substring assertion_text_resp=Text Response assertion_textarea_label=Assertions\: @@ -988,6 +991,8 @@ view_results_sample_start=Sample Start: view_results_search_pane=Search pane view_results_size_in_bytes=Size in bytes: +view_results_size_body_in_bytes=Body size in bytes: +view_results_size_headers_in_bytes=Headers size in bytes: view_results_tab_assertion=Assertion result view_results_tab_request=Request view_results_tab_response=Response data Index: src/components/org/apache/jmeter/assertions/gui/SizeAssertionGui.java =================================================================== --- src/components/org/apache/jmeter/assertions/gui/SizeAssertionGui.java (revision 1091668) +++ src/components/org/apache/jmeter/assertions/gui/SizeAssertionGui.java (working copy) @@ -20,6 +20,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; + import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ButtonGroup; @@ -38,7 +39,22 @@ */ public class SizeAssertionGui extends AbstractAssertionGui implements ActionListener { - private static final long serialVersionUID = 240L; + private static final long serialVersionUID = 241L; + + /** Radio button indicating that the body response should be tested. */ + private JRadioButton responseBodyButton; + + /** Radio button indicating that the network response size should be tested. */ + private JRadioButton responseNetworkButton; + + /** Radio button indicating that the responseMessage should be tested. */ + private JRadioButton responseMessageButton; + + /** Radio button indicating that the responseCode should be tested. */ + private JRadioButton responseCodeButton; + + /** Radio button indicating that the headers should be tested. */ + private JRadioButton responseHeadersButton; private JTextField size; @@ -69,6 +85,18 @@ public void modifyTestElement(TestElement el) { configureTestElement(el); SizeAssertion assertion = (SizeAssertion) el; + + if (responseHeadersButton.isSelected()) { + assertion.setTestFieldResponseHeaders(); + } else if (responseBodyButton.isSelected()) { + assertion.setTestFieldResponseBody(); + } else if (responseCodeButton.isSelected()) { + assertion.setTestFieldResponseCode(); + } else if (responseMessageButton.isSelected()) { + assertion.setTestFieldResponseMessage(); + } else { + assertion.setTestFieldNetworkSize(); + } assertion.setAllowedSize(size.getText()); assertion.setCompOper(getState()); saveScopeSettings(assertion); @@ -81,6 +109,12 @@ public void clearGui() { super.clearGui(); + responseNetworkButton.setSelected(true); // default + responseHeadersButton.setSelected(false); + responseBodyButton.setSelected(false); + responseCodeButton.setSelected(false); + responseMessageButton.setSelected(false); + size.setText(""); //$NON-NLS-1$ equalButton.setSelected(true); notequalButton.setSelected(false); @@ -98,6 +132,18 @@ size.setText(assertion.getAllowedSize()); setState(assertion.getCompOper()); showScopeSettings(assertion); + + if (assertion.isTestFieldResponseHeaders()) { + responseHeadersButton.setSelected(true); + } else if (assertion.isTestFieldResponseBody()) { + responseBodyButton.setSelected(true); + } else if (assertion.isTestFieldResponseCode()) { + responseCodeButton.setSelected(true); + } else if (assertion.isTestFieldResponseMessage()) { + responseMessageButton.setSelected(true); + } else { + responseNetworkButton.setSelected(true); + } } /** @@ -139,6 +185,7 @@ add(makeTitlePanel()); add(createScopePanel(true)); + add(createFieldPanel()); // USER_INPUT JPanel sizePanel = new JPanel(); @@ -153,6 +200,40 @@ add(sizePanel); } + + /** + * Create a panel allowing the user to choose which response field should be + * tested. + * + * @return a new panel for selecting the response field + */ + private JPanel createFieldPanel() { + JPanel panel = new JPanel(); + panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("assertion_resp_size_field"))); //$NON-NLS-1$ + + responseNetworkButton = new JRadioButton(JMeterUtils.getResString("assertion_network_size")); //$NON-NLS-1$ + responseHeadersButton = new JRadioButton(JMeterUtils.getResString("assertion_headers")); //$NON-NLS-1$ + responseBodyButton = new JRadioButton(JMeterUtils.getResString("assertion_body_resp")); //$NON-NLS-1$ + responseCodeButton = new JRadioButton(JMeterUtils.getResString("assertion_code_resp")); //$NON-NLS-1$ + responseMessageButton = new JRadioButton(JMeterUtils.getResString("assertion_message_resp")); //$NON-NLS-1$ + + ButtonGroup group = new ButtonGroup(); + group.add(responseNetworkButton); + group.add(responseHeadersButton); + group.add(responseBodyButton); + group.add(responseCodeButton); + group.add(responseMessageButton); + + panel.add(responseNetworkButton); + panel.add(responseHeadersButton); + panel.add(responseBodyButton); + panel.add(responseCodeButton); + panel.add(responseMessageButton); + + responseNetworkButton.setSelected(true); + + return panel; + } private Box createComparatorButtonPanel() { ButtonGroup group = new ButtonGroup(); Index: src/components/org/apache/jmeter/visualizers/SamplerResultTab.java =================================================================== --- src/components/org/apache/jmeter/visualizers/SamplerResultTab.java (revision 1091668) +++ src/components/org/apache/jmeter/visualizers/SamplerResultTab.java (working copy) @@ -227,6 +227,8 @@ statsBuff.append(JMeterUtils.getResString("view_results_load_time")).append(sampleResult.getTime()).append(NL); //$NON-NLS-1$ statsBuff.append(JMeterUtils.getResString("view_results_latency")).append(sampleResult.getLatency()).append(NL); //$NON-NLS-1$ statsBuff.append(JMeterUtils.getResString("view_results_size_in_bytes")).append(sampleResult.getBytes()).append(NL); //$NON-NLS-1$ + statsBuff.append(JMeterUtils.getResString("view_results_size_headers_in_bytes")).append(sampleResult.getHeadersSize()).append(NL); //$NON-NLS-1$ + statsBuff.append(JMeterUtils.getResString("view_results_size_body_in_bytes")).append(sampleResult.getBodySize()).append(NL); //$NON-NLS-1$ statsBuff.append(JMeterUtils.getResString("view_results_sample_count")).append(sampleResult.getSampleCount()).append(NL); //$NON-NLS-1$ statsBuff.append(JMeterUtils.getResString("view_results_error_count")).append(sampleResult.getErrorCount()).append(NL); //$NON-NLS-1$ statsDoc.insertString(statsDoc.getLength(), statsBuff.toString(), null); @@ -280,6 +282,8 @@ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_load_time"), sampleResult.getTime())); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_latency"), sampleResult.getLatency())); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_size_in_bytes"), sampleResult.getBytes())); //$NON-NLS-1$ + resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_size_headers_in_bytes"), sampleResult.getHeadersSize())); //$NON-NLS-1$ + resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_size_body_in_bytes"), sampleResult.getBodySize())); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_sample_count"), sampleResult.getSampleCount())); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_error_count"), sampleResult.getErrorCount())); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_response_code"), responseCode)); //$NON-NLS-1$ Index: src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampleResult.java =================================================================== --- src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampleResult.java (revision 1091668) +++ src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampleResult.java (working copy) @@ -23,7 +23,6 @@ import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.samplers.SampleResult; -import org.apache.jmeter.util.JMeterUtils; /** * This is a specialisation of the SampleResult class for the HTTP protocol. @@ -32,23 +31,10 @@ public class HTTPSampleResult extends SampleResult { private static final long serialVersionUID = 240L; - - private static final boolean GETBYTES_INCLUDE_HEADERS = - JMeterUtils.getPropDefault("http.getbytes.include.headers", false); // $NON-NLS-1$ - - private static final boolean GETBYTES_USE_CONTENTLENGTH = - JMeterUtils.getPropDefault("http.getbytes.use.contentlength", false); // $NON-NLS-1$ - - private static final boolean GETBYTES_HEADERS_CONTENTLENGTH = - GETBYTES_INCLUDE_HEADERS && GETBYTES_USE_CONTENTLENGTH ? true : false; private String cookies = ""; // never null private String method; - - private int headersSize = 0; - - private int contentLength = 0; /** * The raw value of the Location: header; may be null. @@ -230,53 +216,4 @@ setResponseMessage(HTTP_NO_CONTENT_MSG); } - /** - * Set the headers size in bytes - * - * @param size - */ - public void setHeadersSize(int size) { - this.headersSize = size; - } - - /** - * Get the headers size in bytes - * - * @return the headers size - */ - public int getHeadersSize() { - return headersSize; - } - - /** - * @return the contentLength - */ - public int getContentLength() { - return contentLength == 0 ? super.getBytes() : contentLength; - } - - /** - * @param contentLength the contentLength to set - */ - public void setContentLength(int contentLength) { - this.contentLength = contentLength; - } - - /* - * (non-Javadoc) - * - * @see org.apache.jmeter.samplers.SampleResult#getBytes() - */ - @Override - public int getBytes() { - if (GETBYTES_HEADERS_CONTENTLENGTH) { - return headersSize + contentLength; - } else if (GETBYTES_INCLUDE_HEADERS) { - return headersSize + super.getBytes(); - } else if (GETBYTES_USE_CONTENTLENGTH) { - return contentLength; - } - return super.getBytes(); // Default - } - } Index: src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java =================================================================== --- src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java (revision 1091668) +++ src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java (working copy) @@ -308,10 +308,10 @@ // record some sizes to allow HTTPSampleResult.getBytes() with different options long totalBytes = metrics.getReceivedBytesCount(); res.setHeadersSize((int) headerBytes); - res.setContentLength((int)(totalBytes - headerBytes)); + res.setBodySize((int)(totalBytes - headerBytes)); if (log.isDebugEnabled()) { - log.debug("ResponseHeadersSize=" + res.getHeadersSize() + " Content-Length=" + res.getContentLength() - + " Total=" + (res.getHeadersSize() + res.getContentLength())); + log.debug("ResponseHeadersSize=" + res.getHeadersSize() + " Content-Length=" + res.getBodySize() + + " Total=" + (res.getHeadersSize() + res.getBodySize())); } // If we redirected automatically, the URL may have changed Index: src/components/org/apache/jmeter/assertions/SizeAssertion.java =================================================================== --- src/components/org/apache/jmeter/assertions/SizeAssertion.java (revision 1091668) +++ src/components/org/apache/jmeter/assertions/SizeAssertion.java (working copy) @@ -34,7 +34,7 @@ */ public class SizeAssertion extends AbstractScopedAssertion implements Serializable, Assertion { - private static final long serialVersionUID = 233L; + private static final long serialVersionUID = 241L; // * Static int to signify the type of logical comparitor to assert public final static int EQUAL = 1; @@ -53,6 +53,18 @@ private static final String SIZE_KEY = "SizeAssertion.size"; // $NON-NLS-1$ private static final String OPERATOR_KEY = "SizeAssertion.operator"; // $NON-NLS-1$ + + private final static String TEST_FIELD = "Assertion.test_field"; // $NON-NLS-1$ + + private final static String RESPONSE_NETWORK_SIZE = "SizeAssertion.response_network_size"; // $NON-NLS-1$ + + private final static String RESPONSE_HEADERS = "SizeAssertion.response_headers"; // $NON-NLS-1$ + + private final static String RESPONSE_BODY = "SizeAssertion.response_data"; // $NON-NLS-1$ + + private final static String RESPONSE_CODE = "SizeAssertion.response_code"; // $NON-NLS-1$ + + private final static String RESPONSE_MESSAGE = "SizeAssertion.response_message"; // $NON-NLS-1$ /** * Returns the result of the Assertion. @@ -72,6 +84,14 @@ result.setFailureMessage("Error parsing variable name: "+variableName+" value: "+value); return result; } + } else if (isTestFieldResponseHeaders()) { + resultSize = response.getHeadersSize(); + } else if (isTestFieldResponseBody()) { + resultSize = response.getBodySize(); + } else if (isTestFieldResponseCode()) { + resultSize = response.getResponseCode().length(); + } else if (isTestFieldResponseMessage()) { + resultSize = response.getResponseMessage().length(); } else { resultSize = response.getBytes(); } @@ -168,4 +188,53 @@ } return result ? "" : comparatorErrorMessage; } + + private void setTestField(String testField) { + setProperty(TEST_FIELD, testField); + } + + public void setTestFieldNetworkSize(){ + setTestField(RESPONSE_NETWORK_SIZE); + } + + public void setTestFieldResponseHeaders(){ + setTestField(RESPONSE_HEADERS); + } + + public void setTestFieldResponseBody(){ + setTestField(RESPONSE_BODY); + } + + public void setTestFieldResponseCode(){ + setTestField(RESPONSE_CODE); + } + + public void setTestFieldResponseMessage(){ + setTestField(RESPONSE_MESSAGE); + } + + public String getTestField() { + return getPropertyAsString(TEST_FIELD); + } + + public boolean isTestFieldNetworkSize(){ + return RESPONSE_NETWORK_SIZE.equals(getTestField()); + } + + public boolean isTestFieldResponseHeaders(){ + return RESPONSE_HEADERS.equals(getTestField()); + } + + public boolean isTestFieldResponseBody(){ + return RESPONSE_BODY.equals(getTestField()); + } + + public boolean isTestFieldResponseCode(){ + return RESPONSE_CODE.equals(getTestField()); + } + + public boolean isTestFieldResponseMessage(){ + return RESPONSE_MESSAGE.equals(getTestField()); + } + }