DBZ-4548 Fix DatabaseVersionResolver comparison logic
This commit is contained in:
parent
4dac97b352
commit
610e8eba73
@ -45,13 +45,13 @@ public boolean isLessThan(int major, int minor, int patch) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (dbVersionMajor == major) {
|
else if (dbVersionMajor == major) {
|
||||||
if (minor == -1 || dbVersionMinor < minor) {
|
if (minor != -1 && dbVersionMinor < minor) {
|
||||||
|
// i.e. db 11.2 and annotation is 11.3
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (dbVersionMinor == minor) {
|
else if (dbVersionMinor == minor) {
|
||||||
if (patch == -1 || dbVersionPatch < patch) {
|
// i.e. db 11.2.1 and annotation is 11.2.2
|
||||||
return true;
|
return patch != -1 && dbVersionPatch < patch;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -81,14 +81,25 @@ public boolean isGreaterThan(int major, int minor, int patch) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (dbVersionMajor == major) {
|
else if (dbVersionMajor == major) {
|
||||||
if (minor == -1 || dbVersionMinor > minor) {
|
if (minor == -1) {
|
||||||
return true;
|
if (dbVersionMinor == 0) {
|
||||||
|
if (patch == -1) {
|
||||||
|
if (dbVersionPatch == 0) {
|
||||||
|
// effectively i.e. 11.0.0 compared to 11, which isn't greater than.
|
||||||
|
// if this is needed, GreaterThanOrEqualTo should be used.
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
else if (dbVersionMinor == minor) {
|
// i.e. 11.0.1 compared to 11
|
||||||
if (patch == -1 || dbVersionPatch > patch) {
|
return dbVersionPatch > 0;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
// i.e. 11.0.2 compared to 11.0.1
|
||||||
|
return dbVersionPatch > patch;
|
||||||
}
|
}
|
||||||
|
// i.e. 11.1 compared to 11
|
||||||
|
return dbVersionMinor > 0;
|
||||||
|
}
|
||||||
|
// i.e. 11.2 compared to 11.1
|
||||||
|
return dbVersionMinor > minor;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,107 @@
|
|||||||
|
/*
|
||||||
|
* Copyright Debezium Authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*/
|
||||||
|
package io.debezium.junit;
|
||||||
|
|
||||||
|
import static org.fest.assertions.Assertions.assertThat;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import io.debezium.junit.DatabaseVersionResolver.DatabaseVersion;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit test to verify that the functionality of {@link DatabaseVersionResolver} is accurate.
|
||||||
|
*
|
||||||
|
* @author Chris Cranford
|
||||||
|
*/
|
||||||
|
public class DatabaseVersionResolverTest {
|
||||||
|
|
||||||
|
private DatabaseVersion databaseVersion;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAnnotationLessThanGivenMajorVersion() throws Exception {
|
||||||
|
// Database version is same major but with later minor/patch values
|
||||||
|
assertThat(checkLessThan(11, 14, 0, 11, -1, -1)).isFalse();
|
||||||
|
// Database version is same major but initial minor/patch of 0
|
||||||
|
assertThat(checkLessThan(11, 0, 0, 11, -1, -1)).isFalse();
|
||||||
|
// Database version is higher major
|
||||||
|
assertThat(checkLessThan(12, 0, 0, 11, -1, -1)).isFalse();
|
||||||
|
// Database version is lower major
|
||||||
|
assertThat(checkLessThan(10, 0, 0, 11, -1, -1)).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAnnotationLessThanOrEqualGivenMajorVersion() throws Exception {
|
||||||
|
// Database version is same major but with later minor/patch values
|
||||||
|
assertThat(checkLessThanEqualTo(11, 14, 0, 11, -1, -1)).isTrue();
|
||||||
|
// Database version is same major but initial minor/patch of 0
|
||||||
|
assertThat(checkLessThanEqualTo(11, 0, 0, 11, -1, -1)).isTrue();
|
||||||
|
// Database version is higher major
|
||||||
|
assertThat(checkLessThanEqualTo(12, 0, 0, 11, -1, -1)).isFalse();
|
||||||
|
// Database version is lower major
|
||||||
|
assertThat(checkLessThanEqualTo(10, 0, 0, 11, -1, -1)).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAnnotationEqualToGivenMajorVersion() throws Exception {
|
||||||
|
// Database version is same major but with later minor/patch values
|
||||||
|
assertThat(checkEqualTo(11, 14, 0, 11, -1, -1)).isTrue();
|
||||||
|
// Database version is same major but initial minor/patch of 0
|
||||||
|
assertThat(checkEqualTo(11, 0, 0, 11, -1, -1)).isTrue();
|
||||||
|
// Database version is higher major
|
||||||
|
assertThat(checkEqualTo(12, 0, 0, 11, -1, -1)).isFalse();
|
||||||
|
// Database version is lower major
|
||||||
|
assertThat(checkEqualTo(10, 0, 0, 11, -1, -1)).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAnnotationGreaterThanOrEqualToGivenMajorVersion() throws Exception {
|
||||||
|
// Database version is same major but with later minor/patch values
|
||||||
|
assertThat(checkGreaterThanOrEqualTo(11, 14, 0, 11, -1, -1)).isTrue();
|
||||||
|
// Database version is same major but initial minor/patch of 0
|
||||||
|
assertThat(checkGreaterThanOrEqualTo(11, 0, 0, 11, -1, -1)).isTrue();
|
||||||
|
// Database version is higher major
|
||||||
|
assertThat(checkGreaterThanOrEqualTo(12, 0, 0, 11, -1, -1)).isTrue();
|
||||||
|
// Database version is lower major
|
||||||
|
assertThat(checkGreaterThanOrEqualTo(10, 0, 0, 11, -1, -1)).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAnnotationGreaterThanGivenMajorVersion() throws Exception {
|
||||||
|
// Database version is same major but with later minor/patch values
|
||||||
|
assertThat(checkGreaterThan(11, 14, 0, 11, -1, -1)).isTrue();
|
||||||
|
// Database version is same major but initial minor/patch of 0
|
||||||
|
assertThat(checkGreaterThan(11, 0, 0, 11, -1, -1)).isFalse();
|
||||||
|
// Database version is higher major
|
||||||
|
assertThat(checkGreaterThan(12, 0, 0, 11, -1, -1)).isTrue();
|
||||||
|
// Database version is lower major
|
||||||
|
assertThat(checkGreaterThan(10, 0, 0, 11, -1, -1)).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkLessThan(int dbMajor, int dbMinor, int dbPatch, int major, int minor, int patch) {
|
||||||
|
final DatabaseVersion dbVersion = new DatabaseVersion(dbMajor, dbMinor, dbPatch);
|
||||||
|
return dbVersion.isLessThan(major, minor, patch);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkLessThanEqualTo(int dbMajor, int dbMinor, int dbPatch, int major, int minor, int patch) {
|
||||||
|
final DatabaseVersion dbVersion = new DatabaseVersion(dbMajor, dbMinor, dbPatch);
|
||||||
|
return dbVersion.isLessThanEqualTo(major, minor, patch);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkEqualTo(int dbMajor, int dbMinor, int dbPatch, int major, int minor, int patch) {
|
||||||
|
final DatabaseVersion dbVersion = new DatabaseVersion(dbMajor, dbMinor, dbPatch);
|
||||||
|
return dbVersion.isEqualTo(major, minor, patch);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkGreaterThanOrEqualTo(int dbMajor, int dbMinor, int dbPatch, int major, int minor, int patch) {
|
||||||
|
final DatabaseVersion dbVersion = new DatabaseVersion(dbMajor, dbMinor, dbPatch);
|
||||||
|
return dbVersion.isGreaterThanEqualTo(major, minor, patch);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkGreaterThan(int dbMajor, int dbMinor, int dbPatch, int major, int minor, int patch) {
|
||||||
|
final DatabaseVersion dbVersion = new DatabaseVersion(dbMajor, dbMinor, dbPatch);
|
||||||
|
return dbVersion.isGreaterThan(major, minor, patch);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user