View Javadoc

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  }