mongo 2.11.0.rc0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/Rakefile +2 -0
  5. data/lib/mongo/auth.rb +11 -2
  6. data/lib/mongo/auth/cr/conversation.rb +1 -1
  7. data/lib/mongo/auth/ldap/conversation.rb +1 -1
  8. data/lib/mongo/auth/scram/conversation.rb +4 -1
  9. data/lib/mongo/auth/user.rb +15 -1
  10. data/lib/mongo/auth/user/view.rb +10 -4
  11. data/lib/mongo/auth/x509.rb +11 -1
  12. data/lib/mongo/auth/x509/conversation.rb +15 -6
  13. data/lib/mongo/background_thread.rb +28 -13
  14. data/lib/mongo/client.rb +23 -15
  15. data/lib/mongo/collection/view/change_stream.rb +5 -1
  16. data/lib/mongo/collection/view/readable.rb +5 -2
  17. data/lib/mongo/collection/view/writable.rb +3 -1
  18. data/lib/mongo/cursor/builder/get_more_command.rb +4 -1
  19. data/lib/mongo/cursor/builder/kill_cursors_command.rb +16 -5
  20. data/lib/mongo/cursor/builder/op_get_more.rb +2 -2
  21. data/lib/mongo/cursor/builder/op_kill_cursors.rb +17 -5
  22. data/lib/mongo/error/operation_failure.rb +3 -3
  23. data/lib/mongo/monitoring/command_log_subscriber.rb +5 -3
  24. data/lib/mongo/monitoring/event/command_started.rb +13 -3
  25. data/lib/mongo/monitoring/publishable.rb +4 -2
  26. data/lib/mongo/operation/create_user/command.rb +1 -0
  27. data/lib/mongo/operation/remove_user/command.rb +1 -0
  28. data/lib/mongo/operation/update_user/command.rb +1 -0
  29. data/lib/mongo/protocol/get_more.rb +2 -1
  30. data/lib/mongo/protocol/kill_cursors.rb +6 -13
  31. data/lib/mongo/protocol/serializers.rb +10 -4
  32. data/lib/mongo/retryable.rb +1 -1
  33. data/lib/mongo/server/connection.rb +6 -2
  34. data/lib/mongo/server/connection_base.rb +2 -1
  35. data/lib/mongo/server/monitor.rb +1 -1
  36. data/lib/mongo/server/pending_connection.rb +6 -0
  37. data/lib/mongo/socket/ssl.rb +1 -1
  38. data/lib/mongo/uri.rb +5 -41
  39. data/lib/mongo/version.rb +1 -1
  40. data/mongo.gemspec +11 -2
  41. data/spec/README.md +105 -9
  42. data/spec/USERS.md +72 -0
  43. data/spec/integration/auth_spec.rb +20 -6
  44. data/spec/integration/client_construction_spec.rb +3 -1
  45. data/spec/integration/client_options_spec.rb +437 -0
  46. data/spec/integration/command_monitoring_spec.rb +4 -1
  47. data/spec/integration/connection_pool_populator_spec.rb +4 -0
  48. data/spec/integration/connection_spec.rb +4 -2
  49. data/spec/integration/cursor_reaping_spec.rb +1 -1
  50. data/spec/integration/get_more_spec.rb +32 -0
  51. data/spec/integration/retryable_errors_spec.rb +99 -0
  52. data/spec/integration/retryable_writes_errors_spec.rb +11 -10
  53. data/spec/lite_spec_helper.rb +2 -1
  54. data/spec/mongo/auth/scram_spec.rb +1 -0
  55. data/spec/mongo/auth/user/view_spec.rb +102 -1
  56. data/spec/mongo/auth/user_spec.rb +56 -15
  57. data/spec/mongo/auth/x509_spec.rb +31 -1
  58. data/spec/mongo/bulk_write_spec.rb +2 -2
  59. data/spec/mongo/collection/view/change_stream_spec.rb +2 -2
  60. data/spec/mongo/collection/view/readable_spec.rb +8 -4
  61. data/spec/mongo/cursor/builder/get_more_command_spec.rb +4 -2
  62. data/spec/mongo/cursor/builder/op_get_more_spec.rb +4 -2
  63. data/spec/mongo/cursor_spec.rb +3 -3
  64. data/spec/mongo/retryable_spec.rb +31 -52
  65. data/spec/mongo/server/connection_auth_spec.rb +3 -0
  66. data/spec/mongo/server/connection_pool_spec.rb +4 -0
  67. data/spec/mongo/server/connection_spec.rb +12 -4
  68. data/spec/mongo/server/monitor_spec.rb +19 -1
  69. data/spec/mongo/socket/ssl_spec.rb +1 -1
  70. data/spec/mongo/uri/srv_protocol_spec.rb +0 -13
  71. data/spec/mongo/uri_option_parsing_spec.rb +0 -8
  72. data/spec/mongo/uri_spec.rb +6 -20
  73. data/spec/runners/connection_string.rb +116 -0
  74. data/spec/runners/read_write_concern_document.rb +67 -0
  75. data/spec/spec_tests/change_streams_spec.rb +17 -2
  76. data/spec/spec_tests/connection_string_spec.rb +2 -59
  77. data/spec/spec_tests/data/change_streams/change-streams-errors.yml +3 -3
  78. data/spec/spec_tests/data/change_streams/change-streams.yml +88 -20
  79. data/spec/spec_tests/data/cmap/connection-must-have-id.yml +6 -0
  80. data/spec/spec_tests/data/cmap/connection-must-order-ids.yml +6 -0
  81. data/spec/spec_tests/data/cmap/pool-checkin-destroy-closed.yml +3 -0
  82. data/spec/spec_tests/data/cmap/pool-checkin-destroy-stale.yml +3 -0
  83. data/spec/spec_tests/data/cmap/pool-checkin-make-available.yml +3 -0
  84. data/spec/spec_tests/data/cmap/pool-checkin.yml +1 -0
  85. data/spec/spec_tests/data/cmap/pool-checkout-connection.yml +2 -0
  86. data/spec/spec_tests/data/cmap/pool-checkout-error-closed.yml +5 -0
  87. data/spec/spec_tests/data/cmap/pool-checkout-multiple.yml +3 -0
  88. data/spec/spec_tests/data/cmap/pool-checkout-no-idle.yml +4 -0
  89. data/spec/spec_tests/data/cmap/pool-checkout-no-stale.yml +4 -0
  90. data/spec/spec_tests/data/cmap/pool-close-destroy-conns.yml +2 -0
  91. data/spec/spec_tests/data/cmap/pool-create-max-size.yml +15 -0
  92. data/spec/spec_tests/data/cmap/pool-create-min-size.yml +4 -0
  93. data/spec/spec_tests/data/cmap/wait-queue-fairness.yml +31 -1
  94. data/spec/spec_tests/data/cmap/wait-queue-timeout.yml +5 -0
  95. data/spec/spec_tests/data/read_write_concern/connection-string/read-concern.yml +32 -0
  96. data/spec/spec_tests/data/read_write_concern/connection-string/write-concern.yml +82 -0
  97. data/spec/spec_tests/data/read_write_concern/document/read-concern.yml +37 -0
  98. data/spec/spec_tests/data/read_write_concern/document/write-concern.yml +100 -0
  99. data/spec/spec_tests/data/retryable_reads/aggregate-merge.yml +39 -0
  100. data/spec/spec_tests/data/retryable_reads/aggregate-serverErrors.yml +1 -1
  101. data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch-serverErrors.yml +2 -2
  102. data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch.yml +1 -1
  103. data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch-serverErrors.yml +2 -2
  104. data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch.yml +1 -1
  105. data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch-serverErrors.yml +2 -2
  106. data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch.yml +1 -1
  107. data/spec/spec_tests/data/retryable_reads/count-serverErrors.yml +1 -1
  108. data/spec/spec_tests/data/retryable_reads/countDocuments-serverErrors.yml +1 -1
  109. data/spec/spec_tests/data/retryable_reads/distinct-serverErrors.yml +1 -1
  110. data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors.yml +1 -1
  111. data/spec/spec_tests/data/retryable_reads/find-serverErrors.yml +1 -1
  112. data/spec/spec_tests/data/retryable_reads/findOne-serverErrors.yml +1 -1
  113. data/spec/spec_tests/data/retryable_reads/gridfs-download-serverErrors.yml +1 -1
  114. data/spec/spec_tests/data/retryable_reads/gridfs-downloadByName-serverErrors.yml +1 -1
  115. data/spec/spec_tests/data/retryable_reads/listCollectionNames-serverErrors.yml +1 -1
  116. data/spec/spec_tests/data/retryable_reads/listCollectionObjects-serverErrors.yml +1 -1
  117. data/spec/spec_tests/data/retryable_reads/listCollections-serverErrors.yml +1 -1
  118. data/spec/spec_tests/data/retryable_reads/listDatabaseNames-serverErrors.yml +1 -1
  119. data/spec/spec_tests/data/retryable_reads/listDatabaseObjects-serverErrors.yml +1 -1
  120. data/spec/spec_tests/data/retryable_reads/listDatabases-serverErrors.yml +1 -1
  121. data/spec/spec_tests/data/retryable_reads/listIndexNames-serverErrors.yml +1 -1
  122. data/spec/spec_tests/data/retryable_reads/listIndexes-serverErrors.yml +1 -1
  123. data/spec/spec_tests/data/transactions/read-concern.yml +6 -6
  124. data/spec/spec_tests/data/transactions/transaction-options-repl.yml +117 -0
  125. data/spec/spec_tests/data/transactions/transaction-options.yml +14 -121
  126. data/spec/spec_tests/data/transactions/write-concern.yml +3 -0
  127. data/spec/spec_tests/data/transactions_api/transaction-options.yml +11 -12
  128. data/spec/spec_tests/dns_seedlist_discovery_spec.rb +17 -7
  129. data/spec/spec_tests/read_write_concern_connection_string_spec.rb +8 -0
  130. data/spec/spec_tests/read_write_concern_document_spec.rb +74 -0
  131. data/spec/spec_tests/retryable_reads_spec.rb +32 -1
  132. data/spec/spec_tests/uri_options_spec.rb +4 -2
  133. data/spec/support/auth.rb +5 -14
  134. data/spec/support/certificates/client-x509.crt +78 -0
  135. data/spec/support/certificates/client-x509.key +27 -0
  136. data/spec/support/certificates/client-x509.pem +105 -0
  137. data/spec/support/change_streams.rb +8 -11
  138. data/spec/support/client_registry.rb +26 -12
  139. data/spec/support/cluster_tools.rb +2 -2
  140. data/spec/support/cmap.rb +11 -7
  141. data/spec/support/command_monitoring.rb +8 -8
  142. data/spec/support/connection_string.rb +56 -28
  143. data/spec/support/constraints.rb +8 -0
  144. data/spec/support/crud/spec.rb +5 -8
  145. data/spec/support/event_subscriber.rb +7 -0
  146. data/spec/support/gridfs.rb +4 -7
  147. data/spec/support/server_discovery_and_monitoring.rb +3 -8
  148. data/spec/support/server_selection.rb +4 -9
  149. data/spec/support/server_selection_rtt.rb +4 -7
  150. data/spec/support/spec_config.rb +47 -19
  151. data/spec/support/spec_setup.rb +5 -0
  152. data/spec/support/utils.rb +46 -8
  153. metadata +637 -597
  154. metadata.gz.sig +0 -0
