public Set<Integer> nodesThatShouldBeDown(ClusterState state) {
        return calculate(state).nodesThatShouldBeDown();
    }
@Test
    void min_ratio_of_zero_never_takes_down_groups_implicitly() {
        GroupAvailabilityCalculator calc = calcForHierarchicCluster(
                DistributionBuilder.withGroups(2).eachWithNodeCount(4), 0.0);
        assertThat(calc.nodesThatShouldBeDown(clusterState(
                "distributor:8 storage:8")), equalTo(emptySet()));
        // 1 down in each group
        assertThat(calc.nodesThatShouldBeDown(clusterState(
                "distributor:8 storage:8 .0.s:d .4.s:d")), equalTo(emptySet()));
        // 2 down in each group
        assertThat(calc.nodesThatShouldBeDown(clusterState(
                "distributor:8 storage:8 .0.s:d .1.s:d .4.s:d .5.s:d")), equalTo(emptySet()));
        // 3 down in each group
        assertThat(calc.nodesThatShouldBeDown(clusterState(
                "distributor:8 storage:8 .0.s:d .1.s:d .2.s:d .4.s:d .5.s:d .6.s:d")), equalTo(emptySet()));
    }