| 213 | } |
| 214 | |
| 215 | TEST(testvirtualmem, test) |
| 216 | { |
| 217 | if (getenv("SKIP_TESTVIRTUALMEM") != nullptr) |
| 218 | { |
| 219 | fprintf(stderr, "Skipping testvitualmem\n"); // ok |
| 220 | return; |
| 221 | } |
| 222 | |
| 223 | /*printf("test_huge_mapping\n"); |
| 224 | test_huge_mapping();*/ |
| 225 | |
| 226 | printf("Physical memory : " CPL_FRMT_GIB " bytes\n", CPLGetPhysicalRAM()); |
| 227 | |
| 228 | if (CPLIsVirtualMemFileMapAvailable()) |
| 229 | { |
| 230 | printf("Testing CPLVirtualMemFileMapNew()\n"); |
| 231 | VSILFILE *fp = VSIFOpenL(GCORE_DATA_DIR "byte.tif", "rb"); |
| 232 | ASSERT_TRUE(fp != nullptr); |
| 233 | VSIFSeekL(fp, 0, SEEK_END); |
| 234 | size_t nSize = (size_t)VSIFTellL(fp); |
| 235 | VSIFSeekL(fp, 0, SEEK_SET); |
| 236 | void *pRefBuf = CPLMalloc(nSize); |
| 237 | VSIFReadL(pRefBuf, 1, nSize, fp); |
| 238 | CPLVirtualMem *psMem = CPLVirtualMemFileMapNew( |
| 239 | fp, 0, nSize, VIRTUALMEM_READONLY, nullptr, nullptr); |
| 240 | ASSERT_TRUE(psMem != nullptr); |
| 241 | void *pMemBuf = CPLVirtualMemGetAddr(psMem); |
| 242 | ASSERT_TRUE(memcmp(pRefBuf, pMemBuf, nSize) == 0); |
| 243 | CPLFree(pRefBuf); |
| 244 | CPLVirtualMemFree(psMem); |
| 245 | VSIFCloseL(fp); |
| 246 | } |
| 247 | |
| 248 | auto ctxt = CPLVirtualMemNew(3 * MINIMUM_PAGE_SIZE, MINIMUM_PAGE_SIZE, |
| 249 | MINIMUM_PAGE_SIZE, FALSE, VIRTUALMEM_READONLY, |
| 250 | test_two_pages_cbk, nullptr, nullptr, nullptr); |
| 251 | if (ctxt) |
| 252 | { |
| 253 | test_two_pages(ctxt); |
| 254 | test_raw_auto("EHDR", TRUE); |
| 255 | test_raw_auto("EHDR", FALSE); |
| 256 | test_raw_auto("GTIFF", TRUE); |
| 257 | test_raw_auto("GTIFF", FALSE); |
| 258 | } |
| 259 | |
| 260 | CPLVirtualMemManagerTerminate(); |
| 261 | GDALDestroyDriverManager(); |
| 262 | } |
| 263 | |
| 264 | } // namespace |
nothing calls this directly
no test coverage detected