In some contexts is unclear why an autoscaling policy decides to request
more resources, i.e. if there's an unassigned shard that remains unassigned
even after adding more resources. It would be help to have more information
around the decisions taken by the deciders so it is easier to understand and
track them.
x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/storage/ReactiveStorageDeciderDecisionTests.java
long invoke(ReactiveStorageDeciderService.AllocationState state);
    }
    private void verify(VerificationSubject subject, long expected, AllocationDecider... allocationDeciders) {
        verify(subject, expected, DATA_HOT_NODE_ROLE, allocationDeciders);
    }
    private void verify(VerificationSubject subject, long expected, DiscoveryNodeRole role, AllocationDecider... allocationDeciders) {
        verify(this.state, subject, expected, role, allocationDeciders);
    }
    private static void verify(
        ClusterState state,
        VerificationSubject subject,
        long expected,
        DiscoveryNodeRole role,
        AllocationDecider... allocationDeciders
    ) {
        ReactiveStorageDeciderService.AllocationState allocationState = new ReactiveStorageDeciderService.AllocationState(
            createContext(state, Set.of(role)),
            DISK_THRESHOLD_SETTINGS,
            createAllocationDeciders(allocationDeciders)
        );
        assertThat(subject.invoke(allocationState), equalTo(expected));
    }
    private void verifyScale(long expectedDifference, String reason, AllocationDecider... allocationDeciders) {
        verifyScale(state, expectedDifference, reason, allocationDeciders);
    }
    private static void verifyScale(ClusterState state, long expectedDifference, String reason, AllocationDecider... allocationDeciders) {
        ReactiveStorageDeciderService decider = new ReactiveStorageDeciderService(
            Settings.EMPTY,