138 lines
3.5 KiB
JavaScript
138 lines
3.5 KiB
JavaScript
/*
|
|
Copyright (c) 2012, Oracle and/or its affiliates. All rights
|
|
reserved.
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; version 2 of
|
|
the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
02110-1301 USA
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
try {
|
|
require("./suite_config.js");
|
|
} catch(e) {}
|
|
|
|
var path = require("path"),
|
|
spi_lib = require("./lib.js"),
|
|
dbt = require(mynode.common.DBTableHandler),
|
|
udebug = unified_debug.getLogger("InsertAndDeleteIntTest.js");
|
|
|
|
var dbSession = null,
|
|
table = null;
|
|
|
|
var t1 = new harness.SerialTest("InsertInt");
|
|
|
|
t1.prepare = function prepare(testObj) {
|
|
var connection = null,
|
|
test = this;
|
|
|
|
if(dbSession && table) { // already set up
|
|
this.runTestMethod(testObj);
|
|
return;
|
|
}
|
|
|
|
function onTable(err, dbTable) {
|
|
udebug.log("prepare onTable");
|
|
table = dbTable; // set global
|
|
if(err) { test.fail(err); }
|
|
else { test.runTestMethod(testObj); }
|
|
}
|
|
|
|
function onSession(err, sess) {
|
|
udebug.log("prepare onSession");
|
|
dbSession = sess; // set global
|
|
if(err) { test.fail(err); }
|
|
else { dbSession.getConnectionPool().getTableMetadata("test", "tbl1", dbSession, onTable); }
|
|
}
|
|
|
|
function onConnect(err, conn) {
|
|
udebug.log("prepare onConnect");
|
|
connection = conn;
|
|
connection.getDBSession(spi_lib.allocateSessionSlot(), onSession);
|
|
}
|
|
|
|
spi_lib.getConnectionPool(onConnect);
|
|
};
|
|
|
|
t1.runTestMethod = function do_insert_op(dataObj) {
|
|
udebug.log("do_insert_op");
|
|
|
|
var tx = dbSession.getTransactionHandler();
|
|
var thandler = new dbt.DBTableHandler(table, null, null);
|
|
var test = this;
|
|
|
|
var op = dbSession.buildInsertOperation(thandler, dataObj, tx, null);
|
|
|
|
tx.execute([ op ], function(err, tx) {
|
|
if(err) {
|
|
test.appendErrorMessage("ExecuteCommit failed: " + err);
|
|
} else {
|
|
tx.executedOperations.pop();
|
|
}
|
|
test.failOnError();
|
|
});
|
|
};
|
|
|
|
t1.run = function() {
|
|
var insertObj = { i : 13, j: 15 };
|
|
this.prepare(insertObj);
|
|
};
|
|
|
|
|
|
//// DELETE TEST
|
|
|
|
var t2 = new harness.SerialTest("DeleteIntPK");
|
|
t2.prepare = t1.prepare;
|
|
|
|
t2.runTestMethod = function do_delete_op(keyObj) {
|
|
udebug.log("do_delete_op");
|
|
var tx = dbSession.getTransactionHandler();
|
|
var thandler = new dbt.DBTableHandler(table, null, null);
|
|
var ixhandler = thandler.getIndexHandler(keyObj);
|
|
var test = this;
|
|
|
|
var op = dbSession.buildDeleteOperation(ixhandler, keyObj, tx, null);
|
|
|
|
tx.execute([ op ], function(err, tx) {
|
|
if(err) {
|
|
test.appendErrorMessage("ExecuteCommit failed: " + err);
|
|
} else {
|
|
tx.executedOperations.pop();
|
|
}
|
|
test.failOnError();
|
|
});
|
|
};
|
|
|
|
t2.run = function() {
|
|
var deleteKey = { i : 13 };
|
|
this.prepare(deleteKey);
|
|
};
|
|
|
|
/** This test function must be the last in the test file.
|
|
*/
|
|
var close = new harness.SerialTest("CloseSession");
|
|
close.run = function() {
|
|
dbSession.close(function(err) {
|
|
if (err) {
|
|
close.fail("Close got error: " + err);
|
|
} else {
|
|
close.pass();
|
|
}
|
|
});
|
|
};
|
|
|
|
exports.tests = [ t1, t2, close ];
|
|
|