sonya_m
5 years agoSmartBear Alumni (Retired)
[TechCorner Challenge #11] Change Socket Timeout for HTTP requests using Groovy Script
Hi Community!🙂
Here's a new task for you to practice your skills of using the ReadyAPI tool. Check out the participation rules and TechCorner Leaderboard here.
ReaydAPI allows you to set a ...
- 5 years ago
Task: Write a Groovy Script that will set socket timeout to a new value, then return it to the default value.
This is a solution created for [TechCorner Challenge #11]
Here's what I managed to come up with 🙂
import com.eviware.soapui.SoapUI; import com.eviware.soapui.settings.HttpSettings // Get test step reference. def testStep = context.testCase.testSteps["TestStep"]; // Get the settings of the test step. def tsSettings = testStep.getSettings(); // Get the value of the current time out. def currentTimeOut = tsSettings.getString(HttpSettings.SOCKET_TIMEOUT, ""); // Adjust the timeout. def newTimeOut = (currentTimeOut.toInteger() * 2).toString(); // Show the current timeout value. log.info("The current Socket Timeout value is: " + tsSettings.getString(HttpSettings.SOCKET_TIMEOUT, "")); // Set to the new timeout. tsSettings.setString(HttpSettings.SOCKET_TIMEOUT, newTimeOut); // Show the timeout value has been adjusted. log.info("The adjusted Socket Timeout value is: " + tsSettings.getString(HttpSettings.SOCKET_TIMEOUT, "")); // Revert back to original timeout. tsSettings.setString(HttpSettings.SOCKET_TIMEOUT, currentTimeOut); // Show the timeout value is the original value. log.info("Adjusted back to original timeout: " + tsSettings.getString(HttpSettings.SOCKET_TIMEOUT, ""));
- 5 years ago
Task: Write a Groovy Script that will set socket timeout to a new value, then return it to the default value.
This is a solution created for [TechCorner Challenge #11]
Hi sonya_m :
I have came across two below solutions:
1. As the challenge states to change particular Test Step Setting, below groovy can be useful:
import com.eviware.soapui.SoapUI import com.eviware.soapui.settings.HttpSettings def testStep = testRunner.testCase.getTestStepByName("TEST__STEP__NAME"); def testSettings = testStep.getSettings(); def oldTime = testSettings.getString(HttpSettings.SOCKET_TIMEOUT,""); log.info "OLD TIMEOUT :: "+oldTime //setting new timeout testSettings.setString(HttpSettings.SOCKET_TIMEOUT,"120000"); //save the settings SoapUI.saveSettings(); log.info "NEW TIMEOUT :: "+testSettings.getString(HttpSettings.SOCKET_TIMEOUT,""); //revert back old timeout testSettings.setString(HttpSettings.SOCKET_TIMEOUT,oldTime); log.info "REVERT BACK TO OLD TIMEOUT :: "+testSettings.getString(HttpSettings.SOCKET_TIMEOUT,""); //save the settings SoapUI.saveSettings();
2. If we want to modify global setting instead of particular test step setting, below groovy can be useful:
import com.eviware.soapui.SoapUI import com.eviware.soapui.settings.HttpSettings //Get soapUI settings from preferences > HTTP Settings > Socket Timeout (ms) def settings = SoapUI.getSettings() //Set New time settings.setString(HttpSettings.SOCKET_TIMEOUT,"120000") //save the settings SoapUI.saveSettings();