/* * Hibernate OGM, Domain model persistence for NoSQL datastores * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.ogm.perftest.mongodb.nativeapi; import java.io.IOException; import java.io.InputStream; import java.net.UnknownHostException; import java.util.Properties; import java.util.Random; import org.openjdk.jmh.annotations.Scope; import org.openjdk.jmh.annotations.Setup; import org.openjdk.jmh.annotations.State; import com.mongodb.DB; import com.mongodb.MongoClient; import com.mongodb.MongoClientOptions; import com.mongodb.ReadPreference; import com.mongodb.ServerAddress; import com.mongodb.WriteConcern; /** * Base class for MongoDB native API benchmarks. * * @author Gunnar Morling */ public class NativeApiBenchmarkBase { private static Properties properties = new Properties(); static { try ( InputStream resourceAsStream = NativeApiBenchmarkBase.class.getClassLoader().getResourceAsStream( "native-settings.properties" ) ) { properties.load( resourceAsStream ); } catch (IOException e) { throw new RuntimeException( e ); } } @State(Scope.Benchmark) public static class ClientHolder { MongoClient mongo; DB db; Random rand; @Setup public void setupDatastore() throws Exception { MongoClient mongo = getMongoClient(); db = mongo.getDB( properties.getProperty( "database" ) ); db.dropDatabase(); rand = new Random(); } } protected static MongoClient getMongoClient() throws UnknownHostException { ServerAddress serverAddress = new ServerAddress( properties.getProperty( "host" ), 27017 ); MongoClientOptions.Builder optionsBuilder = new MongoClientOptions.Builder(); optionsBuilder.connectTimeout( 1000 ); optionsBuilder.writeConcern( WriteConcern.ACKNOWLEDGED ); optionsBuilder.readPreference( ReadPreference.primary() ); MongoClientOptions clientOptions = optionsBuilder.build(); MongoClient mongo = new MongoClient( serverAddress, clientOptions ); return mongo; } }