1 package com.eviware.soapui.impl.wsdl.teststeps; 2 3 import java.util.List; 4 5 import org.apache.log4j.Logger; 6 7 import com.eviware.soapui.impl.wsdl.mock.MockRunnerManager; 8 import com.eviware.soapui.impl.wsdl.mock.MockRunnerManagerException; 9 import com.eviware.soapui.impl.wsdl.mock.MockRunnerManagerImpl; 10 import com.eviware.soapui.model.support.TestRunListenerAdapter; 11 import com.eviware.soapui.model.testsuite.LoadTestRunner; 12 import com.eviware.soapui.model.testsuite.TestCase; 13 import com.eviware.soapui.model.testsuite.TestRunContext; 14 import com.eviware.soapui.model.testsuite.TestRunner; 15 16 public class TestRunListenerImpl extends TestRunListenerAdapter 17 { 18 private final static Logger log = 19 Logger.getLogger(TestRunListenerImpl.class); 20 21 public void beforeRun(TestRunner testRunner, TestRunContext runContext) 22 { 23 LoadTestRunner loadTestRunner = 24 (LoadTestRunner) runContext.getProperty("LoadTestRunner"); 25 26 if (loadTestRunner == null) 27 { 28 TestCase testCase = testRunner.getTestCase(); 29 30 if (needsMockRunnerManager(testCase)) 31 { 32 createMockServices(testCase); 33 34 MockRunnerManager manager = MockRunnerManagerImpl.getInstance( 35 testCase); 36 37 try 38 { 39 manager.start(); 40 } 41 catch (MockRunnerManagerException e) 42 { 43 log.error("Unable to start MockRunnerManager", e); 44 } 45 } 46 } 47 } 48 49 public void afterRun(TestRunner testRunner, TestRunContext runContext) 50 { 51 LoadTestRunner loadTestRunner = 52 (LoadTestRunner) runContext.getProperty("LoadTestRunner"); 53 54 if (loadTestRunner == null) 55 { 56 TestCase testCase = testRunner.getTestCase(); 57 58 MockRunnerManager manager = MockRunnerManagerImpl.getInstance( 59 testCase); 60 61 if (manager != null) 62 { 63 manager.stop(); 64 } 65 } 66 } 67 68 private boolean needsMockRunnerManager(TestCase testCase) 69 { 70 return testCase.getTestStepsOfType( 71 WsdlAsyncResponseTestStep.class).size() > 0; 72 } 73 74 private void createMockServices(TestCase testCase) 75 { 76 List<WsdlAsyncResponseTestStep> teststeps = 77 testCase.getTestStepsOfType(WsdlAsyncResponseTestStep.class); 78 79 for (WsdlAsyncResponseTestStep teststep : teststeps) 80 { 81 teststep.createMockService(); 82 } 83 } 84 }