Skip to content

Commit 6d7444f

Browse files
committed
add some comments and unit test
1 parent 067f961 commit 6d7444f

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

internal/controller/nginx/config/maps.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,14 +185,18 @@ func createAddHeadersMap(name string) shared.Map {
185185

186186
// buildInferenceMaps creates maps for InferencePool Backends.
187187
func buildInferenceMaps(groups []dataplane.BackendGroup) []shared.Map {
188-
inferenceMaps := make([]shared.Map, 0)
188+
inferenceMaps := make([]shared.Map, 0, len(groups))
189189
for _, group := range groups {
190190
for _, backend := range group.Backends {
191191
if backend.EndpointPickerConfig != nil {
192192
var defaultResult string
193193
switch backend.EndpointPickerConfig.FailureMode {
194+
// in FailClose mode, if the EPP is unavailable or returns an error,
195+
// we return an invalid backend to ensure the request fails
194196
case inference.EndpointPickerFailClose:
195197
defaultResult = invalidBackendRef
198+
// in FailOpen mode, if the EPP is unavailable or returns an error,
199+
// we fall back to the upstream
196200
case inference.EndpointPickerFailOpen:
197201
defaultResult = backend.UpstreamName
198202
}

internal/controller/nginx/modules/test/epp.test.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
import { default as epp } from '../src/epp.js';
22
import { expect, describe, it, beforeEach, afterEach, vi } from 'vitest';
33

4-
function makeRequest({ method = 'POST', headersIn = {}, requestText = '', variables = {} } = {}) {
4+
function makeRequest({
5+
method = 'POST',
6+
headersIn = {},
7+
args = {},
8+
requestText = '',
9+
variables = {},
10+
} = {}) {
511
return {
612
method,
713
headersIn,
814
requestText,
915
variables,
16+
args,
1017
error: vi.fn(),
1118
log: vi.fn(),
1219
internalRedirect: vi.fn(),
@@ -79,4 +86,21 @@ describe('getEndpoint', () => {
7986
expect(r.error).toHaveBeenCalledWith(expect.stringContaining('Error in ngx.fetch'));
8087
expect(r.internalRedirect).toHaveBeenCalledWith('/foo');
8188
});
89+
90+
it('preserves args in internal redirect when args are present', async () => {
91+
const endpoint = 'http://endpoint';
92+
globalThis.ngx = {
93+
fetch: vi.fn().mockResolvedValue({
94+
status: 200,
95+
headers: { get: () => endpoint },
96+
text: vi.fn(),
97+
}),
98+
};
99+
const r = makeRequest({
100+
variables: { epp_host: 'host', epp_port: '1234', epp_internal_path: '/foo' },
101+
args: { a: '1', b: '2' },
102+
});
103+
await epp.getEndpoint(r);
104+
expect(r.internalRedirect).toHaveBeenCalledWith('/foo?a=1&b=2');
105+
});
82106
});

0 commit comments

Comments
 (0)