Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 15 additions & 10 deletions src/main/java/com/microsoft/graph/http/CoreHttpProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -58,6 +59,7 @@
import okhttp3.Headers;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Protocol;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
Expand Down Expand Up @@ -356,21 +358,24 @@ private <Result, Body, DeserializeType> Result sendRequestInternal(final IHttpRe
throws ClientException {

try {
if(this.connectionConfig == null) {
this.connectionConfig = new DefaultConnectionConfig();
}
if(this.corehttpClient == null) {
OkHttpClient.Builder okBuilder = HttpClients.createDefault(new ICoreAuthenticationProvider() {
final ICoreAuthenticationProvider authProvider = new ICoreAuthenticationProvider() {
@Override
public Request authenticateRequest(Request request) {
return request;
}
}).newBuilder();
if(this.connectionConfig == null) {
this.connectionConfig = new DefaultConnectionConfig();
}
okBuilder.connectTimeout(connectionConfig.getConnectTimeout(), TimeUnit.MILLISECONDS);
okBuilder.readTimeout(connectionConfig.getReadTimeout(), TimeUnit.MILLISECONDS);
okBuilder.followRedirects(false);
okBuilder.retryOnConnectionFailure(false);
this.corehttpClient = okBuilder.build();
};
this.corehttpClient = HttpClients
.createDefault(authProvider)
.newBuilder()
.connectTimeout(connectionConfig.getConnectTimeout(), TimeUnit.MILLISECONDS)
.readTimeout(connectionConfig.getReadTimeout(), TimeUnit.MILLISECONDS)
.followRedirects(false)
.protocols(Arrays.asList(Protocol.HTTP_1_1)) //https://stackoverflow.com/questions/62031298/sockettimeout-on-java-11-but-not-on-java-8
.build();
}
if (authenticationProvider != null) {
authenticationProvider.authenticateRequest(request);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ public void GetsABatchFromRequests() throws IOException{
assertEquals(200, batchResponse.code());

final MSBatchResponseContent responseContent = new MSBatchResponseContent(batchResponse);
batchResponse.close();

assertEquals(400, responseContent.getResponseById(userPostId).code()); //400:we're not providing enough properties for the call to go through
assertEquals(200, responseContent.getResponseById(meGetId).code());
Expand Down
26 changes: 25 additions & 1 deletion src/test/java/com/microsoft/graph/functional/UserTests.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.microsoft.graph.functional;

import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

Expand All @@ -8,6 +9,9 @@
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

import org.junit.Before;
import org.junit.Ignore;
Expand All @@ -31,7 +35,6 @@
import com.microsoft.graph.requests.extensions.IOrganizationCollectionPage;
import com.microsoft.graph.requests.extensions.IUsedInsightCollectionPage;
import com.microsoft.graph.requests.extensions.IUserCollectionPage;

@Ignore
public class UserTests {
IGraphServiceClient graphServiceClient = null;
Expand Down Expand Up @@ -170,6 +173,27 @@ public void meMemberof() {
IDirectoryObjectCollectionWithReferencesPage page = graphServiceClient.me().memberOf().buildRequest().get();
assertNotNull(page);
}
@Test
public void getMeAndRetryOnThrottling() throws Exception {
ExecutorService exec = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2);
try {
for(Integer i = 0; i < 2000; i++) {
exec.submit(new Runnable() {
@Override
public void run() {
final IUserCollectionPage users = graphServiceClient.users().buildRequest().get();
assertNotNull(users);
final List<User> currentPage = users.getCurrentPage();
assertNotNull(currentPage);
assertNotEquals(0, currentPage.size());
}
});
}
exec.awaitTermination(5L, TimeUnit.MINUTES);
} finally {
exec.shutdown();
}
}

@Test
public void emptyPostContentType() {
Expand Down