diff options
author | Xiao Hang <rocking@google.com> | 2017-04-26 14:43:10 -0700 |
---|---|---|
committer | Xiao Hang <rocking@google.com> | 2017-04-27 14:33:47 -0700 |
commit | 50a92e01dc752e7ad2f1a012f9efa4ef3362ff77 (patch) | |
tree | c50271ce060cac71e25e92b08a0295b8fa524ac8 /android-interop-testing | |
parent | a317912a14567391d7485e64b3da245731f547c4 (diff) | |
download | grpc-grpc-java-50a92e01dc752e7ad2f1a012f9efa4ef3362ff77.tar.gz |
android-interop-testing: Support get option in interop app
Diffstat (limited to 'android-interop-testing')
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> |