Read and write channel from misc.
Use the new update_channel field in bootloader_message_ab in misc partition
to store the target channel.
Bug: 72332119
Test: update_engine_unittests
Change-Id: I11c3d1705ff8724e66b595f83409cb2678708aff
diff --git a/image_properties_android_unittest.cc b/image_properties_android_unittest.cc
index 7327554..607284a 100644
--- a/image_properties_android_unittest.cc
+++ b/image_properties_android_unittest.cc
@@ -23,6 +23,7 @@
#include <gtest/gtest.h>
#include "update_engine/common/constants.h"
+#include "update_engine/common/fake_prefs.h"
#include "update_engine/common/test_utils.h"
#include "update_engine/fake_system_state.h"
@@ -45,6 +46,14 @@
ASSERT_TRUE(WriteFileString(osrelease_dir_.Append(key).value(), value));
}
+ void WriteChannel(const string& channel) {
+ string misc(2080, '\0');
+ misc += channel;
+ misc.resize(4096);
+ ASSERT_TRUE(
+ WriteFileString(tempdir_.GetPath().Append("misc").value(), misc));
+ }
+
FakeSystemState fake_system_state_;
base::ScopedTempDir tempdir_;
@@ -87,4 +96,28 @@
EXPECT_EQ("bar", props.system_id);
}
+TEST_F(ImagePropertiesTest, LoadChannelTest) {
+ WriteChannel("unittest-channel");
+ ImageProperties props = LoadImageProperties(&fake_system_state_);
+ EXPECT_EQ("unittest-channel", props.current_channel);
+}
+
+TEST_F(ImagePropertiesTest, DefaultStableChannelTest) {
+ WriteChannel("");
+ ImageProperties props = LoadImageProperties(&fake_system_state_);
+ EXPECT_EQ("stable-channel", props.current_channel);
+}
+
+TEST_F(ImagePropertiesTest, StoreLoadMutableChannelTest) {
+ FakePrefs prefs;
+ fake_system_state_.set_prefs(&prefs);
+ WriteChannel("previous-channel");
+ MutableImageProperties props;
+ props.target_channel = "new-channel";
+ EXPECT_TRUE(StoreMutableImageProperties(&fake_system_state_, props));
+ MutableImageProperties loaded_props =
+ LoadMutableImageProperties(&fake_system_state_);
+ EXPECT_EQ(props.target_channel, loaded_props.target_channel);
+}
+
} // namespace chromeos_update_engine