Merge "Refactor BaseInfo struct"
This commit is contained in:
@@ -411,7 +411,7 @@ void ValueMetricProducer::skipCurrentBucket(const int64_t dropTimeNs,
|
||||
|
||||
void ValueMetricProducer::resetBase() {
|
||||
for (auto& slice : mCurrentBaseInfo) {
|
||||
for (auto& baseInfo : slice.second) {
|
||||
for (auto& baseInfo : slice.second.baseInfos) {
|
||||
baseInfo.hasBase = false;
|
||||
}
|
||||
}
|
||||
@@ -623,7 +623,7 @@ void ValueMetricProducer::accumulateEvents(const std::vector<std::shared_ptr<Log
|
||||
mMatchedMetricDimensionKeys.find(whatKey) != mMatchedMetricDimensionKeys.end();
|
||||
if (!presentInPulledData && whatKey.contains(mStateChangePrimaryKey.second)) {
|
||||
auto it = mCurrentBaseInfo.find(whatKey);
|
||||
for (auto& baseInfo : it->second) {
|
||||
for (auto& baseInfo : it->second.baseInfos) {
|
||||
baseInfo.hasBase = false;
|
||||
}
|
||||
}
|
||||
@@ -788,22 +788,21 @@ void ValueMetricProducer::onMatchedLogEventInternalLocked(
|
||||
return;
|
||||
}
|
||||
|
||||
vector<BaseInfo>& baseInfos = mCurrentBaseInfo[whatKey];
|
||||
DimensionsInWhatInfo& dimensionsInWhatInfo = mCurrentBaseInfo[whatKey];
|
||||
vector<BaseInfo>& baseInfos = dimensionsInWhatInfo.baseInfos;
|
||||
if (baseInfos.size() < mFieldMatchers.size()) {
|
||||
VLOG("Resizing number of intervals to %d", (int)mFieldMatchers.size());
|
||||
baseInfos.resize(mFieldMatchers.size());
|
||||
}
|
||||
|
||||
for (BaseInfo& baseInfo : baseInfos) {
|
||||
if (!baseInfo.hasCurrentState) {
|
||||
baseInfo.currentState = getUnknownStateKey();
|
||||
baseInfo.hasCurrentState = true;
|
||||
}
|
||||
if (!dimensionsInWhatInfo.hasCurrentState) {
|
||||
dimensionsInWhatInfo.currentState = getUnknownStateKey();
|
||||
dimensionsInWhatInfo.hasCurrentState = true;
|
||||
}
|
||||
|
||||
// We need to get the intervals stored with the previous state key so we can
|
||||
// close these value intervals.
|
||||
const auto oldStateKey = baseInfos[0].currentState;
|
||||
const auto oldStateKey = dimensionsInWhatInfo.currentState;
|
||||
vector<Interval>& intervals =
|
||||
mCurrentSlicedBucket[MetricDimensionKey(whatKey, oldStateKey)].intervals;
|
||||
if (intervals.size() < mFieldMatchers.size()) {
|
||||
@@ -819,14 +818,14 @@ void ValueMetricProducer::onMatchedLogEventInternalLocked(
|
||||
// Discussion here: http://ag/6124370.
|
||||
bool useAnomalyDetection = true;
|
||||
|
||||
dimensionsInWhatInfo.hasCurrentState = true;
|
||||
dimensionsInWhatInfo.currentState = stateKey;
|
||||
for (int i = 0; i < (int)mFieldMatchers.size(); i++) {
|
||||
const Matcher& matcher = mFieldMatchers[i];
|
||||
BaseInfo& baseInfo = baseInfos[i];
|
||||
Interval& interval = intervals[i];
|
||||
interval.valueIndex = i;
|
||||
Value value;
|
||||
baseInfo.hasCurrentState = true;
|
||||
baseInfo.currentState = stateKey;
|
||||
if (!getDoubleOrLong(event, matcher, value)) {
|
||||
VLOG("Failed to get value %d from event %s", i, event.ToString().c_str());
|
||||
StatsdStats::getInstance().noteBadValueType(mMetricId);
|
||||
|
||||
@@ -193,22 +193,29 @@ private:
|
||||
std::vector<Interval> intervals;
|
||||
} CurrentValueBucket;
|
||||
|
||||
// Holds base information for diffing values from one value field.
|
||||
typedef struct {
|
||||
// Holds current base value of the dimension. Take diff and update if necessary.
|
||||
Value base;
|
||||
// Whether there is a base to diff to.
|
||||
bool hasBase;
|
||||
} BaseInfo;
|
||||
|
||||
// State key and base information for a specific DimensionsInWhat key.
|
||||
typedef struct {
|
||||
std::vector<BaseInfo> baseInfos;
|
||||
// Last seen state value(s).
|
||||
HashableDimensionKey currentState;
|
||||
// Whether this dimensions in what key has a current state key.
|
||||
bool hasCurrentState;
|
||||
} BaseInfo;
|
||||
} DimensionsInWhatInfo;
|
||||
|
||||
// Tracks the internal state in the ongoing aggregation bucket for each DimensionsInWhat
|
||||
// key and StateValuesKey pair.
|
||||
std::unordered_map<MetricDimensionKey, CurrentValueBucket> mCurrentSlicedBucket;
|
||||
|
||||
std::unordered_map<HashableDimensionKey, std::vector<BaseInfo>> mCurrentBaseInfo;
|
||||
// Tracks current state key and base information for each DimensionsInWhat key.
|
||||
std::unordered_map<HashableDimensionKey, DimensionsInWhatInfo> mCurrentBaseInfo;
|
||||
|
||||
std::unordered_map<MetricDimensionKey, int64_t> mCurrentFullBucket;
|
||||
|
||||
|
||||
@@ -289,7 +289,8 @@ TEST(ValueMetricProducerTest, TestPulledEventsNoCondition) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(11, curBaseInfo.base.long_value);
|
||||
@@ -305,7 +306,7 @@ TEST(ValueMetricProducerTest, TestPulledEventsNoCondition) {
|
||||
// has one slice
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(23, curBaseInfo.base.long_value);
|
||||
@@ -323,7 +324,7 @@ TEST(ValueMetricProducerTest, TestPulledEventsNoCondition) {
|
||||
valueProducer->onDataPulled(allData, /** succeed */ true, bucket4StartTimeNs);
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(36, curBaseInfo.base.long_value);
|
||||
@@ -427,7 +428,8 @@ TEST(ValueMetricProducerTest, TestPulledEventsWithFiltering) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(11, curBaseInfo.base.long_value);
|
||||
@@ -456,7 +458,7 @@ TEST(ValueMetricProducerTest, TestPulledEventsWithFiltering) {
|
||||
valueProducer->onDataPulled(allData, /** succeed */ true, bucket4StartTimeNs);
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
|
||||
// the base was reset
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
@@ -490,7 +492,8 @@ TEST(ValueMetricProducerTest, TestPulledEventsTakeAbsoluteValueOnReset) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(11, curBaseInfo.base.long_value);
|
||||
@@ -503,7 +506,7 @@ TEST(ValueMetricProducerTest, TestPulledEventsTakeAbsoluteValueOnReset) {
|
||||
// has one slice
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(10, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -517,7 +520,7 @@ TEST(ValueMetricProducerTest, TestPulledEventsTakeAbsoluteValueOnReset) {
|
||||
valueProducer->onDataPulled(allData, /** succeed */ true, bucket4StartTimeNs);
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(36, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -550,7 +553,8 @@ TEST(ValueMetricProducerTest, TestPulledEventsTakeZeroOnReset) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(11, curBaseInfo.base.long_value);
|
||||
@@ -563,7 +567,7 @@ TEST(ValueMetricProducerTest, TestPulledEventsTakeZeroOnReset) {
|
||||
// has one slice
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(10, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -574,7 +578,7 @@ TEST(ValueMetricProducerTest, TestPulledEventsTakeZeroOnReset) {
|
||||
valueProducer->onDataPulled(allData, /** succeed */ true, bucket4StartTimeNs);
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(36, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -625,7 +629,8 @@ TEST(ValueMetricProducerTest, TestEventsWithNonSlicedCondition) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
// startUpdated:false sum:0 start:100
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(100, curBaseInfo.base.long_value);
|
||||
@@ -642,7 +647,7 @@ TEST(ValueMetricProducerTest, TestEventsWithNonSlicedCondition) {
|
||||
// has one slice
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(110, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -655,7 +660,7 @@ TEST(ValueMetricProducerTest, TestEventsWithNonSlicedCondition) {
|
||||
// has one slice
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
EXPECT_EQ(20, curInterval.value.long_value);
|
||||
EXPECT_EQ(false, curBaseInfo.hasBase);
|
||||
@@ -880,7 +885,8 @@ TEST(ValueMetricProducerTest, TestPushedEventsWithoutCondition) {
|
||||
ASSERT_EQ(1UL, valueProducer.mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval curInterval =
|
||||
valueProducer.mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer.mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(10, curInterval.value.long_value);
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
|
||||
@@ -1090,7 +1096,8 @@ TEST(ValueMetricProducerTest, TestBucketBoundaryNoCondition) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
|
||||
// startUpdated:true sum:0 start:11
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
@@ -1105,7 +1112,7 @@ TEST(ValueMetricProducerTest, TestBucketBoundaryNoCondition) {
|
||||
// has one slice
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
// tartUpdated:false sum:12
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(23, curBaseInfo.base.long_value);
|
||||
@@ -1122,7 +1129,7 @@ TEST(ValueMetricProducerTest, TestBucketBoundaryNoCondition) {
|
||||
valueProducer->onDataPulled(allData, /** succeed */ true, bucket6StartTimeNs);
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
// startUpdated:false sum:12
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(36, curBaseInfo.base.long_value);
|
||||
@@ -1181,7 +1188,8 @@ TEST(ValueMetricProducerTest, TestBucketBoundaryWithCondition) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(100, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -1190,7 +1198,7 @@ TEST(ValueMetricProducerTest, TestBucketBoundaryWithCondition) {
|
||||
// pull on bucket boundary come late, condition change happens before it
|
||||
valueProducer->onConditionChanged(false, bucket2StartTimeNs + 1);
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
assertPastBucketValuesSingleKey(valueProducer->mPastBuckets, {20}, {bucketSizeNs - 8},
|
||||
{bucketStartTimeNs}, {bucket2StartTimeNs});
|
||||
EXPECT_EQ(false, curBaseInfo.hasBase);
|
||||
@@ -1204,7 +1212,7 @@ TEST(ValueMetricProducerTest, TestBucketBoundaryWithCondition) {
|
||||
assertPastBucketValuesSingleKey(valueProducer->mPastBuckets, {20}, {bucketSizeNs - 8},
|
||||
{bucketStartTimeNs}, {bucket2StartTimeNs});
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(false, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
}
|
||||
@@ -1253,7 +1261,8 @@ TEST(ValueMetricProducerTest, TestBucketBoundaryWithCondition2) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
// startUpdated:false sum:0 start:100
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(100, curBaseInfo.base.long_value);
|
||||
@@ -1266,7 +1275,7 @@ TEST(ValueMetricProducerTest, TestBucketBoundaryWithCondition2) {
|
||||
{bucketStartTimeNs}, {bucket2StartTimeNs});
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(false, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
|
||||
@@ -1275,7 +1284,7 @@ TEST(ValueMetricProducerTest, TestBucketBoundaryWithCondition2) {
|
||||
assertPastBucketValuesSingleKey(valueProducer->mPastBuckets, {20}, {bucketSizeNs - 8},
|
||||
{bucketStartTimeNs}, {bucket2StartTimeNs});
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(130, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -1287,7 +1296,7 @@ TEST(ValueMetricProducerTest, TestBucketBoundaryWithCondition2) {
|
||||
valueProducer->onDataPulled(allData, /** succeed */ true, bucket2StartTimeNs + 50);
|
||||
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(140, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
@@ -1488,7 +1497,8 @@ TEST(ValueMetricProducerTest, TestSkipZeroDiffOutput) {
|
||||
ASSERT_EQ(1UL, valueProducer.mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval curInterval =
|
||||
valueProducer.mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer.mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(10, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -1510,7 +1520,7 @@ TEST(ValueMetricProducerTest, TestSkipZeroDiffOutput) {
|
||||
|
||||
ASSERT_EQ(1UL, valueProducer.mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer.mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(15, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
@@ -1521,7 +1531,7 @@ TEST(ValueMetricProducerTest, TestSkipZeroDiffOutput) {
|
||||
valueProducer.onMatchedLogEvent(1 /*log matcher index*/, event4);
|
||||
ASSERT_EQ(1UL, valueProducer.mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer.mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(15, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
@@ -1559,11 +1569,12 @@ TEST(ValueMetricProducerTest, TestSkipZeroDiffOutputMultiValue) {
|
||||
ASSERT_EQ(1UL, valueProducer.mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval curInterval =
|
||||
valueProducer.mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer.mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(10, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second[1];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second.baseInfos[1];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(20, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -1573,11 +1584,11 @@ TEST(ValueMetricProducerTest, TestSkipZeroDiffOutputMultiValue) {
|
||||
// has one slice
|
||||
ASSERT_EQ(1UL, valueProducer.mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer.mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
EXPECT_EQ(5, curInterval.value.long_value);
|
||||
curInterval = valueProducer.mCurrentSlicedBucket.begin()->second.intervals[1];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second[1];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second.baseInfos[1];
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
EXPECT_EQ(2, curInterval.value.long_value);
|
||||
|
||||
@@ -1588,13 +1599,13 @@ TEST(ValueMetricProducerTest, TestSkipZeroDiffOutputMultiValue) {
|
||||
valueProducer.onMatchedLogEvent(1 /*log matcher index*/, event3);
|
||||
ASSERT_EQ(1UL, valueProducer.mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer.mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(15, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
curInterval = valueProducer.mCurrentSlicedBucket.begin()->second.intervals[1];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second[1];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second.baseInfos[1];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(25, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
@@ -1605,12 +1616,12 @@ TEST(ValueMetricProducerTest, TestSkipZeroDiffOutputMultiValue) {
|
||||
valueProducer.onMatchedLogEvent(1 /*log matcher index*/, event4);
|
||||
ASSERT_EQ(1UL, valueProducer.mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer.mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(15, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
curInterval = valueProducer.mCurrentSlicedBucket.begin()->second.intervals[1];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second[1];
|
||||
curBaseInfo = valueProducer.mCurrentBaseInfo.begin()->second.baseInfos[1];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(29, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
@@ -1658,7 +1669,7 @@ TEST(ValueMetricProducerTest, TestUseZeroDefaultBase) {
|
||||
auto iter = valueProducer->mCurrentSlicedBucket.begin();
|
||||
auto& interval1 = iter->second.intervals[0];
|
||||
auto iterBase = valueProducer->mCurrentBaseInfo.begin();
|
||||
auto& baseInfo1 = iterBase->second[0];
|
||||
auto& baseInfo1 = iterBase->second.baseInfos[0];
|
||||
EXPECT_EQ(1, iter->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
EXPECT_EQ(true, baseInfo1.hasBase);
|
||||
EXPECT_EQ(3, baseInfo1.base.long_value);
|
||||
@@ -1693,7 +1704,7 @@ TEST(ValueMetricProducerTest, TestUseZeroDefaultBase) {
|
||||
EXPECT_TRUE(it != iter);
|
||||
EXPECT_TRUE(itBase != iterBase);
|
||||
auto& interval2 = it->second.intervals[0];
|
||||
auto& baseInfo2 = itBase->second[0];
|
||||
auto& baseInfo2 = itBase->second.baseInfos[0];
|
||||
EXPECT_EQ(2, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
EXPECT_EQ(true, baseInfo2.hasBase);
|
||||
EXPECT_EQ(4, baseInfo2.base.long_value);
|
||||
@@ -1734,7 +1745,8 @@ TEST(ValueMetricProducerTest, TestUseZeroDefaultBaseWithPullFailures) {
|
||||
const auto& it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
ValueMetricProducer::Interval& interval1 = it->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo& baseInfo1 =
|
||||
valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat())->second[0];
|
||||
valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat())
|
||||
->second.baseInfos[0];
|
||||
EXPECT_EQ(1, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
EXPECT_EQ(true, baseInfo1.hasBase);
|
||||
EXPECT_EQ(3, baseInfo1.base.long_value);
|
||||
@@ -1763,7 +1775,8 @@ TEST(ValueMetricProducerTest, TestUseZeroDefaultBaseWithPullFailures) {
|
||||
EXPECT_TRUE(it2 != it);
|
||||
ValueMetricProducer::Interval& interval2 = it2->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo& baseInfo2 =
|
||||
valueProducer->mCurrentBaseInfo.find(it2->first.getDimensionKeyInWhat())->second[0];
|
||||
valueProducer->mCurrentBaseInfo.find(it2->first.getDimensionKeyInWhat())
|
||||
->second.baseInfos[0];
|
||||
EXPECT_EQ(2, it2->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
EXPECT_EQ(true, baseInfo2.hasBase);
|
||||
EXPECT_EQ(4, baseInfo2.base.long_value);
|
||||
@@ -1797,9 +1810,11 @@ TEST(ValueMetricProducerTest, TestUseZeroDefaultBaseWithPullFailures) {
|
||||
ValueMetricProducer::Interval& interval3 = it3->second.intervals[0];
|
||||
ValueMetricProducer::Interval& interval4 = it4->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo& baseInfo3 =
|
||||
valueProducer->mCurrentBaseInfo.find(it3->first.getDimensionKeyInWhat())->second[0];
|
||||
valueProducer->mCurrentBaseInfo.find(it3->first.getDimensionKeyInWhat())
|
||||
->second.baseInfos[0];
|
||||
ValueMetricProducer::BaseInfo& baseInfo4 =
|
||||
valueProducer->mCurrentBaseInfo.find(it4->first.getDimensionKeyInWhat())->second[0];
|
||||
valueProducer->mCurrentBaseInfo.find(it4->first.getDimensionKeyInWhat())
|
||||
->second.baseInfos[0];
|
||||
|
||||
EXPECT_EQ(true, baseInfo3.hasBase);
|
||||
EXPECT_EQ(5, baseInfo3.base.long_value);
|
||||
@@ -1839,7 +1854,7 @@ TEST(ValueMetricProducerTest, TestTrimUnusedDimensionKey) {
|
||||
auto iter = valueProducer->mCurrentSlicedBucket.begin();
|
||||
auto& interval1 = iter->second.intervals[0];
|
||||
auto iterBase = valueProducer->mCurrentBaseInfo.begin();
|
||||
auto& baseInfo1 = iterBase->second[0];
|
||||
auto& baseInfo1 = iterBase->second.baseInfos[0];
|
||||
EXPECT_EQ(1, iter->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
EXPECT_EQ(true, baseInfo1.hasBase);
|
||||
EXPECT_EQ(3, baseInfo1.base.long_value);
|
||||
@@ -1876,7 +1891,7 @@ TEST(ValueMetricProducerTest, TestTrimUnusedDimensionKey) {
|
||||
EXPECT_TRUE(it != iter);
|
||||
EXPECT_TRUE(itBase != iterBase);
|
||||
auto interval2 = it->second.intervals[0];
|
||||
auto baseInfo2 = itBase->second[0];
|
||||
auto baseInfo2 = itBase->second.baseInfos[0];
|
||||
EXPECT_EQ(2, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
EXPECT_EQ(true, baseInfo2.hasBase);
|
||||
EXPECT_EQ(4, baseInfo2.base.long_value);
|
||||
@@ -1890,7 +1905,7 @@ TEST(ValueMetricProducerTest, TestTrimUnusedDimensionKey) {
|
||||
// Only one interval left. One was trimmed.
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
interval2 = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
baseInfo2 = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
baseInfo2 = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(2, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
EXPECT_EQ(true, baseInfo2.hasBase);
|
||||
EXPECT_EQ(5, baseInfo2.base.long_value);
|
||||
@@ -1904,7 +1919,7 @@ TEST(ValueMetricProducerTest, TestTrimUnusedDimensionKey) {
|
||||
valueProducer->onDataPulled(allData, /** succeed */ true, bucket5StartTimeNs);
|
||||
|
||||
interval2 = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
baseInfo2 = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
baseInfo2 = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, baseInfo2.hasBase);
|
||||
EXPECT_EQ(14, baseInfo2.base.long_value);
|
||||
EXPECT_EQ(false, interval2.hasValue);
|
||||
@@ -1944,7 +1959,8 @@ TEST(ValueMetricProducerTest, TestResetBaseOnPullFailAfterConditionChange_EndOfB
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval& curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo& curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo& curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(100, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -1981,7 +1997,8 @@ TEST(ValueMetricProducerTest, TestResetBaseOnPullFailAfterConditionChange) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval& curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo& curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo& curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(100, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -2031,7 +2048,8 @@ TEST(ValueMetricProducerTest, TestResetBaseOnPullFailBeforeConditionChange) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval& curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(false, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
EXPECT_EQ(false, valueProducer->mHasGlobalBase);
|
||||
@@ -2104,7 +2122,8 @@ TEST(ValueMetricProducerTest, TestBaseSetOnConditionChange) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval& curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(100, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -2157,7 +2176,8 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenOneConditionFailed
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval& curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(140, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -2295,7 +2315,8 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenInitialPullFailed)
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval& curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(140, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -2374,7 +2395,8 @@ TEST(ValueMetricProducerTest_BucketDrop, TestInvalidBucketWhenLastPullFailed) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval& curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(false, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
EXPECT_EQ(false, valueProducer->mHasGlobalBase);
|
||||
@@ -2461,7 +2483,8 @@ TEST(ValueMetricProducerTest, TestEmptyDataResetsBase_onConditionChanged) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval& curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
EXPECT_EQ(true, valueProducer->mHasGlobalBase);
|
||||
@@ -2470,7 +2493,7 @@ TEST(ValueMetricProducerTest, TestEmptyDataResetsBase_onConditionChanged) {
|
||||
valueProducer->onConditionChanged(false, bucketStartTimeNs + 10);
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(false, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
EXPECT_EQ(false, valueProducer->mHasGlobalBase);
|
||||
@@ -2514,7 +2537,8 @@ TEST(ValueMetricProducerTest, TestEmptyDataResetsBase_onBucketBoundary) {
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval& curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
EXPECT_EQ(true, valueProducer->mHasGlobalBase);
|
||||
@@ -2525,7 +2549,7 @@ TEST(ValueMetricProducerTest, TestEmptyDataResetsBase_onBucketBoundary) {
|
||||
valueProducer->onDataPulled(allData, /** succeed */ true, bucket2StartTimeNs);
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
// Data is empty, base should be reset.
|
||||
EXPECT_EQ(false, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(5, curBaseInfo.base.long_value);
|
||||
@@ -2570,13 +2594,13 @@ TEST(ValueMetricProducerTest, TestPartialResetOnBucketBoundaries) {
|
||||
ASSERT_EQ(2UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
auto iterator = valueProducer->mCurrentSlicedBucket.begin();
|
||||
auto baseInfoIter = valueProducer->mCurrentBaseInfo.begin();
|
||||
EXPECT_EQ(true, baseInfoIter->second[0].hasBase);
|
||||
EXPECT_EQ(2, baseInfoIter->second[0].base.long_value);
|
||||
EXPECT_EQ(true, baseInfoIter->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(2, baseInfoIter->second.baseInfos[0].base.long_value);
|
||||
EXPECT_EQ(false, iterator->second.intervals[0].hasValue);
|
||||
iterator++;
|
||||
baseInfoIter++;
|
||||
EXPECT_EQ(false, baseInfoIter->second[0].hasBase);
|
||||
EXPECT_EQ(1, baseInfoIter->second[0].base.long_value);
|
||||
EXPECT_EQ(false, baseInfoIter->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(1, baseInfoIter->second.baseInfos[0].base.long_value);
|
||||
EXPECT_EQ(false, iterator->second.intervals[0].hasValue);
|
||||
|
||||
EXPECT_EQ(true, valueProducer->mHasGlobalBase);
|
||||
@@ -2677,7 +2701,7 @@ TEST(ValueMetricProducerTest, TestBucketBoundariesOnConditionChange) {
|
||||
valueProducer->onConditionChanged(true, bucket2StartTimeNs + 10);
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
auto curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
auto curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
auto curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(5, curBaseInfo.base.long_value);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
@@ -2812,7 +2836,7 @@ TEST(ValueMetricProducerTest, TestDataIsNotUpdatedWhenNoConditionChanged) {
|
||||
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
auto curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
auto curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
auto curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
EXPECT_EQ(2, curInterval.value.long_value);
|
||||
|
||||
@@ -3046,7 +3070,8 @@ TEST(ValueMetricProducerTest, TestPulledData_noDiff_withMultipleConditionChanges
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
ValueMetricProducer::Interval curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(false, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(true, curInterval.hasValue);
|
||||
EXPECT_EQ(20, curInterval.value.long_value);
|
||||
@@ -3059,7 +3084,7 @@ TEST(ValueMetricProducerTest, TestPulledData_noDiff_withMultipleConditionChanges
|
||||
assertPastBucketValuesSingleKey(valueProducer->mPastBuckets, {20}, {50 - 8},
|
||||
{bucketStartTimeNs}, {bucket2StartTimeNs});
|
||||
curInterval = valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(false, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
}
|
||||
@@ -3092,7 +3117,8 @@ TEST(ValueMetricProducerTest, TestPulledData_noDiff_bucketBoundaryTrue) {
|
||||
{bucketStartTimeNs}, {bucket2StartTimeNs});
|
||||
ValueMetricProducer::Interval curInterval =
|
||||
valueProducer->mCurrentSlicedBucket.begin()->second.intervals[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo = valueProducer->mCurrentBaseInfo.begin()->second[0];
|
||||
ValueMetricProducer::BaseInfo curBaseInfo =
|
||||
valueProducer->mCurrentBaseInfo.begin()->second.baseInfos[0];
|
||||
EXPECT_EQ(false, curBaseInfo.hasBase);
|
||||
EXPECT_EQ(false, curInterval.hasValue);
|
||||
}
|
||||
@@ -3984,12 +4010,12 @@ TEST(ValueMetricProducerTest, TestSlicedState) {
|
||||
// Base for dimension key {}
|
||||
auto it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
auto itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(3, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(3, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(-1 /* StateTracker::kStateUnknown */,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for dimension, state key {{}, kStateUnknown}
|
||||
EXPECT_EQ(0, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
ASSERT_EQ(1, it->first.getStateValuesKey().getValues().size());
|
||||
@@ -4005,12 +4031,12 @@ TEST(ValueMetricProducerTest, TestSlicedState) {
|
||||
// Base for dimension key {}
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(5, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(5, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(android::view::DisplayStateEnum::DISPLAY_STATE_ON,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for dimension, state key {{}, kStateUnknown}
|
||||
EXPECT_EQ(0, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
ASSERT_EQ(1, it->first.getStateValuesKey().getValues().size());
|
||||
@@ -4027,11 +4053,11 @@ TEST(ValueMetricProducerTest, TestSlicedState) {
|
||||
// Base for dimension key {}
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(9, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(9, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
EXPECT_EQ(android::view::DisplayStateEnum::DISPLAY_STATE_OFF,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for dimension, state key {{}, ON}
|
||||
EXPECT_EQ(0, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
ASSERT_EQ(1, it->first.getStateValuesKey().getValues().size());
|
||||
@@ -4056,12 +4082,12 @@ TEST(ValueMetricProducerTest, TestSlicedState) {
|
||||
// Base for dimension key {}
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(21, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(21, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(android::view::DisplayStateEnum::DISPLAY_STATE_ON,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for dimension, state key {{}, OFF}
|
||||
EXPECT_EQ(0, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
ASSERT_EQ(1, it->first.getStateValuesKey().getValues().size());
|
||||
@@ -4195,12 +4221,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithMap) {
|
||||
// Base for dimension key {}
|
||||
auto it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
auto itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(3, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(3, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(-1 /* StateTracker::kStateUnknown */,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for dimension, state key {{}, {kStateUnknown}}
|
||||
EXPECT_EQ(0, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
ASSERT_EQ(1, it->first.getStateValuesKey().getValues().size());
|
||||
@@ -4216,12 +4242,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithMap) {
|
||||
// Base for dimension key {}
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(5, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(5, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(screenOnGroup.group_id(),
|
||||
itBase->second[0].currentState.getValues()[0].mValue.long_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.long_value);
|
||||
// Value for dimension, state key {{}, kStateUnknown}
|
||||
EXPECT_EQ(0, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
ASSERT_EQ(1, it->first.getStateValuesKey().getValues().size());
|
||||
@@ -4239,12 +4265,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithMap) {
|
||||
// Base for dimension key {}
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(5, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(5, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(screenOnGroup.group_id(),
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for dimension, state key {{}, kStateUnknown}
|
||||
EXPECT_EQ(0, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
ASSERT_EQ(1, it->first.getStateValuesKey().getValues().size());
|
||||
@@ -4262,12 +4288,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithMap) {
|
||||
// Base for dimension key {}
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(5, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(5, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(screenOnGroup.group_id(),
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for dimension, state key {{}, kStateUnknown}
|
||||
EXPECT_EQ(0, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
ASSERT_EQ(1, it->first.getStateValuesKey().getValues().size());
|
||||
@@ -4284,12 +4310,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithMap) {
|
||||
// Base for dimension key {}
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(21, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(21, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(screenOffGroup.group_id(),
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for dimension, state key {{}, ON GROUP}
|
||||
EXPECT_EQ(0, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
ASSERT_EQ(1, it->first.getStateValuesKey().getValues().size());
|
||||
@@ -4447,12 +4473,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) {
|
||||
// Base for dimension key {uid 1}.
|
||||
auto it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
auto itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(3, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(3, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(-1 /* StateTracker::kStateUnknown */,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for dimension, state key {{uid 1}, kStateUnknown}
|
||||
ASSERT_EQ(1, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
EXPECT_EQ(1, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
@@ -4463,12 +4489,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) {
|
||||
// Base for dimension key {uid 2}
|
||||
it++;
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(7, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(7, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(-1 /* StateTracker::kStateUnknown */,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for dimension, state key {{uid 2}, kStateUnknown}
|
||||
ASSERT_EQ(1, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
EXPECT_EQ(2, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
@@ -4485,12 +4511,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) {
|
||||
// Base for dimension key {uid 1}.
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(6, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(6, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(android::app::PROCESS_STATE_IMPORTANT_FOREGROUND,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for key {uid 1, kStateUnknown}.
|
||||
ASSERT_EQ(1, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
EXPECT_EQ(1, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
@@ -4503,12 +4529,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) {
|
||||
// Base for dimension key {uid 2}
|
||||
it++;
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(7, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(7, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(-1 /* StateTracker::kStateUnknown */,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for key {uid 2, kStateUnknown}
|
||||
ASSERT_EQ(1, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
EXPECT_EQ(2, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
@@ -4524,12 +4550,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) {
|
||||
// Base for dimension key {uid 1}.
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(6, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(6, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(android::app::PROCESS_STATE_IMPORTANT_FOREGROUND,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for key {uid 1, kStateUnknown}.
|
||||
ASSERT_EQ(1, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
EXPECT_EQ(1, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
@@ -4541,12 +4567,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) {
|
||||
// Base for dimension key {uid 2}
|
||||
it++;
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(9, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(9, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(android::app::PROCESS_STATE_IMPORTANT_BACKGROUND,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for key {uid 2, kStateUnknown}
|
||||
ASSERT_EQ(1, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
EXPECT_EQ(2, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
@@ -4570,12 +4596,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) {
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
EXPECT_EQ(2, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(15, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(15, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(android::app::PROCESS_STATE_IMPORTANT_BACKGROUND,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for key {uid 2, BACKGROUND}.
|
||||
ASSERT_EQ(1, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
EXPECT_EQ(2, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
@@ -4587,12 +4613,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) {
|
||||
// Base for dimension key {uid 1}
|
||||
it++;
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(10, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(10, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(android::app::PROCESS_STATE_IMPORTANT_FOREGROUND,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for key {uid 1, kStateUnknown}
|
||||
ASSERT_EQ(1, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
EXPECT_EQ(1, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
@@ -4630,12 +4656,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) {
|
||||
// Base for dimension key {uid 2}.
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(15, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(15, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(android::app::PROCESS_STATE_IMPORTANT_BACKGROUND,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for key {uid 2, BACKGROUND}.
|
||||
ASSERT_EQ(1, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
EXPECT_EQ(2, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
@@ -4646,12 +4672,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) {
|
||||
// Base for dimension key {uid 1}
|
||||
it++;
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(13, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(13, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(android::app::PROCESS_STATE_IMPORTANT_BACKGROUND,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for key {uid 1, kStateUnknown}
|
||||
ASSERT_EQ(1, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
EXPECT_EQ(1, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
@@ -4687,12 +4713,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) {
|
||||
// Base for dimension key {uid 2}
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(15, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(15, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(android::app::PROCESS_STATE_IMPORTANT_BACKGROUND,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for key {uid 2, BACKGROUND}
|
||||
ASSERT_EQ(1, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
EXPECT_EQ(2, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
@@ -4704,12 +4730,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithPrimaryField_WithDimensions) {
|
||||
// Base for dimension key {uid 1}
|
||||
it++;
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(it->first.getDimensionKeyInWhat());
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(17, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(17, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(android::app::PROCESS_STATE_IMPORTANT_FOREGROUND,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for key {uid 1, kStateUnknown}
|
||||
ASSERT_EQ(1, it->first.getDimensionKeyInWhat().getValues().size());
|
||||
EXPECT_EQ(1, it->first.getDimensionKeyInWhat().getValues()[0].mValue.int_value);
|
||||
@@ -4857,14 +4883,14 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithCondition) {
|
||||
valueProducer->onConditionChanged(true, bucketStartTimeNs + 20 * NS_PER_SEC);
|
||||
// Base for dimension key {}
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentBaseInfo.size());
|
||||
std::unordered_map<HashableDimensionKey, std::vector<ValueMetricProducer::BaseInfo>>::iterator
|
||||
std::unordered_map<HashableDimensionKey, ValueMetricProducer::DimensionsInWhatInfo>::iterator
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(DEFAULT_DIMENSION_KEY);
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(3, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(3, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(BatterySaverModeStateChanged::ON,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for key {{}, -1}
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
std::unordered_map<MetricDimensionKey, ValueMetricProducer::CurrentValueBucket>::iterator it =
|
||||
@@ -4882,12 +4908,12 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithCondition) {
|
||||
// Base for dimension key {}
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentBaseInfo.size());
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(DEFAULT_DIMENSION_KEY);
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(5, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(5, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(BatterySaverModeStateChanged::OFF,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for key {{}, ON}
|
||||
ASSERT_EQ(2UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
@@ -4909,23 +4935,23 @@ TEST(ValueMetricProducerTest, TestSlicedStateWithCondition) {
|
||||
// Base for dimension key {}
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentBaseInfo.size());
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(DEFAULT_DIMENSION_KEY);
|
||||
EXPECT_TRUE(itBase->second[0].hasBase);
|
||||
EXPECT_EQ(11, itBase->second[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_TRUE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_EQ(11, itBase->second.baseInfos[0].base.long_value);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(BatterySaverModeStateChanged::OFF,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
|
||||
// Bucket 2 status after condition change to false.
|
||||
valueProducer->onConditionChanged(false, bucket2StartTimeNs + 10 * NS_PER_SEC);
|
||||
// Base for dimension key {}
|
||||
ASSERT_EQ(1UL, valueProducer->mCurrentBaseInfo.size());
|
||||
itBase = valueProducer->mCurrentBaseInfo.find(DEFAULT_DIMENSION_KEY);
|
||||
EXPECT_FALSE(itBase->second[0].hasBase);
|
||||
EXPECT_TRUE(itBase->second[0].hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second[0].currentState.getValues().size());
|
||||
EXPECT_FALSE(itBase->second.baseInfos[0].hasBase);
|
||||
EXPECT_TRUE(itBase->second.hasCurrentState);
|
||||
ASSERT_EQ(1, itBase->second.currentState.getValues().size());
|
||||
EXPECT_EQ(BatterySaverModeStateChanged::OFF,
|
||||
itBase->second[0].currentState.getValues()[0].mValue.int_value);
|
||||
itBase->second.currentState.getValues()[0].mValue.int_value);
|
||||
// Value for key {{}, OFF}
|
||||
ASSERT_EQ(3UL, valueProducer->mCurrentSlicedBucket.size());
|
||||
it = valueProducer->mCurrentSlicedBucket.begin();
|
||||
|
||||
Reference in New Issue
Block a user