Forum Discussion

sonya_m's avatar
sonya_m
SmartBear Alumni (Retired)
5 years ago

[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 ...
  • groovyguy's avatar
    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, ""));

     

  • HimanshuTayal's avatar
    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();