//this is the thread function which calls the subversion function UINT CCacheDlg::TestThread() { CDirFileEnum direnum(m_sRootPath); m_filelist.RemoveAll(); CString filepath; bool bIsDir = false; while (direnum.NextFile(filepath, &bIsDir)) if (filepath.Find(L".git") < 0) m_filelist.Add(filepath); CTime starttime = CTime::GetCurrentTime(); GetDlgItem(IDC_STARTTIME)->SetWindowText(starttime.Format(L"%H:%M:%S")); ULONGLONG startticks = GetTickCount64(); CString sNumber; std::random_device rd; std::mt19937 mt(rd()); std::uniform_int_distribution<INT_PTR> dist(0, max(0, m_filelist.GetCount() - 1)); std::uniform_int_distribution<INT_PTR> dist2(0, 9); for (int i=0; i < 1; ++i) { CString filepath2; //do { filepath2 = m_filelist.GetAt(dist(mt)); //}while(filepath.Find(L".git") >= 0); GetDlgItem(IDC_FILEPATH)->SetWindowText(filepath2); GetStatusFromRemoteCache(CTGitPath(filepath2), true); sNumber.Format(L"%d", i); GetDlgItem(IDC_DONE)->SetWindowText(sNumber); if ((GetTickCount64()%10)==1) Sleep(10); if (dist2(mt) == 3) RemoveFromCache(filepath2); } CTime endtime = CTime::GetCurrentTime(); CString sEnd = endtime.Format(L"%H:%M:%S"); ULONGLONG endticks = GetTickCount64(); CString sEndText; sEndText.Format(L"%s - %I64u ms", (LPCTSTR)sEnd, endticks - startticks); GetDlgItem(IDC_ENDTIME)->SetWindowText(sEndText); return 0; }
//this is the thread function which calls the subversion function UINT CCacheDlg::TestThread() { CDirFileEnum direnum(m_sRootPath); m_filelist.RemoveAll(); CString filepath; bool bIsDir = false; while (direnum.NextFile(filepath, &bIsDir)) if(filepath.Find(_T(".git"))<0) m_filelist.Add(filepath); CTime starttime = CTime::GetCurrentTime(); GetDlgItem(IDC_STARTTIME)->SetWindowText(starttime.Format(_T("%H:%M:%S"))); int filecounter = 0; DWORD startticks = GetTickCount(); CString sNumber; srand(GetTickCount()); for (int i=0; i < 1; ++i) { CString filepath; //do { filepath = m_filelist.GetAt(rand() % m_filelist.GetCount()); //}while(filepath.Find(_T(".git"))>=0); GetDlgItem(IDC_FILEPATH)->SetWindowText(filepath); GetStatusFromRemoteCache(CTGitPath(filepath), true); sNumber.Format(_T("%d"), i); GetDlgItem(IDC_DONE)->SetWindowText(sNumber); if ((GetTickCount()%10)==1) Sleep(10); if ((rand()%10)==3) RemoveFromCache(filepath); } CTime endtime = CTime::GetCurrentTime(); CString sEnd = endtime.Format(_T("%H:%M:%S")); DWORD endticks = GetTickCount(); CString sEndText; sEndText.Format(_T("%s - %d ms"), sEnd, endticks-startticks); GetDlgItem(IDC_ENDTIME)->SetWindowText(sEndText); return 0; }
//this is the thread function which calls the subversion function UINT CCacheDlg::WatchTestThread() { CDirFileEnum direnum(m_sRootPath); m_filelist.RemoveAll(); CString filepath; bool bIsDir = false; while (direnum.NextFile(filepath, &bIsDir)) m_filelist.Add(filepath); CTime starttime = CTime::GetCurrentTime(); GetDlgItem(IDC_STARTTIME)->SetWindowText(starttime.Format(L"%H:%M:%S")); ULONGLONG startticks = GetTickCount64(); CString sNumber; std::random_device rd; std::mt19937 mt(rd()); std::uniform_int_distribution<INT_PTR> dist(0, max(0, m_filelist.GetCount() - 1)); filepath = m_filelist.GetAt(dist(mt)); GetStatusFromRemoteCache(CTGitPath(m_sRootPath), false); for (int i=0; i < 10000; ++i) { filepath = m_filelist.GetAt(dist(mt)); GetDlgItem(IDC_FILEPATH)->SetWindowText(filepath); TouchFile(filepath); CopyRemoveCopy(filepath); sNumber.Format(L"%d", i); GetDlgItem(IDC_DONE)->SetWindowText(sNumber); } // create dummy directories and remove them again several times for (int outer = 0; outer<100; ++outer) { for (int i=0; i<10; ++i) { filepath.Format(L"__MyDummyFolder%d", i); CreateDirectory(m_sRootPath + L'\\' + filepath, nullptr); HANDLE hFile = CreateFile(m_sRootPath + L'\\' + filepath + L"\\file", GENERIC_READ, FILE_SHARE_READ, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); CloseHandle(hFile); SHChangeNotify(SHCNE_UPDATEITEM, SHCNF_PATH | SHCNF_FLUSHNOWAIT, m_sRootPath + L'\\' + filepath + L"\\file", NULL); } Sleep(500); for (int i=0; i<10; ++i) { filepath.Format(L"__MyDummyFolder%d", i); DeleteFile(m_sRootPath + L'\\' + filepath + L"\\file"); RemoveDirectory(m_sRootPath + L'\\' + filepath); } sNumber.Format(L"%d", outer); GetDlgItem(IDC_DONE)->SetWindowText(sNumber); } CTime endtime = CTime::GetCurrentTime(); CString sEnd = endtime.Format(L"%H:%M:%S"); ULONGLONG endticks = GetTickCount64(); CString sEndText; sEndText.Format(L"%s - %I64u ms", (LPCTSTR)sEnd, endticks - startticks); GetDlgItem(IDC_ENDTIME)->SetWindowText(sEndText); return 0; }
//this is the thread function which calls the subversion function UINT CCacheDlg::WatchTestThread() { CDirFileEnum direnum(m_sRootPath); m_filelist.RemoveAll(); CString filepath; bool bIsDir = false; while (direnum.NextFile(filepath, &bIsDir)) m_filelist.Add(filepath); CTime starttime = CTime::GetCurrentTime(); GetDlgItem(IDC_STARTTIME)->SetWindowText(starttime.Format(_T("%H:%M:%S"))); int filecounter = 0; DWORD startticks = GetTickCount(); CString sNumber; srand(GetTickCount()); filepath = m_filelist.GetAt(rand() % m_filelist.GetCount()); GetStatusFromRemoteCache(CTGitPath(m_sRootPath), false); for (int i=0; i < 10000; ++i) { filepath = m_filelist.GetAt(rand() % m_filelist.GetCount()); GetDlgItem(IDC_FILEPATH)->SetWindowText(filepath); TouchFile(filepath); CopyRemoveCopy(filepath); sNumber.Format(_T("%d"), i); GetDlgItem(IDC_DONE)->SetWindowText(sNumber); } // create dummy directories and remove them again several times for (int outer = 0; outer<100; ++outer) { for (int i=0; i<10; ++i) { filepath.Format(_T("__MyDummyFolder%d"), i); CreateDirectory(m_sRootPath+_T("\\")+filepath, NULL); HANDLE hFile = CreateFile(m_sRootPath+_T("\\")+filepath+_T("\\file"), GENERIC_READ, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); CloseHandle(hFile); SHChangeNotify(SHCNE_UPDATEITEM, SHCNF_PATH | SHCNF_FLUSHNOWAIT, m_sRootPath+_T("\\")+filepath+_T("\\file"), NULL); } Sleep(500); for (int i=0; i<10; ++i) { filepath.Format(_T("__MyDummyFolder%d"), i); DeleteFile(m_sRootPath+_T("\\")+filepath+_T("\\file")); RemoveDirectory(m_sRootPath+_T("\\")+filepath); } sNumber.Format(_T("%d"), outer); GetDlgItem(IDC_DONE)->SetWindowText(sNumber); } CTime endtime = CTime::GetCurrentTime(); CString sEnd = endtime.Format(_T("%H:%M:%S")); DWORD endticks = GetTickCount(); CString sEndText; sEndText.Format(_T("%s - %d ms"), sEnd, endticks-startticks); GetDlgItem(IDC_ENDTIME)->SetWindowText(sEndText); return 0; }