mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 00:13:01 -05:00
tst: fsbench: OptEmptyCacheDrive, OptOpenCount
This commit is contained in:
parent
69257949ac
commit
b0cfdc0396
@ -24,7 +24,9 @@
|
||||
#include <tlib/testsuite.h>
|
||||
|
||||
static BOOLEAN OptEmptyCache = FALSE;
|
||||
static CHAR OptEmptyCacheDrive = 0;
|
||||
static ULONG OptFileCount = 1000;
|
||||
static ULONG OptOpenCount = 10;
|
||||
static ULONG OptListCount = 100;
|
||||
static ULONG OptRdwrFileSize = 4096 * 1024;
|
||||
static ULONG OptRdwrCcCount = 100;
|
||||
@ -32,43 +34,44 @@ static ULONG OptRdwrNcCount = 100;
|
||||
static ULONG OptMmapFileSize = 4096 * 1024;
|
||||
static ULONG OptMmapCount = 100;
|
||||
|
||||
static void file_create_dotest(ULONG CreateDisposition)
|
||||
static void file_create_dotest(ULONG CreateDisposition, ULONG OpenCount)
|
||||
{
|
||||
HANDLE Handle;
|
||||
BOOL Success;
|
||||
WCHAR FileName[MAX_PATH];
|
||||
|
||||
for (ULONG Index = 0; OptFileCount > Index; Index++)
|
||||
{
|
||||
StringCbPrintfW(FileName, sizeof FileName, L"fsbench-file%lu", Index);
|
||||
Handle = CreateFileW(FileName,
|
||||
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
0,
|
||||
CreateDisposition, FILE_ATTRIBUTE_NORMAL,
|
||||
0);
|
||||
ASSERT(INVALID_HANDLE_VALUE != Handle);
|
||||
Success = CloseHandle(Handle);
|
||||
ASSERT(Success);
|
||||
}
|
||||
for (ULONG OpenIndex = 0; OpenCount > OpenIndex; OpenIndex++)
|
||||
for (ULONG Index = 0; OptFileCount > Index; Index++)
|
||||
{
|
||||
StringCbPrintfW(FileName, sizeof FileName, L"fsbench-file%lu", Index);
|
||||
Handle = CreateFileW(FileName,
|
||||
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
0,
|
||||
CreateDisposition, FILE_ATTRIBUTE_NORMAL,
|
||||
0);
|
||||
ASSERT(INVALID_HANDLE_VALUE != Handle);
|
||||
Success = CloseHandle(Handle);
|
||||
ASSERT(Success);
|
||||
}
|
||||
}
|
||||
static void file_create_test(void)
|
||||
{
|
||||
file_create_dotest(CREATE_NEW);
|
||||
file_create_dotest(CREATE_NEW, 1);
|
||||
}
|
||||
static void file_open_test(void)
|
||||
{
|
||||
file_create_dotest(OPEN_EXISTING);
|
||||
file_create_dotest(OPEN_EXISTING, OptOpenCount);
|
||||
}
|
||||
static void file_overwrite_test(void)
|
||||
{
|
||||
file_create_dotest(CREATE_ALWAYS);
|
||||
file_create_dotest(CREATE_ALWAYS, 1);
|
||||
}
|
||||
static void file_attr_test(void)
|
||||
{
|
||||
WCHAR FileName[MAX_PATH];
|
||||
DWORD FileAttributes;
|
||||
|
||||
for (ULONG ListIndex = 0; OptListCount > ListIndex; ListIndex++)
|
||||
for (ULONG OpenIndex = 0; OptOpenCount > OpenIndex; OpenIndex++)
|
||||
for (ULONG Index = 0; OptFileCount > Index; Index++)
|
||||
{
|
||||
StringCbPrintfW(FileName, sizeof FileName, L"fsbench-file%lu", Index);
|
||||
@ -418,6 +421,17 @@ static void EmptyCache(const char *name, void (*fn)(void), int v)
|
||||
ASSERT(0 == NtSetSystemInformation(80 /*SystemMemoryListInformation*/, &Command, sizeof Command));
|
||||
Command = 4 /*MemoryPurgeStandbyList*/;
|
||||
ASSERT(0 == NtSetSystemInformation(80 /*SystemMemoryListInformation*/, &Command, sizeof Command));
|
||||
|
||||
/* optionally invalidate the volume cache; see https://stackoverflow.com/a/7701908/568557 */
|
||||
if (OptEmptyCacheDrive)
|
||||
{
|
||||
WCHAR VolumeNameBuf[] = L"\\\\.\\X:";
|
||||
HANDLE VolumeHandle;
|
||||
VolumeNameBuf[4] = OptEmptyCacheDrive;
|
||||
VolumeHandle = CreateFileW(VolumeNameBuf, FILE_READ_DATA, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
|
||||
if (INVALID_HANDLE_VALUE != VolumeHandle)
|
||||
CloseHandle(VolumeHandle);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (-1 == v) /* teardown */
|
||||
@ -478,11 +492,22 @@ int main(int argc, char *argv[])
|
||||
OptEmptyCache = TRUE;
|
||||
rmarg(argv, argc, argi);
|
||||
}
|
||||
else if (0 == strncmp("--empty-cache=", a, sizeof "--empty-cache=" - 1))
|
||||
{
|
||||
OptEmptyCache = TRUE;
|
||||
OptEmptyCacheDrive = *(a + sizeof "--empty-cache=" - 1);
|
||||
rmarg(argv, argc, argi);
|
||||
}
|
||||
else if (0 == strncmp("--files=", a, sizeof "--files=" - 1))
|
||||
{
|
||||
OptFileCount = strtoul(a + sizeof "--files=" - 1, 0, 10);
|
||||
rmarg(argv, argc, argi);
|
||||
}
|
||||
else if (0 == strncmp("--open=", a, sizeof "--open=" - 1))
|
||||
{
|
||||
OptOpenCount = strtoul(a + sizeof "--open=" - 1, 0, 10);
|
||||
rmarg(argv, argc, argi);
|
||||
}
|
||||
else if (0 == strncmp("--list=", a, sizeof "--list=" - 1))
|
||||
{
|
||||
OptListCount = strtoul(a + sizeof "--list=" - 1, 0, 10);
|
||||
|
Loading…
x
Reference in New Issue
Block a user