diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2019-04-25 14:05:52 -0700 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2019-04-25 14:11:30 -0700 |
commit | 557d5e4baea877324ddd0d6b9f2b969f080a8b7b (patch) | |
tree | de27cf48ed61cc856ca03599f96c9951ec3d3d17 | |
parent | 155da6764f948b9f5df3fbce355020de4bb76afc (diff) | |
download | support-557d5e4baea877324ddd0d6b9f2b969f080a8b7b.tar.gz |
Removing unnecessary activtiy and broadcast handshake to avoid flakyness
Bug: 130155569
Test: Ran RenderTest on Cuttlefish
Change-Id: Ib83c4805b507b2b2aa260f521a2974d61dd01071
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(); - } - } } |