Skip to content

Commit 833ef7f

Browse files
gbadnermarko-bekhta
authored andcommitted
HV-1831 : Update Cascade tests to use PredefinedScopeHibernateValidator with -p=predefined=true
1 parent 66c7eed commit 833ef7f

File tree

5 files changed

+68
-5
lines changed

5 files changed

+68
-5
lines changed

performance/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@
213213
<properties>
214214
<validation-api.version>2.0.1.Final</validation-api.version>
215215
<beanvalidation-impl.name>Hibernate Validator</beanvalidation-impl.name>
216-
<beanvalidation-impl.version>6.2.0.Final</beanvalidation-impl.version>
216+
<beanvalidation-impl.version>6.2.1-SNAPSHOT</beanvalidation-impl.version>
217217
</properties>
218218
<dependencies>
219219
<dependency>

performance/src/main/java/org/hibernate/validator/performance/BenchmarkRunner.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,21 @@
66
*/
77
package org.hibernate.validator.performance;
88

9+
import java.util.Arrays;
10+
import java.util.Collection;
11+
import java.util.HashSet;
12+
import java.util.Locale;
913
import java.util.Objects;
14+
import java.util.Set;
1015
import java.util.stream.Stream;
1116

17+
import javax.validation.Validation;
18+
import javax.validation.Validator;
19+
import javax.validation.ValidatorFactory;
20+
import javax.validation.constraints.NotNull;
21+
import javax.validation.spi.ValidationProvider;
22+
23+
import org.hibernate.validator.PredefinedScopeHibernateValidator;
1224
import org.hibernate.validator.performance.cascaded.CascadedValidation;
1325
import org.hibernate.validator.performance.cascaded.CascadedWithLotsOfItemsValidation;
1426
import org.hibernate.validator.performance.simple.SimpleValidation;
@@ -22,6 +34,7 @@
2234
import org.openjdk.jmh.runner.options.CommandLineOptions;
2335
import org.openjdk.jmh.runner.options.Options;
2436
import org.openjdk.jmh.runner.options.OptionsBuilder;
37+
import org.openjdk.jmh.util.Optional;
2538

2639
/**
2740
* Class containing main method to run all performance tests.
@@ -31,6 +44,10 @@
3144
*/
3245
public final class BenchmarkRunner {
3346

47+
private static String PREDEFINED_PARAMETER = "predefined";
48+
private static boolean IS_PREDEFINED = false;
49+
private static ValidationProvider<?> validationProvider;
50+
3451
private static final Stream<? extends Class<?>> DEFAULT_TEST_CLASSES = Stream.of(
3552
SimpleValidation.class.getName(),
3653
CascadedValidation.class.getName(),
@@ -58,10 +75,35 @@ public static void main(String[] args) throws RunnerException, CommandLineOption
5875
DEFAULT_TEST_CLASSES.forEach( testClass -> builder.include( testClass.getName() ) );
5976
}
6077

78+
IS_PREDEFINED = isPredefined( commandLineOptions );
79+
6180
Options opt = builder.build();
6281
new Runner( opt ).run();
6382
}
6483

