mongo 2.11.0.rc0 → 2.11.0

Sign up to get free protection for your applications and to get access to all the features.
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