int main(int argc, char **argv) { RTTEST hTest; RTEXITCODE rcExit = RTTestInitExAndCreate(argc, &argv, 0 /*fRtInit*/, "tstRTIsoFs", &hTest); if (rcExit != RTEXITCODE_SUCCESS) return rcExit; if (argc <= 1) return RTTestSkipAndDestroy(hTest, "no input"); /* * First argument is the ISO to open. */ RTISOFSFILE IsoFs; int rc = RTIsoFsOpen(&IsoFs, argv[1]); if (RT_SUCCESS(rc)) { /* * Remaining arguments specifies files in the ISO that we wish information * about and optionally extract. */ for (int i = 2; i < argc; i++) { char *pszFile = argv[i]; char chSaved = 0; char *pszDst = strchr(pszFile, '='); if (pszDst) { chSaved = *pszDst; *pszDst = '\0'; } uint32_t offFile = UINT32_MAX / 2; size_t cbFile = UINT32_MAX / 2; rc = RTIsoFsGetFileInfo(&IsoFs, pszFile, &offFile, &cbFile); if (RT_SUCCESS(rc)) { RTTestPrintf(hTest, RTTESTLVL_ALWAYS, "%s: %u bytes at %#x\n", pszFile, (uint32_t)cbFile, offFile); if (pszDst) { rc = RTIsoFsExtractFile(&IsoFs, pszFile, pszDst); if (RT_SUCCESS(rc)) RTTestPrintf(hTest, RTTESTLVL_ALWAYS, "%s: saved as '%s'.\n", pszFile, pszDst); else RTTestFailed(hTest, "RTIsoFsExtractFile failed to extract '%s' to '%s': %Rrc", pszFile, pszDst, rc); } } else RTTestFailed(hTest, "RTIsoFsGetFileInfo failed for '%s': %Rrc", pszFile, rc); if (pszDst) pszDst[-1] = chSaved; } RTIsoFsClose(&IsoFs); } else RTTestFailed(hTest, "RTIsoFsOpen failed to open '%s': %Rrc", argv[1], rc); return RTTestSummaryAndDestroy(hTest); }
int main(int argc, char **argv) { /* * Initialize IPRT and create the test. */ RTTEST hTest; int rc = RTTestInitAndCreate("tstRTDvm", &hTest); if (rc) return rc; RTTestBanner(hTest); /* * If no args, display usage. */ if (argc < 2) { RTTestPrintf(hTest, RTTESTLVL_ALWAYS, "Syntax: %s <image>\n", argv[0]); return RTTestSkipAndDestroy(hTest, "Missing required arguments\n"); } /* Open image. */ RTFILE hFile; uint64_t cb = 0; rc = RTFileOpen(&hFile, argv[1], RTFILE_O_OPEN | RTFILE_O_DENY_NONE | RTFILE_O_READWRITE); if (RT_FAILURE(rc)) { RTTestIFailed("RTFileOpen -> %Rrc", rc); return RTTestSummaryAndDestroy(hTest); } rc = RTFileGetSize(hFile, &cb); if ( RT_FAILURE(rc) || cb % 512 != 0) /* Assume 512 byte sector size. */ { RTTestIFailed("RTFileGetSize -> %Rrc", rc); return RTTestSummaryAndDestroy(hTest); } TSTRTDVMDISK Disk; Disk.fUseImage = true; Disk.hImage = hFile; rc = tstRTDvmVolume(hTest, &Disk, cb, 0); RTTESTI_CHECK(rc == VINF_SUCCESS); /* * Summary */ return RTTestSummaryAndDestroy(hTest); }
int main() { RTEXITCODE rcExit = RTTestInitAndCreate("tstRTThreadPoke", &g_hTest); if (rcExit != RTEXITCODE_SUCCESS) return rcExit; #ifdef RT_OS_WINDOWS return RTTestSkipAndDestroy(g_hTest, "No RTThreadPoke on Windows"); #else test1(); return RTTestSummaryAndDestroy(g_hTest); #endif }
int main(int argc, char **argv) { /* * Initialize IPRT and create the test. */ RTTEST hTest; int rc = RTTestInitAndCreate("tstRTFilesystem", &hTest); if (rc) return rc; RTTestBanner(hTest); /* * If no args, display usage. */ if (argc < 2) { RTTestPrintf(hTest, RTTESTLVL_ALWAYS, "Syntax: %s <image>\n", argv[0]); return RTTestSkipAndDestroy(hTest, "Missing required arguments\n"); } /* Open image. */ RTFILE hFile; RTVFSFILE hVfsFile; rc = RTFileOpen(&hFile, argv[1], RTFILE_O_OPEN | RTFILE_O_DENY_NONE | RTFILE_O_READ); if (RT_FAILURE(rc)) { RTTestIFailed("RTFileOpen -> %Rrc", rc); return RTTestSummaryAndDestroy(hTest); } rc = RTVfsFileFromRTFile(hFile, 0, false, &hVfsFile); if (RT_FAILURE(rc)) { RTTestIFailed("RTVfsFileFromRTFile -> %Rrc", rc); return RTTestSummaryAndDestroy(hTest); } rc = tstRTFilesystem(hTest, hVfsFile); RTTESTI_CHECK(rc == VINF_SUCCESS); RTVfsFileRelease(hVfsFile); /* * Summary */ return RTTestSummaryAndDestroy(hTest); }
int main(int argc, char **argv) { /* * Init RT+Test. */ RTTEST hTest; int rc = RTTestInitExAndCreate(argc, &argv, 0, "tstRTPathGlob", &hTest); if (rc) return rc; RTTestBanner(hTest); if (argc <= 1) return RTTestSkipAndDestroy(hTest, "Requires arguments"); /* * Manual glob testing. */ for (int i = 1; i < argc; i++) { uint32_t cResults = UINT32_MAX; PCRTPATHGLOBENTRY pHead = (PCRTPATHGLOBENTRY)&cResults; rc = RTPathGlob(argv[i], 0, &pHead, &cResults); RTTestPrintf(hTest, RTTESTLVL_ALWAYS, "#%u '%s' -> %Rrc cResult=%u\n", i, argv[i], rc, cResults); if (RT_SUCCESS(rc)) { uint32_t iEntry = 0; for (PCRTPATHGLOBENTRY pCur = pHead; pCur; pCur = pCur->pNext, iEntry++) { RTTestPrintf(hTest, RTTESTLVL_ALWAYS, " #%3u: '%s'\n", iEntry, pCur->szPath); RTTEST_CHECK(hTest, strlen(pCur->szPath) == pCur->cchPath); } RTPathGlobFree(pHead); } } /* * Summary. */ return RTTestSummaryAndDestroy(hTest); }
int main(int argc, char **argv) { RTTEST hTest; RTEXITCODE rcExit = RTTestInitExAndCreate(argc, &argv, 0 /*fRtInit*/, "tstSupTscDelta", &hTest); if (rcExit != RTEXITCODE_SUCCESS) return rcExit; /* * Parse args */ static const RTGETOPTDEF g_aOptions[] = { { "--iterations", 'i', RTGETOPT_REQ_INT32 }, { "--delay", 'd', RTGETOPT_REQ_INT32 }, }; uint32_t cIterations = 0; /* Currently 0 so that it doesn't upset testing. */ uint32_t cMsSleepBetweenIterations = 10; int ch; RTGETOPTUNION ValueUnion; RTGETOPTSTATE GetState; RTGetOptInit(&GetState, argc, argv, g_aOptions, RT_ELEMENTS(g_aOptions), 1, RTGETOPTINIT_FLAGS_NO_STD_OPTS); while ((ch = RTGetOpt(&GetState, &ValueUnion))) { switch (ch) { case 'd': cMsSleepBetweenIterations = ValueUnion.u32; break; case 'i': cIterations = ValueUnion.u32; break; default: return RTGetOptPrintError(ch, &ValueUnion); } } if (!cIterations) return RTTestSkipAndDestroy(hTest, "Nothing to do. The --iterations argument is 0 or not given."); /* * Init */ PSUPDRVSESSION pSession = NIL_RTR0PTR; int rc = SUPR3Init(&pSession); if (RT_SUCCESS(rc)) { PSUPGLOBALINFOPAGE pGip = g_pSUPGlobalInfoPage; if (pGip) { if (pGip->enmUseTscDelta < SUPGIPUSETSCDELTA_PRACTICALLY_ZERO) return RTTestSkipAndDestroy(hTest, "No deltas to play with: enmUseTscDelta=%d\n", pGip->enmUseTscDelta); /* * Init stats. */ struct { int64_t iLowest; int64_t iHighest; int64_t iTotal; uint64_t uAbsMin; uint64_t uAbsMax; uint64_t uAbsTotal; } aCpuStats[RTCPUSET_MAX_CPUS]; RT_ZERO(aCpuStats); for (uint32_t i = 0; i < pGip->cCpus; i++) { aCpuStats[i].iLowest = INT64_MAX; aCpuStats[i].iHighest = INT64_MIN; aCpuStats[i].uAbsMin = UINT64_MAX; } /* * Do the work. */ for (uint32_t iIteration = 0; ; iIteration++) { /* * Display the current deltas and gather statistics. */ RTPrintf("tstSupTscDelta: Iteration #%u results:", iIteration); for (uint32_t iCpu = 0; iCpu < pGip->cCpus; iCpu++) { int64_t iTscDelta = pGip->aCPUs[iCpu].i64TSCDelta; /* print */ if ((iCpu % 4) == 0) RTPrintf("\ntstSupTscDelta:"); if (pGip->aCPUs[iCpu].enmState != SUPGIPCPUSTATE_ONLINE) RTPrintf(" %02x: offline ", iCpu); else if (iTscDelta != INT64_MAX) RTPrintf(" %02x: %-12lld", iCpu, iTscDelta); else RTPrintf(" %02x: INT64_MAX ", iCpu); /* stats */ if ( iTscDelta != INT64_MAX && pGip->aCPUs[iCpu].enmState == SUPGIPCPUSTATE_ONLINE) { if (aCpuStats[iCpu].iLowest > iTscDelta) aCpuStats[iCpu].iLowest = iTscDelta; if (aCpuStats[iCpu].iHighest < iTscDelta) aCpuStats[iCpu].iHighest = iTscDelta; aCpuStats[iCpu].iTotal += iTscDelta; uint64_t uAbsTscDelta = iTscDelta >= 0 ? (uint64_t)iTscDelta : (uint64_t)-iTscDelta; if (aCpuStats[iCpu].uAbsMin > uAbsTscDelta) aCpuStats[iCpu].uAbsMin = uAbsTscDelta; if (aCpuStats[iCpu].uAbsMax < uAbsTscDelta) aCpuStats[iCpu].uAbsMax = uAbsTscDelta; aCpuStats[iCpu].uAbsTotal += uAbsTscDelta; } } if (((pGip->cCpus - 1) % 4) != 0) RTPrintf("\n"); /* * Done? */ if (iIteration + 1 >= cIterations) break; /* * Force a new measurement. */ RTThreadSleep(cMsSleepBetweenIterations); for (uint32_t iCpu = 0; iCpu < pGip->cCpus; iCpu++) if (pGip->aCPUs[iCpu].enmState == SUPGIPCPUSTATE_ONLINE) { rc = SUPR3TscDeltaMeasure(pGip->aCPUs[iCpu].idCpu, false /*fAsync*/, true /*fForce*/, 64, 16 /*ms*/); if (RT_FAILURE(rc)) RTTestFailed(hTest, "SUPR3TscDeltaMeasure failed on %#x: %Rrc", pGip->aCPUs[iCpu].idCpu, rc); } } /* * Display statistics that we've gathered. */ RTPrintf("tstSupTscDelta: Results:\n"); int64_t iLowest = INT64_MAX; int64_t iHighest = INT64_MIN; int64_t iTotal = 0; uint32_t cTotal = 0; for (uint32_t iCpu = 0; iCpu < pGip->cCpus; iCpu++) { if (pGip->aCPUs[iCpu].enmState != SUPGIPCPUSTATE_ONLINE) RTPrintf("tstSupTscDelta: %02x: offline\n", iCpu); else { RTPrintf("tstSupTscDelta: %02x: lowest=%-12lld highest=%-12lld average=%-12lld spread=%-12lld\n", iCpu, aCpuStats[iCpu].iLowest, aCpuStats[iCpu].iHighest, aCpuStats[iCpu].iTotal / cIterations, aCpuStats[iCpu].iHighest - aCpuStats[iCpu].iLowest); RTPrintf( "tstSupTscDelta: absmin=%-12llu absmax=%-12llu absavg=%-12llu idCpu=%#4x idApic=%#4x\n", aCpuStats[iCpu].uAbsMin, aCpuStats[iCpu].uAbsMax, aCpuStats[iCpu].uAbsTotal / cIterations, pGip->aCPUs[iCpu].idCpu, pGip->aCPUs[iCpu].idApic); if (iLowest > aCpuStats[iCpu].iLowest) iLowest = aCpuStats[iCpu].iLowest; if (iHighest < aCpuStats[iCpu].iHighest) iHighest = aCpuStats[iCpu].iHighest; iTotal += aCpuStats[iCpu].iHighest; cTotal += cIterations; } } RTPrintf("tstSupTscDelta: all: lowest=%-12lld highest=%-12lld average=%-12lld spread=%-12lld\n", iLowest, iHighest, iTotal / cTotal, iHighest - iLowest); } else RTTestFailed(hTest, "g_pSUPGlobalInfoPage is NULL"); SUPR3Term(false /*fForced*/); } else RTTestFailed(hTest, "SUPR3Init failed: %Rrc", rc); return RTTestSummaryAndDestroy(hTest); }
int main(int argc, char **argv) { /* * Initialize IPRT and create the test. */ RTTEST hTest; int rc = RTTestInitAndCreate("tstRTS3", &hTest); if (rc) return rc; RTTestBanner(hTest); /* * If no args, display usage. */ if (argc <= 2) { RTTestPrintf(hTest, RTTESTLVL_ALWAYS, "Syntax: %s [Access Key] [Secret Key]\n", argv[0]); return RTTestSkipAndDestroy(hTest, "Missing required arguments\n"); } RTTestSubF(hTest, "Create S3"); RTS3 hS3; rc = RTS3Create(&hS3, argv[1], argv[2], "object.storage.network.com", "tstS3-agent/1.0"); if (RT_FAILURE(rc)) { RTTestIFailed("RTS3Create -> %Rrc", rc); return RTTestSummaryAndDestroy(hTest); } RTTestSub(hTest, "Fetch buckets"); fetchAllBuckets(hS3); RTTestSub(hTest, "Fetch keys"); fetchAllKeys(hS3, "bla"); #ifdef TSTS3_CREATEBUCKET RTTestSub(hTest, "Create bucket"); createBucket(hS3, TSTS3_CREATEBUCKET_BUCKETNAME); fetchAllBuckets(hS3); deleteBucket(hS3, TSTS3_CREATEBUCKET_BUCKETNAME); fetchAllBuckets(hS3); #endif /* TSTS3_CREATEBUCKET */ #ifdef TSTS3_PUTGETKEY RTTestSub(hTest, "Put key"); createBucket(hS3, TSTS3_PUTGETKEY_BUCKETNAME); putKey(hS3, TSTS3_PUTGETKEY_BUCKETNAME, TSTS3_PUTGETKEY_KEYNAME, TSTS3_PUTGETKEY_PUTFILE); fetchAllKeys(hS3, TSTS3_PUTGETKEY_BUCKETNAME); getKey(hS3, TSTS3_PUTGETKEY_BUCKETNAME, TSTS3_PUTGETKEY_KEYNAME, TSTS3_PUTGETKEY_GETFILE); deleteKey(hS3, TSTS3_PUTGETKEY_BUCKETNAME, TSTS3_PUTGETKEY_KEYNAME); fetchAllKeys(hS3, TSTS3_PUTGETKEY_BUCKETNAME); deleteBucket(hS3, TSTS3_PUTGETKEY_BUCKETNAME); #endif /* TSTS3_PUTGETKEY */ RTS3Destroy(hS3); /* * Summary */ return RTTestSummaryAndDestroy(hTest); }