aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2019-04-25 14:05:52 -0700
committerSunny Goyal <sunnygoyal@google.com>2019-04-25 14:11:30 -0700
commit557d5e4baea877324ddd0d6b9f2b969f080a8b7b (patch)
treede27cf48ed61cc856ca03599f96c9951ec3d3d17
parent155da6764f948b9f5df3fbce355020de4bb76afc (diff)
downloadsupport-557d5e4baea877324ddd0d6b9f2b969f080a8b7b.tar.gz
Removing unnecessary activtiy and broadcast handshake to avoid flakyness
Bug: 130155569 Test: Ran RenderTest on Cuttlefish Change-Id: Ib83c4805b507b2b2aa260f521a2974d61dd01071
-rw-r--r--slices/view/src/androidTest/java/androidx/slice/render/RenderTest.java36
-rw-r--r--slices/view/src/androidTest/java/androidx/slice/render/SliceRenderActivity.java33
-rw-r--r--slices/view/src/androidTest/java/androidx/slice/render/SliceRenderer.java41
3 files changed, 23 insertions, 87 deletions
diff --git a/slices/view/src/androidTest/java/androidx/slice/render/RenderTest.java b/slices/view/src/androidTest/java/androidx/slice/render/RenderTest.java
index 26600679292..7bbd41297fc 100644
--- a/slices/view/src/androidTest/java/androidx/slice/render/RenderTest.java
+++ b/slices/view/src/androidTest/java/androidx/slice/render/RenderTest.java
@@ -20,21 +20,16 @@ import static android.os.Build.VERSION.SDK_INT;
import static androidx.slice.render.SliceRenderer.SCREENSHOT_DIR;
-import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import android.Manifest;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
import android.os.Build;
-import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
import androidx.test.filters.SdkSuppress;
import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
import androidx.test.rule.GrantPermissionRule;
import org.junit.Rule;
@@ -46,7 +41,6 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@LargeTest
@@ -54,29 +48,27 @@ import java.util.concurrent.TimeUnit;
@SdkSuppress(minSdkVersion = 19)
public class RenderTest {
- private final Context mContext = ApplicationProvider.getApplicationContext();
-
@Rule
public GrantPermissionRule mRuntimePermissionRule =
GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE);
+ @Rule
+ public ActivityTestRule<SliceRenderActivity> mActivityRule =
+ new ActivityTestRule<>(SliceRenderActivity.class);
+
@Test
public void testRender() throws Exception {
- final CountDownLatch latch = new CountDownLatch(1);
- BroadcastReceiver receiver = new BroadcastReceiver() {
+ final SliceRenderActivity activity = mActivityRule.getActivity();
+ final SliceRenderer[] renderer = new SliceRenderer[1];
+ InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
@Override
- public void onReceive(Context context, Intent intent) {
- latch.countDown();
+ public void run() {
+ renderer[0] = new SliceRenderer(activity);
}
- };
- mContext.registerReceiver(receiver,
- new IntentFilter(SliceRenderActivity.ACTION_RENDER_DONE));
- mContext.startActivity(new Intent(mContext, SliceRenderActivity.class)
- .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
-
- latch.await(30000, TimeUnit.MILLISECONDS);
- assertEquals(0, latch.getCount());
- String path = new File(mContext.getFilesDir(), SCREENSHOT_DIR).getAbsolutePath();
+ });
+
+ assertTrue(renderer[0].doRender(30000, TimeUnit.MILLISECONDS));
+ String path = renderer[0].getScreenshotDirectory().getAbsolutePath();
if (SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand(
"mv " + path + " " + "/sdcard/");
diff --git a/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderActivity.java b/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderActivity.java
index 3ea220eb63b..146dab0681e 100644
--- a/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderActivity.java
+++ b/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderActivity.java
@@ -17,36 +17,5 @@
package androidx.slice.render;
import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
-
-@RequiresApi(19)
-public class SliceRenderActivity extends Activity {
- public static final String ACTION_RENDER_DONE = "androidx.slice.render.RENDER_DONE";
-
- private SliceRenderer mRenderer;
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mRenderer = new SliceRenderer(this);
- mRenderer.renderAll(new Runnable() {
- @Override
- public void run() {
- sendBroadcast(new Intent(ACTION_RENDER_DONE));
- finish();
- }
- });
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- if (mRenderer != null) {
- mRenderer.dismissDialog();
- }
- }
-} \ No newline at end of file
+public class SliceRenderActivity extends Activity { }
diff --git a/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderer.java b/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderer.java
index 9f8c199a6ac..70742c08b55 100644
--- a/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderer.java
+++ b/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderer.java
@@ -19,13 +19,11 @@ package androidx.slice.render;
import static android.view.View.MeasureSpec.makeMeasureSpec;
import android.app.Activity;
-import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.net.Uri;
-import android.os.Handler;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
@@ -49,6 +47,7 @@ import java.io.FileOutputStream;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
@RequiresApi(19)
public class SliceRenderer {
@@ -68,10 +67,8 @@ public class SliceRenderer {
private final SliceView mSV2;
private final SliceView mSV3;
private final ViewGroup mParent;
- private final Handler mHandler;
private final SampleSliceProvider mSliceCreator;
private CountDownLatch mDoneLatch;
- private ProgressDialog mDialog;
public SliceRenderer(Activity context) {
mContext = context;
@@ -100,7 +97,6 @@ public class SliceRenderer {
mSV3 = mLayout.findViewById(R.id.sv3);
mSV3.setMode(SliceView.MODE_LARGE);
disableAnims(mLayout);
- mHandler = new Handler();
((ViewGroup) mContext.getWindow().getDecorView()).addView(mParent);
mParent.addView(mLayout);
mSliceCreator = new SampleSliceProvider();
@@ -119,8 +115,7 @@ public class SliceRenderer {
}
}
-
- private File getScreenshotDirectory() {
+ public File getScreenshotDirectory() {
if (sScreenshotDirectory == null) {
File storage = mContext.getFilesDir();
sScreenshotDirectory = new File(storage, SCREENSHOT_DIR);
@@ -135,14 +130,14 @@ public class SliceRenderer {
}
- private void doRender() {
+ public boolean doRender(long timeout, TimeUnit unit) {
final File output = getScreenshotDirectory();
if (!output.exists()) {
output.mkdir();
}
mDoneLatch = new CountDownLatch(SampleSliceProvider.URI_PATHS.length * 4 + 1);
- ExecutorService executor = Executors.newFixedThreadPool(5);
+ ExecutorService executor = Executors.newFixedThreadPool(MAX_CONCURRENT);
for (final String slice : SampleSliceProvider.URI_PATHS) {
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
final Slice s = mSliceCreator.onBindSlice(SampleSliceProvider.getUri(slice, mContext));
@@ -202,8 +197,10 @@ public class SliceRenderer {
});
}
}
+
+ boolean result = false;
try {
- mDoneLatch.await();
+ result = mDoneLatch.await(timeout, unit);
} catch (InterruptedException e) {
}
Log.d(TAG, "Wrote render to " + output.getAbsolutePath());
@@ -213,6 +210,7 @@ public class SliceRenderer {
((ViewGroup) mParent.getParent()).removeView(mParent);
}
});
+ return result;
}
private Slice serAndUnSer(Slice s) {
@@ -312,27 +310,4 @@ public class SliceRenderer {
mDoneLatch.countDown();
Log.d(TAG, "Done " + slice);
}
-
- public void renderAll(final Runnable runnable) {
- mDialog = ProgressDialog.show(mContext, null, "Rendering...");
- new Thread(new Runnable() {
- @Override
- public void run() {
- doRender();
- mContext.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- mDialog.dismiss();
- runnable.run();
- }
- });
- }
- }).start();
- }
-
- public void dismissDialog() {
- if (mDialog != null && mDialog.isShowing()) {
- mDialog.cancel();
- }
- }
}