apache / jmeter

Apache JMeter open-source load testing tool for analyzing and measuring the performance of a variety of services
https://jmeter.apache.org/
Apache License 2.0
8.3k stars 2.09k forks source link

Failure Message blank in non XML output #1978

Closed asfimport closed 17 years ago

asfimport commented 17 years ago

Kathy Mitchell (Bug 42919): I have a very simple jmeter acceptance test script that writes errors to an Aggregate Report listener. When I have 'Save As XML' turned OFF I don't get anything in the Assertion Results Failure Message when the assertion that fails in not the first assertion under the HTTP request in the jmx script. The script is attached below. The item failing in my test is the 'Error Page Response Assertion'. For Key Segment 5, the failure message does not print because the assertion is the second one listed. For Key Segment 6, I moved the assertion to be first and the message prints.

I had this problem with JMeter 2.2. I installed 2.3RC3 and I'm still having the same problem.

Sample Output:

1184683773703,2091,Key Segments 5 (client 9),200,OK,Main thread 1-1,false,,1437 1184683775794,790,Key Segments 6 (client 9),200,OK,Main thread 1-1,false,Test failed, text expected not to contain //error/error_pages.css/,1437

jmx script:

<?xml version="1.0" encoding="UTF-8"?> <jmeterTestPlan version="1.2" properties="1.8"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Acceptance Test Plan" enabled="true"> <boolProp name="TestPlan.functional_mode">false</boolProp> <stringProp name="TestPlan.comments"></stringProp> <stringProp name="TestPlan.user_define_classpath"></stringProp> <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="periodTypeKey" elementType="Argument"> <stringProp name="Argument.name">periodTypeKey</stringProp> <stringProp name="Argument.value">c1.periodType</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="sDateKey" elementType="Argument"> <stringProp name="Argument.name">sDateKey</stringProp> <stringProp name="Argument.value">c1.sDate</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="periodTypeValue" elementType="Argument"> <stringProp name="Argument.name">periodTypeValue</stringProp> <stringProp name="Argument.value">1</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="sDateValue" elementType="Argument"> <stringProp name="Argument.name">sDateValue</stringProp> <stringProp name="Argument.value">${P(sDateValue)}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="navigationID" elementType="Argument"> <stringProp name="Argument.name">navigationID</stringProp> <stringProp name="Argument.value">navigationID</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="confViewKey" elementType="Argument"> <stringProp name="Argument.name">confViewKey</stringProp> <stringProp name="Argument.value">confView</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="viewTypeKey" elementType="Argument"> <stringProp name="Argument.name">viewTypeKey</stringProp> <stringProp name="Argument.value">viewType</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="loopCount" elementType="Argument"> <stringProp name="Argument.name">loopCount</stringProp> <stringProp name="Argument.value">${P(loopCount)}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="threadCount" elementType="Argument"> <stringProp name="Argument.name">threadCount</stringProp> <stringProp name="Argument.value">${P(threadCount)}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="rampTime" elementType="Argument"> <stringProp name="Argument.name">rampTime</stringProp> <stringProp name="Argument.value">${P(rampTime)}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="configDir" elementType="Argument"> <stringProp name="Argument.name">configDir</stringProp> <stringProp name="Argument.value">${P(configDir)}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="configFile" elementType="Argument"> <stringProp name="Argument.name">configFile</stringProp> <stringProp name="Argument.value">${P(configFile)}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> </TestPlan> <hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Main thread" enabled="true"> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.num_threads">${threadCount}</stringProp> <stringProp name="ThreadGroup.delay"></stringProp> <longProp name="ThreadGroup.start_time">1116573111000</longProp> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <stringProp name="ThreadGroup.ramp_time">${rampTime}</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">1</stringProp> </elementProp> <longProp name="ThreadGroup.end_time">1116573111000</longProp> </ThreadGroup> <hashTree> <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> <stringProp name="WhileController.condition">${clientID}</stringProp> </WhileController> <hashTree> <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Data Set Config" enabled="true"> <stringProp name="delimiter">\t</stringProp> <boolProp name="recycle">false</boolProp> <stringProp name="filename">${configDir} ${configFile}.config</stringProp> <stringProp name="variableNames">clientID,clientType,username,password,hostName,port</strin gProp> <stringProp name="fileEncoding"></stringProp> </CSVDataSet> <hashTree/> <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If valid clientType" enabled="true"> <stringProp name="IfController.condition">"${clientType} "=="hybrid"||"${clientType} "=="content"||"${clientType} "=="travel"||"${clientType} "=="finance"||"${clientType} "=="retail"||"${clientType} "=="SEM"</stringProp> </IfController> <hashTree> <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true"> <stringProp name="HTTPSampler.domain">${hostName}</stringProp> <stringProp name="HTTPSampler.path"></stringProp> <stringProp name="HTTPSampler.port">${port}</stringProp> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.protocol">HTTP</stringProp> </ConfigTestElement> <hashTree/> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Login requests" enabled="true"/> <hashTree> <HTTPSampler2 guiclass="HttpTestSampleGui2" testclass="HTTPSampler2" testname="Login Request (client ${clientID} - ${hostName} - ${clientType})" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">true</boolProp> <stringProp name="Argument.name">clientID</stringProp> <stringProp name="Argument.value">${clientID} </stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">true</boolProp> <stringProp name="Argument.name">username</stringProp> <stringProp name="Argument.value">${username} </stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">true</boolProp> <stringProp name="Argument.name">password</stringProp> <stringProp name="Argument.value">${password} </stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">marketforce/Login</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <stringProp name="HTTPSampler.mimetype"></stringProp> <stringProp name="HTTPSampler.FILE_NAME"></stringProp> <stringProp name="HTTPSampler.FILE_FIELD"></stringProp> <stringProp name="HTTPSampler.monitor">false</stringProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSampler2> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Error Page Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="- 1225098100">/error/error_pages.css</stringProp> </collectionProp> <stringProp name="Assertion.assume_success">false</stringProp> <intProp name="Assertion.test_type">6</intProp> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> </ResponseAssertion> <hashTree/> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Not 200 Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="49586">200</stringProp> </collectionProp> <stringProp name="Assertion.assume_success">false</stringProp> <intProp name="Assertion.test_type">1</intProp> <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> </ResponseAssertion> <hashTree/> <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Login Timeout" enabled="true"> <stringProp name="DurationAssertion.duration">120000</stringProp> </DurationAssertion> <hashTree/> </hashTree> <HTTPSampler2 guiclass="HttpTestSampleGui2" testclass="HTTPSampler2" testname="Login Failed Test (client ${clientID} - ${hostName} - ${clientType})" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">${periodTypeKey} </stringProp> <stringProp name="Argument.value">${periodTypeValue} </stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">${sDateKey}</stringProp> <stringProp name="Argument.value">${sDateValue} </stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">${navigationID} </stringProp> <stringProp name="Argument.value">/media/marketingSummary</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">marketforce</stringProp> <boolProp name="HTTPSampler.follow_redirects">false</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <stringProp name="HTTPSampler.mimetype"></stringProp> <stringProp name="HTTPSampler.FILE_NAME"></stringProp> <stringProp name="HTTPSampler.FILE_FIELD"></stringProp> <stringProp name="HTTPSampler.monitor">false</stringProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSampler2> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Not 200 Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="49586">200</stringProp> </collectionProp> <stringProp name="Assertion.assume_success">false</stringProp> <intProp name="Assertion.test_type">1</intProp> <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> </ResponseAssertion> <hashTree/> </hashTree> </hashTree> <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="Cookie manager" enabled="true"> <collectionProp name="CookieManager.cookies"/> <boolProp name="CookieManager.clearEachIteration">true</boolProp> </CookieManager> <hashTree/> <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">true</boolProp> <stringProp name="LoopController.loops">${loopCount}</stringProp> </LoopController> <hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Home" enabled="true"/> <hashTree> <HTTPSampler2 guiclass="HttpTestSampleGui2" testclass="HTTPSampler2" testname="Home Page (client ${clientID} - ${hostName} - ${clientType})" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">${navigationID} </stringProp> <stringProp name="Argument.value">/homepage</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">reset</stringProp> <stringProp name="Argument.value">true</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path"></stringProp> <boolProp name="HTTPSampler.follow_redirects">false</boolProp> <boolProp name="HTTPSampler.auto_redirects">true</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <stringProp name="HTTPSampler.mimetype"></stringProp> <stringProp name="HTTPSampler.FILE_NAME"></stringProp> <stringProp name="HTTPSampler.FILE_FIELD"></stringProp> <stringProp name="HTTPSampler.monitor">false</stringProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSampler2> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="(Home Page) Error Page Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="- 1225098100">/error/error_pages.css</stringProp> </collectionProp> <stringProp name="Assertion.assume_success">false</stringProp> <intProp name="Assertion.test_type">6</intProp> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> </ResponseAssertion> <hashTree/> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="(Home Page) Not 200 Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="49586">200</stringProp> </collectionProp> <stringProp name="Assertion.assume_success">false</stringProp> <intProp name="Assertion.test_type">1</intProp> <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> </ResponseAssertion> <hashTree/> <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Home Page Timeout" enabled="true"> <stringProp name="DurationAssertion.duration">120000</stringProp> </DurationAssertion> <hashTree/> </hashTree> </hashTree> <RandomOrderController guiclass="RandomOrderControllerGui" testclass="RandomOrderController" testname="Random Order Controller" enabled="true"/> <hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Profile Mining" enabled="true"/> <hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Key Segments" enabled="true"/> <hashTree> <HTTPSampler2 guiclass="HttpTestSampleGui2" testclass="HTTPSampler2" testname="Key Segments 5 (client ${clientID} - ${hostName} - ${clientType})" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">${periodTypeKey} </stringProp> <stringProp name="Argument.value">${periodTypeValue}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">${sDateKey} </stringProp> <stringProp name="Argument.value">${sDateValue} </stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">${navigationID} </stringProp> <stringProp name="Argument.value">/profileMining/keySeg</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">l1.sfilter</stringProp> <stringProp name="Argument.value">S</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">marketforce</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <stringProp name="HTTPSampler.mimetype"></stringProp> <stringProp name="HTTPSampler.FILE_NAME"></stringProp> <stringProp name="HTTPSampler.FILE_FIELD"></stringProp> <stringProp name="HTTPSampler.monitor">false</stringProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSampler2> <hashTree> <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Key Segments 5 Timeout" enabled="true"> <stringProp name="DurationAssertion.duration">120000</stringProp> </DurationAssertion> <hashTree/> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="(Key Segments 5) Error Page Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="- 1225098100">/error/error_pages.css</stringProp> </collectionProp> <stringProp name="Assertion.assume_success">false</stringProp> <intProp name="Assertion.test_type">6</intProp> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> </ResponseAssertion> <hashTree/> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="(Key Segments 5) Not 200 Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="49586">200</stringProp> </collectionProp> <stringProp name="Assertion.assume_success">false</stringProp> <intProp name="Assertion.test_type">1</intProp> <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> </ResponseAssertion> <hashTree/> </hashTree> <HTTPSampler2 guiclass="HttpTestSampleGui2" testclass="HTTPSampler2" testname="Key Segments 6 (client ${clientID} - ${hostName} - ${clientType})" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">${periodTypeKey} </stringProp> <stringProp name="Argument.value">${periodTypeValue}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">${sDateKey} </stringProp> <stringProp name="Argument.value">${sDateValue} </stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">${navigationID} </stringProp> <stringProp name="Argument.value">/profileMining/keySeg</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">l1.sfilter</stringProp> <stringProp name="Argument.value">D</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">marketforce</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <stringProp name="HTTPSampler.mimetype"></stringProp> <stringProp name="HTTPSampler.FILE_NAME"></stringProp> <stringProp name="HTTPSampler.FILE_FIELD"></stringProp> <stringProp name="HTTPSampler.monitor">false</stringProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSampler2> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="(Key Segments 6) Error Page Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="- 1225098100">/error/error_pages.css</stringProp> </collectionProp> <stringProp name="Assertion.assume_success">false</stringProp> <intProp name="Assertion.test_type">6</intProp> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> </ResponseAssertion> <hashTree/> <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Key Segments 6 Timeout" enabled="true"> <stringProp name="DurationAssertion.duration">120000</stringProp> </DurationAssertion> <hashTree/> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="(Key Segments 6) Not 200 Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="49586">200</stringProp> </collectionProp> <stringProp name="Assertion.assume_success">false</stringProp> <intProp name="Assertion.test_type">1</intProp> <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> </ResponseAssertion> <hashTree/> </hashTree> </hashTree> </hashTree> </hashTree> <HTTPSampler2 guiclass="HttpTestSampleGui2" testclass="HTTPSampler2" testname="Logout Request (client ${clientID} - ${hostName} - ${clientType})" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">${navigationID} </stringProp> <stringProp name="Argument.value">Login</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.use_equals">true</boolProp> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.name">lo</stringProp> <stringProp name="Argument.value">1</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">marketforce</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <stringProp name="HTTPSampler.mimetype"></stringProp> <stringProp name="HTTPSampler.FILE_NAME"></stringProp> <stringProp name="HTTPSampler.FILE_FIELD"></stringProp> <stringProp name="HTTPSampler.monitor">false</stringProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSampler2> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="(Logout Request ) Error Page Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="- 1225098100">/error/error_pages.css</stringProp> </collectionProp> <stringProp name="Assertion.assume_success">false</stringProp> <intProp name="Assertion.test_type">6</intProp> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> </ResponseAssertion> <hashTree/> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="(Logout Request ) Not 200 Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="49586">200</stringProp> </collectionProp> <stringProp name="Assertion.assume_success">false</stringProp> <intProp name="Assertion.test_type">1</intProp> <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> </ResponseAssertion> <hashTree/> <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Logout Request Timeout" enabled="true"> <stringProp name="DurationAssertion.duration">120000</stringProp> </DurationAssertion> <hashTree/> </hashTree> </hashTree> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="false"> <boolProp name="ResultCollector.error_logging">true</boolProp> <objProp> <value class="SampleSaveConfiguration"> <time>true</time> <latency>false</latency> <timestamp>false</timestamp> <success>false</success> <label>true</label> <code>true</code> <message>true</message> <threadName>false</threadName> <dataType>false</dataType> <encoding>false</encoding> <assertions>false</assertions> <subresults>false</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>false</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError>

<saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> </value> <name>saveConfig</name> </objProp> <stringProp name="filename">Catapult_SEM.csv</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <value class="SampleSaveConfiguration"> <time>true</time> <latency>false</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>false</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>false</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>false</xml> <fieldNames>true</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError>

<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> </value> <name>saveConfig</name> </objProp> <stringProp name="filename">${configFile}.jtl</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false"> <boolProp name="ResultCollector.error_logging">true</boolProp> <objProp> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>false</threadName> <dataType>false</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>false</subresults> <responseData>true</responseData> <samplerData>false</samplerData> <xml>false</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError>

<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <url>true</url> </value> <name>saveConfig</name> </objProp> <stringProp name="filename">Catapult_SEM_Failure_Log.doc</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Errors-Aggregate Report" enabled="true"> <boolProp name="ResultCollector.error_logging">true</boolProp> <objProp> <value class="SampleSaveConfiguration"> <time>true</time> <latency>false</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>false</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>false</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>false</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError>

<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> </value> <name>saveConfig</name> </objProp> <stringProp name="filename">${configFile} _failure_log.doc</stringProp> </ResultCollector> <hashTree/> </hashTree> </hashTree> </hashTree> </hashTree> </hashTree> </jmeterTestPlan>

Severity: normal OS: Windows XP

