Signed-off-by: Andrew DeMaria <lostonamountain@gmail.com>master
parent
81553a55b5
commit
6e5ba7a261
@ -1,126 +0,0 @@ |
||||
package org.libresonic.player.dao; |
||||
|
||||
import junit.framework.TestCase; |
||||
import liquibase.exception.LiquibaseException; |
||||
import org.libresonic.player.TestCaseUtils; |
||||
import org.libresonic.player.service.SettingsService; |
||||
import org.libresonic.player.spring.SpringLiquibase; |
||||
import org.libresonic.player.util.FileUtil; |
||||
import org.libresonic.player.util.Util; |
||||
import org.springframework.core.io.DefaultResourceLoader; |
||||
import org.springframework.jdbc.core.JdbcTemplate; |
||||
import org.springframework.jdbc.datasource.DriverManagerDataSource; |
||||
|
||||
import javax.sql.DataSource; |
||||
|
||||
import java.io.File; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* Superclass for all DAO test cases. |
||||
* Creates and configures the DAO's, and resets the test database. |
||||
* |
||||
* @author Sindre Mehus |
||||
*/ |
||||
public abstract class DaoTestCaseBase extends TestCase { |
||||
|
||||
/** Do not re-create database if it is less than one hour old. */ |
||||
private static final long MAX_DB_AGE_MILLIS = 60L * 60 * 1000; |
||||
|
||||
static { |
||||
deleteDatabase(); |
||||
} |
||||
|
||||
private DaoHelper daoHelper; |
||||
protected PlayerDao playerDao; |
||||
protected InternetRadioDao internetRadioDao; |
||||
protected RatingDao ratingDao; |
||||
protected MusicFolderDao musicFolderDao; |
||||
protected UserDao userDao; |
||||
protected TranscodingDao transcodingDao; |
||||
protected PodcastDao podcastDao; |
||||
|
||||
protected DaoTestCaseBase() { |
||||
DataSource dataSource = createDataSource(); |
||||
daoHelper = new GenericDaoHelper(dataSource); |
||||
|
||||
runDatabaseMigration(dataSource); |
||||
|
||||
playerDao = new PlayerDao(); |
||||
internetRadioDao = new InternetRadioDao(); |
||||
ratingDao = new RatingDao(); |
||||
musicFolderDao = new MusicFolderDao(); |
||||
userDao = new UserDao(); |
||||
transcodingDao = new TranscodingDao(); |
||||
podcastDao = new PodcastDao(); |
||||
|
||||
playerDao.setDaoHelper(daoHelper); |
||||
internetRadioDao.setDaoHelper(daoHelper); |
||||
ratingDao.setDaoHelper(daoHelper); |
||||
musicFolderDao.setDaoHelper(daoHelper); |
||||
musicFolderDao.setUserDao(userDao); |
||||
userDao.setDaoHelper(daoHelper); |
||||
transcodingDao.setDaoHelper(daoHelper); |
||||
podcastDao.setDaoHelper(daoHelper); |
||||
} |
||||
|
||||
@Override |
||||
protected void tearDown() throws Exception { |
||||
super.tearDown(); |
||||
getJdbcTemplate().execute("shutdown"); |
||||
} |
||||
|
||||
private void runDatabaseMigration(DataSource dataSource) { |
||||
SpringLiquibase springLiquibase = new SpringLiquibase(); |
||||
springLiquibase.setDataSource(dataSource); |
||||
springLiquibase.setChangeLog("classpath:liquibase/db-changelog.xml"); |
||||
springLiquibase.setResourceLoader(new DefaultResourceLoader()); |
||||
Map<String,String> parameters = new HashMap<>(); |
||||
parameters.put("defaultMusicFolder", Util.getDefaultMusicFolder()); |
||||
parameters.put("varcharLimit", "512"); |
||||
parameters.put("userTableQuote", ""); |
||||
springLiquibase.setChangeLogParameters(parameters); |
||||
try { |
||||
springLiquibase.afterPropertiesSet(); |
||||
} catch (LiquibaseException e) { |
||||
throw new RuntimeException(e); |
||||
} |
||||
} |
||||
|
||||
private DataSource createDataSource() { |
||||
File libresonicHome = SettingsService.getLibresonicHome(); |
||||
DriverManagerDataSource ds = new DriverManagerDataSource(); |
||||
ds.setDriverClassName("org.hsqldb.jdbcDriver"); |
||||
ds.setUrl("jdbc:hsqldb:file:" + libresonicHome.getPath() + "/db/libresonic"); |
||||
ds.setUsername("sa"); |
||||
ds.setPassword(""); |
||||
|
||||
return ds; |
||||
} |
||||
|
||||
protected JdbcTemplate getJdbcTemplate() { |
||||
return daoHelper.getJdbcTemplate(); |
||||
} |
||||
|
||||
private static void deleteDatabase() { |
||||
File libresonicHome = new File(TestCaseUtils.libresonicHomePathForTest()); |
||||
File dbHome = new File(libresonicHome, "db"); |
||||
System.setProperty("libresonic.home", libresonicHome.getPath()); |
||||
|
||||
long now = System.currentTimeMillis(); |
||||
if (now - dbHome.lastModified() > MAX_DB_AGE_MILLIS) { |
||||
System.out.println("Resetting test database: " + dbHome); |
||||
delete(dbHome); |
||||
} |
||||
} |
||||
|
||||
private static void delete(File file) { |
||||
if (file.isDirectory()) { |
||||
for (File child : FileUtil.listFiles(file)) { |
||||
delete(child); |
||||
} |
||||
} |
||||
file.delete(); |
||||
} |
||||
} |
Loading…
Reference in new issue