diff --git a/rostests/apitests/kernel32/TunnelCache.c b/rostests/apitests/kernel32/TunnelCache.c index 6e92529eb14..74e2e5a2dc4 100644 --- a/rostests/apitests/kernel32/TunnelCache.c +++ b/rostests/apitests/kernel32/TunnelCache.c @@ -11,6 +11,99 @@ #include #include +static +void +Test_VeryLongTests(void) +{ + UCHAR i = 0; + HANDLE hFile; + CHAR TestDir[] = "XTestDirTunnelCache"; + CHAR OldDir[MAX_PATH]; + FILETIME FileTime, File1Time; + + win_skip("Too long, see: ROSTESTS-177"); + return; + + /* Create a blank test directory */ + if (GetCurrentDirectory(MAX_PATH, OldDir) == 0) + { + win_skip("No test directory available\n"); + return; + } + + /* Create a blank test directory */ + for (; i < 10; ++i) + { + TestDir[0] = '0' + i; + if (CreateDirectory(TestDir, NULL)) + { + if (SetCurrentDirectory(TestDir) == 0) + { + RemoveDirectory(TestDir); + win_skip("No test directory available\n"); + return; + } + + break; + } + } + + if (i == 10) + { + win_skip("No test directory available\n"); + return; + } + + hFile = CreateFile("file1", + GENERIC_READ | GENERIC_WRITE, + 0, NULL, + CREATE_NEW, + FILE_ATTRIBUTE_NORMAL, + NULL); + ok(hFile != INVALID_HANDLE_VALUE, "CreateFile() failed\n"); + ok(GetFileTime(hFile, &FileTime, NULL, NULL) != FALSE, "GetFileTime() failed\n"); + CloseHandle(hFile); + + /* Wait a least 10ms (resolution of FAT) */ + /* XXX: Increased to 1s for ReactOS... */ + Sleep(1000); + + hFile = CreateFile("file2", + GENERIC_READ | GENERIC_WRITE, + 0, NULL, + CREATE_NEW, + FILE_ATTRIBUTE_NORMAL, + NULL); + ok(hFile != INVALID_HANDLE_VALUE, "CreateFile() failed\n"); + CloseHandle(hFile); + + ok(MoveFile("file1", "file") != FALSE, "MoveFile() failed\n"); + /* Sleep over cache expiry */ + /* FIXME: Query correct value from registry if it exists: + * \HKLM\System\CurrentControlSet\Control\FileSystem\MaximumTunnelEntryAgeInSeconds */ + Sleep(16000); + ok(MoveFile("file2", "file1") != FALSE, "MoveFile() failed\n"); + + hFile = CreateFile("file1", + GENERIC_READ, + 0, NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL); + ok(hFile != INVALID_HANDLE_VALUE, "CreateFile() failed\n"); + ok(GetFileTime(hFile, &File1Time, NULL, NULL) != FALSE, "GetFileTime() failed\n"); + CloseHandle(hFile); + + ok(RtlCompareMemory(&FileTime, &File1Time, sizeof(FILETIME)) != sizeof(FILETIME), "Tunnel cache still in action?\n"); + + DeleteFile("file2"); + DeleteFile("file1"); + DeleteFile("file"); + + SetCurrentDirectory(OldDir); + RemoveDirectory(TestDir); +} + static void Test_LongTests(void) @@ -185,4 +278,5 @@ START_TEST(TunnelCache) { Test_ShortTests(); Test_LongTests(); + Test_VeryLongTests(); }