perf(core): Batch items sent in runonceforeachitem mode (no-changelog) (#11870)

Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
This commit is contained in:
Tomi Turtiainen
2024-11-26 12:21:51 +02:00
committed by GitHub
parent 1adb730599
commit e22d0f3877
17 changed files with 457 additions and 83 deletions

View File

@@ -1,14 +1,17 @@
import { BuiltInsParserState } from '../built-ins-parser-state';
describe('BuiltInsParserState', () => {
describe('toDataRequestSpecification', () => {
describe('toDataRequestParams', () => {
it('should return empty array when no properties are marked as needed', () => {
const state = new BuiltInsParserState();
expect(state.toDataRequestParams()).toEqual({
dataOfNodes: [],
env: false,
input: false,
input: {
chunk: undefined,
include: false,
},
prevNode: false,
});
});
@@ -20,7 +23,10 @@ describe('BuiltInsParserState', () => {
expect(state.toDataRequestParams()).toEqual({
dataOfNodes: 'all',
env: false,
input: true,
input: {
chunk: undefined,
include: true,
},
prevNode: false,
});
});
@@ -33,7 +39,10 @@ describe('BuiltInsParserState', () => {
expect(state.toDataRequestParams()).toEqual({
dataOfNodes: ['Node1', 'Node2'],
env: false,
input: false,
input: {
chunk: undefined,
include: false,
},
prevNode: false,
});
});
@@ -47,7 +56,10 @@ describe('BuiltInsParserState', () => {
expect(state.toDataRequestParams()).toEqual({
dataOfNodes: 'all',
env: false,
input: true,
input: {
chunk: undefined,
include: true,
},
prevNode: false,
});
});
@@ -59,7 +71,10 @@ describe('BuiltInsParserState', () => {
expect(state.toDataRequestParams()).toEqual({
dataOfNodes: [],
env: true,
input: false,
input: {
chunk: undefined,
include: false,
},
prevNode: false,
});
});
@@ -71,7 +86,33 @@ describe('BuiltInsParserState', () => {
expect(state.toDataRequestParams()).toEqual({
dataOfNodes: [],
env: false,
input: true,
input: {
chunk: undefined,
include: true,
},
prevNode: false,
});
});
it('should use the given chunk', () => {
const state = new BuiltInsParserState();
state.markInputAsNeeded();
expect(
state.toDataRequestParams({
count: 10,
startIndex: 5,
}),
).toEqual({
dataOfNodes: [],
env: false,
input: {
chunk: {
count: 10,
startIndex: 5,
},
include: true,
},
prevNode: false,
});
});
@@ -83,7 +124,10 @@ describe('BuiltInsParserState', () => {
expect(state.toDataRequestParams()).toEqual({
dataOfNodes: [],
env: false,
input: false,
input: {
chunk: undefined,
include: false,
},
prevNode: true,
});
});
@@ -98,7 +142,10 @@ describe('BuiltInsParserState', () => {
expect(state.toDataRequestParams()).toEqual({
dataOfNodes: 'all',
env: true,
input: true,
input: {
chunk: undefined,
include: true,
},
prevNode: true,
});
});
@@ -109,7 +156,10 @@ describe('BuiltInsParserState', () => {
expect(state.toDataRequestParams()).toEqual({
dataOfNodes: 'all',
env: true,
input: true,
input: {
chunk: undefined,
include: true,
},
prevNode: true,
});
});

View File

@@ -1,4 +1,5 @@
import type { BrokerMessage } from '@/message-types';
import type { InputDataChunkDefinition } from '@/runner-types';
/**
* Class to keep track of which built-in variables are accessed in the code
@@ -53,11 +54,16 @@ export class BuiltInsParserState {
this.needs$prevNode = true;
}
toDataRequestParams(): BrokerMessage.ToRequester.TaskDataRequest['requestParams'] {
toDataRequestParams(
chunk?: InputDataChunkDefinition,
): BrokerMessage.ToRequester.TaskDataRequest['requestParams'] {
return {
dataOfNodes: this.needsAllNodes ? 'all' : Array.from(this.neededNodeNames),
env: this.needs$env,
input: this.needs$input,
input: {
include: this.needs$input,
chunk,
},
prevNode: this.needs$prevNode,
};
}