backend-tasks: Add test for parseDuration

Signed-off-by: Johan Haals <johan.haals@gmail.com>
This commit is contained in:
Johan Haals
2022-05-03 14:34:13 +02:00
parent 493cb3a965
commit 6433d201fa
2 changed files with 32 additions and 23 deletions
@@ -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();
}