Cobalt takes build_type information
By default, the build_type is set to UNKNOWN_TYPE. This will be reported
for all reports until the Cobalt fuchsia application is updated to
provide the correct information.
Change-Id: I5fba4db7000dce4e7af78b1fa990f26d8453a360
Reviewed-on: https://fuchsia-review.googlesource.com/c/cobalt/+/508074
Commit-Queue: Jared Weinstein <jaredweinstein@google.com>
Reviewed-by: Zach Bush <zmbush@google.com>
diff --git a/src/pb/metadata_builder.cc b/src/pb/metadata_builder.cc
index 9e7b3e7..5418269 100644
--- a/src/pb/metadata_builder.cc
+++ b/src/pb/metadata_builder.cc
@@ -208,6 +208,9 @@
case SystemProfileField::REALM:
profile_out->set_realm(profile_in.realm());
break;
+ case SystemProfileField::BUILD_TYPE:
+ profile_out->set_build_type(profile_in.build_type());
+ break;
}
}
}
diff --git a/src/public/cobalt_config.h b/src/public/cobalt_config.h
index 20a69fc..246cbd1 100644
--- a/src/public/cobalt_config.h
+++ b/src/public/cobalt_config.h
@@ -12,6 +12,7 @@
#include "src/lib/util/file_system.h"
#include "src/local_aggregation_1_1/local_aggregate_storage/local_aggregate_storage.h"
#include "src/logger/project_context.h"
+#include "src/pb/common.pb.h"
#include "src/public/activity_listener_interface.h"
#include "src/public/lib/http_client.h"
#include "src/registry/metric_definition.pb.h"
@@ -163,6 +164,11 @@
// example on Fuchsia a possible value for |version| is "20190220_01_RC00".
std::string version = "";
+ // |build_type|: The build type of the running system. The use of this field
+ // is system-specific. Fuchsia can have possible values of "eng", "user", and
+ // "user_debug".
+ SystemProfile::BuildType build_type = SystemProfile::UNKNOWN_TYPE;
+
// |release_stage|: The ReleaseStage of the running system.
ReleaseStage release_stage = ReleaseStage::GA;
diff --git a/src/public/cobalt_service.cc b/src/public/cobalt_service.cc
index 101cc74..fe22c12 100644
--- a/src/public/cobalt_service.cc
+++ b/src/public/cobalt_service.cc
@@ -93,7 +93,8 @@
CobaltService::CobaltService(CobaltConfig cfg)
: enable_replacement_metrics_(cfg.enable_replacement_metrics),
fs_(std::move(cfg.file_system)),
- system_data_(cfg.product_name, cfg.board_name_suggestion, cfg.release_stage, cfg.version),
+ system_data_(cfg.product_name, cfg.board_name_suggestion, cfg.release_stage, cfg.version,
+ cfg.build_type),
global_project_context_factory_(
cfg.global_registry
? std::make_unique<logger::ProjectContextFactory>(std::move(cfg.global_registry))
diff --git a/src/system_data/system_data.cc b/src/system_data/system_data.cc
index 70a7cda..50707fc 100644
--- a/src/system_data/system_data.cc
+++ b/src/system_data/system_data.cc
@@ -94,12 +94,14 @@
} // namespace
SystemData::SystemData(const std::string& product_name, const std::string& board_name_suggestion,
- ReleaseStage release_stage, const std::string& version)
+ ReleaseStage release_stage, const std::string& version,
+ SystemProfile::BuildType build_type)
: internal_metrics_(logger::InternalMetrics::NewWithLogger(nullptr)),
release_stage_(release_stage) {
system_profile_.set_product_name(product_name);
system_profile_.set_board_name(board_name_suggestion);
system_profile_.set_system_version(version);
+ system_profile_.set_build_type(build_type);
system_profile_.set_realm("<unset>");
system_profile_.set_channel("<unset>");
PopulateSystemProfile();
diff --git a/src/system_data/system_data.h b/src/system_data/system_data.h
index 53700c0..d2f9abb 100644
--- a/src/system_data/system_data.h
+++ b/src/system_data/system_data.h
@@ -82,11 +82,14 @@
//
// |release_stage|: The ReleaseStage of the running system.
//
+ // |build_type|: The BuildType of the running system.
+ //
// |version|: The version of the running system. The use of this field is
// system-specific. For example on Fuchsia a possible value for |version| is
// "20190220_01_RC00".
SystemData(const std::string& product_name, const std::string& board_name_suggestion,
- ReleaseStage release_stage, const std::string& version = "");
+ ReleaseStage release_stage, const std::string& version = "",
+ SystemProfile::BuildType build_type = SystemProfile::UNKNOWN_TYPE);
~SystemData() override = default;
diff --git a/src/system_data/system_data_test.cc b/src/system_data/system_data_test.cc
index f9fbdff..b9415c9 100644
--- a/src/system_data/system_data_test.cc
+++ b/src/system_data/system_data_test.cc
@@ -20,13 +20,14 @@
namespace cobalt::system_data {
TEST(SystemDataTest, BasicTest) {
- SystemData system_data("test_product", "", GA, "test_version");
+ SystemData system_data("test_product", "", GA, "test_version", SystemProfile::ENG);
EXPECT_NE(SystemProfile::UNKNOWN_OS, system_data.system_profile().os());
EXPECT_NE(SystemProfile::UNKNOWN_ARCH, system_data.system_profile().arch());
EXPECT_EQ(ReleaseStage::GA, system_data.release_stage());
EXPECT_NE(system_data.system_profile().board_name(), "");
EXPECT_EQ(system_data.system_profile().product_name(), "test_product");
EXPECT_EQ(system_data.system_profile().system_version(), "test_version");
+ EXPECT_EQ(system_data.system_profile().build_type(), SystemProfile::ENG);
// Board names we expect to see.
std::set<std::string> expected_board_names = {"Eve", "Generic ARM"};