Skip to content

Commit 7c6562b

Browse files
committed
Merge tests of clientInitiated CQN
1 parent 28f7080 commit 7c6562b

File tree

2 files changed

+93
-5
lines changed

2 files changed

+93
-5
lines changed

test/cqn01.js

Lines changed: 92 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
const oracledb = require('oracledb');
2828
const should = require('should');
29+
const events = require('events');
2930
const dbconfig = require('./dbconfig.js');
3031
const testsUtil = require('./testsUtil.js');
3132

@@ -85,15 +86,16 @@ describe('224. cqn01.js', function() {
8586
}
8687
}); // after()
8788

88-
it('224.1', async () => {
89+
it('224.1 client initiated CQN', async () => {
8990
try {
90-
const TABLE = 'nodb_tab_cqn_01';
91+
const TABLE = 'nodb_tab_cqn_001';
9192
let sql =
9293
`CREATE TABLE ${TABLE} (
9394
k NUMBER
9495
)`;
9596
let plsql = testsUtil.sqlCreateTable(TABLE, sql);
9697
await conn.execute(plsql);
98+
const eventEmitter = new events.EventEmitter();
9799

98100
const myCallback = function(message) {
99101
// should.strictEqual(message.type, oracledb.SUBSCR_EVENT_TYPE_QUERY_CHANGE);
@@ -103,6 +105,7 @@ describe('224. cqn01.js', function() {
103105
// should.strictEqual(table.name, tableName);
104106
// should.strictEqual(table.operation, oracledb.CQN_OPCODE_INSERT);
105107
console.log(message);
108+
eventEmitter.emit("received");
106109
};
107110

108111
const options = {
@@ -114,14 +117,32 @@ describe('224. cqn01.js', function() {
114117
clientInitiated: true
115118
};
116119

117-
await conn.subscribe('nodb_sub_01', options);
120+
console.log("Message 1:");
121+
await conn.subscribe('nodb_sub_001', options);
118122

119123
sql = `INSERT INTO ${TABLE} VALUES (101)`;
120124
await conn.execute(sql);
121125

126+
sql = `INSERT INTO ${TABLE} VALUES (99)`;
127+
await conn.execute(sql);
128+
129+
sql = `INSERT INTO ${TABLE} VALUES (102)`;
130+
await conn.execute(sql);
131+
122132
await conn.commit();
123133

124-
await conn.unsubscribe('nodb_sub_01');
134+
await new Promise(function(resolve, reject) {
135+
const timeout = setTimeout(function() {
136+
reject(new Error("Timed out!"));
137+
}, 25000);
138+
eventEmitter.on("received", function() {
139+
console.log("Received message!");
140+
clearTimeout(timeout);
141+
resolve()
142+
});
143+
});
144+
145+
await conn.unsubscribe('nodb_sub_001');
125146

126147
sql = `DROP TABLE ${TABLE} PURGE`;
127148
await conn.execute(sql);
@@ -130,4 +151,71 @@ describe('224. cqn01.js', function() {
130151
}
131152

132153
}); // 224.1
154+
155+
it('224.2 previous CQN', async () => {
156+
try {
157+
const TABLE = 'nodb_tab_cqn_002';
158+
let sql =
159+
`CREATE TABLE ${TABLE} (
160+
k NUMBER
161+
)`;
162+
let plsql = testsUtil.sqlCreateTable(TABLE, sql);
163+
await conn.execute(plsql);
164+
165+
const eventEmitter = new events.EventEmitter();
166+
167+
const myCallback = function(message) {
168+
// should.strictEqual(message.type, oracledb.SUBSCR_EVENT_TYPE_QUERY_CHANGE);
169+
// should.strictEqual(message.registered, true);
170+
// const table = message.queries[0].tables[0];
171+
// const tableName = dbconfig.user.toUpperCase() + '.' + TABLE.toUpperCase();
172+
// should.strictEqual(table.name, tableName);
173+
// should.strictEqual(table.operation, oracledb.CQN_OPCODE_INSERT);
174+
console.log(message);
175+
eventEmitter.emit("received");
176+
};
177+
178+
const options = {
179+
callback : myCallback,
180+
sql: `SELECT * FROM ${TABLE} WHERE k > :bv`,
181+
binds: { bv : 100 },
182+
timeout : 20,
183+
qos : oracledb.SUBSCR_QOS_QUERY | oracledb.SUBSCR_QOS_ROWIDS
184+
};
185+
186+
console.log("Message 2:");
187+
await conn.subscribe('nodb_sub_002', options);
188+
189+
await testsUtil.sleep();
190+
191+
sql = `INSERT INTO ${TABLE} VALUES (101)`;
192+
await conn.execute(sql);
193+
194+
sql = `INSERT INTO ${TABLE} VALUES (99)`;
195+
await conn.execute(sql);
196+
197+
sql = `INSERT INTO ${TABLE} VALUES (102)`;
198+
await conn.execute(sql);
199+
200+
await conn.commit();
201+
202+
await new Promise(function(resolve, reject) {
203+
const timeout = setTimeout(function() {
204+
reject(new Error("Timed out!"));
205+
}, 25000);
206+
eventEmitter.on("received", function() {
207+
console.log("Received message!");
208+
clearTimeout(timeout);
209+
resolve()
210+
});
211+
});
212+
213+
await conn.unsubscribe('nodb_sub_002');
214+
215+
sql = `DROP TABLE ${TABLE} PURGE`;
216+
await conn.execute(sql);
217+
} catch (err) {
218+
should.not.exist(err);
219+
}
220+
}); // 224.2
133221
});

test/cqn02.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
* limitations under the License.
1717
*
1818
* NAME
19-
* 225. cqn01.js
19+
* 225. cqn02.js
2020
*
2121
* DESCRIPTION
2222
* Negative test of CQN client initiated connections.

0 commit comments

Comments
 (0)