Search in sources :

Example 16 with ServerAddress

use of com.mongodb.ServerAddress in project spring-cloud-connectors by spring-cloud.

the class MongoServiceConnectorCreatorTest method cloudMongoCreationWithMultipleHostsByUri.

@Test
public void cloudMongoCreationWithMultipleHostsByUri() throws Exception {
    String uri = String.format("%s://%s:%s@%s:%s/%s", MONGODB_SCHEME, TEST_USERNAME, TEST_PASSWORD, StringUtils.arrayToDelimitedString(TEST_HOSTS, ","), TEST_PORT, TEST_DB);
    MongoServiceInfo serviceInfo = new MongoServiceInfo("id", uri);
    MongoDbFactory mongoDbFactory = testCreator.create(serviceInfo, null);
    assertNotNull(mongoDbFactory);
    MongoClient mongo = (MongoClient) ReflectionTestUtils.getField(mongoDbFactory, "mongo");
    assertNotNull(mongo);
    List<ServerAddress> addresses = extractServerAddresses(mongo);
    assertEquals(3, addresses.size());
    MongoCredential credentials = mongo.getCredentialsList().get(0);
    assertEquals(TEST_USERNAME, credentials.getUserName());
    assertNotNull(credentials.getPassword());
    // Don't do connector.getDatabase().getName() as that will try to initiate the connection
    assertEquals(TEST_DB, ReflectionTestUtils.getField(mongoDbFactory, "databaseName"));
    ServerAddress address1 = addresses.get(0);
    assertEquals(TEST_HOST, address1.getHost());
    assertEquals(TEST_PORT_DEFAULT, address1.getPort());
    ServerAddress address2 = addresses.get(1);
    assertEquals(TEST_HOST_1, address2.getHost());
    assertEquals(TEST_PORT_DEFAULT, address2.getPort());
    ServerAddress address3 = addresses.get(2);
    assertEquals(TEST_HOST_2, address3.getHost());
    assertEquals(TEST_PORT, address3.getPort());
}
Also used : MongoClient(com.mongodb.MongoClient) MongoDbFactory(org.springframework.data.mongodb.MongoDbFactory) MongoCredential(com.mongodb.MongoCredential) ServerAddress(com.mongodb.ServerAddress) MongoServiceInfo(org.springframework.cloud.service.common.MongoServiceInfo) Test(org.junit.Test)

Example 17 with ServerAddress

use of com.mongodb.ServerAddress in project spring-boot by spring-projects.

the class ReactiveMongoClientFactory method createNetworkMongoClient.

private MongoClient createNetworkMongoClient(MongoClientSettings settings) {
    if (hasCustomAddress() || hasCustomCredentials()) {
        if (this.properties.getUri() != null) {
            throw new IllegalStateException("Invalid mongo configuration, " + "either uri or host/port/credentials must be specified");
        }
        Builder builder = builder(settings);
        if (hasCustomCredentials()) {
            List<MongoCredential> credentials = new ArrayList<>();
            String database = this.properties.getAuthenticationDatabase() == null ? this.properties.getMongoClientDatabase() : this.properties.getAuthenticationDatabase();
            credentials.add(MongoCredential.createCredential(this.properties.getUsername(), database, this.properties.getPassword()));
            builder.credentialList(credentials);
        }
        String host = this.properties.getHost() == null ? "localhost" : this.properties.getHost();
        int port = this.properties.getPort() != null ? this.properties.getPort() : MongoProperties.DEFAULT_PORT;
        ClusterSettings clusterSettings = ClusterSettings.builder().hosts(Collections.singletonList(new ServerAddress(host, port))).build();
        builder.clusterSettings(clusterSettings);
        return MongoClients.create(builder.build());
    }
    ConnectionString connectionString = new ConnectionString(this.properties.determineUri());
    return MongoClients.create(createBuilder(settings, connectionString).build());
}
Also used : ClusterSettings(com.mongodb.connection.ClusterSettings) MongoCredential(com.mongodb.MongoCredential) Builder(com.mongodb.async.client.MongoClientSettings.Builder) ArrayList(java.util.ArrayList) ServerAddress(com.mongodb.ServerAddress) ConnectionString(com.mongodb.ConnectionString) ConnectionString(com.mongodb.ConnectionString)

Example 18 with ServerAddress

