ibm_db
Version:
IBM DB2 and IBM Informix bindings for node
121 lines (111 loc) • 4.54 kB
JavaScript
var common = require("./common")
, ibmdb = require("../")
, pool = new ibmdb.Pool()
, assert = require("assert")
, connectionString = common.connectionString
, connections = []
, connectCount = 10;
openConnectionsUsingPool(connections);
function openConnectionsUsingPool(connections)
{
console.log("\n Test 1:\n", "=======");
console.log("Open", connectCount, "connections from pool.\n");
for (var x = 0; x <= connectCount; x++)
{
(function (connectionIndex) {
console.error("Opening connection #", connectionIndex + 1);
pool.open(connectionString, function (err, connection) {
if (err) {
console.error("error: ", err.message);
assert.equal(err.message, null);
}
connections.push(connection);
if (connectionIndex == connectCount) {
ibmdb.debug(true);
closeConnections(connections);
}
});
})(x);
}
}
function closeConnections (connections)
{
console.log("\n Test 2:\n", "=======");
console.log("Close all connections using pool.close().");
pool.close(function () {
console.error("pool closed.");
testMultipleCloseConnections();
});
}
function testMultipleCloseConnections()
{
console.log("\n Test 3:\n", "=======");
console.log("Test Multiple Close Connections.\n");
const pool = new ibmdb.Pool();
pool.open(connectionString, (err, conn) => {
if (err) { console.log("err", err); return; }
console.log("Connection opened successfully.");
conn.close(function (err2) {
if (err2) { console.log("err2", err2); return; }
console.log("Close 1 Success!");
// We should still able to exec query as conn is returned to pool,
// but connection to server is terminated, it is still active.
console.log("Data = ", conn.querySync("select 1 as c1 from sysibm.sysdummy1"));
conn.close(function (err3) {
if (err3) { console.log("err3", err3); return; }
console.log("Close 2 Success!");
console.log("Data = ", conn.querySync("select 2 as c2 from sysibm.sysdummy1"));
// Get the connection again from pool to actually close it.
pool.open(connectionString, (err, conn) => {
conn.realClose(function (err) {
//Now connection to server is terminated.
console.log("Trying to execute a query on closed connection...");
try {conn.querySync("select 3 as c3 from sysibm.sysdummy1");
} catch(e) {console.log("Error =", e);}
console.log("Going to Close the Pool.");
pool.close(function (err4) {
if (err4) { console.log("err4", err4); return; }
console.log("Pool Closed successfully. Test3 PASSED!");
testSyncConnections();
});
});
});
});
});
});
}
function testSyncConnections()
{
console.log("\n Test 4:\n", "=======");
console.log("Testing synchronous version of connection pool APIs.\n");
const pool2 = new ibmdb.Pool();
try {
var conn = pool2.openSync(connectionString);
} catch(error) {
console.log("error = ", error); return;
}
console.log("Connection opened successfully.");
console.log("Data = ", conn.querySync("select 1 as c1 from sysibm.sysdummy1"));
var err = conn.closeSync();
if (err) { console.log("Error in first closeSync,", err); return; }
console.log("CloseSync 1 Success!");
console.log("Data = ", conn.querySync("select 2 as c2 from sysibm.sysdummy1"));
err = conn.closeSync();
if (err) { console.log("Error in second closeSync,", err); return; }
console.log("CloseSync 2 Success!");
try {
// Get the connection again from pool to actually close it.
conn = pool2.openSync(connectionString);
err = conn.realCloseSync();
if (err != true) { console.log("Error in real closeSync,", err); }
console.log("RealCloseSync Success!");
console.log("Trying to execute a query on closed connection...");
conn.querySync("select 3 as c3 from sysibm.sysdummy1");
} catch(error) {
console.log("Error = ", error);
}
console.log("Going to Close the Pool.");
err = pool2.closeSync();
if (err) { console.log("err", err); return; }
console.log("Pool Closed successfully. Test4 PASSED!");
}