package org.springframework.load; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import org.springframework.beans.BeansException; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.beans.factory.support.PropertiesBeanDefinitionReader; /** * Main class for the load test package. * Loads beans from a BeanFactory */ public class PropertiesTestSuiteLoader { public static void main(String[] args) { String file = null; if (args.length < 1) { System.out.println("Usage: PropertiesTestSuiteLoader <properties file>"); System.exit(1); } file = args[0]; DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); Properties props = new Properties(); try { props.load(getInputStream(file)); System.out.println("Loading properties file '" + file + "'. Looking for bean definitions..."); PropertiesBeanDefinitionReader bdr = new PropertiesBeanDefinitionReader(lbf); bdr.registerBeanDefinitions(props, null); // Get the BeanFactoryTestSuite instance BeanFactoryTestSuite testSuite = (BeanFactoryTestSuite) lbf.getBean("suite"); // Give it access to the other beans testSuite.init(lbf); // Run the tests, blocking until they complete testSuite.runAllTests(true); // Now find all reporters String[] reporterNames = lbf.getBeanNamesForType(TestReporter.class); TestReporter[] reporters = new TestReporter[reporterNames.length]; for (int i = 0; i < reporterNames.length; i++) { System.out.println("Found reporter name " + reporterNames[i]); } System.out.println("Found " + reporters.length + " reporter beans"); //XmlTestReporter reporter = new XmlTestReporter(); //reporter.setXmlReportFileName("c:\\scratch\\loadTests.xml"); for (int i = 0 ; i < reporters.length; i++) { TestReporter reporter = (TestReporter) lbf.getBean(reporterNames[i]); reporter.generateReport(testSuite); } } catch (IOException ex) { System.out.println("Cannot find properties file: " + ex); } catch (BeansException ex) { System.out.println("Cannot find bean: " + ex); ex.printStackTrace(); } catch (Exception ex) { // Reporter failed...? ex.printStackTrace(); } } private static InputStream getInputStream(String name) throws IOException { try { return new FileInputStream(name); } catch (FileNotFoundException ex) { System.err.println("Failed to load from file system"); // Try on classpath InputStream is = PropertiesTestSuiteLoader.class.getResourceAsStream(name); if (is != null) { return is; } else { throw new IOException("Cannot load properties file '" + name + "' from filesystem or classpath: " + " Use package name of form /com/foo/bar/MyFile.txt"); } } } }