helma/modules/jala/tests/Database.js

164 lines
4.5 KiB
JavaScript
Raw Normal View History

2020-03-16 16:53:52 +01:00
/**
* Contains the system's temporary directory
* @type helma.File
* @private
*/
var tmpDir = new helma.File(java.lang.System.getProperty("java.io.tmpdir"));
/**
* Contains the server created in testServer method
* @private
*/
var server = null;
/**
* Basic tests for jala.db.RamDatabase. All of these tests are
* valid for jala.db.FileDatabase too.
*/
var testRamDatabase = function() {
var db = new jala.db.RamDatabase("test");
assertNotNull(db);
assertEqual(db.getName(), "test");
assertEqual(db.getDatabasePath(), "mem:test");
assertEqual(db.getUrl(), "jdbc:h2:mem:test");
// test connection to database
var conn = db.getConnection();
assertNotNull(conn);
assertTrue(conn instanceof helma.Database);
// create a table
db.createTable("test", [
{
name: "id",
type: java.sql.Types.INTEGER,
nullable: false,
unique: true
},
{
name: "name",
type: java.sql.Types.VARCHAR,
length: 255
}
], "id");
// test if the table exists
assertTrue(db.tableExists("test"));
// dump database
var dumpFile = new helma.File(tmpDir, "backup.test.sql");
assertTrue(db.dump(dumpFile));
assertTrue(dumpFile.exists());
assertTrue(dumpFile.getLength() > 0);
// remove dump file again
dumpFile.remove();
// drop table
db.dropTable("test");
assertFalse(db.tableExists("test"));
// test db shutdown
db.shutdown();
assertThrows(function() {
conn.query("select 1 = 1");
}, Packages.org.h2.jdbc.JdbcSQLException);
return;
};
/**
* Basic tests for jala.db.FileDatabase that are different to
* jala.db.RamDatabase
*/
var testFileDatabase = function() {
var db = new jala.db.FileDatabase("test", tmpDir);
assertNotNull(db);
assertEqual(db.getName(), "test");
assertEqual(db.getDirectory(), tmpDir);
var dbDir = new helma.File(tmpDir, "test");
assertEqual(db.getDatabasePath(), "file:" + dbDir.getAbsolutePath());
assertEqual(db.getUrl(), "jdbc:h2:file:" + dbDir.getAbsolutePath());
// execute sql script (need to do that, otherwise the backup won't
// work because the database is empty)
var sqlFile = jala.Test.getTestFile("Database.script.sql");
assertTrue(db.runScript(sqlFile));
assertTrue(db.tableExists("test"));
// test backup
var backupFile = new helma.File(tmpDir, "backup.zip");
assertTrue(db.backup(backupFile));
assertTrue(backupFile.exists());
assertTrue(backupFile.getLength() > 0);
// remove the database
db.remove();
assertFalse((new helma.File(db.getDirectory(), db.getName() + ".data.db")).exists());
assertFalse((new helma.File(db.getDirectory(), db.getName() + ".index.db")).exists());
assertFalse((new helma.File(db.getDirectory(), db.getName() + ".trace.db")).exists());
// test restore
assertTrue(db.restore(backupFile));
assertTrue(db.tableExists("test"));
// remove backup file and database
backupFile.remove();
db.remove();
return;
};
var testServer = function() {
server = new jala.db.Server(tmpDir);
// test default config
assertEqual(tmpDir, server.getDirectory());
assertEqual(server.getPort(), 9092);
assertFalse(server.useSsl());
assertFalse(server.isPublic());
assertFalse(server.createOnDemand());
// test setting config properties
server.useSsl(true);
assertTrue(server.useSsl());
server.isPublic(true);
assertTrue(server.isPublic());
server.createOnDemand(true);
assertTrue(server.createOnDemand());
// reset back some of them
server.useSsl(false);
assertFalse(server.useSsl());
server.isPublic(false);
assertFalse(server.isPublic());
// start the server
assertTrue(server.start());
// test connection properties (this also includes testing
// of server.getUrl())
var props = server.getProperties("test", "test", "1111");
assertEqual(props.getProperty("test.url"), "jdbc:h2:tcp://localhost:9092/test");
assertEqual(props.getProperty("test.driver"), "org.h2.Driver");
assertEqual(props.getProperty("test.user"), "test");
assertEqual(props.getProperty("test.password"), "1111");
var conn = server.getConnection("test", "test", "1111");
assertNotNull(conn);
// stop the server
assertTrue(server.stop());
// and remove the file database created above
var db = new jala.db.FileDatabase("test", tmpDir, "test", "1111");
db.remove();
return;
};
/**
* Stuff to do on cleanup
*/
var cleanup = function() {
if (server != null) {
server.stop();
}
return;
};