Merge pull request #200 from bdrillard/mongo-options

Adds missing mongo options
This commit is contained in:
Michael Klishin 2020-08-10 00:45:44 +03:00 committed by GitHub
commit c2cbdcaa38
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 89 additions and 39 deletions

View file

@ -136,56 +136,78 @@
(ServerAddress. hostname port))) (ServerAddress. hostname port)))
(defn ^MongoClientOptions$Builder mongo-options-builder (defn ^MongoClientOptions$Builder mongo-options-builder
[{:keys [connections-per-host threads-allowed-to-block-for-connection-multiplier [{:keys [add-cluster-listener add-cluster-listeners add-command-listener add-command-listeners
max-wait-time connect-timeout socket-timeout socket-keep-alive auto-connect-retry max-auto-connect-retry-time add-connection-pool-listener add-connection-pool-listeners add-server-listener add-server-listeners
description write-concern cursor-finalizer-enabled read-preference required-replica-set-name add-server-monitor-listener add-server-monitor-listeners always-use-mbeans application-name
add-command-listener always-use-mbeans codec-registry db-decoder-factory db-encoder-factory codec-registry compressor-list connect-timeout connections-per-host cursor-finalizer-enabled
heartbeat-connect-timeout heartbeat-frequency heartbeat-socket-timeout local-threshold db-decoder-factory db-encoder-factory description heartbeat-connect-timeout heartbeat-frequency
max-connection-idle-time max-connection-life-time min-connections-per-host min-heartbeat-frequency heartbeat-socket-timeout local-threshold max-connection-idle-time max-connection-life-time
read-concern server-selection-timeout socket-factory ssl-enabled ssl-invalid-host-name-allowed]}] max-wait-time min-connections-per-host min-heartbeat-frequency read-concern read-preference
required-replica-set-name retry-writes server-selection-timeout server-selector socket-keep-alive
socket-factory socket-timeout ssl-context ssl-enabled ssl-invalid-host-name-allowed
threads-allowed-to-block-for-connection-multiplier write-concern]}]
(let [mob (MongoClientOptions$Builder.)] (let [mob (MongoClientOptions$Builder.)]
(when connections-per-host (when add-cluster-listener
(.connectionsPerHost mob connections-per-host)) (.addClusterListener mob add-cluster-listener))
(when threads-allowed-to-block-for-connection-multiplier (when add-cluster-listeners
(.threadsAllowedToBlockForConnectionMultiplier mob threads-allowed-to-block-for-connection-multiplier)) (doseq [cluster-listener add-cluster-listeners]
(when max-wait-time (.addClusterListener mob cluster-listener)))
(.maxWaitTime mob max-wait-time))
(when connect-timeout
(.connectTimeout mob connect-timeout))
(when socket-timeout
(.socketTimeout mob socket-timeout))
(when socket-keep-alive
(.socketKeepAlive mob socket-keep-alive))
(when read-preference
(.readPreference mob read-preference))
(when description
(.description mob description))
(when write-concern
(.writeConcern mob write-concern))
(when cursor-finalizer-enabled
(.cursorFinalizerEnabled mob cursor-finalizer-enabled))
(when required-replica-set-name
(.requiredReplicaSetName mob required-replica-set-name))
(when add-command-listener (when add-command-listener
(.addCommandListener mob add-command-listener)) (.addCommandListener mob add-command-listener))
(when add-command-listeners
(doseq [command-listener add-command-listeners]
(.addCommandListener mob command-listener)))
(when add-connection-pool-listener
(.addConnectionPoolListener mob add-connection-pool-listener))
(when add-connection-pool-listeners
(doseq [connection-pool-listener add-connection-pool-listeners]
(.addConnectionPoolListener mob connection-pool-listener)))
(when add-server-listener
(.addServerListener mob add-server-listener))
(when add-server-listeners
(doseq [server-listener add-server-listeners]
(.addServerListener mob server-listener)))
(when add-server-monitor-listener
(.addServerMonitorListener mob add-server-monitor-listener))
(when add-server-monitor-listeners
(doseq [server-monitor-listener add-server-monitor-listeners]
(.addServerMonitorListener mob server-monitor-listener)))
(when always-use-mbeans
(.alwaysUseMBeans mob always-use-mbeans))
(when application-name
(.applicationName mob application-name))
(when always-use-mbeans (when always-use-mbeans
(.alwaysUseMBeans mob always-use-mbeans)) (.alwaysUseMBeans mob always-use-mbeans))
(when codec-registry (when codec-registry
(.codecRegistry mob codec-registry)) (.codecRegistry mob codec-registry))
(when compressor-list
(.compressorList mob compressor-list))
(when connections-per-host
(.connectionsPerHost mob connections-per-host))
(when connect-timeout
(.connectTimeout mob connect-timeout))
(when cursor-finalizer-enabled
(.cursorFinalizerEnabled mob cursor-finalizer-enabled))
(when db-decoder-factory (when db-decoder-factory
(.dbDecoderFactory mob db-decoder-factory)) (.dbDecoderFactory mob db-decoder-factory))
(when db-encoder-factory (when db-encoder-factory
(.dbEncoderFactory mob db-encoder-factory)) (.dbEncoderFactory mob db-encoder-factory))
(when description
(.description mob description))
(when heartbeat-connect-timeout (when heartbeat-connect-timeout
(.heartbeatConnectTimeout mob heartbeat-connect-timeout)) (.heartbeatConnectTimeout mob heartbeat-connect-timeout))
(when heartbeat-frequency (when heartbeat-frequency
(.heartbeatFrequency mob heartbeat-frequency)) (.heartbeatFrequency mob heartbeat-frequency))
(when heartbeat-socket-timeout (when heartbeat-socket-timeout
(.heartbeatSocketTimeout mob heartbeat-socket-timeout)) (.heartbeatSocketTimeout mob heartbeat-socket-timeout))
(when ssl-context
(.sslContext mob ssl-context))
(when local-threshold (when local-threshold
(.localThreshold mob local-threshold)) (.localThreshold mob local-threshold))
(when max-connection-idle-time (when max-connection-idle-time
(.maxConnectionIdleTime mob max-connection-idle-time)) (.maxConnectionIdleTime mob max-connection-idle-time))
(when max-wait-time
(.maxWaitTime mob max-wait-time))
(when max-connection-life-time (when max-connection-life-time
(.maxConnectionLifeTime mob max-connection-life-time)) (.maxConnectionLifeTime mob max-connection-life-time))
(when min-connections-per-host (when min-connections-per-host
@ -194,14 +216,30 @@
(.minHeartbeatFrequency mob min-heartbeat-frequency)) (.minHeartbeatFrequency mob min-heartbeat-frequency))
(when read-concern (when read-concern
(.readConcern mob read-concern)) (.readConcern mob read-concern))
(when read-preference
(.readPreference mob read-preference))
(when required-replica-set-name
(.requiredReplicaSetName mob required-replica-set-name))
(when retry-writes
(.retryWrites mob retry-writes))
(when server-selection-timeout (when server-selection-timeout
(.serverSelectionTimeout mob server-selection-timeout)) (.serverSelectionTimeout mob server-selection-timeout))
(when server-selector
(.serverSelector mob server-selector))
(when socket-keep-alive
(.socketKeepAlive mob socket-keep-alive))
(when socket-factory (when socket-factory
(.socketFactory mob socket-factory)) (.socketFactory mob socket-factory))
(when socket-timeout
(.socketTimeout mob socket-timeout))
(when ssl-enabled (when ssl-enabled
(.sslEnabled mob ssl-enabled)) (.sslEnabled mob ssl-enabled))
(when ssl-invalid-host-name-allowed (when ssl-invalid-host-name-allowed
(.sslInvalidHostNameAllowed mob ssl-invalid-host-name-allowed)) (.sslInvalidHostNameAllowed mob ssl-invalid-host-name-allowed))
(when threads-allowed-to-block-for-connection-multiplier
(.threadsAllowedToBlockForConnectionMultiplier mob threads-allowed-to-block-for-connection-multiplier))
(when write-concern
(.writeConcern mob write-concern))
mob)) mob))
(defn ^MongoClientOptions mongo-options (defn ^MongoClientOptions mongo-options

View file

@ -57,18 +57,30 @@
(is (dbs "monger-test")))) (is (dbs "monger-test"))))
(deftest monger-options-test (deftest monger-options-test
(let [opts {:connections-per-host 1 (let [opts {:always-use-mbeans true
:threads-allowed-to-block-for-connection-multiplier 1 :application-name "app"
:max-wait-time 1
:connect-timeout 1 :connect-timeout 1
:socket-timeout 1 :connections-per-host 1
:socket-keep-alive true
:auto-connect-retry true
:max-auto-connect-retry-time 1
:description "Description"
:write-concern com.mongodb.WriteConcern/JOURNAL_SAFE
:cursor-finalizer-enabled true :cursor-finalizer-enabled true
:required-replica-set-name "rs"}] :description "Description"
:heartbeat-connect-timeout 1
:heartbeat-frequency 1
:heartbeat-socket-timeout 1
:local-threshold 1
:max-connection-idle-time 1
:max-connection-life-time 1
:max-wait-time 1
:min-connections-per-host 1
:min-heartbeat-frequency 1
:required-replica-set-name "rs"
:retry-writes true
:server-selection-timeout 1
:socket-keep-alive true
:socket-timeout 1
:ssl-enabled true
:ssl-invalid-host-name-allowed true
:threads-allowed-to-block-for-connection-multiplier 1
:write-concern com.mongodb.WriteConcern/JOURNAL_SAFE}]
(is (instance? com.mongodb.MongoClientOptions$Builder (mg/mongo-options-builder opts))))) (is (instance? com.mongodb.MongoClientOptions$Builder (mg/mongo-options-builder opts)))))
(deftest connect-to-uri-without-db-name (deftest connect-to-uri-without-db-name