A Dataset is a dump of the entire contents of the Mifos database, xml-formatted by DBUnit. It is used either to initialize the database state before running an acceptance test, or to validate its expected state after the test. When the database undergoes an upgrade (either a schema change, a change in initial data, or some other transformation of existing data) the current DBUnit datasets may no longer be valid and may either cause tests to fail or abort in error or give erroneous results. The procedure outlined below updates the datasets to reflect current schema and default data.
DataSetUpgradeUtil is a utility that upgrades DbUnit XML data set files from a previous data version to the current database version of Mifos. It can update an individual data set file or an entire directory of data set files at once.
The utility is located in application/src/main/java/org.mifos.framework.util.DataSetUpgradeUtil and works like this:
The easiest way to run this program is from within Eclipse, by right clicking the file DataSetUpgradeUtil.java and choosing "Run as Java Program". By clicking "Run configurations..." you get to set up arguments for the program.
All the arguments are listed when "h" or "-help" is supplied as a (command line) argument to the file.
By default the database "mifos_gazelle_acceptance" is used to load and upgrade the data. Its default user/password is "mifos/mifos". You can override this configuration in your local.properties file.
application/src/main/java/org/mifos/config/resources/acceptanceDatabase.properties
these properties prefix as "acceptance.database.*"
This example will upgrade all the *_dbunit.xml.zip files in the dataSets directory.
Set program arguments to:
-a <path-to-project-root-directory>/acceptanceTests/src/test/resources/dataSets -u root -p mysql
Let's say we want to upgrade a single data set filed named "acceptance_small_008_dbunit.xml.zip" that is at database version 213 to the current database version, 215.
Assuming that defaults are ok, set program arguments to:
-f <path-to-project-root-directory>/acceptanceTests/src/test/resources/dataSets/acceptance_small_008_dbunit.xml.zip -u root -p mysql
changelog
file located under db/src/main/resources/changesets
cd
to the new directory$ mysql -u mifos -pmifos -e "drop database mifos" $ mysql -u mifos -pmifos -e "create database mifos" $ mysql -u mifos -pmifos mifos < db/sql/base-schema.sql $ mysql -u mifos -pmifos mifos < db/sql/base-data.sql $ mysql -u mifos -pmifos mifos < db/sql/init_mifos_password.sql |
$ cp db/mifos-db-template.properties db/mifos-db.properties |
username=mifos password=mifos defaultSchemaName=mifos databaseHost=localhost databasePort=3306 |
$ ./db/bin/expand_db.sh |
$ ./db/bin/contract_db.sh |
$ mysqldump -l --no-data -u mifos -pmifos mifos > new_schema.sql |
DataSetUpgradeUtil -a PATH_TO_MIFOS_REPO/acceptanceTests/src/test/resources/dataSets -u mifos -p mifos -d mifos -s PATH_TO_NEW_SCHEMA_DIR/new_schema.sql |