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

Unified Diff: util/win/process_info_test.cc

Issue 1052813002: win: make CrashpadInfo retrievable (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: more fixes Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « util/win/process_info.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: util/win/process_info_test.cc
diff --git a/util/win/process_info_test.cc b/util/win/process_info_test.cc
index ecae69f831f755543448ad4da3f016de3b2d100e..792b3f3e0238aa1378e24f956adf6024bbf0b9ac 100644
--- a/util/win/process_info_test.cc
+++ b/util/win/process_info_test.cc
@@ -21,6 +21,7 @@
#include "build/build_config.h"
#include "gtest/gtest.h"
#include "test/paths.h"
+#include "util/file/file_io.h"
#include "util/misc/uuid.h"
#include "util/win/scoped_handle.h"
@@ -30,6 +31,18 @@ namespace {
const wchar_t kNtdllName[] = L"\\ntdll.dll";
+time_t GetTimestampForModule(HMODULE module) {
+ wchar_t filename[MAX_PATH];
+ if (!GetModuleFileName(module, filename, arraysize(filename)))
+ return 0;
+ struct _stat stat_buf;
+ int rv = _wstat(filename, &stat_buf);
+ EXPECT_EQ(0, rv);
+ if (rv != 0)
+ return 0;
+ return stat_buf.st_mtime;
+}
+
TEST(ProcessInfo, Self) {
ProcessInfo process_info;
ASSERT_TRUE(process_info.Initialize(GetCurrentProcess()));
@@ -49,16 +62,31 @@ TEST(ProcessInfo, Self) {
EXPECT_TRUE(process_info.CommandLine(&command_line));
EXPECT_EQ(std::wstring(GetCommandLine()), command_line);
- std::vector<std::wstring> modules;
+ std::vector<ProcessInfo::Module> modules;
EXPECT_TRUE(process_info.Modules(&modules));
ASSERT_GE(modules.size(), 2u);
const wchar_t kSelfName[] = L"\\crashpad_util_test.exe";
- ASSERT_GE(modules[0].size(), wcslen(kSelfName));
+ ASSERT_GE(modules[0].name.size(), wcslen(kSelfName));
EXPECT_EQ(kSelfName,
- modules[0].substr(modules[0].size() - wcslen(kSelfName)));
- ASSERT_GE(modules[1].size(), wcslen(kNtdllName));
- EXPECT_EQ(kNtdllName,
- modules[1].substr(modules[1].size() - wcslen(kNtdllName)));
+ modules[0].name.substr(modules[0].name.size() - wcslen(kSelfName)));
+ ASSERT_GE(modules[1].name.size(), wcslen(kNtdllName));
+ EXPECT_EQ(
+ kNtdllName,
+ modules[1].name.substr(modules[1].name.size() - wcslen(kNtdllName)));
+
+ EXPECT_EQ(modules[0].dll_base,
+ reinterpret_cast<uintptr_t>(GetModuleHandle(nullptr)));
+ EXPECT_EQ(modules[1].dll_base,
+ reinterpret_cast<uintptr_t>(GetModuleHandle(L"ntdll.dll")));
+
+ EXPECT_GT(modules[0].size, 0);
+ EXPECT_GT(modules[1].size, 0);
+
+ EXPECT_EQ(modules[0].timestamp,
+ GetTimestampForModule(GetModuleHandle(nullptr)));
+ // System modules are forced to particular stamps and the file header values
+ // don't match the on-disk times. Just make sure we got some data here.
+ EXPECT_GT(modules[1].timestamp, 0);
}
void TestOtherProcess(const std::wstring& child_name_suffix) {
@@ -110,24 +138,25 @@ void TestOtherProcess(const std::wstring& child_name_suffix) {
// Tell the test it's OK to shut down now that we've read our data.
SetEvent(done.get());
- std::vector<std::wstring> modules;
+ std::vector<ProcessInfo::Module> modules;
EXPECT_TRUE(process_info.Modules(&modules));
ASSERT_GE(modules.size(), 3u);
std::wstring child_name = L"\\crashpad_util_test_process_info_test_child_" +
child_name_suffix + L".exe";
- ASSERT_GE(modules[0].size(), child_name.size());
+ ASSERT_GE(modules[0].name.size(), child_name.size());
EXPECT_EQ(child_name,
- modules[0].substr(modules[0].size() - child_name.size()));
- ASSERT_GE(modules[1].size(), wcslen(kNtdllName));
- EXPECT_EQ(kNtdllName,
- modules[1].substr(modules[1].size() - wcslen(kNtdllName)));
+ modules[0].name.substr(modules[0].name.size() - child_name.size()));
+ ASSERT_GE(modules[1].name.size(), wcslen(kNtdllName));
+ EXPECT_EQ(
+ kNtdllName,
+ modules[1].name.substr(modules[1].name.size() - wcslen(kNtdllName)));
// lz32.dll is an uncommonly-used-but-always-available module that the test
// binary manually loads.
const wchar_t kLz32dllName[] = L"\\lz32.dll";
- ASSERT_GE(modules.back().size(), wcslen(kLz32dllName));
- EXPECT_EQ(
- kLz32dllName,
- modules.back().substr(modules.back().size() - wcslen(kLz32dllName)));
+ ASSERT_GE(modules.back().name.size(), wcslen(kLz32dllName));
+ EXPECT_EQ(kLz32dllName,
+ modules.back().name.substr(modules.back().name.size() -
+ wcslen(kLz32dllName)));
}
TEST(ProcessInfo, OtherProcessX64) {
« no previous file with comments | « util/win/process_info.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698