ctf: Delete and regenerate trace for tests in LttngKernelTraceGenerator
authorPatrick Tasse <patrick.tasse@gmail.com>
Thu, 10 Dec 2015 15:33:05 +0000 (10:33 -0500)
committerPatrick Tasse <patrick.tasse@gmail.com>
Thu, 10 Dec 2015 19:30:07 +0000 (14:30 -0500)
Later, this can be improved to be conditionally done only if the trace
generator version has changed.

Change-Id: I4d43f388d89d6bafba6c492a93e3d89c9ed9ed22
Signed-off-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-on: https://git.eclipse.org/r/62385
Reviewed-by: Hudson CI
Reviewed-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
Tested-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
Reviewed-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
ctf/org.eclipse.tracecompass.ctf.core.tests/shared/org/eclipse/tracecompass/ctf/core/tests/shared/LttngKernelTraceGenerator.java

index cffb08861c3970211c76e9bda7a181615a2de8c2..27df0b9e30e7c211657ec3ee55c5eb77e6ae1d20 100644 (file)
@@ -20,8 +20,12 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.nio.channels.FileChannel;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Random;
@@ -204,10 +208,7 @@ public class LttngKernelTraceGenerator {
         Path tracePath = Paths.get("..", "..", "ctf", "org.eclipse.tracecompass.ctf.core.tests", TRACES_DIRECTORY, TRACE_NAME);
         tracePath = tracePath.toAbsolutePath();
         File file = tracePath.toFile();
-
-        if (!file.exists()) {
-            generateLttngKernelTrace(file);
-        }
+        generateLttngKernelTrace(file);
         return file.getAbsolutePath();
     }
 
@@ -248,20 +249,10 @@ public class LttngKernelTraceGenerator {
      */
     public void writeTrace(File file) {
 
-        if (!file.exists()) {
-            file.mkdir();
-        } else {
-            if (file.isFile()) {
-                file.delete();
-                file.mkdir();
-            } else {
-                // the ctf parser doesn't recurse, so we don't need to.
-                final File[] listFiles = file.listFiles();
-                for (File child : listFiles) {
-                    child.delete();
-                }
-            }
+        if (file.exists()) {
+            deleteDirectory(file);
         }
+        file.mkdir();
 
         File metadataFile = new File(file.getPath() + File.separator + "metadata");
         File[] streams = new File[fNbChans];
@@ -371,6 +362,26 @@ public class LttngKernelTraceGenerator {
         }
     }
 
+    private static void deleteDirectory(File directory) {
+        try {
+            Files.walkFileTree(directory.toPath(), new SimpleFileVisitor<Path>() {
+                @Override
+                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+                    Files.delete(file);
+                    return FileVisitResult.CONTINUE;
+                }
+
+                @Override
+                public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
+                    Files.delete(dir);
+                    return FileVisitResult.CONTINUE;
+                }
+            });
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
     private static void writeToDisk(FileChannel[] channels, int chan, ByteBuffer bb) {
         try {
             bb.flip();
This page took 0.026683 seconds and 5 git commands to generate.