@@ -0,0 +1,117 @@
1
+ runOn:
2
+ - minServerVersion: "4.0"
3
+ topology: ["replicaset"]
4
+
5
+ database_name: &database_name "transaction-tests"
6
+ collection_name: &collection_name "test"
7
+
8
+ data: []
9
+
10
+ tests:
11
+
12
+ - description: readConcern snapshot in startTransaction options
13
+
14
+ sessionOptions:
15
+ session0:
16
+ defaultTransactionOptions:
17
+ readConcern:
18
+ level: majority # Overridden.
19
+
20
+ operations:
21
+ - name: startTransaction
22
+ object: session0
23
+ arguments:
24
+ options:
25
+ readConcern:
26
+ level: snapshot
27
+ - name: insertOne
28
+ object: collection
29
+ arguments:
30
+ session: session0
31
+ document:
32
+ _id: 1
33
+ result:
34
+ insertedId: 1
35
+ - name: commitTransaction
36
+ object: session0
37
+ # Now test abort.
38
+ - name: startTransaction
39
+ object: session0
40
+ arguments:
41
+ options:
42
+ readConcern:
43
+ level: snapshot
44
+ - name: insertOne
45
+ object: collection
46
+ arguments:
47
+ session: session0
48
+ document:
49
+ _id: 2
50
+ result:
51
+ insertedId: 2
52
+ - name: abortTransaction
53
+ object: session0
54
+
55
+ expectations:
56
+ - command_started_event:
57
+ command:
58
+ insert: *collection_name
59
+ documents:
60
+ - _id: 1
61
+ ordered: true
62
+ lsid: session0
63
+ txnNumber:
64
+ $numberLong: "1"
65
+ startTransaction: true
66
+ autocommit: false
67
+ readConcern:
68
+ level: snapshot
69
+ writeConcern:
70
+ command_name: insert
71
+ database_name: *database_name
72
+ - command_started_event:
73
+ command:
74
+ commitTransaction: 1
75
+ lsid: session0
76
+ txnNumber:
77
+ $numberLong: "1"
78
+ startTransaction:
79
+ autocommit: false
80
+ readConcern:
81
+ writeConcern:
82
+ command_name: commitTransaction
83
+ database_name: admin
84
+ - command_started_event:
85
+ command:
86
+ insert: *collection_name
87
+ documents:
88
+ - _id: 2
89
+ ordered: true
90
+ lsid: session0
91
+ txnNumber:
92
+ $numberLong: "2"
93
+ startTransaction: true
94
+ autocommit: false
95
+ readConcern:
96
+ level: snapshot
97
+ afterClusterTime: 42
98
+ writeConcern:
99
+ command_name: insert
100
+ database_name: *database_name
101
+ - command_started_event:
102
+ command:
103
+ abortTransaction: 1
104
+ lsid: session0
105
+ txnNumber:
106
+ $numberLong: "2"
107
+ startTransaction:
108
+ autocommit: false
109
+ readConcern:
110
+ writeConcern:
111
+ command_name: abortTransaction
112
+ database_name: admin
113
+
114
+ outcome:
115
+ collection:
116
+ data:
117
+ - _id: 1
@@ -2,12 +2,9 @@ runOn:
2
2
  -
