Merge "Statsd always includes snapshot of uid map."
This commit is contained in:
committed by
Android (Google) Code Review
commit
82c2173b67
@@ -137,15 +137,17 @@ void StatsLogProcessor::OnLogEvent(LogEvent* event) {
|
||||
StatsdStats::getInstance().noteAtomLogged(
|
||||
event->GetTagId(), event->GetTimestampNs() / NS_PER_SEC);
|
||||
|
||||
if (mMetricsManagers.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Hard-coded logic to update the isolated uid's in the uid-map.
|
||||
// The field numbers need to be currently updated by hand with atoms.proto
|
||||
if (event->GetTagId() == android::util::ISOLATED_UID_CHANGED) {
|
||||
onIsolatedUidChangedEventLocked(*event);
|
||||
} else {
|
||||
}
|
||||
|
||||
if (mMetricsManagers.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event->GetTagId() != android::util::ISOLATED_UID_CHANGED) {
|
||||
// Map the isolated uid to host uid if necessary.
|
||||
mapIsolatedUidToHostUidIfNecessaryLocked(event);
|
||||
}
|
||||
|
||||
@@ -281,20 +281,10 @@ int UidMap::getHostUidOrSelf(int uid) const {
|
||||
|
||||
void UidMap::clearOutput() {
|
||||
mOutput.Clear();
|
||||
// Re-initialize the initial state for the outputs. This results in extra data being uploaded
|
||||
// but helps ensure we can re-construct the UID->app name, versionCode mapping in server.
|
||||
auto snapshot = mOutput.add_snapshots();
|
||||
for (auto it : mMap) {
|
||||
auto t = snapshot->add_package_info();
|
||||
t->set_name(it.second.packageName);
|
||||
t->set_version(it.second.versionCode);
|
||||
t->set_uid(it.first);
|
||||
}
|
||||
|
||||
// Also update the guardrail trackers.
|
||||
StatsdStats::getInstance().setUidMapChanges(0);
|
||||
StatsdStats::getInstance().setUidMapSnapshots(1);
|
||||
mBytesUsed = snapshot->ByteSize();
|
||||
mBytesUsed = 0;
|
||||
StatsdStats::getInstance().setCurrentUidMapMemory(mBytesUsed);
|
||||
}
|
||||
|
||||
@@ -348,6 +338,19 @@ UidMapping UidMap::getOutput(const int64_t& timestamp, const ConfigKey& key) {
|
||||
++it_deltas;
|
||||
}
|
||||
}
|
||||
|
||||
if (mOutput.snapshots_size() == 0) {
|
||||
// Produce another snapshot. This results in extra data being uploaded but helps
|
||||
// ensure we can re-construct the UID->app name, versionCode mapping in server.
|
||||
auto snapshot = mOutput.add_snapshots();
|
||||
snapshot->set_timestamp_nanos(timestamp);
|
||||
for (auto it : mMap) {
|
||||
auto t = snapshot->add_package_info();
|
||||
t->set_name(it.second.packageName);
|
||||
t->set_version(it.second.versionCode);
|
||||
t->set_uid(it.first);
|
||||
}
|
||||
}
|
||||
}
|
||||
mBytesUsed = mOutput.ByteSize(); // Compute actual size after potential deletions.
|
||||
StatsdStats::getInstance().setCurrentUidMapMemory(mBytesUsed);
|
||||
|
||||
@@ -178,16 +178,16 @@ TEST(UidMapTest, TestClearingOutput) {
|
||||
EXPECT_EQ(1, results.snapshots_size());
|
||||
|
||||
// It should be cleared now
|
||||
EXPECT_EQ(0, m.mOutput.snapshots_size());
|
||||
EXPECT_EQ(1, m.mOutput.snapshots_size());
|
||||
results = m.getOutput(3, config1);
|
||||
EXPECT_EQ(0, results.snapshots_size());
|
||||
EXPECT_EQ(1, results.snapshots_size());
|
||||
|
||||
// Now add another configuration.
|
||||
m.OnConfigUpdated(config2);
|
||||
m.updateApp(5, String16(kApp1.c_str()), 1000, 40);
|
||||
EXPECT_EQ(1, m.mOutput.changes_size());
|
||||
results = m.getOutput(6, config1);
|
||||
EXPECT_EQ(0, results.snapshots_size());
|
||||
EXPECT_EQ(1, results.snapshots_size());
|
||||
EXPECT_EQ(1, results.changes_size());
|
||||
EXPECT_EQ(1, m.mOutput.changes_size());
|
||||
|
||||
@@ -197,15 +197,15 @@ TEST(UidMapTest, TestClearingOutput) {
|
||||
|
||||
// We still can't remove anything.
|
||||
results = m.getOutput(8, config1);
|
||||
EXPECT_EQ(0, results.snapshots_size());
|
||||
EXPECT_EQ(1, results.snapshots_size());
|
||||
EXPECT_EQ(2, results.changes_size());
|
||||
EXPECT_EQ(2, m.mOutput.changes_size());
|
||||
|
||||
results = m.getOutput(9, config2);
|
||||
EXPECT_EQ(0, results.snapshots_size());
|
||||
EXPECT_EQ(1, results.snapshots_size());
|
||||
EXPECT_EQ(2, results.changes_size());
|
||||
// At this point both should be cleared.
|
||||
EXPECT_EQ(0, m.mOutput.snapshots_size());
|
||||
EXPECT_EQ(1, m.mOutput.snapshots_size());
|
||||
EXPECT_EQ(0, m.mOutput.changes_size());
|
||||
}
|
||||
|
||||
@@ -228,10 +228,8 @@ TEST(UidMapTest, TestMemoryComputed) {
|
||||
|
||||
m.updateApp(3, String16(kApp1.c_str()), 1000, 40);
|
||||
EXPECT_TRUE(m.mBytesUsed > snapshot_bytes);
|
||||
size_t bytesWithSnapshotChange = m.mBytesUsed;
|
||||
|
||||
m.getOutput(2, config1);
|
||||
EXPECT_TRUE(m.mBytesUsed < bytesWithSnapshotChange);
|
||||
size_t prevBytes = m.mBytesUsed;
|
||||
|
||||
m.getOutput(4, config1);
|
||||
|
||||
Reference in New Issue
Block a user