An incomplete shard snapshot will prevent a shard from moving away from a node (see `SnapshotInProgressAllocationDecider`). That means that when a shard snapshot completes it may become possible to perform some shard movements that previously were not possible, so we should trigger a reroute to start those movements. AFAICT we do not trigger such a reroute today.
test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java
public static int randomNonNegativeInt() {
        return randomInt() & Integer.MAX_VALUE;
    }
    public static float randomFloat() {
        return random().nextFloat();
    }
    public static double randomDouble() {
        return random().nextDouble();
    }
    public static DoubleStream randomDoubles() {
        return random().doubles();
    }
    public static DoubleStream randomDoubles(long streamSize) {
        return random().doubles(streamSize);
    }
    /**
     * Returns a double value in the interval [start, end) if lowerInclusive is
     * set to true, (start, end) otherwise.
     *
     * @param start          lower bound of interval to draw uniformly distributed random numbers from
     * @param end            upper bound
     * @param lowerInclusive whether or not to include lower end of the interval
     */
    public static double randomDoubleBetween(double start, double end, boolean lowerInclusive) {
        double result = 0.0;
        if (start == -Double.MAX_VALUE || end == Double.MAX_VALUE) {
            
            result = Double.longBitsToDouble(randomLong());
            while (result < start || result > end || Double.isNaN(result)) {
                result = Double.longBitsToDouble(randomLong());