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

Commit ba6b96d9 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Track TimeZoneDistroInstaller method changes"

parents 51ee0078 fe3b1182
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.server.SystemService;
import com.android.timezone.distro.DistroException;
import com.android.timezone.distro.DistroVersion;
import com.android.timezone.distro.TimeZoneDistro;
import com.android.timezone.distro.StagedDistroOperation;

import android.app.timezone.Callback;
@@ -224,7 +225,8 @@ public final class RulesManagerService extends IRulesManager.Stub {
            try {
                byte[] distroBytes =
                        RulesManagerService.this.mFileDescriptorHelper.readFully(mTimeZoneDistro);
                int installerResult = mInstaller.stageInstallWithErrorCode(distroBytes);
                TimeZoneDistro distro = new TimeZoneDistro(distroBytes);
                int installerResult = mInstaller.stageInstallWithErrorCode(distro);
                int resultCode = mapInstallerResultToApiCode(installerResult);
                sendFinishedStatus(mCallback, resultCode);

+4 −1
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.server.updates;

import com.android.timezone.distro.TimeZoneDistro;

import android.util.Slog;

import java.io.File;
@@ -46,7 +48,8 @@ public class TzDataInstallReceiver extends ConfigUpdateInstallReceiver {

    @Override
    protected void install(byte[] content, int version) throws IOException {
        boolean valid = installer.install(content);
        TimeZoneDistro distro = new TimeZoneDistro(content);
        boolean valid = installer.install(distro);
        Slog.i(TAG, "Timezone data install valid for this device: " + valid);
        // Even if !valid, we call super.install(). Only in the event of an exception should we
        // not. If we didn't do this we could attempt to install repeatedly.
+17 −10
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server.timezone;

import com.android.timezone.distro.DistroVersion;
import com.android.timezone.distro.TimeZoneDistro;
import com.android.timezone.distro.StagedDistroOperation;

import org.junit.Before;
@@ -403,14 +404,16 @@ public class RulesManagerServiceTest {
        verifyNoInstallerCallsMade();
        verifyNoPackageTrackerCallsMade();

        TimeZoneDistro expectedDistro = new TimeZoneDistro(expectedContent);

        // Set up the installer.
        configureStageInstallExpectation(expectedContent, TimeZoneDistroInstaller.INSTALL_SUCCESS);
        configureStageInstallExpectation(expectedDistro, TimeZoneDistroInstaller.INSTALL_SUCCESS);

        // Simulate the async execution.
        mFakeExecutor.simulateAsyncExecutionOfLastCommand();

        // Verify the expected calls were made to other components.
        verifyStageInstallCalled(expectedContent);
        verifyStageInstallCalled(expectedDistro);
        verifyPackageTrackerCalled(token, true /* success */);

        // Check the callback was called.
@@ -436,14 +439,16 @@ public class RulesManagerServiceTest {
        verifyNoInstallerCallsMade();
        callback.assertNoResultReceived();

        TimeZoneDistro expectedDistro = new TimeZoneDistro(expectedContent);

        // Set up the installer.
        configureStageInstallExpectation(expectedContent, TimeZoneDistroInstaller.INSTALL_SUCCESS);
        configureStageInstallExpectation(expectedDistro, TimeZoneDistroInstaller.INSTALL_SUCCESS);

        // Simulate the async execution.
        mFakeExecutor.simulateAsyncExecutionOfLastCommand();

        // Verify the expected calls were made to other components.
        verifyStageInstallCalled(expectedContent);
        verifyStageInstallCalled(expectedDistro);
        verifyPackageTrackerCalled(null /* expectedToken */, true /* success */);

        // Check the callback was received.
@@ -471,15 +476,17 @@ public class RulesManagerServiceTest {
        verifyNoInstallerCallsMade();
        callback.assertNoResultReceived();

        TimeZoneDistro expectedDistro = new TimeZoneDistro(expectedContent);

        // Set up the installer.
        configureStageInstallExpectation(
                expectedContent, TimeZoneDistroInstaller.INSTALL_FAIL_VALIDATION_ERROR);
                expectedDistro, TimeZoneDistroInstaller.INSTALL_FAIL_VALIDATION_ERROR);

        // Simulate the async execution.
        mFakeExecutor.simulateAsyncExecutionOfLastCommand();

        // Verify the expected calls were made to other components.
        verifyStageInstallCalled(expectedContent);
        verifyStageInstallCalled(expectedDistro);

        // Validation failure is treated like a successful check: repeating it won't improve things.
        boolean expectedSuccess = true;
@@ -780,9 +787,9 @@ public class RulesManagerServiceTest {
                .thenThrow(new IOException("Simulated failure"));
    }

    private void configureStageInstallExpectation(byte[] expectedContent, int resultCode)
    private void configureStageInstallExpectation(TimeZoneDistro expected, int resultCode)
            throws Exception {
        when(mMockTimeZoneDistroInstaller.stageInstallWithErrorCode(eq(expectedContent)))
        when(mMockTimeZoneDistroInstaller.stageInstallWithErrorCode(eq(expected)))
                .thenReturn(resultCode);
    }

@@ -790,8 +797,8 @@ public class RulesManagerServiceTest {
        doReturn(success).when(mMockTimeZoneDistroInstaller).stageUninstall();
    }

    private void verifyStageInstallCalled(byte[] expectedContent) throws Exception {
        verify(mMockTimeZoneDistroInstaller).stageInstallWithErrorCode(eq(expectedContent));
    private void verifyStageInstallCalled(TimeZoneDistro expected) throws Exception {
        verify(mMockTimeZoneDistroInstaller).stageInstallWithErrorCode(eq(expected));
        verifyNoMoreInteractions(mMockTimeZoneDistroInstaller);
        reset(mMockTimeZoneDistroInstaller);
    }