File: user_activity_ukm_logger_helpers_unittest.cc

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (91 lines) | stat: -rw-r--r-- 3,689 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/ash/power/ml/user_activity_ukm_logger_helpers.h"

#include <array>
#include <memory>

#include "chrome/browser/ash/power/ml/user_activity_event.pb.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace ash {
namespace power {
namespace ml {

TEST(UserActivityUkmLoggerBucketizerTest, BucketEveryFivePercents) {
  constexpr std::array<int, 4> original_values = {{0, 14, 15, 100}};
  constexpr std::array<int, 4> results = {{0, 10, 15, 100}};
  constexpr std::array<Bucket, 1> buckets = {{{100, 5}}};

  for (size_t i = 0; i < original_values.size(); ++i) {
    EXPECT_EQ(results[i], Bucketize(original_values[i], buckets));
  }
}

TEST(UserActivityUkmLoggerBucketizerTest, Bucketize) {
  constexpr std::array<int, 14> original_values = {
      {0, 18, 59, 60, 62, 69, 72, 299, 300, 306, 316, 599, 600, 602}};
  constexpr std::array<int, 14> results = {
      {0, 18, 59, 60, 60, 60, 70, 290, 300, 300, 300, 580, 600, 600}};
  constexpr std::array<Bucket, 3> buckets = {{{60, 1}, {300, 10}, {600, 20}}};
  for (size_t i = 0; i < original_values.size(); ++i) {
    EXPECT_EQ(results[i], Bucketize(original_values[i], buckets));
  }
}

TEST(UserActivityUkmLoggerBucketizerTest, BucketizeUserActivityEventData) {
  UserActivityEvent user_activity_event;
  UserActivityEvent::Event& event = *user_activity_event.mutable_event();
  event.set_log_duration_sec(395);
  event.set_reason(UserActivityEvent::Event::USER_ACTIVITY);
  event.set_type(UserActivityEvent::Event::REACTIVATE);
  event.set_screen_dim_occurred(true);
  event.set_screen_off_occurred(true);
  event.set_screen_lock_occurred(true);

  // In the order of metrics names in ukm.
  UserActivityEvent::Features& features =
      *user_activity_event.mutable_features();
  features.set_battery_percent(96.0);
  features.set_device_management(UserActivityEvent::Features::UNMANAGED);
  features.set_device_mode(UserActivityEvent::Features::CLAMSHELL);
  features.set_device_type(UserActivityEvent::Features::CHROMEBOOK);
  features.set_last_activity_day(UserActivityEvent::Features::MON);
  features.set_last_activity_time_sec(7300);
  features.set_last_user_activity_time_sec(3800);
  features.set_key_events_in_last_hour(20000);
  features.set_recent_time_active_sec(10);
  features.set_previous_negative_actions_count(2);
  features.set_previous_positive_actions_count(1);
  features.set_video_playing_time_sec(800);
  features.set_on_to_dim_sec(100);
  features.set_dim_to_screen_off_sec(200);
  features.set_screen_dimmed_initially(false);
  features.set_screen_locked_initially(false);
  features.set_screen_off_initially(false);
  features.set_time_since_last_mouse_sec(100);
  features.set_time_since_last_touch_sec(311);
  features.set_time_since_video_ended_sec(400);
  features.set_mouse_events_in_last_hour(89);
  features.set_touch_events_in_last_hour(1890);

  std::map<std::string, int> buckets =
      UserActivityUkmLoggerBucketizer::BucketizeUserActivityEventData(
          user_activity_event);
  EXPECT_EQ(9u, buckets.size());
  EXPECT_EQ(95, buckets["BatteryPercent"]);
  EXPECT_EQ(395, buckets["EventLogDuration"]);
  EXPECT_EQ(10000, buckets["KeyEventsInLastHour"]);
  EXPECT_EQ(2, buckets["LastActivityTime"]);
  EXPECT_EQ(1, buckets["LastUserActivityTime"]);
  EXPECT_EQ(89, buckets["MouseEventsInLastHour"]);
  EXPECT_EQ(600, buckets["RecentVideoPlayingTime"]);
  EXPECT_EQ(360, buckets["TimeSinceLastVideoEnded"]);
  EXPECT_EQ(1000, buckets["TouchEventsInLastHour"]);
}

}  // namespace ml
}  // namespace power
}  // namespace ash