Skip to content

Commit

Permalink
txn tests, db shutdown work
Browse files Browse the repository at this point in the history
  • Loading branch information
CraZySacX committed Aug 19, 2015
1 parent fa2b463 commit 9ca0271
Show file tree
Hide file tree
Showing 5 changed files with 175 additions and 8 deletions.
4 changes: 3 additions & 1 deletion bin/stopdbs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#!/bin/bash
java -classpath drivers/derby.jar:drivers/derbytools.jar:drivers/derbynet.jar -jar drivers/derbyrun.jar server shutdown >test\/derby.log 2>&1 &
java -jar drivers/sqltool.jar --rcfile test\/sqltool.rc --sql "SHUTDOWN;" xdb
java -classpath drivers/derby.jar:drivers/derbytools.jar:drivers/derbynet.jar -jar drivers/derbyrun.jar server shutdown
rm -rf test/testdb
rm -rf test/mydb.*
Binary file added drivers/sqltool.jar
Binary file not shown.
47 changes: 40 additions & 7 deletions lib/jdbc.js
Original file line number Diff line number Diff line change
Expand Up @@ -203,20 +203,31 @@ JDBCConn.prototype.setSavepoint = function(savepointName, callback) {
});
};

JDBCConn.prototype.releaseSavepoint = function(savepointName, callback) {
JDBCConn.prototype.releaseSavepoint = function(savepoint, callback) {
var self = this;
self._conn.releaseSavepoint(savepointName, function(err, savepoint) {
self._conn.releaseSavepoint(savepoint, function(err) {
if (err) {
return callback(err);
} else {
return callback(null, savepoint);
return callback(null);
}
});
};

JDBCConn.prototype.commit = function(callback) {
JDBCConn.prototype.getAutoCommit = function(callback) {
var self = this;
self._conn.commit(function(err) {
self._conn.getAutoCommit(function(err, result) {
if (err) {
return callback(err);
} else {
return callback(null, result);
}
});
};

JDBCConn.prototype.setAutoCommit = function(autocommit, callback) {
var self = this;
self._conn.setAutoCommit(autocommit, function(err) {
if (err) {
return callback(err);
} else {
Expand All @@ -225,9 +236,9 @@ JDBCConn.prototype.commit = function(callback) {
});
};

JDBCConn.prototype.rollback = function(callback) {
JDBCConn.prototype.commit = function(callback) {
var self = this;
self._conn.rollback(function(err) {
self._conn.commit(function(err) {
if (err) {
return callback(err);
} else {
Expand All @@ -236,4 +247,26 @@ JDBCConn.prototype.rollback = function(callback) {
});
};

JDBCConn.prototype.rollback = function(savepoint, callback) {
var self = this;

if (savepoint) {
self._conn.rollback(savepoint, function(err) {
if (err) {
return callback(err);
} else {
return callback(null);
}
});
} else {
self._conn.rollback(function(err) {
if (err) {
return callback(err);
} else {
return callback(null);
}
});
}
};

module.exports = JDBCConn;
4 changes: 4 additions & 0 deletions test/sqltool.rc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
urlid xdb
url jdbc:hsqldb:hsql://localhost/xdb;shutdown=true
username SA
password
128 changes: 128 additions & 0 deletions test/test-txn.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
var jinst = require('../lib/jinst.js');
var nodeunit = require('nodeunit');
var jdbcConn = new ( require('../lib/jdbc.js') );

if (!jinst.isJvmCreated()) {
jinst.setupClasspath(['./drivers/hsqldb.jar',
'./drivers/derby.jar',
'./drivers/derbyclient.jar',
'./drivers/derbytools.jar']);
}

var config = {
drivername: 'org.apache.derby.jdbc.ClientDriver',
url: 'jdbc:derby://localhost:1527/testdb;create=true',
};

module.exports = {
testinit: function(test) {
jdbcConn.initialize(config, function(err, drivername) {
test.expect(2);
test.equal(null, err);
test.equal(drivername, 'org.apache.derby.jdbc.ClientDriver');
test.done();
});
},
testopen: function(test) {
jdbcConn.open(function(err, conn) {
test.expect(2);
test.equal(null, err);
test.ok(conn);
test.done();
});
},
testgetautocommit: function(test) {
jdbcConn.getAutoCommit(function(err, result) {
test.expect(2);
test.equal(null, err);
test.ok(result && result == true);
test.done();
});
},
testsetautocommit: function(test) {
jdbcConn.setAutoCommit(false, function(err) {
test.expect(1);
test.equal(null, err);
test.done();
});
},
testsetsavepoint: function(test) {
jdbcConn.setSavepoint("SVP", function(err, savepoint) {
test.expect(2);
test.equal(null, err);
test.ok(savepoint);
jdbcConn.releaseSavepoint(savepoint, function(err) {});
test.done();
});
},
testreleasesavepoint: function(test) {
jdbcConn.setSavepoint("SVP", function(err, savepoint) {
jdbcConn.releaseSavepoint(savepoint, function(err) {
test.expect(1);
test.equal(null, err);
test.done();
});
});
},
testcreatetable: function(test) {
jdbcConn.executeUpdate("CREATE TABLE blah (id int, name varchar(10), date DATE, time TIME, timestamp TIMESTAMP)", function(err, result) {
test.expect(1);
test.equal(null, err);
test.done();
});
},
testinsert: function(test) {
jdbcConn.executeUpdate("INSERT INTO blah VALUES (1, 'Jason', CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP)", function(err, result) {
test.expect(2);
test.equal(null, err);
test.ok(result && result == 1);
jdbcConn.commit(function(err) { if (err) { console.log(err); }});
test.done();
});
},
testupdate: function(test) {
jdbcConn.executeUpdate("UPDATE blah SET id = 2 WHERE name = 'Jason'", function(err, result) {
test.expect(2);
test.equal(null, err);
test.ok(result && result == 1);
jdbcConn.commit(function(err) { if (err) { console.log(err); }});
test.done();
});
},
testselect: function(test) {
jdbcConn.executeQuery("SELECT * FROM blah", function(err, result) {
test.expect(7);
test.equal(null, err);
test.ok(result && result.length == 1);
test.equal(result[0].ID, 2);
test.equal(result[0].NAME, 'Jason');
test.ok(result[0].DATE);
test.ok(result[0].TIME);
test.ok(result[0].TIMESTAMP);
test.done();
});
},
// testeqdelete: function(test) {
// jdbcConn.executeQuery("DELETE FROM blah WHERE id = 2;", function(err, result) {
// test.expect(2);
// test.equal(null, err);
// test.ok(result);
// test.done();
// });
// },
// testeudelete: function(test) {
// jdbcConn.executeUpdate("DELETE FROM blah WHERE id = 4;", function(err, result) {
// test.expect(2);
// test.equal(null, err);
// test.ok(result && result == 1);
// test.done();
// });
// },
testdroptable: function(test) {
jdbcConn.executeUpdate("DROP TABLE blah", function(err, result) {
test.expect(1);
test.equal(null, err);
test.done();
});
}
};

0 comments on commit 9ca0271

Please sign in to comment.