- /**
- * Open traces in specified directories and expect them to fail
- *
- * @throws CTFReaderException not expected
- */
- @Test
- public void testFailedParse() throws CTFReaderException {
- parseTracesInDirectory(getTestTracesSubDirectory(CTF_SUITE_TEST_DIRECTORY + "/fail"), true);
- }
-
- /**
- * Open traces in specified directories and expect them to succeed
- *
- * @throws CTFReaderException not expected
- */
- @Test
- public void testSuccessfulParse() throws CTFReaderException {
- parseTracesInDirectory(getTestTracesSubDirectory("kernel"), false);
- parseTracesInDirectory(getTestTracesSubDirectory("trace2"), false);
- parseTracesInDirectory(getTestTracesSubDirectory(CTF_SUITE_TEST_DIRECTORY + "/pass"), false);
- }
-
- /**
- * Get the File object for the subDir in the traces directory. If the sub directory doesn't exist, the test is skipped.
- */
- private static File getTestTracesSubDirectory(String subDir) {
- File file = new File(TRACES_DIRECTORY + "/" + subDir);
- assumeTrue(file.isDirectory());
- return file;
- }
-
- /**
- * Parse the traces in given directory recursively
- *
- * @param directory The directory to search in
- * @param expectException Whether or not traces in this directory are expected to throw an exception when parsed
- * @throws CTFReaderException
- */
- void parseTracesInDirectory(File directory, boolean expectException) throws CTFReaderException {
- for (File file : directory.listFiles()) {
- if (file.getName().equals(METADATA_FILENAME)) {
- try {
- new CTFTrace(directory);
- if (expectException) {
- fail("Trace was expected to fail parsing: " + directory);
- }
- } catch (RuntimeException e) {
- if (!expectException) {
- throw new CTFReaderException("Failed parsing " + directory, e);
- }
- } catch (CTFReaderException e) {
- if (!expectException) {
- throw new CTFReaderException("Failed parsing " + directory, e);
- }
- }
- return;
- }
-
- if (file.isDirectory()) {
- parseTracesInDirectory(file, expectException);
- }
- }
- }
-