001 package org.hackystat.dailyprojectdata.resource.unittest; 002 003 import javax.xml.datatype.XMLGregorianCalendar; 004 005 import org.hackystat.sensorbase.resource.sensordata.jaxb.Properties; 006 import org.hackystat.sensorbase.resource.sensordata.jaxb.Property; 007 import org.hackystat.sensorbase.resource.sensordata.jaxb.SensorData; 008 import org.hackystat.utilities.tstamp.Tstamp; 009 010 /** 011 * Used by the tests in UnitTestDPD module. Encapsulates some common code between tests. 012 * 013 * @author Pavel Senin. 014 * 015 */ 016 public class UnitTestTestHelper { 017 018 /** 019 * /** Creates a sample SensorData UnitTest instance given a whole set of parameters. 020 * 021 * @param tstampString The timestamp as a string 022 * @param user The user email. 023 * @param resource The resource over which test was run over. 024 * @param testName The unit test name. 025 * @param result The unit test result. 026 * @param elapsedTime The unit test elapsed time. 027 * @param testCaseName The unit test case name. 028 * @param failureString The unit test failure string. 029 * @param errorString The unit test error string. 030 * @return The new SensorData DevEvent instance. 031 * @throws Exception If problems occur. 032 */ 033 public SensorData makeUnitTestEvent(String tstampString, String user, String resource, 034 String testName, String result, String elapsedTime, String testCaseName, 035 String failureString, String errorString) throws Exception { 036 037 XMLGregorianCalendar tstamp = Tstamp.makeTimestamp(tstampString); 038 String sdt = "UnitTest"; 039 SensorData data = new SensorData(); 040 String tool = "JUnit"; 041 042 data.setTool(tool); 043 data.setOwner(user); 044 data.setSensorDataType(sdt); 045 data.setTimestamp(tstamp); 046 data.setResource(resource); 047 data.setRuntime(tstamp); 048 049 // test count, test time, success, failure 050 Properties properties = new Properties(); 051 addProperty(properties, "Name", testName); 052 addProperty(properties, "Result", result); 053 addProperty(properties, "ElapsedTime", elapsedTime); 054 addProperty(properties, "TestName", testName); 055 addProperty(properties, "TestCaseName", testCaseName); 056 addProperty(properties, "FailureString", failureString); 057 addProperty(properties, "ErrorString", errorString); 058 data.setProperties(properties); 059 060 return data; 061 } 062 063 /** 064 * Creates a sample passing SensorData UnitTest instance given a timestamp and a user. 065 * 066 * @param tstampString The timestamp as a string 067 * @param user The user. 068 * @param pass True if passing, false if failing. 069 * @return The new SensorData DevEvent instance. 070 * @throws Exception If problems occur. 071 */ 072 private SensorData makeUnitTestEvent(String tstampString, String user, boolean pass) 073 throws Exception { 074 XMLGregorianCalendar tstamp = Tstamp.makeTimestamp(tstampString); 075 String sdt = "UnitTest"; 076 SensorData data = new SensorData(); 077 String tool = "JUnit"; 078 data.setTool(tool); 079 data.setOwner(user); 080 data.setSensorDataType(sdt); 081 data.setTimestamp(tstamp); 082 data.setResource("file://foo/bar/baz.txt"); 083 data.setRuntime(tstamp); 084 085 Properties prop = new Properties(); 086 addProperty(prop, "Name", "testName"); 087 addProperty(prop, "Result", (pass ? "pass" : "fail")); 088 addProperty(prop, "ElapsedTime", "15"); 089 addProperty(prop, "TestName", "org.Foo"); 090 addProperty(prop, "TestCaseName", "testFoo"); 091 data.setProperties(prop); 092 return data; 093 } 094 095 /** 096 * Returns a Unit Test instance with Result = pass. 097 * @param tstampString The timestamp. 098 * @param user The user. 099 * @return The UnitTest sensor data instance. 100 * @throws Exception If problems occur. 101 */ 102 public SensorData makePassUnitTest(String tstampString, String user) throws Exception { 103 return makeUnitTestEvent(tstampString, user, true); 104 } 105 106 /** 107 * Returns a Unit Test instance with Result = fail. 108 * @param tstampString The timestamp. 109 * @param user The user. 110 * @return The UnitTest sensor data instance. 111 * @throws Exception If problems occur. 112 */ 113 public SensorData makeFailUnitTest(String tstampString, String user) throws Exception { 114 return makeUnitTestEvent(tstampString, user, false); 115 } 116 117 /** 118 * Adds the key value pair to the Properties object. 119 * @param properties The Properties. 120 * @param key The key. 121 * @param value The value. 122 */ 123 private void addProperty(Properties properties, String key, String value) { 124 Property property = new Property(); 125 property.setKey(key); 126 property.setValue(value); 127 properties.getProperty().add(property); 128 } 129 130 }