Skip to content

Commit bec682e

Browse files
test retry handling
1 parent a0bba42 commit bec682e

File tree

5 files changed

+44
-7
lines changed

5 files changed

+44
-7
lines changed

gradle/verification-metadata.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,6 +1168,11 @@
11681168
<sha256 value="b642baef4c570055de4cb3d1667b2b16dced901ff8066345a063691aa06025a4" origin="Generated by Gradle"/>
11691169
</artifact>
11701170
</component>
1171+
<component group="com.squareup.okio" name="okio-jvm" version="3.4.0">
1172+
<artifact name="okio-jvm-3.4.0.jar">
1173+
<sha256 value="0139ec7a506dbbd54cad62291b019cb850534be097c8c66c1000d5fbe8edef3e" origin="Generated by Gradle"/>
1174+
</artifact>
1175+
</component>
11711176
<component group="com.squareup.okio" name="okio-jvm" version="3.6.0">
11721177
<artifact name="okio-jvm-3.6.0.jar">
11731178
<sha256 value="67543f0736fc422ae927ed0e504b98bc5e269fda0d3500579337cb713da28412" origin="Generated by Gradle"/>
@@ -3058,6 +3063,11 @@
30583063
<sha256 value="015d5c229f3cd5c0ebf175c1da08d596d94043362ae9d92637d88848c90537c8" origin="Generated by Gradle"/>
30593064
</artifact>
30603065
</component>
3066+
<component group="org.apache.logging.log4j" name="log4j-slf4j2-impl" version="2.24.3">
3067+
<artifact name="log4j-slf4j2-impl-2.24.3.jar">
3068+
<sha256 value="cdaac22e40ec30c4096e1ebe8c454c8826c0d1c378d7db5d7b3ad166354b0bd3" origin="Generated by Gradle"/>
3069+
</artifact>
3070+
</component>
30613071
<component group="org.apache.lucene" name="lucene-analysis-common" version="10.2.1">
30623072
<artifact name="lucene-analysis-common-10.2.1.jar">
30633073
<sha256 value="73e5dfac4c64ea5af6a0e70276c4cf3216085c05de3a6547d4240145bb362a7d" origin="Generated by Gradle"/>

