1 17 18 package org.sape.carbon.services.sqldataloader.mru.test; 19 20 import junit.extensions.ActiveTestSuite; 21 import junit.framework.Test; 22 import junit.framework.TestCase; 23 import junit.framework.TestSuite; 24 25 import java.math.BigDecimal ; 26 import java.sql.PreparedStatement ; 27 import java.sql.SQLException ; 28 import java.util.Iterator ; 29 import java.util.Map ; 30 import java.util.Set ; 31 import java.util.TreeMap ; 32 import java.util.HashMap ; 33 import java.util.ArrayList ; 34 import java.util.List ; 35 36 import org.sape.carbon.core.component.Lookup; 37 import org.sape.carbon.core.component.lifecycle.StateTransitionException; 38 import org.sape.carbon.core.config.InvalidConfigurationException; 39 import org.sape.carbon.core.config.Config; 40 import org.sape.carbon.services.cache.Cache; 41 import org.sape.carbon.services.sql.StatementFactory; 42 import org.sape.carbon.services.sql.StatementFactoryException; 43 import org.sape.carbon.services.sqldataloader.test.TestComparator; 44 import org.sape.carbon.services.sqldataloader.test.TestThreeColumnBean; 45 import org.sape.carbon.services.sqldataloader.test.TestTwoColumnBean; 46 47 55 public class SqlBeanMapDataLoaderTest extends TestCase { 56 public SqlBeanMapDataLoaderTest(String testName) { 57 super(testName); 58 } 59 60 private static final String STATEMENT_FACTORY = 61 "/sql/sqldataloader/test/SqlMapBeanDataLoaderStatementFactory"; 62 63 64 private static final String DROP_TABLE_ONE_LOOKUP = 65 "DropTableBeanData"; 66 private static final String CREATE_TABLE_ONE_LOOKUP = 67 "CreateTableBeanData"; 68 private static final String INSERT_TABLE_ONE_LOOKUP_DATA = 69 "InsertBeanData"; 70 71 private static List data = new ArrayList (); 72 73 private static final int COUNT = 50; 74 private static final int GROUP = 5; 75 78 static { 79 for (int i = 0; i < COUNT; i++) { 80 ArrayList list = new ArrayList (); 81 82 BigDecimal key = new BigDecimal (i); 83 BigDecimal group = new BigDecimal (i % GROUP); 84 String col2 = new String ("Test data for key: " + key + " group: " + group); 85 86 list.add(key); 87 list.add(group); 88 list.add(col2); 89 90 data.add(list); 91 } 92 } 93 94 95 96 100 public void cleanUpBeforeStart() { 101 PreparedStatement preparedStatement=null; 102 try { 103 StatementFactory sf = (StatementFactory) 104 Lookup.getInstance().fetchComponent(STATEMENT_FACTORY); 105 106 try { 107 preparedStatement = 108 sf.createPreparedStatement(DROP_TABLE_ONE_LOOKUP); 109 preparedStatement.executeUpdate(); 110 } catch (SQLException se) { 111 } 113 } catch (StatementFactoryException sfe) { 114 fail("Clean up before start operation failed due to "+sfe); 115 } 116 } 117 118 119 122 public void createTestData() throws SQLException , StatementFactoryException { 123 PreparedStatement preparedStatement=null; 124 int result; 125 try { 126 StatementFactory sf = (StatementFactory) 127 Lookup.getInstance().fetchComponent(STATEMENT_FACTORY); 128 129 preparedStatement = 130 sf.createPreparedStatement(CREATE_TABLE_ONE_LOOKUP); 131 preparedStatement.executeUpdate(); 132 133 134 preparedStatement = 135 sf.createPreparedStatement(INSERT_TABLE_ONE_LOOKUP_DATA); 136 137 138 for (int i = 0; i < data.size(); i++) { 139 List beanItem = (List ) data.get(i); 140 preparedStatement.setBigDecimal(1, (BigDecimal ) beanItem.get(0)); 141 preparedStatement.setBigDecimal(2, (BigDecimal ) beanItem.get(1)); 142 preparedStatement.setString(3, (String ) beanItem.get(2)); 143 result = preparedStatement.executeUpdate(); 144 if (result != 1) { 145 fail("Unable to insert test data"); 146 } 147 } 148 149 preparedStatement.close(); 150 } finally { 151 if (preparedStatement != null) { 152 try { 153 preparedStatement.getConnection().close(); 154 } catch (SQLException se) { } 155 } 156 } 157 } 158 159 160 private static final String DATALOADER_THREE_COLUMN = 161 "/sql/sqldataloader/mru/TestSqlMapDataloader_ThreeColumn"; 162 163 166 public void testThreeColumnWithMap() { 167 Cache cache = 168 (Cache) Lookup.getInstance().fetchComponent( 169 DATALOADER_THREE_COLUMN); 170 171 for (int i = 0; i < GROUP; i++) { 172 173 HashMap result = (HashMap ) cache.get(new BigDecimal (i)); 174 175 for (Iterator mapIter = result.entrySet().iterator(); mapIter.hasNext();) { 177 Map.Entry entry = (Map.Entry ) mapIter.next(); 178 Object o1 = (Object ) entry.getKey(); 179 Object o2 = (Object ) entry.getValue(); 180 } 182 183 } 185 186 } 187 188 private boolean compareSequencedMap(Map expectedMap, Map actualMap) { 191 boolean returnValue = false; 192 if (expectedMap.keySet().equals(actualMap.keySet())) { 193 Set entrySetExpectedMap = expectedMap.entrySet(); 194 Set entrySetActualMap = actualMap.entrySet(); 195 Iterator iteratorExpectedMap = entrySetExpectedMap.iterator(); 196 Iterator iteratorActualMap = entrySetActualMap.iterator(); 197 198 while ((iteratorExpectedMap.hasNext()) && 199 (iteratorActualMap.hasNext())) { 200 Map.Entry entryExpectedMap = 201 (Map.Entry ) iteratorExpectedMap.next(); 202 Map.Entry entryActualMap = 203 (Map.Entry ) iteratorActualMap.next(); 204 if ((entryExpectedMap.getKey().equals(entryActualMap.getKey())) 205 && (entryExpectedMap.getValue().equals( 206 entryActualMap.getValue()))) { 207 returnValue = true; 208 } else { 209 return false; 210 } 211 } 212 } 213 return returnValue; 214 } 215 216 217 218 222 public static Test suite() { 223 TestSuite masterSuite = new TestSuite("SqlBeanMapDataloaderTest"); 224 225 masterSuite.addTest(new SqlBeanMapDataLoaderTest("cleanUpBeforeStart")); 230 masterSuite.addTest(new SqlBeanMapDataLoaderTest("createTestData")); 231 232 Test singleThreadedTests = getSingleThreadedTests(); 234 if (singleThreadedTests != null) { 235 masterSuite.addTest(singleThreadedTests); 236 } 237 Test multiThreadedTests = getMultiThreadedTests(); 239 if (multiThreadedTests != null) { 240 masterSuite.addTest(multiThreadedTests); 241 } 242 return masterSuite; 243 } 244 245 246 252 private static Test getSingleThreadedTests() { 253 TestSuite mySuite = new TestSuite("SingleThreadedTests"); 254 mySuite.addTest(new SqlBeanMapDataLoaderTest("testThreeColumnWithMap")); 255 return mySuite; 256 } 257 258 265 private static Test getMultiThreadedTests() { 266 TestSuite suite = new ActiveTestSuite(); 267 final int THREAD_COUNT = 10; 268 269 return null; 270 } 271 272 281 private static void addTest(TestSuite suite, String testName, int number) { 282 for (int count = 0; count < number; count++) { 283 suite.addTest(new SqlBeanMapDataLoaderTest(testName)); 284 } 285 } 286 287 } 288 | Popular Tags |