3
3
  minServerVersion: "4.0"
4
4
  topology: ["replicaset"]
5
- # Skip these tests on 4.3 due to
6
- # https://jira.mongodb.org/browse/SERVER-40685 and
7
- # https://jira.mongodb.org/browse/HELP-10518
8
- #-
9
- # minServerVersion: "4.1.8"
10
- # topology: ["sharded"]
5
+ -
6
+ minServerVersion: "4.1.8"
7
+ topology: ["sharded"]
11
8
 
12
9
  database_name: &database_name "transaction-tests"
13
10
  collection_name: &collection_name "test"
@@ -183,7 +180,7 @@ tests:
183
180
  session0:
184
181
  defaultTransactionOptions:
185
182
  readConcern:
186
- level: snapshot
183
+ level: majority
187
184
  writeConcern:
188
185
  w: 1
189
186
 
@@ -202,7 +199,7 @@ tests:
202
199
  startTransaction: true
203
200
  autocommit: false
204
201
  readConcern:
205
- level: snapshot
202
+ level: majority
206
203
  writeConcern:
207
204
  command_name: insert
208
205
  database_name: *database_name
@@ -231,7 +228,7 @@ tests:
231
228
  startTransaction: true
232
229
  autocommit: false
233
230
  readConcern:
234
- level: snapshot
231
+ level: majority
235
232
  afterClusterTime: 42