asfimport commented 17 years ago

Kathy Mitchell (migrated from Bugzilla): Created attachment accept_small.jmx: jmx script

asfimport commented 17 years ago

Sebb (migrated from Bugzilla): The test case is rather complicated, and requires external files that have not been provided - as well as access to a private server (as far as I can tell).

Please can you provide the simplest possible test case, using a publicly available server?

asfimport commented 17 years ago

Kathy Mitchell (migrated from Bugzilla): I have attached a very simple .jmx cause that shows the problem. I've also attached the output files from the run.

The 'projection.css Response Assertion' is always triggered but I only see the text in the output file when it is the first assertion listed.

asfimport commented 17 years ago

Kathy Mitchell (migrated from Bugzilla): Created attachment blank_failure_msg.jmx: simpler jmx

asfimport commented 17 years ago

Kathy Mitchell (migrated from Bugzilla): Created attachment blank_failure_msg.doc: output of new .jmx

blank_failure_msg.doc ```` 1187028529280,1269,JMeterCommitters 1,200,OK,Main thread 1-1,false,Test failed, text expected not to contain //css/projection.css/,12388,http://wiki.apache.org/jakarta-jmeter/JMeterCommitters 1187028530559,1139,JMeterCommitters 2,200,OK,Main thread 1-1,false,,12388,http://wiki.apache.org/jakarta-jmeter/JMeterCommitters ````
asfimport commented 17 years ago

Kathy Mitchell (migrated from Bugzilla): Created attachment blank_failure_msg.jtl: output of new .jmx (not just errors)

blank_failure_msg.jtl ````csv timeStamp,elapsed,label,responseCode,responseMessage,threadName,success,failureMessage,bytes,URL 1187028529280,1269,JMeterCommitters 1,200,OK,Main thread 1-1,false,Test failed, text expected not to contain //css/projection.css/,12388,http://wiki.apache.org/jakarta-jmeter/JMeterCommitters 1187028530559,1139,JMeterCommitters 2,200,OK,Main thread 1-1,false,,12388,http://wiki.apache.org/jakarta-jmeter/JMeterCommitters ````
asfimport commented 17 years ago

Sebb (migrated from Bugzilla): Thanks for the simplified test case.

The problem was that the code was only ever saving the first Assertion result, regardless of whether it failed or not.

I've changed it to save the first result with a failure message.

This is in SVN r565476.