84+
public static ValidatorFactory buildValidatorFactory(Set<String> constraintNames, Set<Class<?>> beanClasses) {
85+
return IS_PREDEFINED
86+
? Validation.byProvider( PredefinedScopeHibernateValidator.class )
87+
.configure()
88+
.builtinConstraints( constraintNames )
89+
.initializeBeanMetaData( beanClasses )
90+
.buildValidatorFactory()
91+
: Validation.buildDefaultValidatorFactory();
92+
}
93+
94+
private static boolean isPredefined(Options commandLineOptions) throws CommandLineOptionException {
95+
Optional<Collection<String>> isPredefinedValues = commandLineOptions.getParameter( PREDEFINED_PARAMETER );
96+
if ( isPredefinedValues.hasValue() ) {
97+
if ( isPredefinedValues.get().size() == 1 ) {
98+
return Boolean.parseBoolean( isPredefinedValues.get().iterator().next() );
99+
}
100+
else {
101+
throw new CommandLineOptionException( "More than one value provided for parameter: " + PREDEFINED_PARAMETER );
102+
}
103+
}
104+
return false;
105+
}
106+
65107
private static Class<?> classForName(String qualifiedName) {
66108
try {
67109
return Class.forName( qualifiedName );

performance/src/main/java/org/hibernate/validator/performance/cascaded/CascadedValidation.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import static org.assertj.core.api.Assertions.assertThat;
1010

11+
import java.util.Collections;
1112
import java.util.HashSet;
1213
import java.util.Set;
1314
import java.util.concurrent.TimeUnit;
@@ -19,6 +20,8 @@
1920
import jakarta.validation.ValidatorFactory;
2021
import jakarta.validation.constraints.NotNull;
2122

23+
import org.hibernate.validator.performance.BenchmarkRunner;
24+
2225
import org.openjdk.jmh.annotations.Benchmark;
2326
import org.openjdk.jmh.annotations.BenchmarkMode;
2427
import org.openjdk.jmh.annotations.Fork;
@@ -42,7 +45,10 @@ public static class CascadedValidationState {
4245
public volatile Person person;
4346

4447
public CascadedValidationState() {
45-
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
48+
ValidatorFactory factory = BenchmarkRunner.buildValidatorFactory(
49+
Collections.singleton( NotNull.class.getName() ),
50+
Collections.singleton( Person.class )
51+
);
4652
validator = factory.getValidator();
4753

4854
// TODO graphs needs to be generated and deeper

performance/src/main/java/org/hibernate/validator/performance/cascaded/CascadedWithLotsOfItemsAndMoreConstraintsValidation.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,22 @@
99
import static org.assertj.core.api.Assertions.assertThat;
1010

1111
import java.util.ArrayList;
12+
import java.util.Arrays;
13+
import java.util.HashSet;
1214
import java.util.List;
1315
import java.util.Set;
1416
import java.util.concurrent.TimeUnit;
1517

1618
import jakarta.validation.ConstraintViolation;
1719
import jakarta.validation.Valid;
18-
import jakarta.validation.Validation;
1920
import jakarta.validation.Validator;
21+
import jakarta.validation.Validation;
2022
import jakarta.validation.ValidatorFactory;
2123
import jakarta.validation.constraints.NotNull;
2224
import jakarta.validation.constraints.Size;
2325

26+
import org.hibernate.validator.performance.BenchmarkRunner;
27+
2428
import org.openjdk.jmh.annotations.Benchmark;
2529
import org.openjdk.jmh.annotations.BenchmarkMode;
2630
import org.openjdk.jmh.annotations.Fork;
@@ -47,7 +51,10 @@ public static class CascadedWithLotsOfItemsValidationState {
4751
public volatile Shop shop;
4852

4953
public CascadedWithLotsOfItemsValidationState() {
50-
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
54+
ValidatorFactory factory = BenchmarkRunner.buildValidatorFactory(
55+
new HashSet<>( Arrays.asList( NotNull.class.getName(), Size.class.getName() ) ),
56+
new HashSet<>( Arrays.asList( Shop.class, Article.class ) )
57+
);
5158
validator = factory.getValidator();
5259

5360
shop = createShop();

performance/src/main/java/org/hibernate/validator/performance/cascaded/CascadedWithLotsOfItemsValidation.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
import static org.assertj.core.api.Assertions.assertThat;
1010

1111
import java.util.ArrayList;
12+
import java.util.Arrays;
13+
import java.util.Collections;
14+
import java.util.HashSet;
1215
import java.util.List;
1316
import java.util.Set;
1417
import java.util.concurrent.TimeUnit;
@@ -20,6 +23,8 @@
2023
import jakarta.validation.ValidatorFactory;
2124
import jakarta.validation.constraints.NotNull;
2225

26+
import org.hibernate.validator.performance.BenchmarkRunner;
27+
2328
import org.openjdk.jmh.annotations.Benchmark;
2429
import org.openjdk.jmh.annotations.BenchmarkMode;
2530
import org.openjdk.jmh.annotations.Fork;
@@ -46,7 +51,10 @@ public static class CascadedWithLotsOfItemsValidationState {
4651
public volatile Shop shop;
4752

4853
public CascadedWithLotsOfItemsValidationState() {
49-
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
54+
ValidatorFactory factory = BenchmarkRunner.buildValidatorFactory(
55+
Collections.singleton( NotNull.class.getName() ),
56+
new HashSet<>( Arrays.asList( Shop.class, Article.class ) )
57+
);
5058
validator = factory.getValidator();
5159

5260
shop = createShop();

0 commit comments

Comments
 (0)