236
233
  writeConcern:
237
234
  command_name: insert
@@ -262,7 +259,7 @@ tests:
262
259
  session0:
263
260
  defaultTransactionOptions:
264
261
  readConcern:
265
- level: majority
262
+ level: snapshot
266
263
  writeConcern:
267
264
  w: 1
268
265
 
@@ -272,7 +269,7 @@ tests:
272
269
  arguments:
273
270
  options:
274
271
  readConcern:
275
- level: snapshot
272
+ level: majority
276
273
  writeConcern:
277
274
  w: majority
278
275
  - name: insertOne
@@ -290,7 +287,7 @@ tests:
290
287
  arguments:
291
288
  options:
292
289
  readConcern:
293
- level: snapshot
290
+ level: majority
294
291
  writeConcern:
295
292
  w: majority
296
293
  - name: insertOne
@@ -317,7 +314,7 @@ tests:
317
314
  startTransaction: true
318
315
  autocommit: false
319
316
  readConcern:
320
- level: snapshot
317
+ level: majority
321
318
  writeConcern:
322
319
  command_name: insert
323
320
  database_name: *database_name
@@ -346,7 +343,7 @@ tests:
346
343
  startTransaction: true
347
344
  autocommit: false
348
345
  readConcern:
349
- level: snapshot
346
+ level: majority
350
347
  afterClusterTime: 42
351
348
  writeConcern:
352
349
  command_name: insert
@@ -377,7 +374,7 @@ tests:
377
374
  session0:
378
375
  defaultTransactionOptions:
379
376
  readConcern:
380
- level: snapshot
377
+ level: majority
381
378
  writeConcern:
382
379
  w: majority
383
380
 
@@ -396,7 +393,7 @@ tests:
396
393
  startTransaction: true
397
394
  autocommit: false
398
395
  readConcern:
399
- level: snapshot
396
+ level: majority
400
397
  writeConcern:
401
398
  command_name: insert
402
399
  database_name: *database_name
@@ -425,7 +422,7 @@ tests:
425
422
  startTransaction: true
426
423
  autocommit: false
427
424
  readConcern:
428
- level: snapshot
425
+ level: majority
429
426
  afterClusterTime: 42
430
427
  writeConcern:
431
428
  command_name: insert
@@ -522,110 +519,6 @@ tests:
522
519
 
523
520
  outcome: *outcome
524
521
 
525
- - description: readConcern snapshot in startTransaction options
526
-
527
- sessionOptions:
528
- session0:
529
- defaultTransactionOptions:
530
- readConcern:
531
- level: majority # Overridden.
532
-
533
- operations:
534
- - name: startTransaction
535
- object: session0
536
- arguments:
537
- options:
538
- readConcern:
539
- level: snapshot
540
- - name: insertOne
541
- object: collection
542
- arguments:
543
- session: session0
544
- document:
545
- _id: 1
546
- result:
547
- insertedId: 1
548
- - name: commitTransaction
549
- object: session0
550
- # Now test abort.
551
- - name: startTransaction
552
- object: session0
553
- arguments:
554
- options:
555
- readConcern:
556
- level: snapshot
557
- - name: insertOne
558
- object: collection
559
- arguments:
560
- session: session0
561
- document:
562
- _id: 2
563
- result:
564
- insertedId: 2
565
- - name: abortTransaction
566
- object: session0
567
-
568
- expectations:
569
- - command_started_event:
570
- command:
571
- insert: *collection_name
572
- documents:
573
- - _id: 1
574
- ordered: true
575
- lsid: session0
576
- txnNumber:
577
- $numberLong: "1"
578
- startTransaction: true
579
- autocommit: false
580
- readConcern:
581
- level: snapshot
582
- writeConcern:
583
- command_name: insert
584
- database_name: *database_name
585
- - command_started_event:
586
- command:
587
- commitTransaction: 1
588
- lsid: session0
589
- txnNumber:
590
- $numberLong: "1"
591
- startTransaction:
592
- autocommit: false
593
- readConcern:
594
- writeConcern:
595
- command_name: commitTransaction
596
- database_name: admin
597
- - command_started_event:
598
- command:
599
- insert: *collection_name
600
- documents:
601
- - _id: 2
602
- ordered: true
603
- lsid: session0
604
- txnNumber:
605
- $numberLong: "2"
606
- startTransaction: true
607
- autocommit: false
608
- readConcern:
609
- level: snapshot
610
- afterClusterTime: 42
611
- writeConcern:
612
- command_name: insert
613
- database_name: *database_name
614
- - command_started_event:
615
- command:
616
- abortTransaction: 1
617
- lsid: session0
618
- txnNumber:
619
- $numberLong: "2"
620
- startTransaction:
621
- autocommit: false
622
- readConcern:
623
- writeConcern:
624
- command_name: abortTransaction
625
- database_name: admin
626
-
627
- outcome: *outcome
628
-
629
522
  - description: client writeConcern ignored for bulk
630
523
 
631
524
  clientOptions:
@@ -4,6 +4,9 @@ runOn:
4
4
  -
5
5
  minServerVersion: "4.0"
6
6
  topology: ["replicaset"]
7
+ -
8
+ minServerVersion: "4.1.8"
9
+ topology: ["sharded"]
7
10
 
8
11
  database_name: &database_name "transaction-tests"
9
12
  collection_name: &collection_name "test"
@@ -2,10 +2,9 @@ runOn:
2
2
  -
3
3
  minServerVersion: "4.0"
4
4
  topology: ["replicaset"]
5
- # Disabled due to https://jira.mongodb.org/browse/SERVER-41532
6
- #-
7
- # minServerVersion: "4.1.8"
8
- # topology: ["sharded"]
5
+ -
6
+ minServerVersion: "4.1.8"
7
+ topology: ["sharded"]
9
8
 
10
9
  database_name: &database_name "withTransaction-tests"
11
10
  collection_name: &collection_name "test"
@@ -109,7 +108,7 @@ tests:
109
108
  sessionOptions:
110
109
  session0:
111
110
  defaultTransactionOptions:
