backend-tasks: Add test for parseDuration
Signed-off-by: Johan Haals <johan.haals@gmail.com>
This commit is contained in:
@@ -20,7 +20,10 @@ import { ConflictError, NotFoundError } from '@backstage/errors';
|
||||
import { Duration } from 'luxon';
|
||||
import { AbortSignal } from 'node-abort-controller';
|
||||
import { migrateBackendTasks } from '../database/migrateBackendTasks';
|
||||
import { PluginTaskSchedulerImpl } from './PluginTaskSchedulerImpl';
|
||||
import {
|
||||
parseDuration,
|
||||
PluginTaskSchedulerImpl,
|
||||
} from './PluginTaskSchedulerImpl';
|
||||
|
||||
jest.useFakeTimers();
|
||||
|
||||
@@ -294,4 +297,12 @@ describe('PluginTaskManagerImpl', () => {
|
||||
60_000,
|
||||
);
|
||||
});
|
||||
|
||||
describe('parseDuration', () => {
|
||||
it('should parse durations', () => {
|
||||
expect(parseDuration({ milliseconds: 5000 })).toEqual('PT5S');
|
||||
expect(parseDuration(Duration.fromMillis(5000))).toEqual('PT5S');
|
||||
expect(parseDuration({ cron: '1 * * * *' })).toEqual('1 * * * *');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -49,20 +49,6 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler {
|
||||
await TaskWorker.trigger(knex, id);
|
||||
}
|
||||
|
||||
private parseDuration(
|
||||
frequency: TaskScheduleDefinition['frequency'],
|
||||
): string {
|
||||
if ('cron' in frequency) {
|
||||
return frequency.cron;
|
||||
}
|
||||
|
||||
if (Duration.isDuration(frequency)) {
|
||||
return frequency.toISO();
|
||||
}
|
||||
|
||||
return Duration.fromObject(frequency).toISO();
|
||||
}
|
||||
|
||||
async scheduleTask(
|
||||
task: TaskScheduleDefinition & TaskInvocationDefinition,
|
||||
): Promise<void> {
|
||||
@@ -76,11 +62,10 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler {
|
||||
await worker.start(
|
||||
{
|
||||
version: 2,
|
||||
cadence: this.parseDuration(task.frequency),
|
||||
cadence: parseDuration(task.frequency),
|
||||
initialDelayDuration:
|
||||
task.initialDelay && this.parseDuration(task.initialDelay),
|
||||
timeoutAfterDuration:
|
||||
task.timeout && this.parseDuration(task.timeout),
|
||||
task.initialDelay && parseDuration(task.initialDelay),
|
||||
timeoutAfterDuration: parseDuration(task.timeout),
|
||||
},
|
||||
{
|
||||
signal: task.signal,
|
||||
@@ -92,11 +77,10 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler {
|
||||
worker.start(
|
||||
{
|
||||
version: 2,
|
||||
cadence: this.parseDuration(task.frequency),
|
||||
cadence: parseDuration(task.frequency),
|
||||
initialDelayDuration:
|
||||
task.initialDelay && this.parseDuration(task.initialDelay),
|
||||
timeoutAfterDuration:
|
||||
task.timeout && this.parseDuration(task.timeout),
|
||||
task.initialDelay && parseDuration(task.initialDelay),
|
||||
timeoutAfterDuration: parseDuration(task.timeout),
|
||||
},
|
||||
{
|
||||
signal: task.signal,
|
||||
@@ -115,3 +99,17 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler {
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export function parseDuration(
|
||||
frequency: TaskScheduleDefinition['frequency'],
|
||||
): string {
|
||||
if ('cron' in frequency) {
|
||||
return frequency.cron;
|
||||
}
|
||||
|
||||
if (Duration.isDuration(frequency)) {
|
||||
return frequency.toISO();
|
||||
}
|
||||
|
||||
return Duration.fromObject(frequency).toISO();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user