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

Commit ba557c86 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Increase PerformBackupTask unit coverage 2"

parents 3e72c4de fd1d7295
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -497,6 +497,7 @@ public class BackupManagerService implements BackupManagerServiceInterface {
        mDataDir = dataDir;
    }

    @Nullable
    public DataChangedJournal getJournal() {
        return mJournal;
    }
+15 −10
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

/**
 * A journal of packages that have indicated that their data has changed (and therefore should be
@@ -64,12 +66,12 @@ public class DataChangedJournal {
    }

    /**
     * Invokes {@link Consumer#accept(String)} with every package name in the journal file.
     * Invokes {@link Consumer#accept(Object)} with every package name in the journal file.
     *
     * @param consumer The callback.
     * @throws IOException If there is an IO error reading from the file.
     */
    public void forEach(Consumer consumer) throws IOException {
    public void forEach(Consumer<String> consumer) throws IOException {
        try (
            BufferedInputStream bufferedInputStream = new BufferedInputStream(
                    new FileInputStream(mFile), BUFFER_SIZE_BYTES);
@@ -82,6 +84,17 @@ public class DataChangedJournal {
        }
    }

    /**
     * Returns a list with the packages in this journal.
     *
     * @throws IOException If there is an IO error reading from the file.
     */
    public List<String> getPackages() throws IOException {
        List<String> packages = new ArrayList<>();
        forEach(packages::add);
        return packages;
    }

    /**
     * Deletes the journal from the filesystem.
     *
@@ -109,14 +122,6 @@ public class DataChangedJournal {
        return mFile.toString();
    }

    /**
     * Consumer for iterating over package names in the journal.
     */
    @FunctionalInterface
    public interface Consumer {
        void accept(String packageName);
    }

    /**
     * Creates a new journal with a random file name in the given journal directory.
     *
+10 −3
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ import android.util.EventLog;
import android.util.Slog;

import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.backup.IBackupTransport;
import com.android.internal.util.Preconditions;
import com.android.server.AppWidgetBackupBridge;
@@ -112,6 +113,11 @@ import java.util.concurrent.CountDownLatch;
 */
public class PerformBackupTask implements BackupRestoreTask {
    private static final String TAG = "PerformBackupTask";
    private static final String BLANK_STATE_FILE_NAME = "blank_state";
    @VisibleForTesting
    public static final String STAGING_FILE_SUFFIX = ".data";
    @VisibleForTesting
    public static final String NEW_STATE_FILE_SUFFIX = ".new";

    private BackupManagerService backupManagerService;
    private final Object mCancelLock = new Object();
@@ -651,10 +657,11 @@ public class PerformBackupTask implements BackupRestoreTask {
        }
        backupManagerService.addBackupTrace("invoking " + packageName);

        File blankStateName = new File(mStateDir, "blank_state");
        File blankStateName = new File(mStateDir, BLANK_STATE_FILE_NAME);
        mSavedStateName = new File(mStateDir, packageName);
        mBackupDataName = new File(backupManagerService.getDataDir(), packageName + ".data");
        mNewStateName = new File(mStateDir, packageName + ".new");
        mBackupDataName =
                new File(backupManagerService.getDataDir(), packageName + STAGING_FILE_SUFFIX);
        mNewStateName = new File(mStateDir, packageName + NEW_STATE_FILE_SUFFIX);
        if (MORE_DEBUG) Slog.d(TAG, "data file: " + mBackupDataName);

        mSavedState = null;
+479 −166

File changed.

Preview size limit exceeded, changes collapsed.

+5 −2
Original line number Diff line number Diff line
@@ -19,6 +19,9 @@ package com.android.server.backup.restore;
import static com.android.server.backup.testing.BackupManagerServiceTestUtils.createBackupWakeLock;
import static com.android.server.backup.testing.BackupManagerServiceTestUtils.setUpBackupManagerServiceBasics;
import static com.android.server.backup.testing.BackupManagerServiceTestUtils.startBackupThreadAndGetLooper;

import static com.android.server.backup.testing.TestUtils.assertEventLogged;
import static com.android.server.backup.testing.TestUtils.assertEventNotLogged;
import static com.android.server.backup.testing.TransportData.backupTransport;

import static com.google.common.truth.Truth.assertThat;
@@ -210,7 +213,7 @@ public class ActiveRestoreSessionTest {
        mShadowBackupLooper.runToEndOfTasks();
        assertThat(result).isEqualTo(0);
        verify(mObserver).restoreSetsAvailable(aryEq(new RestoreSet[0]));
        assertThat(ShadowEventLog.hasEvent(EventLogTags.RESTORE_TRANSPORT_FAILURE)).isFalse();
        assertEventNotLogged(EventLogTags.RESTORE_TRANSPORT_FAILURE);
    }

    @Test
@@ -225,7 +228,7 @@ public class ActiveRestoreSessionTest {
        mShadowBackupLooper.runToEndOfTasks();
        assertThat(result).isEqualTo(0);
        verify(mObserver).restoreSetsAvailable(isNull());
        assertThat(ShadowEventLog.hasEvent(EventLogTags.RESTORE_TRANSPORT_FAILURE)).isTrue();
        assertEventLogged(EventLogTags.RESTORE_TRANSPORT_FAILURE);
        verify(mTransportManager)
                .disposeOfTransportClient(eq(transportMock.transportClient), any());
        assertThat(mWakeLock.isHeld()).isFalse();
Loading