Skip to content

Commit

Permalink
refactor(limits): Refactor global limits counter (#7931)
Browse files Browse the repository at this point in the history
  • Loading branch information
zharinov committed Dec 11, 2020
1 parent e41b516 commit c98a537
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 10 deletions.
8 changes: 7 additions & 1 deletion lib/workers/global/initialize.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,20 @@ async function setDirectories(input: RenovateConfig): Promise<RenovateConfig> {
return config;
}

function limitCommitsPerRun(config: RenovateConfig): void {
let limit = config.prCommitsPerRunLimit;
limit = typeof limit === 'number' && limit > 0 ? limit : null;
setMaxLimit(Limit.Commits, limit);
}

export async function globalInitialize(
config_: RenovateConfig
): Promise<RenovateConfig> {
let config = config_;
config = await initPlatform(config);
config = await setDirectories(config);
packageCache.init(config);
setMaxLimit(Limit.Commits, config.prCommitsPerRunLimit);
limitCommitsPerRun(config);
setEmojiConfig(config);
return config;
}
Expand Down
21 changes: 21 additions & 0 deletions lib/workers/global/limits.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,28 @@ describe('lib/workers/global/limits', () => {
it('increments undefined', () => {
incLimitedValue(Limit.Commits);
expect(isLimitReached(Limit.Commits)).toBe(false);
});

it('resets counter', () => {
setMaxLimit(Limit.Commits, 1);
incLimitedValue(Limit.Commits);
expect(isLimitReached(Limit.Commits)).toBe(true);
setMaxLimit(Limit.Commits, 1);
expect(isLimitReached(Limit.Commits)).toBe(false);
});

it('resets limit', () => {
setMaxLimit(Limit.Commits, 1);
incLimitedValue(Limit.Commits);
expect(isLimitReached(Limit.Commits)).toBe(true);
setMaxLimit(Limit.Commits, null);
expect(isLimitReached(Limit.Commits)).toBe(false);
});

it('sets non-positive limit as reached', () => {
setMaxLimit(Limit.Commits, 0);
expect(isLimitReached(Limit.Commits)).toBeTrue();
setMaxLimit(Limit.Commits, -1000);
expect(isLimitReached(Limit.Commits)).toBeTrue();
});
});
13 changes: 4 additions & 9 deletions lib/workers/global/limits.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,10 @@ export function resetAllLimits(): void {
limits.clear();
}

export function setMaxLimit(key: Limit, max: unknown): void {
const maxVal = typeof max === 'number' && max > 0 ? max : null;
logger.debug(`${key} limit = ${maxVal}`);
const limit = limits.get(key);
limits.set(key, {
current: 0,
...limit,
max: maxVal,
});
export function setMaxLimit(key: Limit, val: unknown): void {
const max = typeof val === 'number' ? Math.max(0, val) : null;
limits.set(key, { current: 0, max });
logger.debug(`${key} limit = ${max}`);
}

export function incLimitedValue(key: Limit, incBy = 1): void {
Expand Down

0 comments on commit c98a537

Please sign in to comment.