Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0aff9032 authored by Yao Chen's avatar Yao Chen
Browse files

Fix a bug in DurationMetric's dimensions from condition and make unit tests...

Fix a bug in DurationMetric's dimensions from condition and make unit tests expect the right answer.

Bug: 111119889
Test: statsd_test
Change-Id: Ie8379031c93641c011bf27694b47ae21fe8f8d7a
parent 54d7032b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -783,7 +783,7 @@ void DurationMetricProducer::onMatchedLogEventLocked(const size_t matcherIndex,
        if (whatIt != mCurrentSlicedDurationTrackerMap.end()) {
            for (const auto& condIt : whatIt->second) {
                const bool cond = dimensionKeysInCondition.find(condIt.first) !=
                        dimensionKeysInCondition.end();
                        dimensionKeysInCondition.end() && condition;
                handleStartEvent(MetricDimensionKey(dimensionInWhat, condIt.first),
                    conditionKey, cond, event);
                dimensionKeysInCondition.erase(condIt.first);
+32 −4
Original line number Diff line number Diff line
@@ -81,6 +81,34 @@ StatsdConfig CreateDurationMetricConfig_NoLink_AND_CombinationCondition(

}  // namespace

/*
 The following test has the following input.

{ 10000000002 10000000002 (8)9999[I], [S], job0[S], 1[I],  }
{ 10000000010 10000000010 (7)111[I], App1[S], 222[I], GMSCoreModule1[S], 222[I], GMSCoreModule2[S], ReadEmail[S], 1[I],  }
{ 10000000011 10000000011 (29)1[I],  }
{ 10000000040 10000000040 (29)2[I],  }
{ 10000000050 10000000050 (7)111[I], App1[S], 222[I], GMSCoreModule1[S], 222[I], GMSCoreModule2[S], ReadEmail[S], 0[I],  }
{ 10000000101 10000000101 (8)9999[I], [S], job0[S], 0[I],  }
{ 10000000102 10000000102 (29)1[I],  }
{ 10000000200 10000000200 (7)111[I], App1[S], 222[I], GMSCoreModule1[S], 222[I], GMSCoreModule2[S], ReadEmail[S], 1[I],  }
{ 10000000201 10000000201 (8)9999[I], [S], job2[S], 1[I],  }
{ 10000000400 10000000400 (7)111[I], App1[S], 222[I], GMSCoreModule1[S], 222[I], GMSCoreModule2[S], ReadDoc[S], 1[I],  }
{ 10000000401 10000000401 (7)333[I], App2[S], 222[I], GMSCoreModule1[S], 555[I], GMSCoreModule2[S], ReadEmail[S], 1[I],  }
{ 10000000450 10000000450 (29)2[I],  }
{ 10000000500 10000000500 (8)9999[I], [S], job2[S], 0[I],  }
{ 10000000600 10000000600 (8)8888[I], [S], job2[S], 1[I],  }
{ 10000000650 10000000650 (29)1[I],  }
{ 309999999999 309999999999 (7)111[I], App1[S], 222[I], GMSCoreModule1[S], 222[I], GMSCoreModule2[S], ReadDoc[S], 0[I],  }
{ 310000000100 310000000100 (29)2[I],  }
{ 310000000300 310000000300 (7)111[I], App1[S], 222[I], GMSCoreModule1[S], 222[I], GMSCoreModule2[S], ReadEmail[S], 0[I],  }
{ 310000000600 310000000600 (8)8888[I], [S], job1[S], 1[I],  }
{ 310000000640 310000000640 (29)1[I],  }
{ 310000000650 310000000650 (29)2[I],  }
{ 310000000700 310000000700 (7)333[I], App2[S], 222[I], GMSCoreModule1[S], 555[I], GMSCoreModule2[S], ReadEmail[S], 0[I],  }
{ 310000000850 310000000850 (8)8888[I], [S], job2[S], 0[I],  }
{ 310000000900 310000000900 (8)8888[I], [S], job1[S], 0[I],  }
*/
TEST(DimensionInConditionE2eTest, TestDurationMetric_NoLink_AND_CombinationCondition) {
    for (const bool hashStringInReport : { true, false }) {
        for (bool isDimensionInConditionSubSetOfConditionTrackerDimension : { true, false }) {
@@ -250,7 +278,7 @@ TEST(DimensionInConditionE2eTest, TestDurationMetric_NoLink_AND_CombinationCondi
                    EXPECT_EQ(data.bucket_info(0).start_bucket_elapsed_nanos(), bucketStartTimeNs);
                    EXPECT_EQ(data.bucket_info(0).end_bucket_elapsed_nanos(),
                              bucketStartTimeNs + bucketSizeNs);
                    EXPECT_EQ(data.bucket_info(0).duration_nanos(), 450 - 201 + bucketSizeNs - 600);
                    EXPECT_EQ(data.bucket_info(0).duration_nanos(), 450 - 201 + bucketSizeNs - 650);
                    EXPECT_EQ(data.bucket_info(1).duration_nanos(), 100);
                    EXPECT_EQ(data.bucket_info(1).start_bucket_elapsed_nanos(),
                              bucketStartTimeNs + bucketSizeNs);
@@ -269,7 +297,7 @@ TEST(DimensionInConditionE2eTest, TestDurationMetric_NoLink_AND_CombinationCondi
                            data.dimensions_in_condition(),
                            android::util::SYNC_STATE_CHANGED, 333, "App2");
                    EXPECT_EQ(data.bucket_info_size(), 2);
                    EXPECT_EQ(data.bucket_info(0).duration_nanos(), 450 - 401 + bucketSizeNs - 600);
                    EXPECT_EQ(data.bucket_info(0).duration_nanos(), 450 - 401 + bucketSizeNs - 650);
                    EXPECT_EQ(data.bucket_info(0).start_bucket_elapsed_nanos(), bucketStartTimeNs);
                    EXPECT_EQ(data.bucket_info(0).end_bucket_elapsed_nanos(),
                              bucketStartTimeNs + bucketSizeNs);
@@ -331,7 +359,7 @@ TEST(DimensionInConditionE2eTest, TestDurationMetric_NoLink_AND_CombinationCondi
                    EXPECT_EQ(data.bucket_info(0).end_bucket_elapsed_nanos(),
                              bucketStartTimeNs + bucketSizeNs);
                    EXPECT_EQ(data.bucket_info(0).duration_nanos(), 450 - 201);
                    EXPECT_EQ(data.bucket_info(1).duration_nanos(), bucketSizeNs - 600 + 100);
                    EXPECT_EQ(data.bucket_info(1).duration_nanos(), bucketSizeNs - 650 + 100);
                    EXPECT_EQ(data.bucket_info(1).start_bucket_elapsed_nanos(),
                              bucketStartTimeNs + bucketSizeNs);
                    EXPECT_EQ(data.bucket_info(1).end_bucket_elapsed_nanos(),
@@ -353,7 +381,7 @@ TEST(DimensionInConditionE2eTest, TestDurationMetric_NoLink_AND_CombinationCondi
                    EXPECT_EQ(data.bucket_info(0).start_bucket_elapsed_nanos(), bucketStartTimeNs);
                    EXPECT_EQ(data.bucket_info(0).end_bucket_elapsed_nanos(),
                              bucketStartTimeNs + bucketSizeNs);
                    EXPECT_EQ(data.bucket_info(1).duration_nanos(), bucketSizeNs - 600 + 110);
                    EXPECT_EQ(data.bucket_info(1).duration_nanos(), bucketSizeNs - 650 + 110);
                    EXPECT_EQ(data.bucket_info(1).start_bucket_elapsed_nanos(),
                              bucketStartTimeNs + bucketSizeNs);
                    EXPECT_EQ(data.bucket_info(1).end_bucket_elapsed_nanos(),