You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by gk...@apache.org on 2019/10/25 15:09:56 UTC

svn commit: r1868939 - /db/torque/torque4/trunk/torque-templates/src/test/java/org/apache/torque/templates/TestProcessing.java

Author: gk
Date: Fri Oct 25 15:09:56 2019
New Revision: 1868939

URL: http://svn.apache.org/viewvc?rev=1868939&view=rev
Log:
- fix issue delete directory deadlock in TestProcessing

Modified:
    db/torque/torque4/trunk/torque-templates/src/test/java/org/apache/torque/templates/TestProcessing.java

Modified: db/torque/torque4/trunk/torque-templates/src/test/java/org/apache/torque/templates/TestProcessing.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/test/java/org/apache/torque/templates/TestProcessing.java?rev=1868939&r1=1868938&r2=1868939&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/test/java/org/apache/torque/templates/TestProcessing.java (original)
+++ db/torque/torque4/trunk/torque-templates/src/test/java/org/apache/torque/templates/TestProcessing.java Fri Oct 25 15:09:56 2019
@@ -31,6 +31,7 @@ import java.io.InputStreamReader;
 import java.io.Reader;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -80,11 +81,11 @@ public class TestProcessing
         }
         {
             final File generatedSqlDir = new File(testRoot, "generated-sql");
-            FileUtils.deleteDirectory(generatedSqlDir);
+            deleteFilesInDirectory(generatedSqlDir);
         }
         {
             final File generatedXdocsDir = new File(testRoot, "generated-xdocs");
-            FileUtils.deleteDirectory(generatedXdocsDir);
+            deleteDirectory(generatedXdocsDir);
         }
     }
 
@@ -136,8 +137,8 @@ public class TestProcessing
     {
         File generationFolder = new File("target/generated-sql");
         File generationFolder2 = new File("target/generated-sql-2");
-        FileUtils.deleteDirectory(generationFolder);
-        FileUtils.deleteDirectory(generationFolder2);
+        deleteFilesInDirectory(generationFolder);
+        deleteFilesInDirectory(generationFolder2);
 
         final Controller controller = new Controller();
         final List<UnitDescriptor> unitDescriptors = new ArrayList<>();
@@ -183,8 +184,8 @@ public class TestProcessing
     {
         File generationFolder = new File("target/generated-sql");
         File generationFolder2 = new File("target/generated-sql-2");
-        FileUtils.deleteDirectory(generationFolder);
-        FileUtils.deleteDirectory(generationFolder2);
+        deleteFilesInDirectory(generationFolder);
+        deleteFilesInDirectory(generationFolder2);
 
         final Controller controller = new Controller();
         final List<UnitDescriptor> unitDescriptors = new ArrayList<>();
@@ -237,8 +238,9 @@ public class TestProcessing
     {
         File generationFolder = new File("target/generated-docs");
         File generationFolder2 = new File("target/generated-docs-2");
-        FileUtils.deleteDirectory(generationFolder);
-        FileUtils.deleteDirectory(generationFolder2);
+
+        deleteDirectory(generationFolder);
+        deleteDirectory(generationFolder2);
 
         final Controller controller = new Controller();
         final List<UnitDescriptor> unitDescriptors = new ArrayList<>();
@@ -295,8 +297,9 @@ public class TestProcessing
     {
         File generationFolder = new File("target/generated-xdocs");
         File generationFolder2 = new File("target/generated-xdocs-2");
-        FileUtils.deleteDirectory(generationFolder);
-        FileUtils.deleteDirectory(generationFolder2);
+        
+        deleteDirectory(generationFolder);
+        deleteDirectory(generationFolder2);
 
         final Controller controller = new Controller();
         final List<UnitDescriptor> unitDescriptors = new ArrayList<>();
@@ -329,14 +332,15 @@ public class TestProcessing
         assertFalse(generationFolder2.exists());
     }
 
-    @ParameterizedTest
-    @ValueSource(strings = { "mysql", "oracle", "mssql", "postgresql", "hsqldb", "derby" } )
+    @ParameterizedTest //  "mysql", "oracle", "postgresql", "hsqldb", "derby",
+    @ValueSource(strings = { "mysql", "oracle", "postgresql", "hsqldb", "derby", "mssql" } )
     public void testSqlDdlTemplates(String dbType) throws Exception
     {
         File generationFolder = new File("target/generated-sql");
         File generationFolder2 = new File("target/generated-sql-2");
-        FileUtils.deleteDirectory(generationFolder);
-        FileUtils.deleteDirectory(generationFolder2);
+        
+        deleteFilesInDirectory(generationFolder);
+        deleteFilesInDirectory(generationFolder2);
 
         final Controller controller = new Controller();
         final List<UnitDescriptor> unitDescriptors = new ArrayList<>();
@@ -393,20 +397,55 @@ public class TestProcessing
 //                charset);
         // auto close file input stream
         boolean isEqual = false; // delay assert
-        try (Reader actualReader  =new InputStreamReader(new FileInputStream(actualFilename), charset) ) {
+        try (Reader actualReader  = new InputStreamReader(new FileInputStream(actualFilename), charset) ) {
             isEqual = 
                 IOUtils.contentEqualsIgnoreEOL(new InputStreamReader(IOUtils.toInputStream(expected, charset)),
                         actualReader) ;
         }
+        // read again to get details
         if (!isEqual) {
-        	//check lines
-        	List<String> genSchema = IOUtils.readLines(
-        			new InputStreamReader(new FileInputStream(actualFilename), charset) );
-        	int index= 0;
-        	for (String line : genSchema) {
-        		assertTrue(expected.contains(line), line + " is not in expected file: "+ expectedFilename);
-				index++;
-			}
+            try (Reader actualReader  = new InputStreamReader(new FileInputStream(actualFilename), charset) ) {
+                //check lines
+                List<String> genSchema = IOUtils.readLines( actualReader );
+                int lastLineIndex = 0, lineNr = 0;
+                for (String line : genSchema) {
+                    lineNr++;
+                    assertTrue(expected.contains(line), actualFilename + "(line: "+ lineNr + "):\r\n'" + line + "'\r\nis not in expected file: "+ expectedFilename + " after:\r\n" +  expected.substring(lastLineIndex));
+                    lastLineIndex =  expected.indexOf(line);// is found
+                }
+            }  
+        }
+    }
+    
+    private void deleteDirectory(final File generatedDir) throws IOException {
+        try {
+            FileUtils.deleteDirectory(generatedDir);
+        } catch (Exception e) {
+            Files.walk(generatedDir.toPath())
+            .filter(f -> f.toFile().isFile())
+            .forEach(file  -> {
+               try {
+                Files.delete(file);
+               } catch (IOException e1) {
+                   throw new RuntimeException(e1);
+               } 
+            });
+            //Files.delete();
+        }
+    }
+    
+    private void deleteFilesInDirectory(final File generatedDir) throws IOException {
+        if (!generatedDir.exists()) {
+            return;
         }
+        Files.walk(generatedDir.toPath())
+        .filter(f -> f.toFile().isFile())
+        .forEach(file  -> {
+           try {
+            Files.delete(file);
+           } catch (IOException e1) {
+               throw new RuntimeException(e1);
+           } 
+        });
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org