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

ayegorov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new 9656202f62 [improve][tests] Backwards compat tests: added new 
versions, pulsar upgrade cases, read check from old server (#3981)
9656202f62 is described below

commit 9656202f628e309ea2f14ea02b570cd3723b5bdc
Author: Andrey Yegorov <[email protected]>
AuthorDate: Wed Jun 5 13:24:02 2024 -0700

    [improve][tests] Backwards compat tests: added new versions, pulsar upgrade 
cases, read check from old server (#3981)
    
    * Backwards compat tests: added new versions, pulsar upgrade cases, read 
check from old server
    * upgrade tests with crc32c
    * Fail integration tests if no tests found
---
 .github/workflows/bk-ci.yml                        |  6 +-
 .../tests/backwardcompat/TestCompatUpgrade.groovy  | 74 +++++++++++++++++++---
 .../all-released-versions-image/Dockerfile         |  5 +-
 .../integration/utils/BookKeeperClusterUtils.java  | 11 ++--
 4 files changed, 76 insertions(+), 20 deletions(-)

diff --git a/.github/workflows/bk-ci.yml b/.github/workflows/bk-ci.yml
index 9d37b87692..2a3a459c51 100644
--- a/.github/workflows/bk-ci.yml
+++ b/.github/workflows/bk-ci.yml
@@ -326,14 +326,14 @@ jobs:
         run: mvn -B -nsu clean install -Pdocker -DskipTests
 
       - name: Test current server with old clients
-        run: mvn -B -nsu -DbackwardCompatTests -pl 
:backward-compat-current-server-old-clients test
+        run: mvn -B -nsu -DbackwardCompatTests -DfailIfNoTests -pl 
:backward-compat-current-server-old-clients test
 
       - name: Test progressive upgrade
-        run: mvn -B -nsu -DbackwardCompatTests -pl :upgrade test
+        run: mvn -B -nsu -DbackwardCompatTests -DfailIfNoTests -pl :upgrade 
test
 
       - name: Other tests
         run: |
-          mvn -B -nsu -DbackwardCompatTests -pl 
:bc-non-fips,:hierarchical-ledger-manager,:hostname-bookieid,:old-cookie-new-cluster,:recovery-no-password,:upgrade-direct
 test
+          mvn -B -nsu -DbackwardCompatTests -DfailIfNoTests -pl 
:bc-non-fips,:hierarchical-ledger-manager,:hostname-bookieid,:old-cookie-new-cluster,:recovery-no-password,:upgrade-direct
 test
 
       - name: Upload container logs on failure
         uses: actions/upload-artifact@v4
diff --git 
a/tests/backward-compat/upgrade/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgrade.groovy
 
b/tests/backward-compat/upgrade/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgrade.groovy
index e7e9a3170a..a79d6b8752 100644
--- 
a/tests/backward-compat/upgrade/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgrade.groovy
+++ 
b/tests/backward-compat/upgrade/src/test/groovy/org/apache/bookkeeper/tests/backwardcompat/TestCompatUpgrade.groovy
@@ -43,7 +43,8 @@ class TestCompatUpgrade {
     @ArquillianResource
     DockerClient docker
 
-    private void testUpgrade(String currentlyRunning, String upgradeTo, 
boolean clientCompatBroken = false,
+    private void testUpgrade(String currentlyRunning, String upgradeTo, String 
digestType = "CRC32",
+                             boolean clientCompatBroken = false,
                              boolean currentlyRunningShutsdownBadly = false) {
         String zookeeper = 
BookKeeperClusterUtils.zookeeperConnectString(docker)
         LOG.info("Upgrading from {} to {}", currentlyRunning, upgradeTo)
@@ -55,15 +56,27 @@ class TestCompatUpgrade {
 
         try {
             def ledger0 = currentRunningBK.createLedger(2, 2,
-                                                        
currentRunningCL.digestType("CRC32"),
-                                                        PASSWD)
+                    currentRunningCL.digestType(digestType),
+                    PASSWD)
             for (int i = 0; i < numEntries; i++) {
                 ledger0.addEntry(("foobar" + i).getBytes())
             }
             ledger0.close()
 
+            // Check whether current client can read from old server
+            def ledger0ro = upgradedBK.openLedger(ledger0.getId(), 
upgradedCL.digestType(digestType), PASSWD)
+            def entries0 = ledger0ro.readEntries(0, numEntries - 1)
+            int jj = 0
+            while (entries0.hasMoreElements()) {
+                def e = entries0.nextElement()
+                Assert.assertEquals(new String(e.getEntry()), "foobar" + jj)
+                jj++
+            }
+            Assert.assertEquals(jj, numEntries)
+            ledger0ro.close()
+
             // Check whether current client can write to old server
-            def ledger1 = upgradedBK.createLedger(2, 2, 
upgradedCL.digestType("CRC32"), PASSWD)
+            def ledger1 = upgradedBK.createLedger(2, 2, 
upgradedCL.digestType(digestType), PASSWD)
             try {
                 ledger1.addEntry("foobar".getBytes())
 
@@ -91,7 +104,7 @@ class TestCompatUpgrade {
             
Assert.assertTrue(BookKeeperClusterUtils.startAllBookiesWithVersion(docker, 
upgradeTo))
 
             // check that old client can read its old ledgers on new server
-            def ledger2 = currentRunningBK.openLedger(ledger0.getId(), 
currentRunningCL.digestType("CRC32"),
+            def ledger2 = currentRunningBK.openLedger(ledger0.getId(), 
currentRunningCL.digestType(digestType),
                                                       PASSWD)
             Assert.assertEquals(numEntries, ledger2.getLastAddConfirmed() + 1 
/* counts from 0 */)
             def entries = ledger2.readEntries(0, ledger2.getLastAddConfirmed())
@@ -142,12 +155,55 @@ class TestCompatUpgrade {
     }
 
     @Test
-    public void test_006_4130to4143() throws Exception {
-        testUpgrade("4.13.0", "4.14.4")
+    public void test_006_4130to4148() throws Exception {
+        testUpgrade("4.13.0", "4.14.8")
+    }
+
+    @Test
+    public void test_007_4148to4155() throws Exception {
+        testUpgrade("4.14.8", "4.15.5")
+    }
+
+    @Test
+    public void test_007_4148to4155_crc32c() throws Exception {
+        testUpgrade("4.14.8", "4.15.5", "CRC32C")
+    }
+
+    @Test
+    public void test_008_4155to4165() throws Exception {
+        testUpgrade("4.15.5", "4.16.5")
+    }
+
+    @Test
+    public void test_008_4155to4165_crc32c() throws Exception {
+        testUpgrade("4.15.5", "4.16.5", "CRC32C")
     }
 
     @Test
-    public void test_007_4143toCurrentMaster() throws Exception {
-        testUpgrade("4.14.4", BookKeeperClusterUtils.CURRENT_VERSION)
+    public void test_008_4165to4170_crc32c() throws Exception {
+        testUpgrade("4.16.5", "4.17.0", "CRC32C")
     }
+
+    @Test
+    public void test_009_4165toCurrentMaster() throws Exception {
+        testUpgrade("4.17.0", BookKeeperClusterUtils.CURRENT_VERSION)
+    }
+
+    @Test
+    public void test_009_4165toCurrentMaster_crc32c() throws Exception {
+        testUpgrade("4.17.0", BookKeeperClusterUtils.CURRENT_VERSION, "CRC32C")
+    }
+
+    // old version pulsar upgrade tests
+    @Test
+    public void test_010_4100to4148_crc32c() throws Exception {
+        testUpgrade("4.10.0", "4.14.8", "CRC32C")
+    }
+
+    // old version pulsar upgrade tests
+    @Test
+    public void test_010_4100to4170_crc32c() throws Exception {
+        testUpgrade("4.10.0", "4.17.0", "CRC32C")
+    }
+
 }
diff --git a/tests/docker-images/all-released-versions-image/Dockerfile 
b/tests/docker-images/all-released-versions-image/Dockerfile
index a8c761c7e8..b38315524b 100644
--- a/tests/docker-images/all-released-versions-image/Dockerfile
+++ b/tests/docker-images/all-released-versions-image/Dockerfile
@@ -49,7 +49,10 @@ RUN wget -nv 
https://archive.apache.org/dist/bookkeeper/bookkeeper-4.10.0/bookke
 RUN wget -nv 
https://archive.apache.org/dist/bookkeeper/bookkeeper-4.11.1/bookkeeper-server-4.11.1-bin.tar.gz{,.sha512,.asc}
 RUN wget -nv 
https://archive.apache.org/dist/bookkeeper/bookkeeper-4.12.1/bookkeeper-server-4.12.1-bin.tar.gz{,.sha512,.asc}
 RUN wget -nv 
https://archive.apache.org/dist/bookkeeper/bookkeeper-4.13.0/bookkeeper-server-4.13.0-bin.tar.gz{,.sha512,.asc}
-RUN wget -nv 
https://archive.apache.org/dist/bookkeeper/bookkeeper-4.14.4/bookkeeper-server-4.14.4-bin.tar.gz{,.sha512,.asc}
+RUN wget -nv 
https://archive.apache.org/dist/bookkeeper/bookkeeper-4.14.8/bookkeeper-server-4.14.8-bin.tar.gz{,.sha512,.asc}
+RUN wget -nv 
https://archive.apache.org/dist/bookkeeper/bookkeeper-4.15.5/bookkeeper-server-4.15.5-bin.tar.gz{,.sha512,.asc}
+RUN wget -nv 
https://archive.apache.org/dist/bookkeeper/bookkeeper-4.16.5/bookkeeper-server-4.16.5-bin.tar.gz{,.sha512,.asc}
+RUN wget -nv 
https://archive.apache.org/dist/bookkeeper/bookkeeper-4.17.0/bookkeeper-server-4.17.0-bin.tar.gz{,.sha512,.asc}
 
 RUN wget -nv https://dist.apache.org/repos/dist/release/bookkeeper/KEYS
 RUN wget -nv 
http://svn.apache.org/repos/asf/zookeeper/bookkeeper/dist/KEYS?p=1620552 -O 
KEYS.old
diff --git 
a/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/BookKeeperClusterUtils.java
 
b/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/BookKeeperClusterUtils.java
index 1e5044999a..34e3a65e5e 100644
--- 
a/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/BookKeeperClusterUtils.java
+++ 
b/tests/integration-tests-utils/src/main/java/org/apache/bookkeeper/tests/integration/utils/BookKeeperClusterUtils.java
@@ -40,14 +40,11 @@ import org.slf4j.LoggerFactory;
 public class BookKeeperClusterUtils {
     public static final String CURRENT_VERSION = 
System.getProperty("currentVersion");
     public static final List<String> OLD_CLIENT_VERSIONS =
-            Arrays.asList("4.8.2", "4.9.2", "4.10.0", "4.11.1", "4.12.1", 
"4.13.0", "4.14.4");
+            Arrays.asList("4.8.2", "4.9.2", "4.10.0", "4.11.1", "4.12.1",
+                    "4.13.0", "4.14.8", "4.15.5", "4.16.5", "4.17.0");
     private static final List<String> 
OLD_CLIENT_VERSIONS_WITH_CURRENT_LEDGER_METADATA_FORMAT =
-            Arrays.asList("4.9.2", "4.10.0", "4.11.1", "4.12.1", "4.13.0", 
"4.14.4");
-
-
-    private static final List<String> OLD_CLIENT_VERSIONS_WITH_OLD_BK_BIN_NAME 
=
-            Arrays.asList("4.9.2", "4.10.0", "4.11.1", "4.12.1", "4.13.0", 
"4.14.3", "4.3-yahoo");
-
+            Arrays.asList("4.9.2", "4.10.0", "4.11.1", "4.12.1",
+                    "4.13.0", "4.14.8", "4.15.5", "4.16.5", "4.17.0");
 
     private static final Logger LOG = 
LoggerFactory.getLogger(BookKeeperClusterUtils.class);
 

Reply via email to