### CI Link

https://gradle-enterprise.elastic.co/s/gcyi7azxnlpck/tests/:x-pack:plugin:autoscaling:test/org.elasticsearch.xpack.autoscaling.capacity.AutoscalingDeciderResultsTests/testRequiredCapacity

### Repro line

`./gradlew ':x-pack:plugin:autoscaling:test' --tests "org.elasticsearch.xpack.autoscaling.capacity.AutoscalingDeciderResultsTests.testRequiredCapacity" -Dtests.seed=2E2DFCE718729D4D -Dtests.locale=en-PH -Dtests.timezone=AST -Druntime.java=17`

### Does it reproduce?

Yes

### Applicable branches

main

### Failure history

https://gradle-enterprise.elastic.co/scans/tests?search.timeZoneId=Europe/Berlin&tests.container=org.elasticsearch.xpack.autoscaling.capacity.AutoscalingDeciderResultsTests&tests.test=testRequiredCapacity

### Failure excerpt

```
java.lang.IllegalArgumentException: processors must be a non-negative number; provided [0.0]
        at __randomizedtesting.SeedInfo.seed([2E2DFCE718729D4D:F14848089DDDD218]:0)
        at org.elasticsearch.common.unit.Processors.of(Processors.java:58)
        at org.elasticsearch.xpack.autoscaling.capacity.AutoscalingCapacity$Builder.total(AutoscalingCapacity.java:288)
        at org.elasticsearch.xpack.autoscaling.capacity.AutoscalingDeciderResultsTests.randomCapacity(AutoscalingDeciderResultsTests.java:161)
        at org.elasticsearch.xpack.autoscaling.capacity.AutoscalingDeciderResultsTests.lambda$testRequiredCapacity$1(AutoscalingDeciderResultsTests.java:65)
        at java.base/java.util.stream.IntPipeline$1$1.accept(IntPipeline.java:180)
        at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Streams.java:104)
        at java.base/java.util.Spliterator$OfInt.forEachRemaining(Spliterator.java:711)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
```
x-pack/plugin/autoscaling/src/test/java/org/elasticsearch/xpack/autoscaling/capacity/AutoscalingCalculateCapacityServiceTests.java
boolean useOtherRoles = randomBoolean();
            DiscoveryNode node = new DiscoveryNode(
                nodeId,
                buildNewFakeTransportAddress(),
                Map.of(),
                useOtherRoles ? otherRoles : roles,
                Version.CURRENT
            );
            nodes.add(node);
            if (useOtherRoles == false) {
                long total = randomLongBetween(1, 1L << 40);
                DiskUsage diskUsage = new DiskUsage(nodeId, null, randomAlphaOfLength(5), total, randomLongBetween(0, total));
                leastUsages.put(nodeId, diskUsage);
                if (randomBoolean()) {
                    diskUsage = new DiskUsage(nodeId, null, diskUsage.getPath(), total, diskUsage.getFreeBytes());
                }
                mostUsages.put(nodeId, diskUsage);
                sumTotal += total;
                maxTotal = Math.max(total, maxTotal);
                expectedNodes.add(node);
            } else {
                long total1 = randomLongBetween(0, 1L << 40);
                leastUsages.put(nodeId, new DiskUsage(nodeId, null, randomAlphaOfLength(5), total1, randomLongBetween(0, total1)));
                long total2 = randomLongBetween(0, 1L << 40);
                mostUsages.put(nodeId, new DiskUsage(nodeId, null, randomAlphaOfLength(5), total2, randomLongBetween(0, total2)));
            }
        }
        state = ClusterState.builder(ClusterName.DEFAULT).nodes(nodes).build();
        info = new ClusterInfo(leastUsages, mostUsages, Map.of(), Map.of(), Map.of(), Map.of());
        context = new AutoscalingCalculateCapacityService.DefaultAutoscalingDeciderContext(