From 1d15d46e1758052d25436e78487d5a778d0a3bc6 Mon Sep 17 00:00:00 2001 From: Bertrand SIMONNET Date: Tue, 17 Nov 2015 13:20:06 -0800 Subject: [PATCH] metricsd: Don't upload if product id is empty. If the product id is not set, the product_id file might exist but be empty. In this case, to try to update the metrics. Bug: 25745391 Change-Id: I3942afaf38921b44ddb7e5a29d5d0e4fb6d48d94 Test: Unit tests. --- metricsd/uploader/system_profile_cache.cc | 3 ++- metricsd/uploader/system_profile_cache.h | 1 + metricsd/uploader/upload_service_test.cc | 11 +++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/metricsd/uploader/system_profile_cache.cc b/metricsd/uploader/system_profile_cache.cc index 637cf9e68..7a5eb9329 100644 --- a/metricsd/uploader/system_profile_cache.cc +++ b/metricsd/uploader/system_profile_cache.cc @@ -87,7 +87,8 @@ bool SystemProfileCache::Initialize() { } } - if (!reader.GetString(metrics::kProductId, &profile_.product_id)) { + if (!reader.GetString(metrics::kProductId, &profile_.product_id) + || profile_.product_id.empty()) { LOG(ERROR) << "product_id is not set."; return false; } diff --git a/metricsd/uploader/system_profile_cache.h b/metricsd/uploader/system_profile_cache.h index ae54a2a42..0a21ad4f4 100644 --- a/metricsd/uploader/system_profile_cache.h +++ b/metricsd/uploader/system_profile_cache.h @@ -69,6 +69,7 @@ class SystemProfileCache : public SystemProfileSetter { FRIEND_TEST(UploadServiceTest, ReadKeyValueFromFile); FRIEND_TEST(UploadServiceTest, SessionIdIncrementedAtInitialization); FRIEND_TEST(UploadServiceTest, ValuesInConfigFileAreSent); + FRIEND_TEST(UploadServiceTest, ProductIdMandatory); // Fetches all informations and populates |profile_| bool Initialize(); diff --git a/metricsd/uploader/upload_service_test.cc b/metricsd/uploader/upload_service_test.cc index 47e7b917c..e80db967d 100644 --- a/metricsd/uploader/upload_service_test.cc +++ b/metricsd/uploader/upload_service_test.cc @@ -291,3 +291,14 @@ TEST_F(UploadServiceTest, LogFromTheMetricsLibrary) { EXPECT_EQ(1, sender->send_call_count()); } + +// The product id must be set for metrics to be uploaded. +// If it is not set, the system profile cache should fail to initialize. +TEST_F(UploadServiceTest, ProductIdMandatory) { + SystemProfileCache cache(true, dir_.path()); + ASSERT_FALSE(cache.Initialize()); + SetTestingProperty(metrics::kProductId, ""); + ASSERT_FALSE(cache.Initialize()); + SetTestingProperty(metrics::kProductId, "hello"); + ASSERT_TRUE(cache.Initialize()); +}