Merge "Track TimeZoneDistroInstaller method changes"

This commit is contained in:
Treehugger Robot
2017-06-20 12:06:29 +00:00
committed by Gerrit Code Review
3 changed files with 24 additions and 12 deletions

View File

@@ -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);

View File

@@ -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.

View File

@@ -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);
}