in helix-core/src/main/java/org/apache/helix/tools/TestExecutor.java [209:263]
private static boolean compareListValue(List<String> actualList, List<String> expectList,
String key, ZNRecord diff) {
boolean ret = true;
if (actualList == null && expectList == null) {
ret = true;
} else if (actualList == null && expectList != null) {
ret = false;
if (diff != null) {
diff.setListField(key + "/expect", expectList);
}
} else if (actualList != null && expectList == null) {
ret = false;
if (diff != null) {
diff.setListField(key + "/actual", actualList);
}
} else {
Iterator<String> itrActual = actualList.iterator();
Iterator<String> itrExpect = expectList.iterator();
if (diff != null && diff.getListField(key + "/expect") == null) {
diff.setListField(key + "/expect", new ArrayList<String>());
}
if (diff != null && diff.getListField(key + "/actual") == null) {
diff.setListField(key + "/actual", new ArrayList<String>());
}
while (itrActual.hasNext() && itrExpect.hasNext()) {
String actual = itrActual.next();
String expect = itrExpect.next();
if (STRING_COMPARATOR.compare(actual, expect) != 0) {
ret = false;
if (diff != null) {
diff.getListField(key + "/expect").add(expect);
diff.getListField(key + "/actual").add(actual);
}
}
}
while (itrActual.hasNext()) {
String actual = itrActual.next();
if (diff != null) {
diff.getListField(key + "/actual").add(actual);
}
}
while (itrExpect.hasNext()) {
String expect = itrExpect.next();
if (diff != null) {
diff.getListField(key + "/expect").add(expect);
}
}
}
return ret;
}