skip nop persistent property writes
Bug: 332611029 Test: TH Change-Id: I0f6ca09c781964d1eb432a770c50e7216f043b4f
This commit is contained in:
parent
cd4b579ef4
commit
2f8efe00af
2 changed files with 31 additions and 0 deletions
|
@ -236,6 +236,9 @@ void WritePersistentProperty(const std::string& name, const std::string& value)
|
|||
persistent_properties->mutable_properties()->end(),
|
||||
[&name](const auto& record) { return record.name() == name; });
|
||||
if (it != persistent_properties->mutable_properties()->end()) {
|
||||
if (it->value() == value) {
|
||||
return;
|
||||
}
|
||||
it->set_name(name);
|
||||
it->set_value(value);
|
||||
} else {
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
#include "persistent_properties.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <vector>
|
||||
|
||||
|
@ -155,6 +158,31 @@ TEST(persistent_properties, UpdatePropertyBadParse) {
|
|||
EXPECT_FALSE(it == read_back_properties.properties().end());
|
||||
}
|
||||
|
||||
TEST(persistent_properties, NopUpdateDoesntWriteFile) {
|
||||
TemporaryFile tf;
|
||||
ASSERT_TRUE(tf.fd != -1);
|
||||
persistent_property_filename = tf.path;
|
||||
|
||||
auto last_modified = [&tf]() -> time_t {
|
||||
struct stat buf;
|
||||
EXPECT_EQ(fstat(tf.fd, &buf), 0);
|
||||
return buf.st_mtime;
|
||||
};
|
||||
|
||||
std::vector<std::pair<std::string, std::string>> persistent_properties = {
|
||||
{"persist.sys.locale", "en-US"},
|
||||
{"persist.sys.timezone", "America/Los_Angeles"},
|
||||
};
|
||||
ASSERT_RESULT_OK(
|
||||
WritePersistentPropertyFile(VectorToPersistentProperties(persistent_properties)));
|
||||
|
||||
time_t t = last_modified();
|
||||
sleep(2);
|
||||
WritePersistentProperty("persist.sys.locale", "en-US");
|
||||
// Ensure that the file was not modified
|
||||
ASSERT_EQ(last_modified(), t);
|
||||
}
|
||||
|
||||
TEST(persistent_properties, RejectNonPersistProperty) {
|
||||
TemporaryFile tf;
|
||||
ASSERT_TRUE(tf.fd != -1);
|
||||
|
|
Loading…
Reference in a new issue