View Javadoc

    1   package com.eviware.soapui.impl.wsdl.teststeps.assertions;
    2
    3   import org.apache.xmlbeans.XmlObject;
    4
    5   import com.eviware.soapui.config.RequestAssertionConfig;
    6   import com.eviware.soapui.impl.wsdl.submit.WsdlMessageExchange;
    7   import com.eviware.soapui.impl.wsdl.support.assertions.Assertable;
    8   import com.eviware.soapui.impl.wsdl.teststeps.WsdlMessageAssertion;
    9   import com.eviware.soapui.model.iface.SubmitContext;
    10  import com.eviware.soapui.support.UISupport;
    11  import com.eviware.soapui.support.xml.XmlObjectConfigurationBuilder;
    12  import com.eviware.soapui.support.xml.XmlObjectConfigurationReader;
    13
    14  /***
    15   * Assertion for verifiying that responses occurred in the desired amount of
    16   * time.
    17   *
    18   * @author Cory Lewis cory.lewis@genworth.com
    19   *
    20   * with help from
    21   * @author Ole.Matzura
    22   */
    23
    24  public class ResponseSLAAssertion extends WsdlMessageAssertion implements ResponseAssertion
    25  {
    26  	public static final String ID = "Response SLA Assertion";
    27  	private String SLA;
    28
    29  	/***
    30  	 * Constructor for our assertion.
    31  	 *
    32  	 * @param assertionConfig
    33  	 * @param modelItem
    34  	 */
    35  	public ResponseSLAAssertion( RequestAssertionConfig assertionConfig, Assertable modelItem )
    36  	{
    37  		super( assertionConfig, modelItem, false, true, false );
    38  		XmlObjectConfigurationReader reader = new XmlObjectConfigurationReader( getConfiguration() );
    39  		SLA = reader.readString( "SLA", "200" );
    40  	}
    41
    42  	/***
    43  	 * @see com.eviware.soapui.impl.wsdl.teststeps.WsdlMessageAssertion#internalAssertRequest(com.eviware.soapui.impl.wsdl.submit.WsdlMessageExchange,
    44  	 *      com.eviware.soapui.model.iface.SubmitContext)
    45  	 */
    46  	protected String internalAssertRequest( WsdlMessageExchange messageExchange, SubmitContext context )
    47  				throws AssertionException
    48  	{
    49
    50  		return null;
    51
    52  	}
    53
    54  	/***
    55  	 * @see com.eviware.soapui.impl.wsdl.teststeps.WsdlMessageAssertion#internalAssertResponse(com.eviware.soapui.impl.wsdl.submit.WsdlMessageExchange,
    56  	 *      com.eviware.soapui.model.iface.SubmitContext)
    57  	 */
    58  	protected String internalAssertResponse( WsdlMessageExchange messageExchange, SubmitContext context )
    59  				throws AssertionException
    60  	{
    61
    62  		// assert!
    63  		if( messageExchange.getTimeTaken() > Long.parseLong( SLA ) )
    64  		{
    65  			throw new AssertionException( new AssertionError( "Response did not meet SLA "
    66  						+ messageExchange.getTimeTaken() + "/" + SLA ) );
    67  		}
    68
    69  		return "Response meets SLA";
    70  	}
    71
    72  	/***
    73  	 * @see com.eviware.soapui.impl.wsdl.teststeps.WsdlMessageAssertion#configure()
    74  	 */
    75  	public boolean configure()
    76  	{
    77  		String value = SLA;
    78
    79  		if( value == null || value.trim().length() == 0 )
    80  		{
    81  			value = "200";
    82  		}
    83
    84  		value = UISupport.prompt( "Specify desired response time", "Configure Response SLA Assertion", value );
    85
    86  		try
    87  		{
    88  			Long.parseLong( value );
    89  			SLA = value;
    90
    91  		}
    92  		catch( Exception e )
    93  		{
    94  			return false;
    95  		}
    96
    97  		setConfiguration( createConfiguration() );
    98  		return true;
    99  	}
    100
    101
    102
    103 	public String getSLA()
    104 	{
    105 		return SLA;
    106 	}
    107
    108 	public void setSLA( String sla )
    109 	{
    110 		SLA = sla;
    111 		setConfiguration( createConfiguration() );
    112 	}
    113
    114 	/***
    115 	 * @return XmlObject, our config chunk
    116 	 */
    117 	protected XmlObject createConfiguration()
    118 	{
    119 		XmlObjectConfigurationBuilder builder = new XmlObjectConfigurationBuilder();
    120 		return builder.add( "SLA", SLA ).finish();
    121 	}
    122 }