Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8cf0f00a authored by Jun Ono's avatar Jun Ono Committed by Shunta Sato
Browse files

Fix unstable unittest due to RejectedExcecutionException

Symptom:
Sometimes RejectedExecutionException is thrown
when FileCopyUiTest and FileDeleteUiTest happens.

Root cause:
When too many files are created by
DocumentsProviderHelper#createDocument() method,
too many root refreshes are queued in an executor.
Then, it causes to throw RejectedExcecutionException.

Solution:
Set a flag to prevent many refreshes.

Bug: 72202303
Test: Unittest of com.android.documentsui.tests
Change-Id: Ia92e37f8e8c31d810f81fee761441c88e8635f13
parent b2bd56d6
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.BroadcastReceiver;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
import android.provider.Settings;
import android.support.test.filters.LargeTest;
@@ -99,6 +100,12 @@ public class FileCopyUiTest extends ActivityTest<FilesActivity> {
    @Override
    public void setUp() throws Exception {
        super.setUp();

        // Set a flag to prevent many refreshes.
        Bundle bundle = new Bundle();
        bundle.putBoolean(StubProvider.EXTRA_ENABLE_ROOT_NOTIFICATION, false);
        mDocsHelper.configure(null, bundle);

        initTestFiles();

        IntentFilter filter = new IntentFilter();
@@ -143,10 +150,10 @@ public class FileCopyUiTest extends ActivityTest<FilesActivity> {
    private void createDummyFiles() throws Exception {
        final ThreadPoolExecutor exec = new ThreadPoolExecutor(
                5, 5, 1000L, TimeUnit.MILLISECONDS,
                        new ArrayBlockingQueue<Runnable>(20, true));
                        new ArrayBlockingQueue<Runnable>(100, true));
        for (int i = 0; i < DUMMY_FILE_COUNT; i++) {
            final String fileName = "file" + String.format("%04d", i) + ".log";
            if (exec.getQueue().size() <= 80) {
            if (exec.getQueue().size() >= 80) {
                Thread.sleep(50);
            }
            exec.submit(new Runnable() {
+9 −2
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.BroadcastReceiver;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
import android.provider.Settings;
import android.support.test.filters.LargeTest;
@@ -99,6 +100,12 @@ public class FileDeleteUiTest extends ActivityTest<FilesActivity> {
    @Override
    public void setUp() throws Exception {
        super.setUp();

        // Set a flag to prevent many refreshes.
        Bundle bundle = new Bundle();
        bundle.putBoolean(StubProvider.EXTRA_ENABLE_ROOT_NOTIFICATION, false);
        mDocsHelper.configure(null, bundle);

        initTestFiles();

        IntentFilter filter = new IntentFilter();
@@ -143,10 +150,10 @@ public class FileDeleteUiTest extends ActivityTest<FilesActivity> {
    private void createDummyFiles() throws Exception {
        final ThreadPoolExecutor exec = new ThreadPoolExecutor(
                5, 5, 1000L, TimeUnit.MILLISECONDS,
                        new ArrayBlockingQueue<Runnable>(20, true));
                        new ArrayBlockingQueue<Runnable>(100, true));
        for (int i = 0; i < DUMMY_FILE_COUNT; i++) {
            final String fileName = "file" + String.format("%04d", i) + ".log";
            if (exec.getQueue().size() <= 80) {
            if (exec.getQueue().size() >= 80) {
                Thread.sleep(50);
            }
            exec.submit(new Runnable() {