This is an automated email from the ASF dual-hosted git repository.

abaker pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new b389f5a  GEODE-6075 Improve tests using the geode version
b389f5a is described below

commit b389f5ac1b9bef9966541e263d22df3cb658f215
Author: Anthony Baker <aba...@apache.org>
AuthorDate: Mon Nov 19 21:39:13 2018 -0800

    GEODE-6075 Improve tests using the geode version
    
    Currently several tests check the geode assembly for correctness using
    fixed information, including the geode version.  Every time we bump the
    geode version these tests fail and we have to update the comparison
    files.  This change skips strict version checks on the geode version
    while retaining presence detection (e.g. if geode-core-*.jar was missing
    the test will still fail).
---
 .../geode/AssemblyContentsIntegrationTest.java     |  60 +++++------
 .../geode/GeodeDependencyJarIntegrationTest.java   |  46 ++++-----
 .../integrationTest/resources/assembly_content.txt |  42 ++++----
 .../resources/dependency_classpath.txt             | 114 ++++++++++-----------
 gradle/publish.gradle                              |   8 +-
 5 files changed, 129 insertions(+), 141 deletions(-)

diff --git 
a/geode-assembly/src/integrationTest/java/org/apache/geode/AssemblyContentsIntegrationTest.java
 
b/geode-assembly/src/integrationTest/java/org/apache/geode/AssemblyContentsIntegrationTest.java
index 2d256cf..4d74481 100644
--- 
a/geode-assembly/src/integrationTest/java/org/apache/geode/AssemblyContentsIntegrationTest.java
+++ 
b/geode-assembly/src/integrationTest/java/org/apache/geode/AssemblyContentsIntegrationTest.java
@@ -14,7 +14,7 @@
  */
 package org.apache.geode;
 
-import static org.junit.Assert.assertTrue;
+import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.File;
 import java.io.IOException;
@@ -22,7 +22,6 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Collection;
-import java.util.Set;
 import java.util.TreeSet;
 import java.util.stream.Collectors;
 
