This is an automated email from the ASF dual-hosted git repository.

gitgabrio pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-drools.git


The following commit(s) were added to refs/heads/main by this push:
     new 7816a87668 [incubator-kie-issues#804] Fix flaky test (checked with 
2000000 iterations) (#5644)
7816a87668 is described below

commit 7816a87668fe2afbeb3b35786603771aadb35513
Author: Gabriele Cardosi <[email protected]>
AuthorDate: Tue Jan 9 14:44:20 2024 +0100

    [incubator-kie-issues#804] Fix flaky test (checked with 2000000 iterations) 
(#5644)
    
    Co-authored-by: BAMOE CI <[email protected]>
---
 .../evaluator/core/PMMLRuntimeContextImplTest.java | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git 
a/kie-pmml-trusty/kie-pmml-evaluator/kie-pmml-evaluator-core/src/test/java/org/kie/pmml/evaluator/core/PMMLRuntimeContextImplTest.java
 
b/kie-pmml-trusty/kie-pmml-evaluator/kie-pmml-evaluator-core/src/test/java/org/kie/pmml/evaluator/core/PMMLRuntimeContextImplTest.java
index ee55a8b19c..c8bfeca9e5 100644
--- 
a/kie-pmml-trusty/kie-pmml-evaluator/kie-pmml-evaluator-core/src/test/java/org/kie/pmml/evaluator/core/PMMLRuntimeContextImplTest.java
+++ 
b/kie-pmml-trusty/kie-pmml-evaluator/kie-pmml-evaluator-core/src/test/java/org/kie/pmml/evaluator/core/PMMLRuntimeContextImplTest.java
@@ -22,9 +22,9 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Random;
 import java.util.concurrent.atomic.AtomicReference;
-import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
+import org.apache.commons.math3.util.Precision;
 import org.assertj.core.data.Percentage;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -88,23 +88,27 @@ class PMMLRuntimeContextImplTest {
         AtomicReference<Double> totalReference = new 
AtomicReference<>(initialTotalProbability);
         Random rand = new Random();
         List<Double> doubles = IntStream.range(0, 3).mapToDouble(value -> {
-                    double currentTotal = totalReference.get();
-                    int nextInt = Math.abs(rand.nextInt((int) (currentTotal * 
100)));
-                    double toReturn = (double) nextInt / 100;
-                    totalReference.set(currentTotal - toReturn);
-                    return toReturn;
-                }).boxed().sorted((f1, f2) -> Double.compare(f2, f1))
-                .collect(Collectors.toList());
+            double remainingProbability = totalReference.get();
+            double toReturn = invalidBound(remainingProbability) ? 0.00 :
+                    Precision.round(rand.nextDouble(remainingProbability), 2);
+            totalReference.set(Precision.round((remainingProbability - 
toReturn), 2));
+            return toReturn;
+        }).boxed().sorted((f1, f2) -> Double.compare(f2, f1)).toList();
         LinkedHashMap<String, Double> probabilityResultMap = new 
LinkedHashMap<>();
         int counter = 0;
         for (Double toPut : doubles) {
             probabilityResultMap.put("Element-" + counter, toPut);
             counter++;
         }
-        double initialProbability = 
probabilityResultMap.values().stream().mapToDouble(x -> x).sum();
+        double initialProbability = 
Precision.round(probabilityResultMap.values().stream().mapToDouble(x -> 
x).sum(),
+                                                    2);
         
assertThat(initialProbability).isLessThanOrEqualTo(initialTotalProbability);
         LinkedHashMap<String, Double> retrieved = 
PMMLRuntimeContextImpl.getFixedProbabilityMap(probabilityResultMap);
         double totalProbability = retrieved.values().stream().mapToDouble(x -> 
x).sum();
         assertThat(totalProbability).isCloseTo(1.0, 
Percentage.withPercentage(0.01));
     }
+
+    private static boolean invalidBound(double bound) {
+        return (!(0.0 < bound && bound < Double.POSITIVE_INFINITY));
+    }
 }
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to