Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(684)

Side by Side Diff: common/event_logger_unittest.cc

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « common/event_logger.cc ('k') | common/experiment_labels.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2007-2009 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 // ========================================================================
15
16
17 #include <stdio.h>
18 #include <stdarg.h>
19
20 #include "base/basictypes.h"
21 #include "omaha/base/constants.h"
22 #include "omaha/base/error.h"
23 #include "omaha/base/reg_key.h"
24 #include "omaha/base/vistautil.h"
25 #include "omaha/common/event_logger.h"
26 #include "omaha/testing/unit_test.h"
27
28 namespace omaha {
29
30 class EventLoggerTest : public testing::Test {
31 protected:
32 virtual void SetUp() {
33 EXPECT_SUCCEEDED(RegKey::DeleteKey(kRegistryHiveOverrideRoot, true));
34 OverrideRegistryHives(kRegistryHiveOverrideRoot);
35
36 // Enable logging of events.
37 DWORD log_events = LOG_EVENT_LEVEL_ALL;
38 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV,
39 kRegValueEventLogLevel, log_events));
40 }
41
42 virtual void TearDown() {
43 RestoreRegistryHives();
44 EXPECT_SUCCEEDED(RegKey::DeleteKey(kRegistryHiveOverrideRoot, true));
45 }
46 };
47
48 TEST_F(EventLoggerTest, AddEventSource) {
49 if (!vista_util::IsUserAdmin()) {
50 std::wcout << _T("\tTest did not run because the user is not an admin.")
51 << std::endl;
52 return;
53 }
54
55 // Registers the "Google Update" event source for the "Application" log
56 EXPECT_SUCCEEDED(EventLogger::AddEventSource(EventLogger::kSourceName,
57 _T("path")));
58
59 const TCHAR key_name[] = _T("HKLM\\SYSTEM\\CurrentControlSet\\Services\\")
60 _T("EventLog\\Application\\")
61 _T(OMAHA_APP_NAME_ANSI);
62 EXPECT_TRUE(RegKey::HasKey(key_name));
63
64 CString s;
65 EXPECT_SUCCEEDED(RegKey::GetValue(key_name, _T("EventMessageFile"), &s));
66 EXPECT_STREQ(s.GetString(), _T("path"));
67
68 DWORD types(0);
69 EXPECT_SUCCEEDED(RegKey::GetValue(key_name, _T("TypesSupported"), &types));
70 EXPECT_EQ(types,
71 EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE);
72
73 // Removes the "OmahaUnitTest" event source.
74 EXPECT_SUCCEEDED(EventLogger::RemoveEventSource(EventLogger::kSourceName));
75 EXPECT_FALSE(RegKey::HasKey(key_name));
76 EXPECT_TRUE(RegKey::HasKey(
77 _T("HKLM\\SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application")));
78 }
79
80 TEST_F(EventLoggerTest, ReportEvent) {
81 if (!vista_util::IsUserAdmin()) {
82 std::wcout << _T("\tTest did not run because the user is not an admin.")
83 << std::endl;
84 return;
85 }
86
87 EXPECT_SUCCEEDED(EventLogger::AddEventSource(EventLogger::kSourceName,
88 _T("path")));
89
90 const TCHAR* strings[] = {_T("foo"), _T("bar")};
91 byte buf[] = {0xaa, 0x55, 0};
92
93 const int kEventId = 100;
94 EXPECT_SUCCEEDED(EventLogger::ReportEvent(EventLogger::kSourceName,
95 EVENTLOG_WARNING_TYPE,
96 0,
97 kEventId,
98 arraysize(strings),
99 strings,
100 arraysize(buf),
101 buf));
102 // Read the record at the top to do a brief sanity check.
103 const size_t kBufferSize = 1024 * 64;
104 byte buffer[kBufferSize] = {0};
105 EVENTLOGRECORD* rec = reinterpret_cast<EVENTLOGRECORD*>(buffer);
106 rec->Length = kBufferSize;
107 EXPECT_SUCCEEDED(EventLogger::ReadLastEvent(EventLogger::kSourceName, rec));
108 EXPECT_EQ(rec->EventID, kEventId);
109 EXPECT_EQ(rec->EventType, EVENTLOG_WARNING_TYPE);
110 EXPECT_EQ(rec->EventCategory, 0);
111 EXPECT_EQ(rec->NumStrings, 2);
112 const TCHAR* src = reinterpret_cast<const TCHAR*>(
113 reinterpret_cast<byte*>(rec) + sizeof EVENTLOGRECORD);
114 EXPECT_STREQ(src, EventLogger::kSourceName);
115 const TCHAR* s2 = (LPTSTR) ((LPBYTE) rec + rec->StringOffset);
116 EXPECT_SUCCEEDED(EventLogger::RemoveEventSource(EventLogger::kSourceName));
117 }
118
119 TEST_F(EventLoggerTest, LogEvent_LoggingDisabled) {
120 // Disable logging.
121 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV,
122 kRegValueEventLogLevel,
123 static_cast<DWORD>(0)));
124
125 const size_t kBufferSize = 1024 * 64;
126 byte buffer[kBufferSize] = {0};
127 EVENTLOGRECORD* rec = reinterpret_cast<EVENTLOGRECORD*>(buffer);
128 rec->Length = kBufferSize;
129 EXPECT_SUCCEEDED(EventLogger::ReadLastEvent(EventLogger::kSourceName, rec));
130 int record_number = rec->RecordNumber;
131
132 // Logging is disabled, expect no event is logged.
133 LogEvent(EVENTLOG_INFORMATION_TYPE, 10);
134 rec->Length = kBufferSize;
135 EXPECT_SUCCEEDED(EventLogger::ReadLastEvent(EventLogger::kSourceName, rec));
136 EXPECT_EQ(record_number, rec->RecordNumber);
137 }
138
139 TEST_F(EventLoggerTest, LogEvent) {
140 const size_t kBufferSize = 1024 * 64;
141 byte buffer[kBufferSize] = {0};
142 EVENTLOGRECORD* rec = reinterpret_cast<EVENTLOGRECORD*>(buffer);
143
144 LogEvent(EVENTLOG_INFORMATION_TYPE, 10);
145 rec->Length = kBufferSize;
146 EXPECT_SUCCEEDED(EventLogger::ReadLastEvent(EventLogger::kSourceName, rec));
147 EXPECT_EQ(10, rec->EventID);
148
149 LogEvent(EVENTLOG_INFORMATION_TYPE, 11, _T("s1"));
150 rec->Length = kBufferSize;
151 EXPECT_SUCCEEDED(EventLogger::ReadLastEvent(EventLogger::kSourceName, rec));
152 EXPECT_EQ(11, rec->EventID);
153
154 LogEvent(EVENTLOG_INFORMATION_TYPE, 12, _T("s1"), _T("s2"));
155 rec->Length = kBufferSize;
156 EXPECT_SUCCEEDED(EventLogger::ReadLastEvent(EventLogger::kSourceName, rec));
157 EXPECT_EQ(12, rec->EventID);
158 }
159
160 TEST_F(EventLoggerTest, LogEventContext) {
161 const size_t kBufferSize = 1024 * 64;
162 byte buffer[kBufferSize] = {0};
163 EVENTLOGRECORD* rec = reinterpret_cast<EVENTLOGRECORD*>(buffer);
164
165 LogEventContext(EVENTLOG_INFORMATION_TYPE, 20, _T("foo"));
166 rec->Length = kBufferSize;
167 EXPECT_SUCCEEDED(EventLogger::ReadLastEvent(EventLogger::kSourceName, rec));
168 EXPECT_EQ(20, rec->EventID);
169
170 LogEventContext(EVENTLOG_INFORMATION_TYPE, 21, _T("s1"), _T("bar"));
171 rec->Length = kBufferSize;
172 EXPECT_SUCCEEDED(EventLogger::ReadLastEvent(EventLogger::kSourceName, rec));
173 EXPECT_EQ(21, rec->EventID);
174
175 LogEventContext(EVENTLOG_INFORMATION_TYPE, 22,
176 _T("s1"), _T("s2"), _T("foobar"));
177 rec->Length = kBufferSize;
178 EXPECT_SUCCEEDED(EventLogger::ReadLastEvent(EventLogger::kSourceName, rec));
179 EXPECT_EQ(22, rec->EventID);
180 }
181
182 } // namespace omaha
OLDNEW
« no previous file with comments | « common/event_logger.cc ('k') | common/experiment_labels.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698