in helix-core/src/main/java/org/apache/helix/tools/TestExecutor.java [350:398]
private static boolean compareZnodeValue(ZNRecord actual, ZNRecord expect, ZNRecord diff) {
boolean ret = true;
if (actual == null && expect == null) {
ret = true;
} else if (actual == null && expect != null) {
ret = false;
if (diff != null) {
setZNRecord(diff, expect, "expect");
}
} else if (actual != null && expect == null) {
ret = false;
if (diff != null) {
setZNRecord(diff, actual, "actual");
}
} else {
for (String key : actual.getSimpleFields().keySet()) {
if (compareSingleValue(actual.getSimpleField(key), expect.getSimpleField(key), key, diff) == false) {
ret = false;
}
}
for (String key : expect.getMapFields().keySet()) {
if (!actual.getMapFields().containsKey(key)) {
if (diff != null) {
ret = false;
diff.setMapField(key + "/expect", expect.getMapField(key));
}
} else {
if (compareMapValue(actual.getMapField(key), expect.getMapField(key), key, diff) == false) {
ret = false;
}
}
}
for (String key : actual.getMapFields().keySet()) {
if (!expect.getMapFields().containsKey(key)) {
if (diff != null) {
ret = false;
diff.setMapField(key + "/actual", actual.getMapField(key));
}
} else {
if (compareMapValue(actual.getMapField(key), expect.getMapField(key), key, diff) == false) {
ret = false;
}
}
}
}
return ret;
}