void DATFileUpdaterTest::WriteDatFile(const std::string& filename) { DATData data(filename); data.SetPixelCount(10); data.SetStatsCount(10); data.SetPixelSize(.7F); data.SetScannerID(L"main"); data.SetScannerType(L"M10"); data.SetArrayType(L"Hg-small"); data.SetRows(4); data.SetCols(5); DATFileWriter* writer = new DATFileWriter(data); u_int16_t s[] = { 16, 22, 14, 39, 26, 36 }; Uint16Vector stats; for(int i = 0; i < 6; i++) { stats.push_back(s[i]); } writer->WriteStats(stats); u_int16_t p[] = { 36, 3, 7, 8, 11, 2 }; Uint16Vector pixels; for(int i = 0; i < 6; i++) { pixels.push_back(p[i]); } writer->WritePixels(pixels); delete writer; }
void DATFileWriterTest::WriteTest() { DATData data("DAT_file"); data.SetPixelCount(10); data.SetStatsCount(10); DATFileWriter* writer = new DATFileWriter(data); u_int16_t stat1 = 16; u_int16_t stat2 = 22; Uint16Vector stats; stats.push_back(stat1); stats.push_back(stat2); writer->WriteStats(stats); u_int16_t p1 = 36; u_int16_t p2 = 3; Uint16Vector pixels; pixels.push_back(p1); pixels.push_back(p2); writer->WritePixels(pixels); CPPUNIT_ASSERT(1); delete writer; }
RCType TraceGen::generate(J9TDFOptions *options, const char *currentTDFFile) { RCType rc = RC_FAILED; unsigned int groupCount = 0; J9TDFGroup *groups = NULL; J9TDFFile *tdf = NULL; FileReader reader; TDFParser parser; Path *current = _visitedFile; char *realPath = NULL; /** * User might specify multiple scan roots for example -root src,src/omr * To avoid processing trace files multiple times keep the record of processed files. * To handle relative paths omrfile_realpath is used to resolve canonicalized absolute pathname. */ if (NULL == (realPath = Port::omrfile_realpath(currentTDFFile))) { FileUtils::printError("Failed to resolve full path to file: %s\n", currentTDFFile); goto done; } while (NULL != current) { if (0 == strcmp(current->path, realPath)) { break; } current = current->next; } if (NULL == current) { Path *tmp = (Path *) Port::omrmem_calloc(1, sizeof(Path)); tmp->path = realPath; tmp->next = _visitedFile; _visitedFile = tmp; } else if (options->debugOutput) { FileUtils::printError("File %s was already processed\n", realPath); goto done; } printf("Processing tdf file %s\n", currentTDFFile); rc = reader.init(currentTDFFile); if (RC_OK != rc) { FileUtils::printError("Failed to read from file: %s\n", currentTDFFile); goto done; } parser.init(&reader, options->treatWarningAsError); tdf = parser.parse(); if (NULL == tdf) { rc = RC_FAILED; goto done; } tdf->fileName = strdup(currentTDFFile); if (NULL == tdf->fileName) { eprintf("Failed to allocate memory"); rc = RC_FAILED; goto done; } groups = calculateGroups(tdf, &groupCount); if (NULL == groups) { FileUtils::printError("Failed to calculate tracepoint groups"); rc = RC_FAILED; goto done; } TraceHeaderWriter hfw; DATFileWriter dfw; CFileWriter cfw; rc = hfw.writeOutputFiles(options, tdf); if (RC_OK != rc) { FileUtils::printError("Failed to generate header file for %s\n", currentTDFFile); goto done; } rc = dfw.writeOutputFiles(options, tdf); if (RC_OK != rc) { FileUtils::printError("Failed to generate DAT file for %s\n", currentTDFFile); goto done; } if (options->generateCFiles) { rc = cfw.writeOutputFiles(options, tdf, groups, groupCount); if (RC_OK != rc) { FileUtils::printError("Failed to generate C file for %s\n", currentTDFFile); goto done; } } done: if (NULL != tdf) { Port::omrmem_free((void **)&tdf->fileName); Port::omrmem_free((void **)&tdf->header.datfilename); Port::omrmem_free((void **)&tdf->header.executable); Port::omrmem_free((void **)&tdf->header.submodules); J9TDFTracepoint *tp = tdf->tracepoints; while (NULL != tp) { J9TDFTracepoint *next = tp->nexttp; Port::omrmem_free((void **)&tp->name); if (NULL != tp->groups) { unsigned int groupIndex = 0; while (NULL != tp->groups[groupIndex]) { Port::omrmem_free((void **)&tp->groups[groupIndex]); groupIndex += 1; } tp->groups = NULL; } Port::omrmem_free((void **)&tp->format); Port::omrmem_free((void **)&tp->parameters); tp = next; } } if (NULL != groups) { freeGroups(groups); groups = NULL; } return rc; }