001 package com.khubla.pragmatach.dbtestsuite; 002 003 import java.util.Set; 004 005 import org.testng.Assert; 006 import org.testng.annotations.BeforeClass; 007 import org.testng.annotations.Test; 008 009 import com.khubla.pragmatach.dbtestsuite.pojo.ExamplePOJO; 010 import com.khubla.pragmatach.framework.api.Configuration; 011 import com.khubla.pragmatach.framework.application.Application; 012 import com.khubla.pragmatach.framework.dao.DAO; 013 import com.khubla.pragmatach.framework.scanner.AnnotationScanner; 014 015 /** 016 * @author tome 017 */ 018 public abstract class AbstractPersistenceTest { 019 /** 020 * get the configs 021 */ 022 public abstract Set<Configuration> getConfigurations(); 023 024 /** 025 * get the DAO implementation 026 */ 027 public abstract DAO<ExamplePOJO, Long> getDAO(); 028 029 /** 030 * for the class 031 */ 032 @BeforeClass 033 public void setupClass() { 034 /* 035 * run the scanner 036 */ 037 try { 038 AnnotationScanner.scan(null); 039 } catch (final Exception e) { 040 e.printStackTrace(); 041 Assert.fail(); 042 } 043 } 044 045 @Test 046 public void testAllDatabaseConfigurations() { 047 try { 048 /* 049 * config 050 */ 051 final Set<Configuration> configurations = getConfigurations(); 052 if ((null != configurations) && (configurations.size() > 0)) { 053 /* 054 * set an initial config 055 */ 056 Application.setConfiguration(configurations.iterator().next()); 057 /* 058 * the dao 059 */ 060 final DAO<ExamplePOJO, Long> dao = getDAO(); 061 /* 062 * walk the config 063 */ 064 for (final Configuration configuration : configurations) { 065 /* 066 * dump the config 067 */ 068 for (String key : configuration.getAll().keySet()) { 069 System.out.println(key + " : " + configuration.getParameter(key)); 070 } 071 /* 072 * set the application config 073 */ 074 Application.setConfiguration(configuration); 075 /* 076 * force a session factory reload 077 */ 078 dao.reloadConfig(); 079 /* 080 * run test 081 */ 082 BasicTests.testBasicFunctionality(dao); 083 } 084 } 085 } catch (final Exception e) { 086 e.printStackTrace(); 087 Assert.fail(); 088 } 089 } 090 }