plugins/microsoft-graph-authz/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ dependencies {
6868
runtimeOnly "io.opentelemetry:opentelemetry-context:1.50.0"
6969
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.20"
7070
implementation "com.squareup.okhttp3:okhttp:4.11.0"
71-
runtimeOnly "com.squareup.okio:okio:3.2.0"
72-
runtimeOnly "com.squareup.okio:okio-jvm:3.2.0"
71+
runtimeOnly "com.squareup.okio:okio:3.4.0"
72+
runtimeOnly "com.squareup.okio:okio-jvm:3.4.0"
7373
runtimeOnly "io.github.std-uritemplate:std-uritemplate:2.0.0"
7474
runtimeOnly "com.azure:azure-core-http-okhttp:1.12.10"
7575
implementation "com.google.code.gson:gson:2.10"

x-pack/plugin/security/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ dependencies {
6565
exclude group: 'org.bouncycastle'
6666
}
6767
api "org.slf4j:slf4j-api:${versions.slf4j}"
68-
runtimeOnly "org.slf4j:slf4j-nop:${versions.slf4j}" // workaround for https://github.com/elastic/elasticsearch/issues/93714
69-
// api "org.apache.logging.log4j:log4j-slf4j-impl:${versions.log4j}" see above
68+
api "org.apache.logging.log4j:log4j-slf4j2-impl:2.24.3"
7069

7170
api "org.apache.httpcomponents:httpclient:${versions.httpclient}"
7271
api "org.apache.httpcomponents:httpcore:${versions.httpcore}"
@@ -184,6 +183,7 @@ tasks.named("dependencyLicenses").configure {
184183
mapping from: /http.*/, to: 'httpclient'
185184
mapping from: /bc.*/, to: 'bouncycastle'
186185
mapping from: /failureaccess.*/, to: 'guava'
186+
mapping from: 'content-type', to: 'nimbus'
187187
}
188188

189189
tasks.named("forbiddenPatterns").configure {

x-pack/plugin/security/qa/microsoft-graph-authz-tests/src/javaRestTest/java/org/elasticsearch/xpack/security/authz/microsoft/MicrosoftGraphAuthzPluginIT.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ private static ElasticsearchCluster initTestCluster() {
100100
.setting("xpack.security.authc.realms.microsoft_graph.microsoft_graph1.graph_host", () -> graphFixture.getBaseUrl() + "/v1.0")
101101
.setting("xpack.security.authc.realms.microsoft_graph.microsoft_graph1.access_token_host", graphFixture::getBaseUrl)
102102
.setting("logger.org.elasticsearch.xpack.security.authz.microsoft", "TRACE")
103+
.setting("logger.com.microsoft", "TRACE")
104+
.setting("logger.com.azure", "TRACE")
103105
.systemProperty("javax.net.ssl.trustStore", () -> trustStore.getTrustStorePath().toString())
104106
.systemProperty("javax.net.ssl.trustStoreType", "jks")
105107
.systemProperty("tests.azure.credentials.disable_instance_discovery", "true")

x-pack/plugin/security/qa/microsoft-graph-authz-tests/src/javaRestTest/java/org/elasticsearch/xpack/security/authz/microsoft/MsGraphHttpFixture.java

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,15 @@
3636
import java.util.HashMap;
3737
import java.util.List;
3838
import java.util.Map;
39+
import java.util.Random;
3940
import java.util.UUID;
41+
import java.util.concurrent.atomic.AtomicInteger;
4042

4143
import javax.net.ssl.KeyManager;
4244
import javax.net.ssl.SSLContext;
4345

46+
import static org.elasticsearch.test.ESTestCase.randomBoolean;
47+
4448
public class MsGraphHttpFixture extends ExternalResource {
4549

4650
private static final Logger logger = LogManager.getLogger(MsGraphHttpFixture.class);
@@ -53,7 +57,11 @@ public class MsGraphHttpFixture extends ExternalResource {
5357
private final String email;
5458
private final String[] firstGroupsPage;
5559
private final String[] secondGroupsPage;
56-
private final String jwt;
60+
private final String jwt = "test jwt";
61+
62+
private final AtomicInteger loginCount = new AtomicInteger(0);
63+
private final AtomicInteger getUserPropertiesCount = new AtomicInteger(0);
64+
private final AtomicInteger getGroupMembershipCount = new AtomicInteger(0);
5765

5866
private HttpsServer server;
5967

@@ -75,8 +83,6 @@ public MsGraphHttpFixture(
7583
this.email = email;
7684
this.firstGroupsPage = firstGroupsPage;
7785
this.secondGroupsPage = secondGroupsPage;
78-
79-
this.jwt = "test jwt";
8086
}
8187

8288
@Override
@@ -105,6 +111,7 @@ protected void before() throws Throwable {
105111
exchange.close();
106112
});
107113
server.start();
114+
logger.info("Started server on port [{}]", server.getAddress().getPort());
108115
}
109116

110117
@Override
@@ -118,6 +125,9 @@ public String getBaseUrl() {
118125

119126
private void registerGetAccessTokenHandler() {
120127
server.createContext("/" + tenantId + "/oauth2/v2.0/token", exchange -> {
128+
logger.info("Received access token request");
129+
loginCount.incrementAndGet();
130+
121131
if (exchange.getRequestMethod().equals("POST") == false) {
122132
graphError(exchange, RestStatus.METHOD_NOT_ALLOWED, "Expected POST request");
123133
return;
@@ -171,6 +181,9 @@ private void registerGetAccessTokenHandler() {
171181

172182
private void registerGetUserHandler() {
173183
server.createContext("/v1.0/users/" + principal, exchange -> {
184+
logger.info("Received get user properties request [{}]", exchange.getRequestURI());
185+
final var callCount = getUserPropertiesCount.incrementAndGet();
186+
174187
if (exchange.getRequestMethod().equals("GET") == false) {
175188
graphError(exchange, RestStatus.METHOD_NOT_ALLOWED, "Expected GET request");
176189
return;
@@ -187,6 +200,15 @@ private void registerGetUserHandler() {
187200
return;
188201
}
189202

203+
// ensure the client retries temporary errors
204+
if (callCount == 1) {
205+
graphError(exchange, RestStatus.GATEWAY_TIMEOUT, "Gateway timed out");
206+
return;
207+
} else if (callCount == 2) {
208+
graphError(exchange, RestStatus.TOO_MANY_REQUESTS, "Too many requests");
209+
return;
210+
}
211+
190212
var userProperties = XContentBuilder.builder(XContentType.JSON.xContent());
191213
userProperties.startObject();
192214
userProperties.field("displayName", displayName);
@@ -207,6 +229,9 @@ private void registerGetUserMembershipHandler() {
207229
final var skipToken = UUID.randomUUID().toString();
208230

209231
server.createContext("/v1.0/users/" + principal + "/memberOf", exchange -> {
232+
logger.info("Received get user membership request [{}]", exchange.getRequestURI());
233+
getGroupMembershipCount.incrementAndGet();
234+
210235
if (exchange.getRequestMethod().equals("GET") == false) {
211236
graphError(exchange, RestStatus.METHOD_NOT_ALLOWED, "Expected GET request");
212237
return;

0 commit comments

Comments
 (0)