Skip to content

Commit 4d0428a

Browse files
Add test cases with project routing
1 parent 1581480 commit 4d0428a

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

server/src/test/java/org/elasticsearch/search/crossproject/CrossProjectIndexResolutionValidatorTests.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,64 @@ public void testMissingResponseFromLinkedProjectsWithLenientAllowNoIndices() {
253253
assertNull(e);
254254
}
255255

256+
public void testMissingResponseFromLinkedProjectsForQualifiedExpressionWithStrictIgnoreUnavailable() {
257+
ResolvedIndexExpressions local = new ResolvedIndexExpressions(
258+
List.of(new ResolvedIndexExpression("P1:logs", ResolvedIndexExpression.LocalExpressions.NONE, Set.of("P1:logs")))
259+
);
260+
261+
// Mimic no response from P1 project.
262+
var remote = Map.of(
263+
"P2",
264+
new ResolvedIndexExpressions(
265+
List.of(
266+
new ResolvedIndexExpression(
267+
"not-logs*",
268+
new ResolvedIndexExpression.LocalExpressions(
269+
Set.of("not-logs"),
270+
ResolvedIndexExpression.LocalIndexResolutionResult.SUCCESS,
271+
null
272+
),
273+
Set.of()
274+
)
275+
)
276+
)
277+
);
278+
279+
// logs does not exist in the remote responses and indices options are strict. We expect an error.
280+
var e = CrossProjectIndexResolutionValidator.validate(getStrictIgnoreUnavailable(), null, local, remote);
281+
assertNotNull(e);
282+
assertThat(e, instanceOf(IndexNotFoundException.class));
283+
assertThat(e.getMessage(), containsString("no such index [P1:logs]"));
284+
}
285+
286+
public void testMissingResponseFromLinkedProjectsForQualifiedExpressionWithLenientIgnoreUnavailable() {
287+
ResolvedIndexExpressions local = new ResolvedIndexExpressions(
288+
List.of(new ResolvedIndexExpression("P1:logs", ResolvedIndexExpression.LocalExpressions.NONE, Set.of("P1:logs")))
289+
);
290+
291+
// Mimic no response from P1 project.
292+
var remote = Map.of(
293+
"P2",
294+
new ResolvedIndexExpressions(
295+
List.of(
296+
new ResolvedIndexExpression(
297+
"not-logs*",
298+
new ResolvedIndexExpression.LocalExpressions(
299+
Set.of("not-logs"),
300+
ResolvedIndexExpression.LocalIndexResolutionResult.SUCCESS,
301+
null
302+
),
303+
Set.of()
304+
)
305+
)
306+
)
307+
);
308+
309+
// logs does not exist in the remote responses and indices options are lenient. We do not expect an error.
310+
var e = CrossProjectIndexResolutionValidator.validate(getLenientIndicesOptions(), null, local, remote);
311+
assertNull(e);
312+
}
313+
256314
public void testUnauthorizedFlatExpressionWithStrictIgnoreUnavailable() {
257315
final var exception = new ElasticsearchSecurityException("authorization errors while resolving [logs]");
258316
ResolvedIndexExpressions local = new ResolvedIndexExpressions(

0 commit comments

Comments
 (0)