# copied from roller-jettyrun.properties in "app" submodule,
# Differences: no filtering done here and themes.dir location has changed.
# Hopefully this file can be obsoleted and the one in app referenced directly
installation.type=auto
planet.aggregator.enabled=true

database.configurationType=jdbc
database.jdbc.driverClass=org.apache.derby.jdbc.ClientDriver
# In-memory Derby database activated via "startdb" execution in app/pom.xml
database.jdbc.connectionURL=jdbc:derby://localhost:4224/memory:rollerdb;create=true
database.jdbc.username=app
database.jdbc.password=app

hibernate.dialect=org.hibernate.dialect.DerbyDialect
hibernate.transaction.factory_class=org.hibernate.transaction.JDBCTransactionFactory

#see http://wiki.eclipse.org/EclipseLink/Examples/JPA/Logging
#eclipselink.logging.file=target/eclipselink.log
# OFF, SEVERE, WARNING, INFO, CONFIG, FINE, FINER, ALL
#eclipselink.logging.level=FINER

# use plain text passwords in testing
passwds.encryption.enabled=false

# use src copy of themes for read-only access
themes.dir=target/roller-selenium-tests-6.0.0/themes

# put work in work dir
search.index.dir          =target/work/search-index
uploads.dir               =target/work/uploadsdir
mediafiles.storage.dir    =target/work/mediafiles
log4j.appender.roller.File=target/work/roller.log

# don't auto migrate during tests
uploads.migrate.auto=false

# override tasks.enabled so we can add a test task
tasks.enabled=ScheduledEntriesTask,ResetHitCountsTask,TurnoverReferersTask,PingQueueTask,TestTask

# test task
tasks.TestTask.class=org.apache.roller.weblogger.business.TestTask
tasks.TestTask.startTime=immediate
tasks.TestTask.interval=1800
tasks.TestTask.leaseTime=300

# turn on theme reloading
themes.reload.mode=true

# turn off caching for testing/debugging
cache.sitewide.enabled=false
cache.weblogpage.enabled=false
cache.weblogfeed.enabled=false
cache.planet.enabled=false

# logging - you can set Log4J properties here
#log4j.logger.org.apache.roller.weblogger.business=DEBUG
