Forum Discussion

h_ixon's avatar
h_ixon
Occasional Contributor
15 years ago

Launch many MockServices in the same time

Hi,

When i launch my soapUI, i have some MockService to start. This operation is boring because i have about 20 mockServices to run (rightclick->start minimized).

How can i automated my mockservices launch ?

Thank's.
  • M_McDonald's avatar
    M_McDonald
    Super Contributor
    In a TestCase Groovy script you can do this:

    import com.eviware.soapui.model.mock.MockService;
    import com.eviware.soapui.model.mock.MockRunner;

    def mockServices = testRunner.testCase.testSuite.project.getMockServiceList()

    def runners = []
    MockRunner runner

    context.put("runners",runners) // put runners in context so that they can be stopped later

    for (mock in mockServices) {
    try {
    log.info "Starting ${mock.name}"
    runner = mock.start()
    runners << runner
    } catch (Exception e) {
    runner.cancel( "Could not start mock service ${mock.name}" )
    }
    }


    If you want to stop them in the same TestCase, you can do this:

    import com.eviware.soapui.model.mock.MockRunner;

    def runners = context.get("runners")

    for (MockRunner runner in runners) {
    if (runner != null && runner.isRunning()) {
    runner.stop()
    }
    }
  • h_ixon's avatar
    h_ixon
    Occasional Contributor
    Thank's a lot for your qucik response, it's work fine.

  • M_McDonald's avatar
    M_McDonald
    Super Contributor
    Actually you don't need to save the runners in context. Each MockService maintains a reference to it's own runner (I didn't see how to get this before.)

    Start:
    def mockServices = testRunner.testCase.testSuite.project.getMockServiceList()
    com.eviware.soapui.model.mock.MockRunner runner

    for (mock in mockServices) {
    try {
    log.info "Starting ${mock.name}"
    runner = mock.start()
    } catch (Exception e) {
    runner.cancel( "Could not start mock service ${mock.name}" )
    }
    }


    Stop:
    def mockServices = testRunner.testCase.testSuite.project.getMockServiceList()

    for (mock in mockServices) {
    if (mock.mockRunner != null && mock.mockRunner.isRunning()) {
    mock.mockRunner.stop()
    }
    }