in helix-core/src/main/java/org/apache/helix/tools/TestExecutor.java [272:330]
private static boolean compareMapValue(Map<String, String> actualMap,
Map<String, String> expectMap, String mapKey, ZNRecord diff) {
boolean ret = true;
if (actualMap == null && expectMap == null) {
ret = true;
} else if (actualMap == null && expectMap != null) {
ret = false;
if (diff != null) {
diff.setMapField(mapKey + "/expect", expectMap);
}
} else if (actualMap != null && expectMap == null) {
ret = false;
if (diff != null) {
diff.setMapField(mapKey + "/actual", actualMap);
}
} else {
for (String key : actualMap.keySet()) {
String actual = actualMap.get(key);
if (!expectMap.containsKey(key)) {
ret = false;
if (diff != null) {
setMapField(diff, mapKey + "/actual", key, actual);
}
} else {
String expect = expectMap.get(key);
if (STRING_COMPARATOR.compare(actual, expect) != 0) {
ret = false;
if (diff != null) {
setMapField(diff, mapKey + "/actual", key, actual);
setMapField(diff, mapKey + "/expect", key, expect);
}
}
}
}
for (String key : expectMap.keySet()) {
String expect = expectMap.get(key);
if (!actualMap.containsKey(key)) {
ret = false;
if (diff != null) {
setMapField(diff, mapKey + "/expect", key, expect);
}
} else {
String actual = actualMap.get(key);
if (STRING_COMPARATOR.compare(actual, expect) != 0) {
ret = false;
if (diff != null) {
setMapField(diff, mapKey + "/actual", key, actual);
setMapField(diff, mapKey + "/expect", key, expect);
}
}
}
}
}
return ret;
}