@Override
        public String isConditionMet() {
            if (convergedState == null) return "No cluster state defined yet";

            lastCheckedState = convergedState;
            Matcher m = pattern.matcher(lastCheckedState.toString());
            if (!m.matches() && checkSpaceSubset.isEmpty()) return "Cluster state mismatch";

            for (DummyVdsNode node : nodesToCheck) {
                if (node.getClusterState() == null) return "Node " + node + " has not received a cluster state yet";

                boolean match;
                if (checkAllSpaces) {
                    match = statesInBundle(node.getClusterStateBundle()).stream()
                                                                        .allMatch(state -> pattern
                                                                                .matcher(withoutTimestamps(state.toString()))
                                                                                .matches());
                } else if (!checkSpaceSubset.isEmpty()) {
                    match = checkSpaceSubset.stream().allMatch(space -> {
                        String state = node.getClusterStateBundle().getDerivedBucketSpaceStates()
                                           .getOrDefault(space, AnnotatedClusterState.emptyState()).getClusterState().toString();
                        return pattern.matcher(withoutTimestamps(state)).matches();
                    });
                } else {
                    match = pattern.matcher(withoutTimestamps(node.getClusterState().toString())).matches();
                }

                if (!match) {
                    return "Node " + node + " state mismatch.\n  wanted: " + pattern + "\n  is:     " + node.getClusterStateBundle().toString();
                }
                if (!node.hasPendingGetNodeStateRequest()) {
                    return "Node " + node + " has not received another get node state request yet";
                }
            }
            return null;
        }
Return null if met, why not if it is not met.
clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitCondition.java