use of com.mongodb.ServerAddress in project spring-boot by spring-projects.

the class ReactiveMongoClientFactory method createEmbeddedMongoClient.

private MongoClient createEmbeddedMongoClient(MongoClientSettings settings, int port) {
    Builder builder = builder(settings);
    String host = this.properties.getHost() == null ? "localhost" : this.properties.getHost();
    ClusterSettings clusterSettings = ClusterSettings.builder().hosts(Collections.singletonList(new ServerAddress(host, port))).build();
    builder.clusterSettings(clusterSettings);
    return MongoClients.create(builder.build());
}
Also used : ClusterSettings(com.mongodb.connection.ClusterSettings) Builder(com.mongodb.async.client.MongoClientSettings.Builder) ServerAddress(com.mongodb.ServerAddress) ConnectionString(com.mongodb.ConnectionString)

Example 19 with ServerAddress

use of com.mongodb.ServerAddress in project spring-boot by spring-projects.

the class MongoClientFactory method createNetworkMongoClient.

private MongoClient createNetworkMongoClient(MongoClientOptions options) {
    if (hasCustomAddress() || hasCustomCredentials()) {
        if (this.properties.getUri() != null) {
            throw new IllegalStateException("Invalid mongo configuration, " + "either uri or host/port/credentials must be specified");
        }
        if (options == null) {
            options = MongoClientOptions.builder().build();
        }
        List<MongoCredential> credentials = new ArrayList<>();
        if (hasCustomCredentials()) {
            String database = this.properties.getAuthenticationDatabase() == null ? this.properties.getMongoClientDatabase() : this.properties.getAuthenticationDatabase();
            credentials.add(MongoCredential.createCredential(this.properties.getUsername(), database, this.properties.getPassword()));
        }
        String host = this.properties.getHost() == null ? "localhost" : this.properties.getHost();
        int port = this.properties.getPort() != null ? this.properties.getPort() : MongoProperties.DEFAULT_PORT;
        return new MongoClient(Collections.singletonList(new ServerAddress(host, port)), credentials, options);
    }
    // The options and credentials are in the URI
    return new MongoClient(new MongoClientURI(this.properties.determineUri(), builder(options)));
}
Also used : MongoClient(com.mongodb.MongoClient) MongoCredential(com.mongodb.MongoCredential) MongoClientURI(com.mongodb.MongoClientURI) ArrayList(java.util.ArrayList) ServerAddress(com.mongodb.ServerAddress)

Example 20 with ServerAddress

use of com.mongodb.ServerAddress in project spring-boot by spring-projects.

the class ReactiveMongoClientFactoryTests method extractServerAddresses.

private List<ServerAddress> extractServerAddresses(MongoClient client) {
    MongoClientSettings settings = client.getSettings();
    ClusterSettings clusterSettings = settings.getClusterSettings();
    List<ServerAddress> allAddresses = clusterSettings.getHosts();
    return allAddresses;
}
Also used : ClusterSettings(com.mongodb.connection.ClusterSettings) ServerAddress(com.mongodb.ServerAddress) MongoClientSettings(com.mongodb.async.client.MongoClientSettings)

Aggregations

ServerAddress (com.mongodb.ServerAddress)58 Test (org.junit.Test)22 MongoClient (com.mongodb.MongoClient)13 MongoCredential (com.mongodb.MongoCredential)9 ArrayList (java.util.ArrayList)9 Before (org.junit.Before)9 TagSet (com.mongodb.TagSet)4 ClusterDescription (com.mongodb.connection.ClusterDescription)4 ClusterSettings (com.mongodb.connection.ClusterSettings)4 MongoClient (com.mongodb.reactivestreams.client.MongoClient)4 Tag (com.mongodb.Tag)3 MongoDatabase (com.mongodb.client.MongoDatabase)3 ServerDescription (com.mongodb.connection.ServerDescription)3 UnknownHostException (java.net.UnknownHostException)3 Date (java.util.Date)3 ChunkInfo (org.apache.drill.exec.store.mongo.common.ChunkInfo)3 BsonDocument (org.bson.BsonDocument)3 DataXException (com.alibaba.datax.common.exception.DataXException)2 ConnectionString (com.mongodb.ConnectionString)2 MongoClientURI (com.mongodb.MongoClientURI)2