Skip to content

Commit f45525f

Browse files
authored
Merge pull request #1044 from watson-developer-cloud/use-updated-core
Use updated core package
2 parents 6e3ad39 + fe9079d commit f45525f

File tree

65 files changed

+864
-260
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+864
-260
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ bin/
1212
*.iml
1313
*.ipr
1414
*.iws
15+
config.properties
1516
.config.properties
1617
.checkstyle
1718
.gradletasknamecache

assistant/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ checkstyle {
5656

5757
dependencies {
5858
compile project(':common')
59-
compile 'com.ibm.cloud:sdk-core:1.2.2'
60-
testCompile group: 'com.ibm.cloud', name:'sdk-core', version: '1.2.2', classifier: 'tests'
59+
testCompile project(':common').sourceSets.test.output
60+
compile 'com.ibm.cloud:sdk-core:2.0.0'
6161
signature 'org.codehaus.mojo.signature:java17:1.0@signature'
6262
}
6363

assistant/src/main/java/com/ibm/watson/assistant/v1/Assistant.java

Lines changed: 47 additions & 47 deletions
Large diffs are not rendered by default.

assistant/src/main/java/com/ibm/watson/assistant/v2/Assistant.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import com.google.gson.JsonObject;
1616
import com.ibm.cloud.sdk.core.http.RequestBuilder;
1717
import com.ibm.cloud.sdk.core.http.ServiceCall;
18-
import com.ibm.cloud.sdk.core.service.WatsonService;
18+
import com.ibm.cloud.sdk.core.service.BaseService;
1919
import com.ibm.cloud.sdk.core.service.security.IamOptions;
2020
import com.ibm.cloud.sdk.core.util.GsonSingleton;
2121
import com.ibm.cloud.sdk.core.util.ResponseConverterUtils;
@@ -33,7 +33,7 @@
3333
* @version v2
3434
* @see <a href="http://www.ibm.com/watson/developercloud/assistant.html">Assistant</a>
3535
*/
36-
public class Assistant extends WatsonService {
36+
public class Assistant extends BaseService {
3737

3838
private static final String SERVICE_NAME = "assistant";
3939
private static final String URL = "https://gateway.watsonplatform.net/assistant/api";
@@ -101,7 +101,7 @@ public ServiceCall<SessionResponse> createSession(CreateSessionOptions createSes
101101
String[] pathParameters = { createSessionOptions.assistantId() };
102102
RequestBuilder builder = RequestBuilder.post(RequestBuilder.constructHttpUrl(getEndPoint(), pathSegments,
103103
pathParameters));
104-
builder.query(VERSION, versionDate);
104+
builder.query("version", versionDate);
105105
builder.header("X-IBMCloud-SDK-Analytics",
106106
"service_name=conversation;service_version=v2;operation_id=createSession");
107107
return createServiceCall(builder.build(), ResponseConverterUtils.getObject(SessionResponse.class));
@@ -121,7 +121,7 @@ public ServiceCall<Void> deleteSession(DeleteSessionOptions deleteSessionOptions
121121
String[] pathParameters = { deleteSessionOptions.assistantId(), deleteSessionOptions.sessionId() };
122122
RequestBuilder builder = RequestBuilder.delete(RequestBuilder.constructHttpUrl(getEndPoint(), pathSegments,
123123
pathParameters));
124-
builder.query(VERSION, versionDate);
124+
builder.query("version", versionDate);
125125
builder.header("X-IBMCloud-SDK-Analytics",
126126
"service_name=conversation;service_version=v2;operation_id=deleteSession");
127127
return createServiceCall(builder.build(), ResponseConverterUtils.getVoid());
@@ -143,7 +143,7 @@ public ServiceCall<MessageResponse> message(MessageOptions messageOptions) {
143143
String[] pathParameters = { messageOptions.assistantId(), messageOptions.sessionId() };
144144
RequestBuilder builder = RequestBuilder.post(RequestBuilder.constructHttpUrl(getEndPoint(), pathSegments,
145145
pathParameters));
146-
builder.query(VERSION, versionDate);
146+
builder.query("version", versionDate);
147147
builder.header("X-IBMCloud-SDK-Analytics", "service_name=conversation;service_version=v2;operation_id=message");
148148
final JsonObject contentJson = new JsonObject();
149149
if (messageOptions.input() != null) {

assistant/src/test/java/com/ibm/watson/assistant/v1/AssistantServiceIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import com.ibm.cloud.sdk.core.http.ServiceCallback;
1616
import com.ibm.cloud.sdk.core.service.exception.NotFoundException;
1717
import com.ibm.cloud.sdk.core.service.exception.UnauthorizedException;
18-
import com.ibm.cloud.sdk.core.test.util.RetryRunner;
1918
import com.ibm.watson.assistant.v1.model.Context;
2019
import com.ibm.watson.assistant.v1.model.Counterexample;
2120
import com.ibm.watson.assistant.v1.model.CounterexampleCollection;
@@ -73,6 +72,7 @@
7372
import com.ibm.watson.assistant.v1.model.WorkspaceSystemSettings;
7473
import com.ibm.watson.assistant.v1.model.WorkspaceSystemSettingsDisambiguation;
7574
import com.ibm.watson.assistant.v1.model.WorkspaceSystemSettingsTooling;
75+
import com.ibm.watson.common.RetryRunner;
7676
import jersey.repackaged.jsr166e.CompletableFuture;
7777
import org.junit.Before;
7878
import org.junit.Ignore;

assistant/src/test/java/com/ibm/watson/assistant/v1/AssistantServiceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*/
1313
package com.ibm.watson.assistant.v1;
1414

15-
import com.ibm.cloud.sdk.core.test.WatsonServiceTest;
15+
import com.ibm.watson.common.WatsonServiceTest;
1616
import org.junit.Assume;
1717
import org.junit.Before;
1818

assistant/src/test/java/com/ibm/watson/assistant/v1/AssistantTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
package com.ibm.watson.assistant.v1;
1414

1515
import com.ibm.cloud.sdk.core.http.HttpHeaders;
16-
import com.ibm.cloud.sdk.core.test.WatsonServiceUnitTest;
1716
import com.ibm.watson.assistant.v1.model.Context;
1817
import com.ibm.watson.assistant.v1.model.CreateCounterexample;
1918
import com.ibm.watson.assistant.v1.model.CreateDialogNode;
@@ -48,6 +47,7 @@
4847
import com.ibm.watson.assistant.v1.model.WorkspaceSystemSettings;
4948
import com.ibm.watson.assistant.v1.model.WorkspaceSystemSettingsDisambiguation;
5049
import com.ibm.watson.assistant.v1.model.WorkspaceSystemSettingsTooling;
50+
import com.ibm.watson.common.WatsonServiceUnitTest;
5151
import okhttp3.mockwebserver.RecordedRequest;
5252
import org.apache.commons.lang3.StringUtils;
5353
import org.junit.Before;

assistant/src/test/java/com/ibm/watson/assistant/v1/EntitiesIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
package com.ibm.watson.assistant.v1;
1414

1515
import com.ibm.cloud.sdk.core.service.exception.NotFoundException;
16-
import com.ibm.cloud.sdk.core.test.util.RetryRunner;
1716
import com.ibm.watson.assistant.v1.model.CreateEntityOptions;
1817
import com.ibm.watson.assistant.v1.model.CreateValue;
1918
import com.ibm.watson.assistant.v1.model.DeleteEntityOptions;
@@ -24,6 +23,7 @@
2423
import com.ibm.watson.assistant.v1.model.ListEntitiesOptions;
2524
import com.ibm.watson.assistant.v1.model.UpdateEntityOptions;
2625
import com.ibm.watson.assistant.v1.model.ValueExport;
26+
import com.ibm.watson.common.RetryRunner;
2727
import org.junit.Before;
2828
import org.junit.Ignore;
2929
import org.junit.Test;

assistant/src/test/java/com/ibm/watson/assistant/v1/SynonymsIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
package com.ibm.watson.assistant.v1;
1414

1515
import com.ibm.cloud.sdk.core.service.exception.NotFoundException;
16-
import com.ibm.cloud.sdk.core.test.util.RetryRunner;
1716
import com.ibm.watson.assistant.v1.model.CreateEntityOptions;
1817
import com.ibm.watson.assistant.v1.model.CreateSynonymOptions;
1918
import com.ibm.watson.assistant.v1.model.CreateValueOptions;
@@ -23,6 +22,7 @@
2322
import com.ibm.watson.assistant.v1.model.Synonym;
2423
import com.ibm.watson.assistant.v1.model.SynonymCollection;
2524
import com.ibm.watson.assistant.v1.model.UpdateSynonymOptions;
25+
import com.ibm.watson.common.RetryRunner;
2626
import org.junit.Before;
2727
import org.junit.Test;
2828
import org.junit.runner.RunWith;

assistant/src/test/java/com/ibm/watson/assistant/v1/ValuesIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
package com.ibm.watson.assistant.v1;
1414

1515
import com.ibm.cloud.sdk.core.service.exception.NotFoundException;
16-
import com.ibm.cloud.sdk.core.test.util.RetryRunner;
1716
import com.ibm.watson.assistant.v1.model.CreateEntityOptions;
1817
import com.ibm.watson.assistant.v1.model.CreateValueOptions;
1918
import com.ibm.watson.assistant.v1.model.DeleteValueOptions;
@@ -23,6 +22,7 @@
2322
import com.ibm.watson.assistant.v1.model.Value;
2423
import com.ibm.watson.assistant.v1.model.ValueCollection;
2524
import com.ibm.watson.assistant.v1.model.ValueExport;
25+
import com.ibm.watson.common.RetryRunner;
2626
import org.junit.Before;
2727
import org.junit.Test;
2828
import org.junit.runner.RunWith;

assistant/src/test/java/com/ibm/watson/assistant/v2/AssistantServiceIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*/
1313
package com.ibm.watson.assistant.v2;
1414

15-
import com.ibm.cloud.sdk.core.test.util.RetryRunner;
15+
1616
import com.ibm.watson.assistant.v2.model.CreateSessionOptions;
1717
import com.ibm.watson.assistant.v2.model.DeleteSessionOptions;
1818
import com.ibm.watson.assistant.v2.model.DialogRuntimeResponseGeneric;
@@ -22,6 +22,7 @@
2222
import com.ibm.watson.assistant.v2.model.MessageOptions;
2323
import com.ibm.watson.assistant.v2.model.MessageResponse;
2424
import com.ibm.watson.assistant.v2.model.SessionResponse;
25+
import com.ibm.watson.common.RetryRunner;
2526
import org.junit.Before;
2627
import org.junit.Ignore;
2728
import org.junit.Test;

assistant/src/test/java/com/ibm/watson/assistant/v2/AssistantServiceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*/
1313
package com.ibm.watson.assistant.v2;
1414

15-
import com.ibm.cloud.sdk.core.test.WatsonServiceTest;
15+
import com.ibm.watson.common.WatsonServiceTest;
1616
import org.junit.Assume;
1717
import org.junit.Before;
1818

assistant/src/test/java/com/ibm/watson/assistant/v2/AssistantTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
*/
1313
package com.ibm.watson.assistant.v2;
1414

15-
import com.ibm.cloud.sdk.core.test.WatsonServiceUnitTest;
1615
import com.ibm.watson.assistant.v2.model.CaptureGroup;
1716
import com.ibm.watson.assistant.v2.model.CreateSessionOptions;
1817
import com.ibm.watson.assistant.v2.model.DeleteSessionOptions;
@@ -31,6 +30,7 @@
3130
import com.ibm.watson.assistant.v2.model.RuntimeEntity;
3231
import com.ibm.watson.assistant.v2.model.RuntimeIntent;
3332
import com.ibm.watson.assistant.v2.model.SessionResponse;
33+
import com.ibm.watson.common.WatsonServiceUnitTest;
3434
import okhttp3.mockwebserver.MockResponse;
3535
import okhttp3.mockwebserver.RecordedRequest;
3636
import org.junit.Before;

common/build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ repositories {
1313
}
1414

1515
dependencies {
16-
compile 'com.ibm.cloud:sdk-core:1.2.2'
17-
testCompile group: 'com.ibm.cloud', name:'sdk-core', version: '1.2.2', classifier: 'tests'
16+
compile 'com.ibm.cloud:sdk-core:2.0.0'
1817
}
1918

2019
processResources {
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
package com.ibm.watson.common;
22

33
public interface WatsonHttpHeaders {
4+
/** Allow Watson to collect the payload. */
5+
String X_WATSON_LEARNING_OPT_OUT = "X-Watson-Learning-Opt-Out";
6+
47
/** Header containing analytics info. */
58
String X_IBMCLOUD_SDK_ANALYTICS = "X-IBMCloud-SDK-Analytics";
9+
10+
/** Mark API calls as tests. */
11+
String X_WATSON_TEST = "X-Watson-Test";
612
}
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
package com.ibm.watson.common;
2+
3+
import com.ibm.cloud.sdk.core.service.exception.TooManyRequestsException;
4+
import com.ibm.cloud.sdk.core.service.exception.UnauthorizedException;
5+
import org.junit.Ignore;
6+
import org.junit.internal.AssumptionViolatedException;
7+
import org.junit.internal.runners.model.EachTestNotifier;
8+
import org.junit.runner.Description;
9+
import org.junit.runner.notification.RunNotifier;
10+
import org.junit.runner.notification.StoppedByUserException;
11+
import org.junit.runners.BlockJUnit4ClassRunner;
12+
import org.junit.runners.model.FrameworkMethod;
13+
import org.junit.runners.model.InitializationError;
14+
import org.junit.runners.model.Statement;
15+
16+
import java.util.logging.Level;
17+
import java.util.logging.Logger;
18+
19+
/**
20+
* Junit Runner that retry tests. Useful when tests could fail due to network issues.
21+
*/
22+
public class RetryRunner extends BlockJUnit4ClassRunner {
23+
private static final Logger LOG = Logger.getLogger(RetryRunner.class.getName());
24+
25+
private static final int RETRY_COUNT = 3;
26+
27+
/**
28+
* Delay factor when tests are failing.
29+
*/
30+
private static final int RETRY_DELAY_FACTOR = 2000;
31+
32+
/**
33+
* Instantiates a new retry runner.
34+
*
35+
* @param clazz the class
36+
* @throws InitializationError the initialization error
37+
*/
38+
public RetryRunner(Class<?> clazz) throws InitializationError {
39+
super(clazz);
40+
}
41+
42+
/*
43+
* (non-Javadoc)
44+
*
45+
* @see org.junit.runners.ParentRunner#run(org.junit.runner.notification.RunNotifier)
46+
*/
47+
@Override
48+
public void run(final RunNotifier notifier) {
49+
EachTestNotifier testNotifier = new EachTestNotifier(notifier, getDescription());
50+
Statement statement = classBlock(notifier);
51+
try {
52+
statement.evaluate();
53+
} catch (AssumptionViolatedException ave) {
54+
testNotifier.fireTestIgnored();
55+
} catch (StoppedByUserException sbue) {
56+
throw sbue;
57+
} catch (Throwable t) {
58+
LOG.warning("Retry class: " + getDescription().getDisplayName());
59+
retry(testNotifier, statement, t, getDescription());
60+
}
61+
}
62+
63+
/*
64+
* (non-Javadoc)
65+
*
66+
* @see org.junit.runners.BlockJUnit4ClassRunner#runChild(org.junit.runners.model.FrameworkMethod,
67+
* org.junit.runner.notification.RunNotifier)
68+
*/
69+
@Override
70+
protected void runChild(final FrameworkMethod method, RunNotifier notifier) {
71+
Description description = describeChild(method);
72+
if (method.getAnnotation(Ignore.class) != null) {
73+
notifier.fireTestIgnored(description);
74+
} else {
75+
runTest(methodBlock(method), description, notifier);
76+
}
77+
}
78+
79+
private void runTest(Statement statement, Description description, RunNotifier notifier) {
80+
EachTestNotifier eachNotifier = new EachTestNotifier(notifier, description);
81+
eachNotifier.fireTestStarted();
82+
try {
83+
statement.evaluate();
84+
} catch (AssumptionViolatedException e) {
85+
eachNotifier.addFailedAssumption(e);
86+
} catch (Throwable e) {
87+
LOG.warning("Retry test: " + description.getDisplayName());
88+
retry(eachNotifier, statement, e, description);
89+
} finally {
90+
eachNotifier.fireTestFinished();
91+
}
92+
}
93+
94+
private void retry(EachTestNotifier notifier, Statement statement, Throwable currentThrowable, Description info) {
95+
int failedAttempts = 0;
96+
Throwable caughtThrowable = currentThrowable;
97+
while (RETRY_COUNT > failedAttempts) {
98+
try {
99+
LOG.warning("Retry attempt " + (failedAttempts + 1) + " for " + info.getDisplayName());
100+
statement.evaluate();
101+
return;
102+
} catch (UnauthorizedException ue) {
103+
LOG.log(Level.WARNING, "Do not retry test failures due to UnauthorizedException", ue);
104+
failedAttempts = RETRY_COUNT;
105+
} catch (TooManyRequestsException e) {
106+
LOG.log(Level.WARNING, "Ignoring test failures due to rate limitation", e);
107+
return;
108+
} catch (Throwable t) {
109+
failedAttempts++;
110+
try {
111+
// GERMAN: Delay test failures to prevent network/service hiccups
112+
Thread.sleep(RETRY_DELAY_FACTOR * failedAttempts);
113+
} catch (InterruptedException e) {
114+
LOG.log(Level.WARNING, "The thread used by JUnit was interrupted", e);
115+
}
116+
caughtThrowable = t;
117+
}
118+
}
119+
notifier.addFailure(caughtThrowable);
120+
}
121+
}

0 commit comments

Comments
 (0)