/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ignite.internal.benchmarks.jmh;
import java.util.concurrent.ThreadLocalRandom;
/**
* Base class for all JMH-related benchmarks.
*/
public abstract class JmhAbstractBenchmark {
/**
* Generate random integer value.
*
* @return Value.
*/
protected static int randomInt() {
return ThreadLocalRandom.current().nextInt();
}
/**
* Generate random integer value.
*
* @param max Upper bound.
* @return Value.
*/
protected static int randomInt(int max) {
return ThreadLocalRandom.current().nextInt(max);
}
/**
* Get boolean property.
*
* @param name Name.
* @return Value.
*/
protected static boolean booleanProperty(String name) {
return booleanProperty(name, false);
}
/**
* Get boolean property.
*
* @param name Name.
* @param dflt Default.
* @return Value.
*/
protected static boolean booleanProperty(String name, boolean dflt) {
String val = property(name);
return val != null ? Boolean.parseBoolean(val) : dflt;
}
/**
* Get int property.
*
* @param name Name.
* @return Value.
*/
protected static int intProperty(String name) {
return intProperty(name, 0);
}
/**
* Get int property.
*
* @param name Name.
* @param dflt Default value.
* @return Value.
*/
protected static int intProperty(String name, int dflt) {
String val = property(name);
return val != null ? Integer.parseInt(val) : dflt;
}
/**
* Get string property.
*
* @param name Name.
* @return Result.
*/
protected static String stringProperty(String name) {
return stringProperty(name, null);
}
/**
* Get string property.
*
* @param name Name.
* @param dflt Default value.
* @return Result.
*/
protected static String stringProperty(String name, String dflt) {
String val = property(name);
return val != null ? val : dflt;
}
/**
* Get enum property.
*
* @param name Name.
* @param cls Class.
* @return Value.
*/
@SuppressWarnings("unchecked")
protected static <T> T enumProperty(String name, Class cls) {
return enumProperty(name, cls, null);
}
/**
* Get enum property.
*
* @param name Name.
* @param cls Class.
* @param dflt Default value.
* @return Value.
*/
@SuppressWarnings("unchecked")
protected static <T> T enumProperty(String name, Class cls, T dflt) {
String val = property(name);
return val != null ? (T)Enum.valueOf(cls, val) : dflt;
}
/**
* Get property's value.
*
* @param name Name.
* @return Value.
*/
private static String property(String name) {
return System.getProperty(name);
}
}