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

technoboy pushed a commit to branch branch-3.2
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/branch-3.2 by this push:
     new b41e0df9762 [fix][test] fix test testSyncNormalPositionWhenTBRecover 
(#22120)
b41e0df9762 is described below

commit b41e0df9762adaa63df7931a80a6ad9d16be2dd9
Author: Xiangying Meng <[email protected]>
AuthorDate: Tue Feb 27 15:38:40 2024 +0800

    [fix][test] fix test testSyncNormalPositionWhenTBRecover (#22120)
    
    ### Motivation
    1. Change to None state before invoking the recovery.
    2. Improve the method `checkTopicTransactionBufferState` to see the test 
result easier.
    ```
    org.awaitility.core.ConditionTimeoutException: Condition with 
org.apache.pulsar.broker.transaction.buffer.TransactionStablePositionTest was 
not fulfilled within 10 seconds.
    
            at 
org.awaitility.core.ConditionAwaiter.await(ConditionAwaiter.java:167)
            at 
org.awaitility.core.CallableCondition.await(CallableCondition.java:78)
            at 
org.awaitility.core.CallableCondition.await(CallableCondition.java:26)
            at 
org.awaitility.core.ConditionFactory.until(ConditionFactory.java:985)
            at 
org.awaitility.core.ConditionFactory.until(ConditionFactory.java:954)
            at 
org.apache.pulsar.broker.transaction.buffer.TransactionStablePositionTest.checkTopicTransactionBufferState(TransactionStablePositionTest.java:239)
            at 
org.apache.pulsar.broker.transaction.buffer.TransactionStablePositionTest.testSyncNormalPositionWhenTBRecover(TransactionStablePositionTest.java:229)
            at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
            at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.base/java.lang.reflect.Method.invoke(Method.java:568)
            at 
org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
            at 
org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
            at 
org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
            at 
org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
            at 
org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
            at 
org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
            at 
org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
            at 
org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
            at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
            at org.testng.TestRunner.privateRun(TestRunner.java:829)
            at org.testng.TestRunner.run(TestRunner.java:602)
            at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
            at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
            at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
            at org.testng.SuiteRunner.run(SuiteRunner.java:330)
            at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
            at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
            at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
            at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
            at org.testng.TestNG.runSuites(TestNG.java:1099)
            at org.testng.TestNG.run(TestNG.java:1067)
            at 
com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:65)
            at 
com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)
    
    ```
    ### Modifications
    1. Change to None state before invoking the recovery.
    2. Improve the method `checkTopicTransactionBufferState` to see the test 
result easier.
---
 .../transaction/buffer/TransactionStablePositionTest.java  | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java
index b3bd2ec4660..2fdfd3a5247 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/buffer/TransactionStablePositionTest.java
@@ -217,14 +217,14 @@ public class TransactionStablePositionTest extends 
TransactionTestBase {
         position = topicTransactionBuffer.getMaxReadPosition();
         assertEquals(position, PositionImpl.EARLIEST);
 
+        // change to None state can recover
+        field.set(topicTransactionBuffer, 
TopicTransactionBufferState.State.None);
+
         // invoke recover
         Method method = 
TopicTransactionBuffer.class.getDeclaredMethod("recover");
         method.setAccessible(true);
         method.invoke(topicTransactionBuffer);
 
-        // change to None state can recover
-        field.set(topicTransactionBuffer, 
TopicTransactionBufferState.State.None);
-
         // recover success again
         checkTopicTransactionBufferState(clientEnableTransaction, 
topicTransactionBuffer);
 
@@ -236,13 +236,15 @@ public class TransactionStablePositionTest extends 
TransactionTestBase {
     private void checkTopicTransactionBufferState(boolean 
clientEnableTransaction,
                                                   TopicTransactionBuffer 
topicTransactionBuffer) {
         // recover success
-        Awaitility.await().until(() -> {
+        Awaitility.await().untilAsserted(() -> {
             if (clientEnableTransaction) {
                 // recover success, client enable transaction will change to 
Ready State
-                return topicTransactionBuffer.getStats(false, 
false).state.equals(Ready.name());
+                assertEquals(topicTransactionBuffer.getStats(false, 
false).state,
+                        Ready.name());
             } else {
                 // recover success, client disable transaction will change to 
NoSnapshot State
-                return topicTransactionBuffer.getStats(false, 
false).state.equals(NoSnapshot.name());
+                assertEquals(topicTransactionBuffer.getStats(false, 
false).state,
+                        NoSnapshot.name());
             }
         });
     }

Reply via email to