cancel
Showing results for 
Search instead for 
Did you mean: 

Wait until request executed successfully

SOLVED
Community Leader

Wait until request executed successfully

Hi Community Members,

 

I have stuck at a point where i need to pause/wait my groovy steps untill my request get executed successfully.

And i am hitting my request via groovy and then asserting it. I don't want to use hardcore wait like Thread.sleep()

 

Suppose below is my groovy

 

1. Some code

2. testRunner.run

wait(i want to wait untill step 2 gets executed and response gets generated.)

3. some code to verify response

 

I want it dynamic. Thanks in Advance.

 


Click "Accept as Solution" if my answer has helped, and remember to give "kudos" Smiley Happy

Thanks and Regards,
Himanshu Tayal
1 ACCEPTED SOLUTION

Accepted Solutions
Community Hero

Re: Wait until request executed successfully

@HimanshuTayal 

Not sure why you want to run REST request from a groovy script instead of having a REST Request step. Any specific reason?

 

If the assertion is added REST Request, are not those executed directly instead of verifying them in Groovy Script?

 

Any ways, it appears that you do not need to wait or use sleep.

See if the below snippet of code helps (follow comments)

 

import static com.eviware.soapui.model.testsuite.TestStepResult.TestStepStatus.*
import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep
import com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep
import com.eviware.soapui.impl.wsdl.teststeps.JdbcRequestTestStep
import com.eviware.soapui.impl.wsdl.teststeps.HttpTestRequestStep

/*
 Your code before run method comes here
*/
def result = step.run(testRunner, context)
def isStepRequestType = { model -> [WsdlTestRequestStep, RestTestRequestStep, JdbcRequestTestStep, HttpTestRequestStep].any { model.class == it} }
switch(result.status) { case FAILED: log.error "${step.name} is executed, but failed" break case [OK, UNKNOWN] : log.info "${step.name} execution is finished successfully" if (isStepRequestType(step)) { def response = result.responseContent assert response, 'Response is null or empty'
log.debug response //Add other assertions on response as needed - verification part } break //last statement in case default: log.info result.status break }


Regards,
Rao.
6 REPLIES 6
Highlighted
Community Hero

Re: Wait until request executed successfully

" i am hitting my request via groovy" - What kind of request? And sample code that is used?


Regards,
Rao.
Community Leader

Re: Wait until request executed successfully

Hi @nmrao ,

 

My Request is of REST Type and below is the sample code, currently i am using Thread. sleep, but instead i want to wait till my request gets run.

 

def runStatus = appAssignStep.run(testRunner, context);
Thread.sleep(4000)//want to replace this with dynamic wait
verifyResponseValue(appAssignStep.getPropertyValue("Response"))

 


Click "Accept as Solution" if my answer has helped, and remember to give "kudos" Smiley Happy

Thanks and Regards,
Himanshu Tayal
Community Hero

Re: Wait until request executed successfully

@HimanshuTayal 

Not sure why you want to run REST request from a groovy script instead of having a REST Request step. Any specific reason?

 

If the assertion is added REST Request, are not those executed directly instead of verifying them in Groovy Script?

 

Any ways, it appears that you do not need to wait or use sleep.

See if the below snippet of code helps (follow comments)

 

import static com.eviware.soapui.model.testsuite.TestStepResult.TestStepStatus.*
import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep
import com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep
import com.eviware.soapui.impl.wsdl.teststeps.JdbcRequestTestStep
import com.eviware.soapui.impl.wsdl.teststeps.HttpTestRequestStep

/*
 Your code before run method comes here
*/
def result = step.run(testRunner, context)
def isStepRequestType = { model -> [WsdlTestRequestStep, RestTestRequestStep, JdbcRequestTestStep, HttpTestRequestStep].any { model.class == it} }
switch(result.status) { case FAILED: log.error "${step.name} is executed, but failed" break case [OK, UNKNOWN] : log.info "${step.name} execution is finished successfully" if (isStepRequestType(step)) { def response = result.responseContent assert response, 'Response is null or empty'
log.debug response //Add other assertions on response as needed - verification part } break //last statement in case default: log.info result.status break }


Regards,
Rao.
Community Hero

Re: Wait until request executed successfully

@HimanshuTayal,

Are you able to make any progress on this? or still stuck?
Got chance to try the proposed solution? Appreciate your feedback.



Regards,
Rao.
Community Hero

Re: Wait until request executed successfully

@HimanshuTayal,

Not sure what happened to this question and response. You said stuck. But not replied after the answer. At least you can say solution is working or not working or did not get chance to try.




Regards,
Rao.
Moderator

Re: Wait until request executed successfully

@nmrao thanks for keeping an eye on the thread.

I think we could mark your reply as a solution for now. And, if Himanshu gets back with some other instructions he used to resolve this, we will mark them as the final solution here Smiley Happy

 

 


Olga Terentieva
SmartBear Assistant Community Manager

New Here?
Join us and watch the welcome video:
Top Kudoed Authors