Skip to content

Commit b213d9a

Browse files
committed
CDM-22 : missing some test coverage
1 parent d5e0791 commit b213d9a

File tree

2 files changed

+102
-17
lines changed

2 files changed

+102
-17
lines changed

src/main/java/datastax/astra/migrate/cql/features/ConstantColumns.java

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ public boolean initialize(PropertyHelper propertyHelper) {
4141
propertyHelper.getStringList(KnownProperties.TARGET_PRIMARY_KEY));
4242
putMigrateDataTypeList(Property.TARGET_PRIMARY_TYPES_WITHOUT_CONSTANT, targetPrimaryKeyTypesWithoutConstantColumns);
4343

44+
isInitialized = true;
4445
if (!isValid(propertyHelper)) return false;
4546
isEnabled = null!=columnNames && !columnNames.isEmpty();
46-
isInitialized = true;
4747
return true;
4848
}
4949

@@ -82,28 +82,31 @@ private List<MigrateDataType> targetPrimaryKeyTypesWithoutConstantColumns(List<S
8282
}
8383

8484
private boolean isValid(PropertyHelper propertyHelper) {
85-
List<String> columnNames = getStringList(Property.COLUMN_NAMES);
86-
List<MigrateDataType> columnTypes = getMigrateDataTypeList(Property.COLUMN_TYPES);
87-
List<String> columnValues = getStringList(Property.COLUMN_VALUES);
88-
List<MigrateDataType> targetPrimaryKeyTypesWithoutConstantColumns = getMigrateDataTypeList(Property.TARGET_PRIMARY_TYPES_WITHOUT_CONSTANT);
85+
List<String> columnNames = getRawStringList(Property.COLUMN_NAMES);
86+
List<MigrateDataType> columnTypes = getRawMigrateDataTypeList(Property.COLUMN_TYPES);
87+
List<String> columnValues = getRawStringList(Property.COLUMN_VALUES);
88+
List<MigrateDataType> targetPrimaryKeyTypesWithoutConstantColumns = getRawMigrateDataTypeList(Property.TARGET_PRIMARY_TYPES_WITHOUT_CONSTANT);
89+
90+
boolean haveColumnNames = null!=columnNames && !columnNames.isEmpty();
91+
boolean haveColumnTypes = null!=columnTypes && !columnTypes.isEmpty();
92+
boolean haveColumnValues = null!=columnValues && !columnValues.isEmpty();
8993

9094
boolean valid = true;
91-
if (!(columnNames == null || columnNames.isEmpty()) &&
92-
(columnTypes == null || columnTypes.isEmpty()) &&
93-
(columnValues == null || columnValues.isEmpty())
94-
&& !(columnNames != null && !columnNames.isEmpty() &&
95-
columnTypes != null && !columnTypes.isEmpty() &&
96-
columnValues != null && !columnValues.isEmpty())) {
95+
if ((!haveColumnNames && !haveColumnTypes && !haveColumnValues) ||
96+
( haveColumnNames && haveColumnTypes && haveColumnValues)) {
97+
// These are the valid conditions...anything else is not valid
98+
}
99+
else {
97100
logger.error("Properties must all be empty, or all not empty: {}={}, {}={}, {}={} (split by {}={})",
98-
KnownProperties.CONSTANT_COLUMN_NAMES, columnNames,
99-
KnownProperties.CONSTANT_COLUMN_TYPES, columnTypes,
100-
KnownProperties.CONSTANT_COLUMN_VALUES, columnValues,
101-
KnownProperties.CONSTANT_COLUMN_SPLIT_REGEX, propertyHelper.getAsString(KnownProperties.CONSTANT_COLUMN_SPLIT_REGEX));
101+
KnownProperties.CONSTANT_COLUMN_NAMES, columnNames,
102+
KnownProperties.CONSTANT_COLUMN_TYPES, columnTypes,
103+
KnownProperties.CONSTANT_COLUMN_VALUES, columnValues,
104+
KnownProperties.CONSTANT_COLUMN_SPLIT_REGEX, propertyHelper.getAsString(KnownProperties.CONSTANT_COLUMN_SPLIT_REGEX));
102105
valid = false;
103106
}
104107

105-
if (null!=columnNames &&
106-
(columnNames.size() != columnTypes.size() ||
108+
if (haveColumnNames && haveColumnTypes && haveColumnValues &&
109+
(columnNames.size() != columnTypes.size() ||
107110
columnNames.size() != columnValues.size())) {
108111
logger.error("Values must have the same number of elements: {}={}, {}={}, {}={} (split by {}={})",
109112
KnownProperties.CONSTANT_COLUMN_NAMES, columnNames,

src/test/java/datastax/astra/migrate/cql/features/ConstantColumnsTest.java

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,86 @@ public void smokeCQL() {
8383
() -> assertEquals(targetSelect, cqlHelper.getCql(CqlHelper.CQL.TARGET_SELECT_ORIGIN_BY_PK).replaceAll("\\s+"," "))
8484
);
8585
}
86+
87+
@Test
88+
public void test_missingColumnNames() {
89+
setValidSparkConf();
90+
validSparkConf.remove(KnownProperties.CONSTANT_COLUMN_NAMES);
91+
helper.initializeSparkConf(validSparkConf);
92+
feature.initialize(helper);
93+
assertFalse(feature.isEnabled());
94+
}
95+
96+
@Test
97+
public void test_missingColumnValues() {
98+
setValidSparkConf();
99+
validSparkConf.remove(KnownProperties.CONSTANT_COLUMN_VALUES);
100+
helper.initializeSparkConf(validSparkConf);
101+
feature.initialize(helper);
102+
assertFalse(feature.isEnabled());
103+
}
104+
105+
@Test
106+
public void test_missingColumnTypes() {
107+
setValidSparkConf();
108+
validSparkConf.remove(KnownProperties.CONSTANT_COLUMN_TYPES);
109+
helper.initializeSparkConf(validSparkConf);
110+
feature.initialize(helper);
111+
assertFalse(feature.isEnabled());
112+
}
113+
114+
@Test
115+
public void test_mismatch_ValueCount() {
116+
setValidSparkConf();
117+
validSparkConf.set(KnownProperties.CONSTANT_COLUMN_VALUES, "'abcd'");
118+
helper.initializeSparkConf(validSparkConf);
119+
feature.initialize(helper);
120+
assertFalse(feature.isEnabled());
121+
}
122+
123+
@Test
124+
public void test_mismatch_TypeCount() {
125+
setValidSparkConf();
126+
validSparkConf.set(KnownProperties.CONSTANT_COLUMN_TYPES, "1");
127+
helper.initializeSparkConf(validSparkConf);
128+
feature.initialize(helper);
129+
assertFalse(feature.isEnabled());
130+
}
131+
132+
@Test
133+
public void test_wrongValueDelimiter() {
134+
setValidSparkConf();
135+
validSparkConf.set(KnownProperties.CONSTANT_COLUMN_SPLIT_REGEX, "\\|");
136+
helper.initializeSparkConf(validSparkConf);
137+
feature.initialize(helper);
138+
assertFalse(feature.isEnabled());
139+
}
140+
141+
@Test
142+
public void test_emptyDelimiter() {
143+
setValidSparkConf();
144+
validSparkConf.set(KnownProperties.CONSTANT_COLUMN_SPLIT_REGEX, "");
145+
helper.initializeSparkConf(validSparkConf);
146+
feature.initialize(helper);
147+
assertFalse(feature.isEnabled());
148+
}
149+
150+
@Test
151+
public void test_missingPrimaryKeyNames() {
152+
setValidSparkConf();
153+
validSparkConf.remove(KnownProperties.TARGET_PRIMARY_KEY);
154+
helper.initializeSparkConf(validSparkConf);
155+
feature.initialize(helper);
156+
assertTrue(feature.isEnabled());
157+
}
158+
159+
@Test
160+
public void test_missingPrimaryKeyTypes() {
161+
setValidSparkConf();
162+
validSparkConf.remove(KnownProperties.TARGET_PRIMARY_KEY_TYPES);
163+
helper.initializeSparkConf(validSparkConf);
164+
feature.initialize(helper);
165+
assertTrue(feature.isEnabled());
166+
}
167+
86168
}

0 commit comments

Comments
 (0)