11import R from 'ramda' ;
22import { BaseDriver } from '@cubejs-backend/query-orchestrator' ;
3- import { SchemaFileRepository } from '@cubejs-backend/shared' ;
3+ import { pausePromise , SchemaFileRepository } from '@cubejs-backend/shared' ;
44import { CubejsServerCore , DatabaseType } from '../../src' ;
55import { RefreshScheduler } from '../../src/core/RefreshScheduler' ;
66import { CompilerApi } from '../../src/core/CompilerApi' ;
@@ -333,34 +333,30 @@ class MockDriver extends BaseDriver {
333333
334334let testCounter = 1 ;
335335
336- const setupScheduler = ( { repository, useOriginalSqlPreAggregations } : { repository : SchemaFileRepository , useOriginalSqlPreAggregations ?: boolean } ) => {
336+ const setupScheduler = ( { repository, useOriginalSqlPreAggregations, skipAssertSecurityContext } : { repository : SchemaFileRepository , useOriginalSqlPreAggregations ?: boolean , skipAssertSecurityContext ?: true } ) => {
337+ const mockDriver = new MockDriver ( ) ;
338+ const externalDriver = new MockDriver ( ) ;
339+
337340 const serverCore = new CubejsServerCore ( {
338- dbType : 'postgres' ,
339341 apiSecret : 'foo' ,
340- } ) ;
341- const compilerApi = new CompilerApi (
342- repository ,
343- async ( ) => 'postgres' ,
344- {
345- compileContext : {
346- useOriginalSqlPreAggregations,
347- } ,
348- logger : ( msg , params ) => {
349- console . log ( msg , params ) ;
350- } ,
351- }
352- ) ;
342+ logger : ( msg , params ) => console . log ( msg , params ) ,
343+ driverFactory : async ( { securityContext } ) => {
344+ expect ( typeof securityContext ) . toEqual ( 'object' ) ;
345+ if ( ! skipAssertSecurityContext ) {
346+ expect ( securityContext . hasOwnProperty ( 'tenantId' ) ) . toEqual ( true ) ;
347+ }
353348
354- const mockDriver = new MockDriver ( ) ;
349+ return mockDriver ;
350+ } ,
351+ externalDriverFactory : async ( { securityContext } ) => {
352+ expect ( typeof securityContext ) . toEqual ( 'object' ) ;
353+ if ( ! skipAssertSecurityContext ) {
354+ expect ( securityContext . hasOwnProperty ( 'tenantId' ) ) . toEqual ( true ) ;
355+ }
355356
356- const orchestratorApi = new OrchestratorApi (
357- ( ) => mockDriver ,
358- ( msg , params ) => console . log ( msg , params ) ,
359- {
360- contextToDbType : async ( ) => 'postgres' ,
361- contextToExternalDbType ( ) : DatabaseType {
362- return 'cubestore' ;
363- } ,
357+ return externalDriver ;
358+ } ,
359+ orchestratorOptions : ( ) => ( {
364360 continueWaitTimeout : 0.1 ,
365361 queryCacheOptions : {
366362 queueOptions : ( ) => ( {
@@ -374,14 +370,26 @@ const setupScheduler = ({ repository, useOriginalSqlPreAggregations }: { reposit
374370 } ) ,
375371 } ,
376372 redisPrefix : `TEST_${ testCounter ++ } ` ,
373+ } )
374+ } ) ;
375+
376+ const compilerApi = new CompilerApi (
377+ repository ,
378+ async ( ) => 'postgres' ,
379+ {
380+ compileContext : {
381+ useOriginalSqlPreAggregations,
382+ } ,
383+ logger : ( msg , params ) => {
384+ console . log ( msg , params ) ;
385+ } ,
377386 }
378387 ) ;
379388
380389 jest . spyOn ( serverCore , 'getCompilerApi' ) . mockImplementation ( ( ) => compilerApi ) ;
381- jest . spyOn ( serverCore , 'getOrchestratorApi' ) . mockImplementation ( ( ) => < any > orchestratorApi ) ;
382390
383391 const refreshScheduler = new RefreshScheduler ( serverCore ) ;
384- return { refreshScheduler, orchestratorApi , mockDriver } ;
392+ return { refreshScheduler, compilerApi , mockDriver } ;
385393} ;
386394
387395describe ( 'Refresh Scheduler' , ( ) => {
@@ -393,6 +401,11 @@ describe('Refresh Scheduler', () => {
393401 delete process . env . CUBEJS_DB_QUERY_TIMEOUT ;
394402 } ) ;
395403
404+ afterAll ( async ( ) => {
405+ // align logs from STDOUT
406+ await pausePromise ( 100 ) ;
407+ } ) ;
408+
396409 test ( 'Round robin pre-aggregation refresh by history priority' , async ( ) => {
397410 process . env . CUBEJS_EXTERNAL_DEFAULT = 'false' ;
398411 process . env . CUBEJS_SCHEDULED_REFRESH_DEFAULT = 'true' ;
@@ -876,6 +889,7 @@ describe('Refresh Scheduler', () => {
876889 process . env . CUBEJS_SCHEDULED_REFRESH_DEFAULT = 'true' ;
877890 const { refreshScheduler } = setupScheduler ( {
878891 repository : repositoryWithoutPreAggregations ,
892+ skipAssertSecurityContext : true ,
879893 } ) ;
880894
881895 for ( let i = 0 ; i < 50 ; i ++ ) {
0 commit comments