mysql5/mysql-5.7.27/storage/ndb/nodejs/test/spi/InsertAndDeleteIntTest.js

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 ];