From c5d974533a205fae772a1bd98db000d0f1ddbe17 Mon Sep 17 00:00:00 2001 From: Arun Venmany Date: Wed, 20 Nov 2024 15:14:58 +0530 Subject: [PATCH] adding more tests based on review comments Signed-off-by: Arun Venmany --- .../gradle/AbstractIntegrationTest.groovy | 19 ----------- .../tools/gradle/BaseDevTest.groovy | 20 +++++++++++ .../gradle/TestSpringBootApplication30.groovy | 34 ++++++++++++++++++- 3 files changed, 53 insertions(+), 20 deletions(-) diff --git a/src/test/groovy/io/openliberty/tools/gradle/AbstractIntegrationTest.groovy b/src/test/groovy/io/openliberty/tools/gradle/AbstractIntegrationTest.groovy index c95cddf3..89907adf 100644 --- a/src/test/groovy/io/openliberty/tools/gradle/AbstractIntegrationTest.groovy +++ b/src/test/groovy/io/openliberty/tools/gradle/AbstractIntegrationTest.groovy @@ -216,23 +216,4 @@ abstract class AbstractIntegrationTest { } } } -/** - * Count number of lines that contain the given string - */ - protected static int countOccurrences(String str, File file) throws FileNotFoundException, IOException { - int occurrences = 0; - BufferedReader br = new BufferedReader(new FileReader(file)); - String line = br.readLine(); - try { - while (line != null) { - if (line.contains(str)) { - occurrences++; - } - line = br.readLine(); - } - } finally { - br.close(); - } - return occurrences; - } } diff --git a/src/test/groovy/io/openliberty/tools/gradle/BaseDevTest.groovy b/src/test/groovy/io/openliberty/tools/gradle/BaseDevTest.groovy index 61918bdd..597c895a 100644 --- a/src/test/groovy/io/openliberty/tools/gradle/BaseDevTest.groovy +++ b/src/test/groovy/io/openliberty/tools/gradle/BaseDevTest.groovy @@ -258,6 +258,26 @@ class BaseDevTest extends AbstractIntegrationTest { Files.write(path, content.getBytes(charset)); } + /** + * Count number of lines that contain the given string + */ + protected static int countOccurrences(String str, File file) throws FileNotFoundException, IOException { + int occurrences = 0; + BufferedReader br = new BufferedReader(new FileReader(file)); + String line = br.readLine(); + try { + while (line != null) { + if (line.contains(str)) { + occurrences++; + } + line = br.readLine(); + } + } finally { + br.close(); + } + return occurrences; + } + protected static void cleanUpAfterClass(boolean isDevMode) throws Exception { stopProcess(isDevMode, errFile); if (buildDir != null && buildDir.exists()) { diff --git a/src/test/groovy/io/openliberty/tools/gradle/TestSpringBootApplication30.groovy b/src/test/groovy/io/openliberty/tools/gradle/TestSpringBootApplication30.groovy index 49552898..c017bfd2 100644 --- a/src/test/groovy/io/openliberty/tools/gradle/TestSpringBootApplication30.groovy +++ b/src/test/groovy/io/openliberty/tools/gradle/TestSpringBootApplication30.groovy @@ -21,6 +21,17 @@ import org.junit.rules.TestName import static org.junit.Assert.assertTrue +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.NodeList; +import org.w3c.dom.Node; +import org.w3c.dom.Element; + public class TestSpringBootApplication30 extends AbstractIntegrationTest{ static File resourceDir = new File("build/resources/test/sample.springboot3") static String buildFilename = "springboot_3_archive.gradle" @@ -56,7 +67,28 @@ public class TestSpringBootApplication30 extends AbstractIntegrationTest{ new File(buildDir, 'build/wlp/usr/servers/defaultServer/configDropins/defaults').list().size() == 1) File configDropinsDir=new File(buildDir, 'build/wlp/usr/servers/defaultServer/configDropins/defaults') File configDropinsFile=new File(configDropinsDir,configDropinsDir.list().getAt(0)) - Assert.assertTrue("defaultServer/configDropins/defaults config file does not contain thin spring boot location",countOccurrences("thin-${testName.getMethodName()}-1.0-SNAPSHOT.jar".toString(), configDropinsFile)>0); + try (FileInputStream input = new FileInputStream(configDropinsFile)) { + // get configDropins XML Document + DocumentBuilderFactory inputBuilderFactory = DocumentBuilderFactory.newInstance(); + inputBuilderFactory.setIgnoringComments(true); + inputBuilderFactory.setCoalescing(true); + inputBuilderFactory.setIgnoringElementContentWhitespace(true); + inputBuilderFactory.setValidating(false); + inputBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false); + inputBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); + DocumentBuilder inputBuilder = inputBuilderFactory.newDocumentBuilder(); + Document inputDoc=inputBuilder.parse(input); + + // parse configDropins XML Document + XPath xPath = XPathFactory.newInstance().newXPath(); + String expression = "/server/springBootApplication"; + NodeList nodes = (NodeList) xPath.compile(expression).evaluate(inputDoc, XPathConstants.NODESET); + Assert.assertTrue("Number of element ==>", nodes.getLength()>0); + + Node node = nodes.item(0); + Element element = (Element)node; + Assert.assertEquals("Value of the 1st ==>"+element.getAttribute("location"), "thin-${testName.getMethodName()}-1.0-SNAPSHOT.jar".toString(), element.getAttribute("location")); + } Assert.assertTrue('no app in apps folder', new File(buildDir, "build/wlp/usr/servers/defaultServer/apps/thin-${testName.getMethodName()}-1.0-SNAPSHOT.jar").exists() ) } catch (Exception e) {