-
Notifications
You must be signed in to change notification settings - Fork 1
/
metrics_constants.h
147 lines (123 loc) · 5.08 KB
/
metrics_constants.h
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
//
// Copyright (C) 2017 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#ifndef UPDATE_ENGINE_METRICS_CONSTANTS_H_
#define UPDATE_ENGINE_METRICS_CONSTANTS_H_
namespace chromeos_update_engine {
namespace metrics {
// The possible outcomes when checking for updates.
//
// This is used in the UpdateEngine.Check.Result histogram.
enum class CheckResult {
kUpdateAvailable, // Response indicates an update is available.
kNoUpdateAvailable, // Response indicates no updates are available.
kDownloadError, // Error downloading response from Omaha.
kParsingError, // Error parsing response.
kRebootPending, // No update check was performed a reboot is pending.
kNumConstants,
kUnset = -1
};
// Possible ways a device can react to a new update being available.
//
// This is used in the UpdateEngine.Check.Reaction histogram.
enum class CheckReaction {
kUpdating, // Device proceeds to download and apply update.
kIgnored, // Device-policy dictates ignoring the update.
kDeferring, // Device-policy dictates waiting.
kBackingOff, // Previous errors dictates waiting.
kNumConstants,
kUnset = -1
};
// The possible ways that downloading from a HTTP or HTTPS server can fail.
//
// This is used in the UpdateEngine.Check.DownloadErrorCode and
// UpdateEngine.Attempt.DownloadErrorCode histograms.
enum class DownloadErrorCode {
// Errors that can happen in the field. See http://crbug.com/355745
// for how we plan to add more detail in the future.
kDownloadError = 0, // Error downloading data from server.
// IMPORTANT: When adding a new error code, add at the bottom of the
// above block and before the kInputMalformed field. This
// is to ensure that error codes are not reordered.
// This error is reported when libcurl returns CURLE_COULDNT_RESOLVE_HOST and
// calling res_init() can recover.
kUnresolvedHostRecovered = 97,
// This error is reported when libcurl returns CURLE_COULDNT_RESOLVE_HOST.
kUnresolvedHostError = 98,
// This error is reported when libcurl has an internal error that
// update_engine can't recover from.
kInternalLibCurlError = 99,
// This error code is used to convey that malformed input was given
// to the utils::GetDownloadErrorCode() function. This should never
// happen but if it does it's because of an internal update_engine
// error and we're interested in knowing this.
kInputMalformed = 100,
// Bucket for capturing HTTP status codes not in the 200-599
// range. This should never happen in practice but if it does we
// want to know.
kHttpStatusOther = 101,
// Above 200 and below 600, the value is the HTTP status code.
kHttpStatus200 = 200,
kNumConstants = 600,
kUnset = -1
};
// Possible ways an update attempt can end.
//
// This is used in the UpdateEngine.Attempt.Result histogram.
enum class AttemptResult {
kUpdateSucceeded, // The update succeeded.
kInternalError, // An internal error occurred.
kPayloadDownloadError, // Failure while downloading payload.
kMetadataMalformed, // Metadata was malformed.
kOperationMalformed, // An operation was malformed.
kOperationExecutionError, // An operation failed to execute.
kMetadataVerificationFailed, // Metadata verification failed.
kPayloadVerificationFailed, // Payload verification failed.
kVerificationFailed, // Root or Kernel partition verification failed.
kPostInstallFailed, // The postinstall step failed.
kAbnormalTermination, // The attempt ended abnormally.
kUpdateCanceled, // Update canceled by the user.
kUpdateSucceededNotActive, // Update succeeded but the new slot is not
// active.
kNumConstants,
kUnset = -1
};
// Possible ways the device is connected to the Internet.
//
// This is used in the UpdateEngine.Attempt.ConnectionType histogram.
enum class ConnectionType {
kUnknown = 0, // Unknown.
kEthernet = 1, // Ethernet.
kWifi = 2, // Wireless.
kWimax = 3, // WiMax.
kBluetooth = 4, // Bluetooth.
kCellular = 5, // Cellular.
kTetheredEthernet = 6, // Tethered (Ethernet).
kTetheredWifi = 7, // Tethered (Wifi).
kDisconnected = 8, // Disconnected.
kNumConstants,
kUnset = -1
};
// Possible ways a rollback can end.
//
// This is used in the UpdateEngine.Rollback histogram.
enum class RollbackResult {
kFailed,
kSuccess,
kNumConstants
};
} // namespace metrics
} // namespace chromeos_update_engine
#endif // UPDATE_ENGINE_METRICS_CONSTANTS_H_