aboutsummaryrefslogtreecommitdiff
path: root/android-interop-testing
diff options
context:
space:
mode:
authorXiao Hang <rocking@google.com>2017-04-26 14:43:10 -0700
committerXiao Hang <rocking@google.com>2017-04-27 14:33:47 -0700
commit50a92e01dc752e7ad2f1a012f9efa4ef3362ff77 (patch)
treec50271ce060cac71e25e92b08a0295b8fa524ac8 /android-interop-testing
parenta317912a14567391d7485e64b3da245731f547c4 (diff)
downloadgrpc-grpc-java-50a92e01dc752e7ad2f1a012f9efa4ef3362ff77.tar.gz
android-interop-testing: Support get option in interop app
Diffstat (limited to 'android-interop-testing')
-rw-r--r--android-interop-testing/app/proguard-rules.pro3
-rw-r--r--android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/InteropTester.java30
-rw-r--r--android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/TesterActivity.java5
-rw-r--r--android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/TesterInstrumentation.java7
-rw-r--r--android-interop-testing/app/src/main/res/layout/activity_tester.xml5
-rw-r--r--android-interop-testing/app/src/main/res/values/strings.xml1
6 files changed, 44 insertions, 7 deletions
diff --git a/android-interop-testing/app/proguard-rules.pro b/android-interop-testing/app/proguard-rules.pro
index 1c926cf2c..635a13c37 100644
--- a/android-interop-testing/app/proguard-rules.pro
+++ b/android-interop-testing/app/proguard-rules.pro
@@ -9,11 +9,12 @@
# Add any project specific keep options here:
+-dontwarn android.test.**
-dontwarn com.google.common.**
+-dontwarn javax.naming.**
-dontwarn okio.**
-dontwarn org.mockito.**
-dontwarn sun.reflect.**
--dontwarn android.test.**
# Ignores: can't find referenced class javax.lang.model.element.Modifier
-dontwarn com.google.errorprone.annotations.**
-keep class io.grpc.internal.DnsNameResolverProvider
diff --git a/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/InteropTester.java b/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/InteropTester.java
index 2b02ae06f..03c1cce1e 100644
--- a/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/InteropTester.java
+++ b/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/InteropTester.java
@@ -41,9 +41,14 @@ import android.util.Log;
import com.google.protobuf.nano.EmptyProtos;
import com.google.protobuf.nano.MessageNano;
import io.grpc.CallOptions;
+import io.grpc.Channel;
import io.grpc.ClientCall;
+import io.grpc.ClientInterceptor;
+import io.grpc.ClientInterceptors;
+import io.grpc.ClientInterceptors.CheckedForwardingClientCall;
import io.grpc.ManagedChannel;
import io.grpc.Metadata;
+import io.grpc.MethodDescriptor;
import io.grpc.StatusRuntimeException;
import io.grpc.android.integrationtest.nano.Messages;
import io.grpc.android.integrationtest.nano.Messages.Payload;
@@ -105,12 +110,17 @@ final class InteropTester extends AsyncTask<Void, Void, String> {
public InteropTester(String testCase,
ManagedChannel channel,
- TestListener listener) {
+ TestListener listener,
+ boolean useGet) {
this.testCase = testCase;
this.listener = listener;
this.channel = channel;
- blockingStub = TestServiceGrpc.newBlockingStub(channel);
- asyncStub = TestServiceGrpc.newStub(channel);
+ Channel channelToUse = channel;
+ if (useGet) {
+ channelToUse = ClientInterceptors.intercept(channel, new SafeMethodChannelInterceptor());
+ }
+ blockingStub = TestServiceGrpc.newBlockingStub(channelToUse);
+ asyncStub = TestServiceGrpc.newStub(channelToUse);
}
@Override
@@ -759,4 +769,18 @@ final class InteropTester extends AsyncTask<Void, Void, String> {
}
return false;
}
+
+ private static final class SafeMethodChannelInterceptor implements ClientInterceptor {
+ @Override
+ public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
+ MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) {
+ return new CheckedForwardingClientCall<ReqT, RespT>(
+ next.newCall(method.toBuilder().setSafe(true).build(), callOptions)) {
+ @Override
+ public void checkedStart(Listener<RespT> responseListener, Metadata headers) {
+ delegate().start(responseListener, headers);
+ }
+ };
+ }
+ }
}
diff --git a/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/TesterActivity.java b/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/TesterActivity.java
index 876b5eaf2..07cd36678 100644
--- a/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/TesterActivity.java
+++ b/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/TesterActivity.java
@@ -40,6 +40,7 @@ import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
+import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import com.google.android.gms.security.ProviderInstaller;
@@ -52,6 +53,7 @@ public class TesterActivity extends AppCompatActivity
private EditText hostEdit;
private EditText portEdit;
private TextView resultText;
+ private CheckBox getCheckBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -67,6 +69,7 @@ public class TesterActivity extends AppCompatActivity
hostEdit = (EditText) findViewById(R.id.host_edit_text);
portEdit = (EditText) findViewById(R.id.port_edit_text);
resultText = (TextView) findViewById(R.id.grpc_response_text);
+ getCheckBox = (CheckBox) findViewById(R.id.get_checkbox);
ProviderInstaller.installIfNeededAsync(this, this);
// Disable buttons until the security provider installing finishes.
@@ -120,7 +123,7 @@ public class TesterActivity extends AppCompatActivity
resultText.setText(result);
enableButtons(true);
}
- }).execute();
+ }, getCheckBox.isChecked()).execute();
}
@Override
diff --git a/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/TesterInstrumentation.java b/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/TesterInstrumentation.java
index c7dae6050..0c36d498a 100644
--- a/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/TesterInstrumentation.java
+++ b/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/TesterInstrumentation.java
@@ -52,6 +52,7 @@ public class TesterInstrumentation extends Instrumentation {
private boolean useTls;
private boolean useTestCa;
private String androidSocketFactoryTls;
+ private boolean useGet;
@Override
public void onCreate(Bundle args) {
@@ -66,6 +67,8 @@ public class TesterInstrumentation extends Instrumentation {
useTestCa = args.getString("use_test_ca") != null
? Boolean.parseBoolean(args.getString("use_test_ca")) : false;
androidSocketFactoryTls = args.getString("android_socket_factory_tls");
+ useGet = args.getString("use_get") != null
+ ? Boolean.parseBoolean(args.getString("use_get")) : false;
InputStream testCa = null;
if (useTestCa) {
@@ -105,8 +108,8 @@ public class TesterInstrumentation extends Instrumentation {
finish(1, bundle);
}
}
- }
- ).execute();
+ },
+ useGet).execute();
} catch (Throwable t) {
Bundle bundle = new Bundle();
bundle.putString("Exception encountered", t.toString());
diff --git a/android-interop-testing/app/src/main/res/layout/activity_tester.xml b/android-interop-testing/app/src/main/res/layout/activity_tester.xml
index 8c8581a4e..c7cef73b3 100644
--- a/android-interop-testing/app/src/main/res/layout/activity_tester.xml
+++ b/android-interop-testing/app/src/main/res/layout/activity_tester.xml
@@ -26,6 +26,11 @@
android:inputType="numberDecimal"
android:hint="Enter Port"
/>
+ <CheckBox android:id="@+id/get_checkbox"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/use_get"
+ />
</LinearLayout>
<Button
diff --git a/android-interop-testing/app/src/main/res/values/strings.xml b/android-interop-testing/app/src/main/res/values/strings.xml
index 6d5cb2a79..c3e7d2774 100644
--- a/android-interop-testing/app/src/main/res/values/strings.xml
+++ b/android-interop-testing/app/src/main/res/values/strings.xml
@@ -1,3 +1,4 @@
<resources>
<string name="app_name">gRPC Integration Test</string>
+ <string name="use_get">Use GET</string>
</resources>