Alternate e697dbe9c5997e35395fe158628dd8c5209481da
for Visual Studio 2022 and Windows 11.
全て クラス 名前空間 ファイル 関数 変数 型定義 列挙型 列挙値 マクロ定義 ページ
DiagnosticsTest.cpp
[詳解]
1
5
6#include "pch.h"
7#include "Diagnostics.h"
8#include "File.h"
9#include "FileUtility.h"
10
11using namespace Microsoft::VisualStudio::CppUnitTestFramework;
12
13#define TEST_FILE _T(".\\DiskIOTest.txt")
14
15namespace WindowsLibraryTest
16{
17 TEST_CLASS (DiagnosticsTest)
18 {
19 public:
20 TEST_CLASS_INITIALIZE (ClassInitialize)
21 {
22 Logger::WriteMessage ("DiagnosticsTest class initialize.\n");
23 }
24
25 TEST_CLASS_CLEANUP (ClassCleanup)
26 {
27 Logger::WriteMessage ("DiagnosticsTest class cleanup.\n");
28 }
29
30 TEST_METHOD_INITIALIZE (MethodInitialize)
31 {
32 Logger::WriteMessage ("DiagnosticsTest method initialize.\n");
33 }
34
35 TEST_METHOD_CLEANUP (MethodCleanup)
36 {
37 Logger::WriteMessage ("DiagnosticsTest method cleanup.\n");
38 }
39
40 void MemoryStatusPrint (PROCESS_MEMORY_COUNTERS& pmc)
41 {
42 TCHAR tszBuf[MAX_PATH];
43
44 Logger::WriteMessage (_T ("\n---------------------------------------------------------------\n"));
45
46 _stprintf_s (tszBuf, _T ("最大ワーキングセット(メモリ使用量)__________________ %10llu\n"), pmc.PeakWorkingSetSize);
47 Logger::WriteMessage (tszBuf);
48
49 _stprintf_s (tszBuf, _T ("現在ワーキングセット(最大メモリ使用量)______________ %10llu\n"), pmc.WorkingSetSize);
50 Logger::WriteMessage (tszBuf);
51
52 _stprintf_s (tszBuf, _T ("最大ページプールの使用サイズ(ページプール)__________ %10llu\n"), pmc.QuotaPeakPagedPoolUsage);
53 Logger::WriteMessage (tszBuf);
54
55 _stprintf_s (tszBuf, _T ("最大非ページプールの使用サイズ(非ページプール)______ %10llu\n"), pmc.QuotaPeakNonPagedPoolUsage);
56 Logger::WriteMessage (tszBuf);
57
58 _stprintf_s (tszBuf, _T ("現在ページングファイルの使用サイズ(仮想メモリサイズ) %10llu\n"), pmc.PagefileUsage);
59 Logger::WriteMessage (tszBuf);
60
61 _stprintf_s (tszBuf, _T ("ページ・フォールト数________________________________ %10u\n"), pmc.PageFaultCount);
62 Logger::WriteMessage (tszBuf);
63 }
64
65 //
66 // @sa https://ameblo.jp/sgl00044/entry-12463939983.html
67 //
68 TEST_METHOD (MemoryDiagnosticsTest)
69 {
71 BOOL ret;
72
73 PROCESS_MEMORY_COUNTERS pmc;
74 ret = diag.GetProcessMemory (pmc);
75 Assert::IsTrue (ret, _T("Diagnostics::GetProcessMemory() failed.\n"));
76 MemoryStatusPrint (pmc);
77
78 BYTE* pbyBuf = new BYTE[1024 * 1024 * 1024]; // 1GB
79 ret = diag.GetProcessMemory (pmc);
80 Assert::IsTrue (ret, _T("Diagnostics::GetProcessMemory() failed.\n"));
81 MemoryStatusPrint (pmc);
82
83 ZeroMemory (pbyBuf, 1024 * 1024 * 1024);
84 ret = diag.GetProcessMemory (pmc);
85 Assert::IsTrue (ret, _T("Diagnostics::GetProcessMemory() failed.\n"));
86 MemoryStatusPrint (pmc);
87
88 delete[] pbyBuf;
89 ret = diag.GetProcessMemory (pmc);
90 Assert::IsTrue (ret, _T("Diagnostics::GetProcessMemory() failed.\n"));
91 MemoryStatusPrint (pmc);
92 }
93
94 TEST_METHOD (DiskDiagnosticsTest)
95 {
97 IO_COUNTERS ioCounters;
98 BOOL ret;
99
100 ret = diag.GetProcessIO (ioCounters);
101 Assert::IsTrue (ret, _T("Diagnostics::GetProcessIO() failed.\n"));
102 DiskStatusPrint (ioCounters);
103
104 alt::File* pFile = new alt::File ();
105 ret = pFile->Create (TEST_FILE, GENERIC_ALL, FILE_SHARE_READ, CREATE_ALWAYS);
106 Assert::IsTrue (ret, _T("File::Create() failed.\n"));
107
108 BYTE byTest[1024];
109 ZeroMemory (byTest, 1024);
110 pFile->Write (byTest, 1024);
111
112 ret = diag.GetProcessIO (ioCounters);
113 Assert::IsTrue (ret, _T("Diagnostics::GetProcessIO() failed.\n"));
114 DiskStatusPrint (ioCounters);
115
116 pFile->SetPointer (FILE_BEGIN);
117 pFile->Read (byTest, 1024);
118
119 ret = diag.GetProcessIO (ioCounters);
120 Assert::IsTrue (ret, _T("Diagnostics::GetProcessIO() failed.\n"));
121 DiskStatusPrint (ioCounters);
122
123 pFile->Close ();
124
125 delete pFile;
126
128 }
129
130 void DiskStatusPrint (IO_COUNTERS& ioCounters)
131 {
132 TCHAR tszBuf[MAX_PATH];
133
134 Logger::WriteMessage (_T ("\n---------------------------------------------------------------\n"));
135
136 _stprintf_s (tszBuf, _T ("I/O読み取り________ %10llu\n"), ioCounters.ReadOperationCount);
137 Logger::WriteMessage (tszBuf);
138
139 _stprintf_s (tszBuf, _T ("I/O書き込み________ %10llu\n"), ioCounters.WriteOperationCount);
140 Logger::WriteMessage (tszBuf);
141
142 _stprintf_s (tszBuf, _T ("I/Oその他__________ %10llu\n"), ioCounters.OtherOperationCount);
143 Logger::WriteMessage (tszBuf);
144
145 _stprintf_s (tszBuf, _T ("I/O読み取りバイト数 %10llu\n"), ioCounters.ReadTransferCount);
146 Logger::WriteMessage (tszBuf);
147
148 _stprintf_s (tszBuf, _T ("I/O書き込みバイト数 %10llu\n"), ioCounters.WriteTransferCount);
149 Logger::WriteMessage (tszBuf);
150
151 _stprintf_s (tszBuf, _T ("I/Oその他バイト数__ %10llu\n"), ioCounters.OtherTransferCount);
152 Logger::WriteMessage (tszBuf);
153 }
154
155 TEST_METHOD (NetworkDiagnosticsTest)
156 {
157 alt::Diagnostics diag;
158 MIB_IPSTATS mibIPStats;
159 BOOL ret;
160
161 ret = diag.GetIpStatistics (mibIPStats);
162 Assert::IsTrue (ret, _T("Diagnostics::GetIpStatistics() failed.\n"));
163 NetworkStatusPrint (mibIPStats);
164 }
165
166 void NetworkStatusPrint (MIB_IPSTATS& mibIPStats)
167 {
168 TCHAR tszBuf[MAX_PATH];
169
170 Logger::WriteMessage (_T ("\n---------------------------------------------------------------\n"));
171
172 _stprintf_s (tszBuf, _T ("dwForwarding : %ld\n"), mibIPStats.dwForwarding);
173 Logger::WriteMessage (tszBuf);
174 _stprintf_s (tszBuf, _T ("dwDefaultTTL: %ld\n"), mibIPStats.dwDefaultTTL);
175 Logger::WriteMessage (tszBuf);
176 _stprintf_s (tszBuf, _T ("dwInReceives: %ld\n"), mibIPStats.dwInReceives);
177 Logger::WriteMessage (tszBuf);
178 _stprintf_s (tszBuf, _T ("dwInHdrErrors: %ld\n"), mibIPStats.dwInHdrErrors);
179 Logger::WriteMessage (tszBuf);
180 _stprintf_s (tszBuf, _T ("dwInAddrErrors: %ld\n"), mibIPStats.dwInAddrErrors);
181 Logger::WriteMessage (tszBuf);
182 _stprintf_s (tszBuf, _T ("dwForwDatagrams: %ld\n"), mibIPStats.dwForwDatagrams);
183 Logger::WriteMessage (tszBuf);
184 _stprintf_s (tszBuf, _T ("dwInUnknownProtos: %ld\n"), mibIPStats.dwInUnknownProtos);
185 Logger::WriteMessage (tszBuf);
186 _stprintf_s (tszBuf, _T ("dwInDiscards: %ld\n"), mibIPStats.dwInDiscards);
187 Logger::WriteMessage (tszBuf);
188 _stprintf_s (tszBuf, _T ("dwInDelivers: %ld\n"), mibIPStats.dwInDelivers);
189 Logger::WriteMessage (tszBuf);
190 _stprintf_s (tszBuf, _T ("dwOutRequests: %ld\n"), mibIPStats.dwOutRequests);
191 Logger::WriteMessage (tszBuf);
192 _stprintf_s (tszBuf, _T ("dwRoutingDiscards: %ld\n"), mibIPStats.dwRoutingDiscards);
193 Logger::WriteMessage (tszBuf);
194 _stprintf_s (tszBuf, _T ("dwOutDiscards: %ld\n"), mibIPStats.dwOutDiscards);
195 Logger::WriteMessage (tszBuf);
196 _stprintf_s (tszBuf, _T ("dwOutNoRoutes: %ld\n"), mibIPStats.dwOutNoRoutes);
197 Logger::WriteMessage (tszBuf);
198 _stprintf_s (tszBuf, _T ("dwReasmTimeout: %ld\n"), mibIPStats.dwReasmTimeout);
199 Logger::WriteMessage (tszBuf);
200 _stprintf_s (tszBuf, _T ("dwReasmReqds: %ld\n"), mibIPStats.dwReasmReqds);
201 Logger::WriteMessage (tszBuf);
202 _stprintf_s (tszBuf, _T ("dwReasmOks: %ld\n"), mibIPStats.dwReasmOks);
203 Logger::WriteMessage (tszBuf);
204 _stprintf_s (tszBuf, _T ("dwReasmFails: %ld\n"), mibIPStats.dwReasmFails);
205 Logger::WriteMessage (tszBuf);
206 _stprintf_s (tszBuf, _T ("dwFragOks: %ld\n"), mibIPStats.dwFragOks);
207 Logger::WriteMessage (tszBuf);
208 _stprintf_s (tszBuf, _T ("dwFragFails: %ld\n"), mibIPStats.dwFragFails);
209 Logger::WriteMessage (tszBuf);
210 _stprintf_s (tszBuf, _T ("dwFragCreates: %ld\n"), mibIPStats.dwFragCreates);
211 Logger::WriteMessage (tszBuf);
212 _stprintf_s (tszBuf, _T ("dwNumIf: %ld\n"), mibIPStats.dwNumIf);
213 Logger::WriteMessage (tszBuf);
214 _stprintf_s (tszBuf, _T ("dwNumAddr: %ld\n"), mibIPStats.dwNumAddr);
215 Logger::WriteMessage (tszBuf);
216 _stprintf_s (tszBuf, _T ("dwNumRoutes: %ld\n"), mibIPStats.dwNumRoutes);
217 Logger::WriteMessage (tszBuf);
218 }
219 };
220}
システム性能に関するWindowsAPIを集約したクラス
ファイルIOに関するWindowsAPIを集約したクラス
ファイルハンドルを伴わないファイルIOに関するWindowsAPIを集約した クラス
#define TEST_FILE
プリコンパイル済みヘッダー ファイルです。
システム性能に関するWindowsAPIを集約したクラス
Definition: Diagnostics.h:19
BOOL APIENTRY GetProcessIO(IO_COUNTERS &ioCounters) const
プロセスI/O情報を取得します。
Definition: Diagnostics.cpp:24
BOOL APIENTRY GetIpStatistics(MIB_IPSTATS &mibIPStats) const
ネットワークI/O情報を取得します。
Definition: Diagnostics.cpp:29
BOOL APIENTRY GetProcessMemory(PROCESS_MEMORY_COUNTERS &processMemoryCounters) const
プロセスメモリ情報を取得します。
Definition: Diagnostics.cpp:17
ファイルIOに関するWindowsAPIを集約したクラス
Definition: File.h:16
BOOL APIENTRY Create(LPCTSTR lpctszFileName, DWORD dwDesiredAccess, DWORD dwShareMode, DWORD dwCreationDisposition)
ファイルを作成、オープンします。
Definition: File.cpp:12
BOOL APIENTRY SetPointer(DWORD dwMoveMethod, LARGE_INTEGER liDistanceToMove={ 0 }) const
ファイルポインタを移動します。
Definition: File.cpp:37
static BOOL APIENTRY Delete(LPCTSTR name)
ファイルの削除
Definition: FileUtility.cpp:57
BOOL APIENTRY Close()
使用しなくなったハンドルはこれでクローズします。
DWORD APIENTRY Read(LPVOID lpvBuffer, DWORD dwSize) const
HANDLEを使ってデータを読み込みます。
DWORD APIENTRY Write(LPCVOID lpcvBuffer, DWORD dwSize) const
HANDLEを使ってデータを書き込みます。
TEST_CLASS(ArrayTest)
Definition: ArrayTest.cpp:19