|
1 | 1 | import R from 'ramda'; |
2 | 2 | import { BaseDriver } from '@cubejs-backend/query-orchestrator'; |
3 | | -import { pausePromise, SchemaFileRepository } from '@cubejs-backend/shared'; |
4 | | -import { clearInterval } from 'timers'; |
| 3 | +import { pausePromise, SchemaFileRepository, createPromiseLock } from '@cubejs-backend/shared'; |
5 | 4 | import { CubejsServerCore, CompilerApi, RefreshScheduler } from '../../src'; |
6 | 5 |
|
7 | 6 | const schemaContent = ` |
@@ -233,16 +232,6 @@ cube('Bar', { |
233 | 232 | ]), |
234 | 233 | }; |
235 | 234 |
|
236 | | -function createDeferred() { |
237 | | - let resolve; |
238 | | - let reject; |
239 | | - const promise = new Promise((res, rej) => { |
240 | | - resolve = res; |
241 | | - reject = rej; |
242 | | - }); |
243 | | - return { promise, resolve, reject }; |
244 | | -} |
245 | | - |
246 | 235 | class MockDriver extends BaseDriver { |
247 | 236 | public tables: any[] = []; |
248 | 237 |
|
@@ -864,18 +853,18 @@ describe('Refresh Scheduler', () => { |
864 | 853 | } |
865 | 854 | } |
866 | 855 |
|
867 | | - const deferred = createDeferred(); |
| 856 | + const lock = createPromiseLock(); |
868 | 857 | const orchestrator = await serverCore.getOrchestratorApi(ctx); |
869 | 858 |
|
870 | 859 | const interval = setInterval(async () => { |
871 | 860 | const queuedList = await orchestrator.getPreAggregationQueueStates(); |
872 | 861 |
|
873 | 862 | if (queuedList.length === 0) { |
874 | | - deferred.resolve(); |
| 863 | + lock.resolve(); |
875 | 864 | } |
876 | 865 | }, 500); |
877 | 866 |
|
878 | | - await deferred.promise; |
| 867 | + await lock.promise; |
879 | 868 | clearInterval(interval); |
880 | 869 |
|
881 | 870 | expect(mockDriver.createdTables.filter(o => o.tableName.includes('foo_first') && o.timezone === 'UTC').length).toEqual(5); |
@@ -923,18 +912,18 @@ describe('Refresh Scheduler', () => { |
923 | 912 | } |
924 | 913 | } |
925 | 914 |
|
926 | | - const deferred = createDeferred(); |
| 915 | + const lock = createPromiseLock(); |
927 | 916 | const orchestrator = await serverCore.getOrchestratorApi(ctx); |
928 | 917 |
|
929 | 918 | const interval = setInterval(async () => { |
930 | 919 | const queuedList = await orchestrator.getPreAggregationQueueStates(); |
931 | 920 |
|
932 | 921 | if (queuedList.length === 0) { |
933 | | - deferred.resolve(); |
| 922 | + lock.resolve(); |
934 | 923 | } |
935 | 924 | }, 500); |
936 | 925 |
|
937 | | - await deferred.promise; |
| 926 | + await lock.promise; |
938 | 927 | clearInterval(interval); |
939 | 928 |
|
940 | 929 | expect(mockDriver.createdTables.filter(o => o.tableName.includes('foo_first') && o.timezone === 'UTC').length).toEqual(5); |
@@ -976,18 +965,18 @@ describe('Refresh Scheduler', () => { |
976 | 965 | } |
977 | 966 | } |
978 | 967 |
|
979 | | - const deferred = createDeferred(); |
| 968 | + const lock = createPromiseLock(); |
980 | 969 | const orchestrator = await serverCore.getOrchestratorApi(ctx); |
981 | 970 |
|
982 | 971 | const interval = setInterval(async () => { |
983 | 972 | const queuedList = await orchestrator.getPreAggregationQueueStates(); |
984 | 973 |
|
985 | 974 | if (queuedList.length === 0) { |
986 | | - deferred.resolve(); |
| 975 | + lock.resolve(); |
987 | 976 | } |
988 | 977 | }, 500); |
989 | 978 |
|
990 | | - await deferred.promise; |
| 979 | + await lock.promise; |
991 | 980 | clearInterval(interval); |
992 | 981 |
|
993 | 982 | expect(mockDriver.createdTables.filter(o => o.tableName.includes('foo_first') && o.timezone === 'UTC').length).toEqual(3); |
|
0 commit comments