@@ -36,6 +36,7 @@ const assert = require('assert');
3636const assist = require ( './dataTypeAssist.js' ) ;
3737const dbConfig = require ( './dbconfig.js' ) ;
3838const random = require ( './random.js' ) ;
39+ const testsUtil = require ( './testsUtil.js' ) ;
3940
4041describe ( '42. dataTypeRaw.js' , function ( ) {
4142
@@ -497,4 +498,98 @@ describe('42. dataTypeRaw.js', function() {
497498 const result = await connection . execute ( sql ) ;
498499 assert . deepStrictEqual ( result . rows [ 0 ] [ 0 ] , expected ) ;
499500 } ;
501+
502+ describe ( '42.7 DB_TYPE_RAW in Advanced Queue (AQ)' , function ( ) {
503+ let isRunnable = true ;
504+ let conn ;
505+ const AQ_USER = 'NODB_SCHEMA_AQTEST8' ;
506+ const AQ_USER_PWD = testsUtil . generateRandomPassword ( ) ;
507+ const rawQueueName = "NODB_RAW_QUEUE8" ;
508+ const RAW_TABLE = "NODB_RAW_QUEUE_TAB" ;
509+
510+ before ( async function ( ) {
511+ if ( ! dbConfig . test . DBA_PRIVILEGE || oracledb . thin ) {
512+ isRunnable = false ;
513+ }
514+ if ( ! isRunnable ) {
515+ this . skip ( ) ;
516+ } else {
517+ await testsUtil . createAQtestUser ( AQ_USER , AQ_USER_PWD ) ;
518+ const credential = {
519+ user : AQ_USER ,
520+ password : AQ_USER_PWD ,
521+ connectionString : dbConfig . connectString
522+ } ;
523+ conn = await oracledb . getConnection ( credential ) ;
524+
525+ const plsql = `
526+ BEGIN
527+ DBMS_AQADM.CREATE_QUEUE_TABLE(
528+ QUEUE_TABLE => '${ AQ_USER } .${ RAW_TABLE } ',
529+ QUEUE_PAYLOAD_TYPE => 'RAW'
530+ );
531+ DBMS_AQADM.CREATE_QUEUE(
532+ QUEUE_NAME => '${ AQ_USER } .${ rawQueueName } ',
533+ QUEUE_TABLE => '${ AQ_USER } .${ RAW_TABLE } '
534+ );
535+ DBMS_AQADM.START_QUEUE(
536+ QUEUE_NAME => '${ AQ_USER } .${ rawQueueName } '
537+ );
538+ END;
539+ ` ;
540+ await conn . execute ( plsql ) ;
541+ }
542+ } ) ; //before
543+
544+ after ( async function ( ) {
545+ if ( ! isRunnable ) {
546+ return ;
547+ } else {
548+ await conn . close ( ) ;
549+ await testsUtil . dropAQtestUser ( AQ_USER ) ;
550+ }
551+ } ) ; // after
552+
553+ it ( '42.7.1 enqOne/deqOne with DB_TYPE_RAW specified' , async ( ) => {
554+ const queue1 = await conn . getQueue ( rawQueueName ,
555+ { payloadType : oracledb . DB_TYPE_RAW } ) ;
556+ const messageString = 'This is my message' ;
557+ const msgBuf = Buffer . from ( messageString , 'utf8' ) ;
558+ await queue1 . enqOne ( msgBuf ) ;
559+ await conn . commit ( ) ;
560+
561+ //Dequeue
562+ const queue2 = await conn . getQueue ( rawQueueName ) ;
563+ const msg = await queue2 . deqOne ( ) ;
564+ assert ( msg ) ;
565+ assert . strictEqual ( msg . payload . toString ( ) , messageString ) ;
566+ } ) ; // 42.7.1
567+
568+ it ( '42.7.2 enqMany/deqMany with DB_TYPE_RAW specified' , async ( ) => {
569+ const queue1 = await conn . getQueue ( rawQueueName ,
570+ { payloadType : oracledb . DB_TYPE_RAW } ) ;
571+ const messages1 = [
572+ "Message 1" ,
573+ Buffer . from ( "Message 2" , "utf-8" ) ,
574+ Buffer . from ( "Message 3" , "utf-8" ) ,
575+ "Message 4"
576+ ] ;
577+ await queue1 . enqMany ( messages1 ) ;
578+ await conn . commit ( ) ;
579+
580+ /*Dequeue */
581+ const queue2 = await conn . getQueue ( rawQueueName ) ;
582+ const messages2 = await queue2 . deqMany ( 5 ) ;
583+ await conn . commit ( ) ;
584+ assert . strictEqual ( messages2 . length , messages1 . length ) ;
585+ assert . strictEqual ( messages2 [ 0 ] . payload . toString ( ) , messages1 [ 0 ] ) ;
586+ assert . strictEqual ( messages2 [ 1 ] . payload . toString ( ) ,
587+ messages1 [ 1 ] . toString ( ) ) ;
588+ assert . strictEqual ( messages2 [ 2 ] . payload . toString ( ) ,
589+ messages1 [ 2 ] . toString ( ) ) ;
590+ assert . strictEqual ( messages2 [ 3 ] . payload . toString ( ) , messages1 [ 3 ] ) ;
591+ } ) ;
592+
593+ } ) ;
594+
500595} ) ;
0 commit comments