@@ -38,58 +37,49 @@ import org.apache.geode.util.test.TestUtil;
 public class AssemblyContentsIntegrationTest {
 
   private static final String GEODE_HOME = System.getenv("GEODE_HOME");
-  private Set<String> expectedAssemblyContent;
+  private Collection<String> expectedAssemblyContent;
 
   @Before
   public void loadExpectedAssemblyContent() throws IOException {
     String assemblyContent =
         TestUtil.getResourcePath(AssemblyContentsIntegrationTest.class, 
"/assembly_content.txt");
 
-    expectedAssemblyContent = 
Files.lines(Paths.get(assemblyContent)).collect(Collectors.toSet());
+    expectedAssemblyContent =
+        
Files.lines(Paths.get(assemblyContent)).collect(Collectors.toCollection(TreeSet::new));
   }
 
   @Test
   public void verifyAssemblyContents() throws IOException {
-    Set<String> currentAssemblyContent = getAssemblyContent();
-
+    Collection<String> currentAssemblyContent = getAssemblyContent();
     Files.write(Paths.get("assembly_content.txt"), currentAssemblyContent);
 
-    Set<String> newAssemblyContent = new TreeSet<>(currentAssemblyContent);
-    newAssemblyContent.removeAll(expectedAssemblyContent);
-    Set<String> missingAssemblyContent = new 
TreeSet<>(expectedAssemblyContent);
-    missingAssemblyContent.removeAll(currentAssemblyContent);
-
-    String message =
-        "The assembly contents have changed. Verify dependencies."
-            + "\nWhen fixed, copy 
geode-assembly/build/integrationTest/assembly_content.txt"
-            + "\nto 
geode-assembly/src/integrationTest/resources/assembly_content.txt"
-            + "\nRemoved Content\n--------------\n"
-            + String.join("\n", missingAssemblyContent) + "\n\nAdded 
Content\n--------------\n"
-            + String.join("\n", newAssemblyContent) + "\n\n";
-
-    assertTrue(message, 
expectedAssemblyContent.equals(currentAssemblyContent));
+    assertThat(currentAssemblyContent)
+        .describedAs("The assembly contents have changed. Verify dependencies 
and "
+            + "copy geode-assembly/build/integrationTest/assembly_content.txt 
to "
+            + 
"geode-assembly/src/integrationTest/resources/assembly_content.txt")
+        .containsExactlyElementsOf(expectedAssemblyContent);
   }
 
   /**
    * Find all of the jars bundled with the project. Key is the name of the 
jar, value is the path.
    */
-  private Set<String> getAssemblyContent() {
+  private Collection<String> getAssemblyContent() {
     File geodeHomeDirectory = new File(GEODE_HOME);
     Path geodeHomePath = Paths.get(GEODE_HOME);
 
-    assertTrue(
-        "Please set the GEODE_HOME environment variable to the product 
installation directory.",
-        geodeHomeDirectory.isDirectory());
-
-    Collection<File> contents = FileUtils.listFiles(geodeHomeDirectory, null, 
true);
-    Set<String> sortedContent = new TreeSet<>();
-    contents.forEach(content -> {
-      Path path = Paths.get(content.getPath());
-      // replacing '\' with '/' to test on windows properly
-      
sortedContent.add(geodeHomePath.relativize(path).toString().replace('\\', '/'));
-    });
-
-    return sortedContent;
+    assertThat(geodeHomeDirectory)
+        .describedAs(
+            "Please set the GEODE_HOME environment variable to the product 
installation directory.")
+        .isDirectory();
+
+    String versionRegex = "\\d+\\.\\d+\\.\\d+(-SNAPSHOT)?";
+    return FileUtils.listFiles(geodeHomeDirectory, null, true).stream()
+        .map(file -> 
geodeHomePath.relativize(Paths.get(file.getPath())).toString().replace('\\',
+            '/'))
+        .map(entry -> entry.contains("/geode-")
+            ? entry.replaceFirst(versionRegex, "0.0.0") : entry)
+        .map(entry -> entry.contains("Apache_Geode")
+            ? entry.replaceFirst(versionRegex, "0.0.0") : entry)
+        .collect(Collectors.toCollection(TreeSet::new));
   }
-
 }
diff --git 
a/geode-assembly/src/integrationTest/java/org/apache/geode/GeodeDependencyJarIntegrationTest.java
 
b/geode-assembly/src/integrationTest/java/org/apache/geode/GeodeDependencyJarIntegrationTest.java
index 445db39..c490617 100644
--- 
a/geode-assembly/src/integrationTest/java/org/apache/geode/GeodeDependencyJarIntegrationTest.java
+++ 
b/geode-assembly/src/integrationTest/java/org/apache/geode/GeodeDependencyJarIntegrationTest.java
@@ -14,15 +14,14 @@
  */
 package org.apache.geode;
 
-import static org.junit.Assert.assertTrue;
+import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.Arrays;
-import java.util.Set;
-import java.util.TreeSet;
+import java.util.List;
 import java.util.jar.JarFile;
 import java.util.jar.Manifest;
 import java.util.stream.Collectors;
@@ -38,7 +37,7 @@ import org.apache.geode.util.test.TestUtil;
 public class GeodeDependencyJarIntegrationTest {
 
   private static final String GEODE_HOME = System.getenv("GEODE_HOME");
-  private Set<String> expectedClasspathElements;
+  private List<String> expectedClasspathElements;
 
   @Before
   public void loadExpectedClassPath() throws IOException {
@@ -47,40 +46,30 @@ public class GeodeDependencyJarIntegrationTest {
             "/dependency_classpath.txt");
 
     expectedClasspathElements =
-        
Files.lines(Paths.get(dependencyClasspath)).collect(Collectors.toSet());
+        
Files.lines(Paths.get(dependencyClasspath)).collect(Collectors.toList());
   }
 
   @Test
   public void verifyManifestClassPath() throws IOException {
-    Set<String> currentClasspathElements = getManifestClassPath();
-
+    List<String> currentClasspathElements = getManifestClassPath();
     Files.write(Paths.get("dependency_classpath.txt"), 
currentClasspathElements);
 
-    Set<String> newClasspathElements = new TreeSet<>(currentClasspathElements);
-    newClasspathElements.removeAll(expectedClasspathElements);
-    Set<String> missingClasspathElements = new 
TreeSet<>(expectedClasspathElements);
-    missingClasspathElements.removeAll(currentClasspathElements);
-
-    String message =
-        "The geode-dependency jar's manifest classpath has changed. Verify 
dependencies."
-            + "\nWhen fixed, copy 
geode-assembly/build/integrationTest/dependency_classpath.txt"
-            + "\nto src/integrationTest/resources/dependency_classpath.txt"
-            + "\nRemoved Elements\n--------------\n"
-            + String.join("\n", missingClasspathElements) + "\n\nAdded 
Elements\n--------------\n"
-            + String.join("\n", newClasspathElements) + "\n\n";
-
-    assertTrue(message, 
expectedClasspathElements.equals(currentClasspathElements));
+    assertThat(getManifestClassPath())
+        .describedAs("The geode-dependency jar's manifest classpath has 
changed. Verify "
+            + "dependencies and copy 
geode-assembly/build/integrationTest/dependency_classpath.txt "
+            + "to src/integrationTest/resources/dependency_classpath.txt")
+        .containsExactlyElementsOf(expectedClasspathElements);
   }
 
   /**
    * Find all of the jars bundled with the project. Key is the name of the 
jar, value is the path.
    */
-  private Set<String> getManifestClassPath() throws IOException {
+  private List<String> getManifestClassPath() throws IOException {
     File geodeHomeDirectory = new File(GEODE_HOME);
-
-    assertTrue(
-        "Please set the GEODE_HOME environment variable to the product 
installation directory.",
-        geodeHomeDirectory.isDirectory());
+    assertThat(geodeHomeDirectory)
+        .describedAs(
+            "Please set the GEODE_HOME environment variable to the product 
installation directory.")
+        .isDirectory();
 
     JarFile geodeDependencies =
         new JarFile(new File(geodeHomeDirectory, 
"lib/geode-dependencies.jar"));
@@ -89,6 +78,9 @@ public class GeodeDependencyJarIntegrationTest {
 
     String classpath = 
geodeDependenciesManifest.getMainAttributes().getValue("Class-Path");
 
-    return Arrays.stream(classpath.split(" ")).collect(Collectors.toSet());
+    return Arrays.stream(classpath.split(" "))
+        .map(entry -> entry.contains("geode")
+            ? entry.replaceFirst("\\d+\\.\\d+\\.\\d+(-SNAPSHOT)?", "0.0.0") : 
entry)
+        .collect(Collectors.toList());
   }
 }
diff --git a/geode-assembly/src/integrationTest/resources/assembly_content.txt 
b/geode-assembly/src/integrationTest/resources/assembly_content.txt
index 59f8506..9cd4c19 100644
--- a/geode-assembly/src/integrationTest/resources/assembly_content.txt
+++ b/geode-assembly/src/integrationTest/resources/assembly_content.txt
@@ -876,20 +876,20 @@ lib/commons-validator-1.6.jar
 lib/fastutil-8.2.2.jar
 lib/findbugs-annotations-1.3.9-1.jar
 lib/geo-0.7.1.jar
-lib/geode-common-1.9.0-SNAPSHOT.jar
-lib/geode-connectors-1.9.0-SNAPSHOT.jar
-lib/geode-core-1.9.0-SNAPSHOT.jar
-lib/geode-cq-1.9.0-SNAPSHOT.jar
+lib/geode-common-0.0.0.jar
+lib/geode-connectors-0.0.0.jar
+lib/geode-core-0.0.0.jar
+lib/geode-cq-0.0.0.jar
 lib/geode-dependencies.jar
-lib/geode-jca-1.9.0-SNAPSHOT.rar
-lib/geode-json-1.9.0-SNAPSHOT.jar
-lib/geode-lucene-1.9.0-SNAPSHOT.jar
-lib/geode-old-client-support-1.9.0-SNAPSHOT.jar
-lib/geode-protobuf-1.9.0-SNAPSHOT.jar
-lib/geode-protobuf-messages-1.9.0-SNAPSHOT.jar
-lib/geode-rebalancer-1.9.0-SNAPSHOT.jar
-lib/geode-wan-1.9.0-SNAPSHOT.jar
-lib/geode-web-1.9.0-SNAPSHOT.jar
+lib/geode-jca-0.0.0.rar
+lib/geode-json-0.0.0.jar
+lib/geode-lucene-0.0.0.jar
+lib/geode-old-client-support-0.0.0.jar
+lib/geode-protobuf-0.0.0.jar
+lib/geode-protobuf-messages-0.0.0.jar
+lib/geode-rebalancer-0.0.0.jar
+lib/geode-wan-0.0.0.jar
+lib/geode-web-0.0.0.jar
 lib/gfsh-dependencies.jar
 lib/grumpy-core-0.2.2.jar
 lib/jackson-annotations-2.9.7.jar
@@ -950,11 +950,11 @@ lib/spring-core-4.3.20.RELEASE.jar
 lib/spring-expression-4.3.20.RELEASE.jar
 lib/spring-shell-1.2.0.RELEASE.jar
 lib/spring-web-4.3.20.RELEASE.jar
-tools/ClientProtocol/geode-protobuf-messages-definitions-1.9.0-SNAPSHOT.zip
-tools/Extensions/geode-web-1.9.0-SNAPSHOT.war
-tools/Extensions/geode-web-api-1.9.0-SNAPSHOT.war
-tools/Modules/Apache_Geode_Modules-1.9.0-SNAPSHOT-AppServer.zip
-tools/Modules/Apache_Geode_Modules-1.9.0-SNAPSHOT-Tomcat.zip
-tools/Modules/Apache_Geode_Modules-1.9.0-SNAPSHOT-tcServer.zip
-tools/Modules/Apache_Geode_Modules-1.9.0-SNAPSHOT-tcServer30.zip
-tools/Pulse/geode-pulse-1.9.0-SNAPSHOT.war
+tools/ClientProtocol/geode-protobuf-messages-definitions-0.0.0.zip
+tools/Extensions/geode-web-0.0.0.war
+tools/Extensions/geode-web-api-0.0.0.war
+tools/Modules/Apache_Geode_Modules-0.0.0-AppServer.zip
+tools/Modules/Apache_Geode_Modules-0.0.0-Tomcat.zip
+tools/Modules/Apache_Geode_Modules-0.0.0-tcServer.zip
+tools/Modules/Apache_Geode_Modules-0.0.0-tcServer30.zip
+tools/Pulse/geode-pulse-0.0.0.war
diff --git 
a/geode-assembly/src/integrationTest/resources/dependency_classpath.txt 
b/geode-assembly/src/integrationTest/resources/dependency_classpath.txt
index b6cf79d..7c10995 100644
--- a/geode-assembly/src/integrationTest/resources/dependency_classpath.txt
+++ b/geode-assembly/src/integrationTest/resources/dependency_classpath.txt
@@ -1,71 +1,71 @@
-shiro-core-1.4.0.jar
-lucene-analyzers-common-6.6.2.jar
+geode-common-0.0.0.jar
+geode-json-0.0.0.jar
+geode-core-0.0.0.jar
+geode-connectors-0.0.0.jar
+geode-lucene-0.0.0.jar
+geode-old-client-support-0.0.0.jar
+geode-protobuf-0.0.0.jar
+geode-protobuf-messages-0.0.0.jar
+geode-wan-0.0.0.jar
+geode-cq-0.0.0.jar
+geode-rebalancer-0.0.0.jar
+antlr-2.7.7.jar
+jgroups-3.6.14.Final.jar
 jackson-databind-2.9.7.jar
-netty-all-4.1.31.Final.jar
+jackson-annotations-2.9.7.jar
+spring-shell-1.2.0.RELEASE.jar
+commons-io-2.6.jar
+commons-validator-1.6.jar
+activation-1.1.1.jar
+jaxb-api-2.2.11.jar
+jaxb-core-2.2.11.jar
+jaxb-impl-2.2.11.jar
 commons-lang3-3.8.1.jar
-geode-common-1.9.0-SNAPSHOT.jar
-geode-core-1.9.0-SNAPSHOT.jar
-commons-logging-1.2.jar
-geode-old-client-support-1.9.0-SNAPSHOT.jar
+netty-all-4.1.31.Final.jar
+fastutil-8.2.2.jar
+javax.resource-api-1.7.jar
+jna-4.1.0.jar
+jopt-simple-5.0.4.jar
+log4j-slf4j-impl-2.11.1.jar
+log4j-core-2.11.1.jar
+log4j-jcl-2.11.1.jar
 log4j-jul-2.11.1.jar
+log4j-api-2.11.1.jar
+jetty-webapp-9.4.12.v20180830.jar
+spring-core-4.3.20.RELEASE.jar
+snappy-0.4.jar
+shiro-core-1.4.0.jar
+classgraph-4.0.6.jar
+rmiio-2.1.2.jar
+jansi-1.17.1.jar
+shiro-cache-1.4.0.jar
+shiro-crypto-hash-1.4.0.jar
 shiro-crypto-cipher-1.4.0.jar
+shiro-config-ogdl-1.4.0.jar
+shiro-config-core-1.4.0.jar
 shiro-event-1.4.0.jar
-jline-2.12.jar
-shiro-crypto-hash-1.4.0.jar
-fastutil-8.2.2.jar
-activation-1.1.1.jar
-javax.servlet-api-3.1.0.jar
-jgroups-3.6.14.Final.jar
 shiro-crypto-core-1.4.0.jar
 shiro-lang-1.4.0.jar
-jetty-security-9.4.12.v20180830.jar
-lucene-queryparser-6.6.2.jar
 slf4j-api-1.7.25.jar
-spring-core-4.3.20.RELEASE.jar
-jansi-1.17.1.jar
 jackson-core-2.9.7.jar
-geode-wan-1.9.0-SNAPSHOT.jar
-jetty-xml-9.4.12.v20180830.jar
-geode-lucene-1.9.0-SNAPSHOT.jar
-geode-cq-1.9.0-SNAPSHOT.jar
+commons-beanutils-1.9.3.jar
+commons-logging-1.2.jar
 commons-collections-3.2.2.jar
-jetty-webapp-9.4.12.v20180830.jar
-log4j-jcl-2.11.1.jar
-jna-4.1.0.jar
-geode-rebalancer-1.9.0-SNAPSHOT.jar
-rmiio-2.1.2.jar
-commons-codec-1.10.jar
-log4j-api-2.11.1.jar
+javax.transaction-api-1.2.jar
+jetty-xml-9.4.12.v20180830.jar
+jetty-servlet-9.4.12.v20180830.jar
+jline-2.12.jar
+jetty-security-9.4.12.v20180830.jar
 jetty-server-9.4.12.v20180830.jar
-geode-connectors-1.9.0-SNAPSHOT.jar
-HikariCP-3.2.0.jar
-jaxb-impl-2.2.11.jar
-jopt-simple-5.0.4.jar
-jetty-util-9.4.12.v20180830.jar
-lucene-analyzers-phonetic-6.6.2.jar
-shiro-config-ogdl-1.4.0.jar
 jetty-http-9.4.12.v20180830.jar
-geode-protobuf-1.9.0-SNAPSHOT.jar
-classgraph-4.0.6.jar
-snappy-0.4.jar
-javax.resource-api-1.7.jar
-protobuf-java-3.6.1.jar
-lucene-queries-6.6.2.jar
-geode-json-1.9.0-SNAPSHOT.jar
 jetty-io-9.4.12.v20180830.jar
+jetty-util-9.4.12.v20180830.jar
+javax.servlet-api-3.1.0.jar
+HikariCP-3.2.0.jar
+lucene-analyzers-phonetic-6.6.2.jar
+lucene-analyzers-common-6.6.2.jar
+lucene-queryparser-6.6.2.jar
 lucene-core-6.6.2.jar
-spring-shell-1.2.0.RELEASE.jar
-jaxb-api-2.2.11.jar
-jackson-annotations-2.9.7.jar
-log4j-slf4j-impl-2.11.1.jar
-jetty-servlet-9.4.12.v20180830.jar
-jaxb-core-2.2.11.jar
-commons-beanutils-1.9.3.jar
-commons-io-2.6.jar
-commons-validator-1.6.jar
-shiro-config-core-1.4.0.jar
-javax.transaction-api-1.2.jar
-antlr-2.7.7.jar
-shiro-cache-1.4.0.jar
-geode-protobuf-messages-1.9.0-SNAPSHOT.jar
-log4j-core-2.11.1.jar
+lucene-queries-6.6.2.jar
+commons-codec-1.10.jar
+protobuf-java-3.6.1.jar
diff --git a/gradle/publish.gradle b/gradle/publish.gradle
index dc0e708..debde74 100644
--- a/gradle/publish.gradle
+++ b/gradle/publish.gradle
@@ -149,7 +149,13 @@ subprojects {
         def expectedPom = new XmlParser().parse(expectedPomFile.toString())
         def expectedDependencies = new TreeSet()
         expectedPom.dependencies.dependency.each() {
-          expectedDependencies.add(it as String)
+          def dep = it as String
+          if (dep.contains("org.apache.geode")) {
+            // since the project version is the source of truth, use that for 
comparison instead of
+            // whatever is stored in the expected pom file
+            dep = 
dep.replaceFirst("(.*\\[)(\\d+.\\d+.\\d+(-SNAPSHOT)?)(\\].*)", '$1' + version + 
'$4')
+          }
+          expectedDependencies.add(dep)
         }
 
         def actualPomFile = 
generatePomFileForMavenPublication.outputs.files.first()

Reply via email to