112
- readConcern: { level: snapshot }
111
+ readConcern: { level: majority }
113
112
  writeConcern: { w: 1 }
114
113
  operations: *operations
115
114
  expectations:
@@ -124,7 +123,7 @@ tests:
124
123
  txnNumber: { $numberLong: "1" }
125
124
  startTransaction: true
126
125
  autocommit: false
127
- readConcern: { level: snapshot }
126
+ readConcern: { level: majority }
128
127
  # omitted fields
129
128
  writeConcern: ~
130
129
  command_name: insert
@@ -162,7 +161,7 @@ tests:
162
161
  result:
163
162
  insertedId: 1
164
163
  options:
165
- readConcern: { level: snapshot }
164
+ readConcern: { level: majority }
166
165
  writeConcern: { w: 1 }
167
166
  expectations:
168
167
  -
@@ -176,7 +175,7 @@ tests:
176
175
  txnNumber: { $numberLong: "1" }
177
176
  startTransaction: true
178
177
  autocommit: false
179
- readConcern: { level: snapshot }
178
+ readConcern: { level: majority }
180
179
  # omitted fields
181
180
  writeConcern: ~
182
181
  command_name: insert
@@ -201,7 +200,7 @@ tests:
201
200
  sessionOptions:
202
201
  session0:
203
202
  defaultTransactionOptions:
204
- readConcern: { level: majority }
203
+ readConcern: { level: snapshot }
205
204
  writeConcern: { w: majority }
206
205
  operations: *operations_explicit_transactionOptions
207
206
  expectations:
@@ -216,7 +215,7 @@ tests:
216
215
  txnNumber: { $numberLong: "1" }
217
216
  startTransaction: true
218
217
  autocommit: false
219
- readConcern: { level: snapshot }
218
+ readConcern: { level: majority }
220
219
  # omitted fields
221
220
  writeConcern: ~
222
221
  command_name: insert
@@ -239,7 +238,7 @@ tests:
239
238
  description: withTransaction explicit transaction options override client options
240
239
  useMultipleMongoses: true
241
240
  clientOptions:
242
- readConcernLevel: majority
241
+ readConcernLevel: local
243
242
  w: majority
244
243
  operations: *operations_explicit_transactionOptions
245
244
  expectations:
@@ -254,7 +253,7 @@ tests:
254
253
  txnNumber: { $numberLong: "1" }
255
254
  startTransaction: true
256
255
  autocommit: false
257
- readConcern: { level: snapshot }
256
+ readConcern: { level: majority }
258
257
  # omitted fields
259
258
  writeConcern: ~
260
259
  command_name: insert
@@ -5,15 +5,13 @@ describe 'DNS Seedlist Discovery' do
5
5
 
6
6
  include Mongo::ConnectionString
7
7
 
8
- DNS_SEEDLIST_DISCOVERY_TESTS.each do |file_name|
8
+ DNS_SEEDLIST_DISCOVERY_TESTS.each do |test_path|
9
9
 
10
- file = File.new(file_name)
11
- spec = YAML.load(ERB.new(file.read).result)
12
- file.close
10
+ spec = YAML.load(File.read(test_path))
13
11
 
14
12
  test = Mongo::ConnectionString::Test.new(spec)
15
13
 
16
- context(File.basename(file_name)) do
14
+ context(File.basename(test_path)) do
17
15
 
18
16
  context 'when the uri is invalid', if: test.raise_error? do
19
17
 
@@ -43,8 +41,20 @@ describe 'DNS Seedlist Discovery' do
43
41
  expect(test.uri).to be_a(Mongo::URI::SRVProtocol)
44
42
  end
45
43
 
46
- it 'creates a client with the correct hosts' do
47
- expect(test.client).to have_hosts(test)
44
+ if test.seeds
45
+ # DNS seed list tests specify both seeds and hosts.
46
+ # To get the hosts, the client must do SDAM (as required in the
47
+ # spec tests' description), but this isn't testing DNS seed list -
48
+ # it is testing SDAM. Plus, all of the hosts are always the same.
49
+ # If seed list is given in the expectations, just test the seed
50
+ # list and not the expanded hosts.
51
+ it 'creates a client with the correct seeds' do
52
+ expect(test.client).to have_hosts(test, test.seeds)
53
+ end
54
+ else
55
+ it 'creates a client with the correct hosts' do
56
+ expect(test.client).to have_hosts(test, test.hosts)
57
+ end
48
58
  end
49
59
 
50
60
  it 'creates a client with the correct options' do