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

Side by Side Diff: tools/goopdump/process_monitor_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 | « tools/goopdump/process_monitor.cc ('k') | tools/goopdump/resource.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 2008-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 #include <vector>
17
18 #include "omaha/common/system.h"
19 #include "omaha/testing/unit_test.h"
20 #include "omaha/tools/goopdump/process_monitor.h"
21
22 namespace omaha {
23
24 // TODO(omaha): use gMock.
25 class MockProcessMonitorCallback : public ProcessMonitorCallbackInterface {
26 public:
27 MockProcessMonitorCallback()
28 : num_times_onprocessadded_called_(0),
29 num_times_onprocessremoved_called_(0) {}
30 virtual ~MockProcessMonitorCallback() {}
31
32 virtual void OnProcessAdded(DWORD process_id,
33 const CString& process_pattern) {
34 ++num_times_onprocessadded_called_;
35 process_ids_added_.push_back(process_id);
36 process_patterns_added_.push_back(process_pattern);
37 }
38
39 virtual void OnProcessRemoved(DWORD process_id) {
40 ++num_times_onprocessremoved_called_;
41 process_ids_removed_.push_back(process_id);
42 }
43
44 int num_times_onprocessadded_called() const {
45 return num_times_onprocessadded_called_;
46 }
47
48 int num_times_onprocessremoved_called() const {
49 return num_times_onprocessremoved_called_;
50 }
51
52 private:
53 int num_times_onprocessadded_called_;
54 int num_times_onprocessremoved_called_;
55
56 std::vector<CString> process_patterns_added_;
57 std::vector<DWORD> process_ids_added_;
58 std::vector<DWORD> process_ids_removed_;
59
60 DISALLOW_EVIL_CONSTRUCTORS(MockProcessMonitorCallback);
61 };
62
63 TEST(GoopdumpProcessMonitorTest, TestStartStopNoop) {
64 ProcessMonitor process_monitor;
65 EXPECT_SUCCEEDED(process_monitor.Start(NULL, _T("some_noop_process.exe")));
66 EXPECT_SUCCEEDED(process_monitor.Stop());
67 }
68
69 TEST(GoopdumpProcessMonitorTest, TestStartStopNoopPatterns) {
70 ProcessMonitor process_monitor;
71 std::vector<CString> patterns;
72 patterns.push_back(CString(_T("some_noop_process")));
73 patterns.push_back(CString(_T("this_process")));
74 patterns.push_back(CString(_T("that_process")));
75 EXPECT_SUCCEEDED(process_monitor.StartWithPatterns(NULL, patterns));
76 EXPECT_SUCCEEDED(process_monitor.Stop());
77 }
78
79 TEST(GoopdumpProcessMonitorTest, TestStartStopNoopWithCallback) {
80 ProcessMonitor process_monitor;
81 MockProcessMonitorCallback callback;
82 EXPECT_SUCCEEDED(process_monitor.Start(&callback,
83 _T("some_noop_process.exe")));
84 EXPECT_SUCCEEDED(process_monitor.Stop());
85
86 EXPECT_EQ(0, callback.num_times_onprocessadded_called());
87 EXPECT_EQ(0, callback.num_times_onprocessremoved_called());
88 }
89
90 TEST(GoopdumpProcessMonitorTest, TestStartStopNotepadWithCallback) {
91 ProcessMonitor process_monitor;
92 MockProcessMonitorCallback callback;
93 EXPECT_SUCCEEDED(process_monitor.Start(&callback,
94 _T("notepad.exe")));
95 TCHAR notepad_path[MAX_PATH] = {0};
96 TCHAR system_directory[MAX_PATH] = {0};
97 ::GetSystemDirectory(system_directory, arraysize(system_directory));
98 _stprintf(notepad_path,
99 arraysize(notepad_path),
100 _T("%s\\notepad.exe"),
101 system_directory);
102
103 PROCESS_INFORMATION pi = {0};
104 System::StartProcess(NULL, notepad_path, &pi);
105 ::CloseHandle(pi.hThread);
106 scoped_process process_handle(pi.hProcess);
107
108 // Have to sleep since we're polling for process start/exit.
109 // In order to get notified of process start we have to write a driver.
110 ::Sleep(500);
111
112 ::TerminateProcess(get(process_handle), 0);
113
114 ::Sleep(500);
115
116 EXPECT_SUCCEEDED(process_monitor.Stop());
117
118 EXPECT_EQ(1, callback.num_times_onprocessadded_called());
119 EXPECT_EQ(1, callback.num_times_onprocessremoved_called());
120 }
121
122 } // namespace omaha
123
OLDNEW
« no previous file with comments | « tools/goopdump/process_monitor.cc ('k') | tools/goopdump/resource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698