summaryrefslogtreecommitdiff
path: root/dynamic_partition_control_android_unittest.cc
diff options
context:
space:
mode:
authorYifan Hong <elsk@google.com>2019-12-04 13:12:01 -0800
committerYifan Hong <elsk@google.com>2019-12-04 14:37:54 -0800
commit6eec995ac79c66741e665fce9a30613844d59384 (patch)
tree83d92904843c07d62b1e930253883dbd7cba4681 /dynamic_partition_control_android_unittest.cc
parent8d3843144aa92a77b6bcadea6e0158fa4962f907 (diff)
Only skip operation on snapshot partitions
On Virtual A/B devices, don't skip SOURCE_COPY on static partitions. Test: update_engine_unittest Test: incremental update to self Change-Id: I5c93b501e09f50f559151eb77d83052373c90d0d
Diffstat (limited to 'dynamic_partition_control_android_unittest.cc')
-rw-r--r--dynamic_partition_control_android_unittest.cc31
1 files changed, 19 insertions, 12 deletions
diff --git a/dynamic_partition_control_android_unittest.cc b/dynamic_partition_control_android_unittest.cc
index fc3d38cb..207a97e0 100644
--- a/dynamic_partition_control_android_unittest.cc
+++ b/dynamic_partition_control_android_unittest.cc
@@ -620,18 +620,22 @@ TEST_F(DynamicPartitionControlAndroidTest, ApplyingToCurrentSlot) {
<< "Should not be able to apply to current slot.";
}
-TEST_F(DynamicPartitionControlAndroidTest, ShouldSkipOperationTest) {
+TEST_P(DynamicPartitionControlAndroidTestP, ShouldSkipOperationTest) {
+ ASSERT_TRUE(dynamicControl().PreparePartitionsForUpdate(
+ source(), target(), PartitionSizesToManifest({{"foo", 4_MiB}}), false));
+ dynamicControl().set_fake_mapped_devices({T("foo")});
+
InstallOperation iop;
Extent *se, *de;
// Not a SOURCE_COPY operation, cannot skip.
iop.set_type(InstallOperation::REPLACE);
- EXPECT_FALSE(dynamicControl().ShouldSkipOperation(iop));
+ EXPECT_FALSE(dynamicControl().ShouldSkipOperation("foo", iop));
iop.set_type(InstallOperation::SOURCE_COPY);
// By default GetVirtualAbFeatureFlag is disabled. Cannot skip operation.
- EXPECT_FALSE(dynamicControl().ShouldSkipOperation(iop));
+ EXPECT_FALSE(dynamicControl().ShouldSkipOperation("foo", iop));
// Enable GetVirtualAbFeatureFlag in the mock interface.
ON_CALL(dynamicControl(), GetVirtualAbFeatureFlag())
@@ -639,19 +643,19 @@ TEST_F(DynamicPartitionControlAndroidTest, ShouldSkipOperationTest) {
// By default target_supports_snapshot_ is set to false. Cannot skip
// operation.
- EXPECT_FALSE(dynamicControl().ShouldSkipOperation(iop));
+ EXPECT_FALSE(dynamicControl().ShouldSkipOperation("foo", iop));
SetSnapshotEnabled(true);
// Empty source and destination. Skip.
- EXPECT_TRUE(dynamicControl().ShouldSkipOperation(iop));
+ EXPECT_TRUE(dynamicControl().ShouldSkipOperation("foo", iop));
se = iop.add_src_extents();
se->set_start_block(0);
se->set_num_blocks(1);
// There is something in sources, but destinations are empty. Cannot skip.
- EXPECT_FALSE(dynamicControl().ShouldSkipOperation(iop));
+ EXPECT_FALSE(dynamicControl().ShouldSkipOperation("foo", iop));
InstallOperation iop2;
@@ -660,42 +664,45 @@ TEST_F(DynamicPartitionControlAndroidTest, ShouldSkipOperationTest) {
de->set_num_blocks(1);
// There is something in destinations, but sources are empty. Cannot skip.
- EXPECT_FALSE(dynamicControl().ShouldSkipOperation(iop2));
+ EXPECT_FALSE(dynamicControl().ShouldSkipOperation("foo", iop2));
de = iop.add_dst_extents();
de->set_start_block(0);
de->set_num_blocks(1);
// Sources and destinations are identical. Skip.
- EXPECT_TRUE(dynamicControl().ShouldSkipOperation(iop));
+ EXPECT_TRUE(dynamicControl().ShouldSkipOperation("foo", iop));
se = iop.add_src_extents();
se->set_start_block(1);
se->set_num_blocks(5);
// There is something in source, but not in destination. Cannot skip.
- EXPECT_FALSE(dynamicControl().ShouldSkipOperation(iop));
+ EXPECT_FALSE(dynamicControl().ShouldSkipOperation("foo", iop));
de = iop.add_dst_extents();
de->set_start_block(1);
de->set_num_blocks(5);
// There is source and destination are equal. Skip.
- EXPECT_TRUE(dynamicControl().ShouldSkipOperation(iop));
+ EXPECT_TRUE(dynamicControl().ShouldSkipOperation("foo", iop));
de = iop.add_dst_extents();
de->set_start_block(6);
de->set_num_blocks(5);
// There is something extra in dest. Cannot skip.
- EXPECT_FALSE(dynamicControl().ShouldSkipOperation(iop));
+ EXPECT_FALSE(dynamicControl().ShouldSkipOperation("foo", iop));
se = iop.add_src_extents();
se->set_start_block(6);
se->set_num_blocks(5);
// Source and dest are identical again. Skip.
- EXPECT_TRUE(dynamicControl().ShouldSkipOperation(iop));
+ EXPECT_TRUE(dynamicControl().ShouldSkipOperation("foo", iop));
+
+ // Don't skip for static partitions.
+ EXPECT_FALSE(dynamicControl().ShouldSkipOperation("bar", iop));
}
} // namespace chromeos_update_engine