DBZ-5582 Fix RedisDatabaseHistoryIT tests

`RedisSchemaHistoryIT` tests are not reliable as
`testDatabaseHistoryIsSaved` makes assumption about the number of
entries in the database history stream, while
`testRedisConnectionRetry` deletes whole stream at the beginning of
the test. If `testDatabaseHistoryIsSaved` is executed after
`testRedisConnectionRetry`, `testDatabaseHistoryIsSaved` starts to fail.

Don't delete the stream in `testRedisConnectionRetry` and introduce
constant with initial number of entries in the schema history stream.
This commit is contained in:
Vojtech Juranek 2022-09-05 22:51:49 +02:00 committed by Jiri Pechanec
parent 2f8391ea13
commit 0235d4aad5

View File

@ -45,6 +45,7 @@
public class RedisSchemaHistoryIT extends AbstractSchemaHistoryTest {
private static final String STREAM_NAME = "metadata:debezium:schema_history";
private static final int INIT_HISTORY_SIZE = 16; // Initial number of entries in the schema history stream.
protected static Jedis jedis;
@ -67,11 +68,11 @@ protected SchemaHistory createHistory() {
@Test
@FixFor("DBZ-4771")
public void testSchemaHistoryIsSaved() throws Exception {
public void testSchemaHistoryIsSaved() {
jedis = new Jedis(HostAndPort.from(RedisTestResourceLifecycleManager.getRedisContainerAddress()));
Awaitility.await().atMost(Duration.ofSeconds(TestConfigSource.waitForSeconds())).until(() -> {
final long streamLength = jedis.xlen(STREAM_NAME);
return streamLength == 16; // wait until all the DB schema history of the sample mysql DB has loaded
return streamLength >= INIT_HISTORY_SIZE; // wait until all the DB schema history of the sample mysql DB has loaded
});
final List<StreamEntry> entries = jedis.xrange(STREAM_NAME, (StreamEntryID) null, (StreamEntryID) null);
@ -102,9 +103,6 @@ public void testRedisConnectionRetry() throws Exception {
return streamLength > 0;
});
// clear the key
jedis.del(STREAM_NAME);
// pause container
Testing.print("Pausing container");
RedisTestResourceLifecycleManager.pause();
@ -123,12 +121,12 @@ public void testRedisConnectionRetry() throws Exception {
// wait until the db schema history is written for the first time
Awaitility.await().atMost(Duration.ofSeconds(TestConfigSource.waitForSeconds())).until(() -> {
final long streamLength = jedis.xlen(STREAM_NAME);
return streamLength > 0;
return streamLength >= INIT_HISTORY_SIZE;
});
final List<StreamEntry> entries = jedis.xrange(STREAM_NAME, (StreamEntryID) null, (StreamEntryID) null);
Testing.print(entries);
Assertions.assertThat(entries.size() == 1).isTrue();
Assertions.assertThat(entries.get(0).getFields().get("schema")).contains("redis_test");
Assertions.assertThat(entries.size() == INIT_HISTORY_SIZE + 1).isTrue();
Assertions.assertThat(entries.get(INIT_HISTORY_SIZE).getFields().get("schema")).contains("redis_test");
}
private MySqlConnection getMySqlConnection() {