[GODRIVER-1906] Run change stream prose tests against replica sets and sharded clusters Created: 04/Mar/21  Updated: 19/Jul/23

Status: Backlog
Project: Go Driver
Component/s: Testing
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Divjot Arora (Inactive) Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: greenerbuild
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

Many of our change stream prose tests only run against replica sets. We should also enable them to run against sharded clusters in case server behavior differs across topology types.



 Comments   
Comment by Matt Dale [ 15/Jul/23 ]

Failures discovered when enabling for sharded clusters:

=== RUN   TestChangeStream/resume_token_updated_on_empty_batch
    change_stream_test.go:119:
        	Error Trace:	/mongo-driver/mongo/integration/change_stream_test.go:119
        	            				/mongo-driver/mongo/integration/mongotest.go:263
        	Error:      	Should not be: bson.Raw{0x81, 0x0, 0x0, 0x0, 0x2, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x0, 0x71, 0x0, 0x0, 0x0, 0x38, 0x32, 0x36, 0x34, 0x42, 0x31, 0x43, 0x46, 0x36, 0x42, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x34, 0x32, 0x42, 0x30, 0x32, 0x32, 0x43, 0x30, 0x31, 0x30, 0x30, 0x32, 0x39, 0x36, 0x45, 0x35, 0x41, 0x31, 0x30, 0x30, 0x34, 0x34, 0x34, 0x41, 0x35, 0x33, 0x37, 0x34, 0x35, 0x43, 0x44, 0x42, 0x37, 0x34, 0x38, 0x30, 0x30, 0x39, 0x30, 0x46, 0x42, 0x42, 0x31, 0x46, 0x35, 0x33, 0x31, 0x42, 0x38, 0x45, 0x41, 0x33, 0x43, 0x34, 0x36, 0x36, 0x34, 0x35, 0x46, 0x36, 0x39, 0x36, 0x34, 0x30, 0x30, 0x36, 0x34, 0x36, 0x34, 0x42, 0x31, 0x43, 0x46, 0x36, 0x42, 0x36, 0x44, 0x43, 0x33, 0x37, 0x37, 0x30, 0x41, 0x42, 0x38, 0x44, 0x39, 0x41, 0x30, 0x44, 0x36, 0x30, 0x30, 0x30, 0x34, 0x0, 0x0}
        	Test:       	TestChangeStream/resume_token_updated_on_empty_batch
        	Messages:   	resume token was not updated after an empty batch was returned

=== RUN   TestChangeStream/resume_token/no_getMore/with_PBRT_support/resumeAfter
    change_stream_test.go:420:
        	Error Trace:	/mongo-driver/mongo/integration/change_stream_test.go:858
        	            				/mongo-driver/mongo/integration/change_stream_test.go:420
        	            				/mongo-driver/mongo/integration/mongotest.go:263
        	Error:      	Not equal:
        	            	expected: bson.Raw{0x81, 0x0, 0x0, 0x0, 0x2, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x0, 0x71, 0x0, 0x0, 0x0, 0x38, 0x32, 0x36, 0x34, 0x42, 0x31, 0x43, 0x46, 0x36, 0x44, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x33, 0x32, 0x42, 0x30, 0x32, 0x32, 0x43, 0x30, 0x31, 0x30, 0x30, 0x32, 0x39, 0x36, 0x45, 0x35, 0x41, 0x31, 0x30, 0x30, 0x34, 0x46, 0x31, 0x32, 0x30, 0x31, 0x46, 0x35, 0x44, 0x36, 0x37, 0x42, 0x41, 0x34, 0x45, 0x31, 0x35, 0x42, 0x31, 0x39, 0x39, 0x46, 0x30, 0x33, 0x45, 0x37, 0x44, 0x43, 0x36, 0x46, 0x37, 0x44, 0x30, 0x34, 0x36, 0x36, 0x34, 0x35, 0x46, 0x36, 0x39, 0x36, 0x34, 0x30, 0x30, 0x36, 0x34, 0x36, 0x34, 0x42, 0x31, 0x43, 0x46, 0x36, 0x44, 0x36, 0x44, 0x43, 0x33, 0x37, 0x37, 0x30, 0x41, 0x42, 0x38, 0x44, 0x39, 0x41, 0x30, 0x45, 0x35, 0x30, 0x30, 0x30, 0x34, 0x0, 0x0}
        	            	actual  : bson.Raw{0x81, 0x0, 0x0, 0x0, 0x2, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x0, 0x71, 0x0, 0x0, 0x0, 0x38, 0x32, 0x36, 0x34, 0x42, 0x31, 0x43, 0x46, 0x36, 0x44, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x32, 0x42, 0x30, 0x32, 0x32, 0x43, 0x30, 0x31, 0x30, 0x30, 0x32, 0x39, 0x36, 0x45, 0x35, 0x41, 0x31, 0x30, 0x30, 0x34, 0x46, 0x31, 0x32, 0x30, 0x31, 0x46, 0x35, 0x44, 0x36, 0x37, 0x42, 0x41, 0x34, 0x45, 0x31, 0x35, 0x42, 0x31, 0x39, 0x39, 0x46, 0x30, 0x33, 0x45, 0x37, 0x44, 0x43, 0x36, 0x46, 0x37, 0x44, 0x30, 0x34, 0x36, 0x36, 0x34, 0x35, 0x46, 0x36, 0x39, 0x36, 0x34, 0x30, 0x30, 0x36, 0x34, 0x36, 0x34, 0x42, 0x31, 0x43, 0x46, 0x36, 0x44, 0x36, 0x44, 0x43, 0x33, 0x37, 0x37, 0x30, 0x41, 0x42, 0x38, 0x44, 0x39, 0x41, 0x30, 0x45, 0x39, 0x30, 0x30, 0x30, 0x34, 0x0, 0x0}
 
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -3,3 +3,3 @@
        	            	  00000010  32 36 34 42 31 43 46 36  44 30 30 30 30 30 30 30  |264B1CF6D0000000|
        	            	- 00000020  33 32 42 30 32 32 43 30  31 30 30 32 39 36 45 35  |32B022C0100296E5|
        	            	+ 00000020  37 32 42 30 32 32 43 30  31 30 30 32 39 36 45 35  |72B022C0100296E5|
        	            	  00000030  41 31 30 30 34 46 31 32  30 31 46 35 44 36 37 42  |A1004F1201F5D67B|
        	            	@@ -8,3 +8,3 @@
        	            	  00000060  30 36 34 36 34 42 31 43  46 36 44 36 44 43 33 37  |06464B1CF6D6DC37|
        	            	- 00000070  37 30 41 42 38 44 39 41  30 45 35 30 30 30 34 00  |70AB8D9A0E50004.|
        	            	+ 00000070  37 30 41 42 38 44 39 41  30 45 39 30 30 30 34 00  |70AB8D9A0E90004.|
        	            	  00000080  00                                                |.|
        	Test:       	TestChangeStream/resume_token/no_getMore/with_PBRT_support/resumeAfter
        	Messages:   	expected resume token {"_data": "8264B1CF6D000000032B022C0100296E5A1004F1201F5D67BA4E15B199F03E7DC6F7D046645F6964006464B1CF6D6DC3770AB8D9A0E50004"}, got {"_data": "8264B1CF6D000000072B022C0100296E5A1004F1201F5D67BA4E15B199F03E7DC6F7D046645F6964006464B1CF6D6DC3770AB8D9A0E90004"}

=== RUN   TestChangeStream/resume_token/no_getMore/with_PBRT_support/neither
    change_stream_test.go:409:
        	Error Trace:	/mongo-driver/mongo/integration/change_stream_test.go:858
        	            				/mongo-driver/mongo/integration/change_stream_test.go:409
        	            				/mongo-driver/mongo/integration/mongotest.go:263
        	Error:      	Not equal:
        	            	expected: bson.Raw(nil)
        	            	actual  : bson.Raw{0x55, 0x0, 0x0, 0x0, 0x2, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x0, 0x45, 0x0, 0x0, 0x0, 0x38, 0x32, 0x36, 0x34, 0x42, 0x31, 0x43, 0x46, 0x36, 0x44, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x46, 0x32, 0x42, 0x30, 0x32, 0x32, 0x39, 0x32, 0x39, 0x36, 0x45, 0x35, 0x41, 0x31, 0x30, 0x30, 0x34, 0x41, 0x37, 0x45, 0x41, 0x34, 0x38, 0x33, 0x31, 0x36, 0x38, 0x43, 0x37, 0x34, 0x35, 0x42, 0x34, 0x41, 0x30, 0x43, 0x30, 0x31, 0x37, 0x43, 0x35, 0x36, 0x42, 0x43, 0x39, 0x37, 0x38, 0x37, 0x36, 0x30, 0x34, 0x0, 0x0}
 
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -1,2 +1,9 @@
        	            	-(bson.Raw) <nil>
        	            	+(bson.Raw) (len=85) {
        	            	+ 00000000  55 00 00 00 02 5f 64 61  74 61 00 45 00 00 00 38  |U...._data.E...8|
        	            	+ 00000010  32 36 34 42 31 43 46 36  44 30 30 30 30 30 30 30  |264B1CF6D0000000|
        	            	+ 00000020  46 32 42 30 32 32 39 32  39 36 45 35 41 31 30 30  |F2B0229296E5A100|
        	            	+ 00000030  34 41 37 45 41 34 38 33  31 36 38 43 37 34 35 42  |4A7EA483168C745B|
        	            	+ 00000040  34 41 30 43 30 31 37 43  35 36 42 43 39 37 38 37  |4A0C017C56BC9787|
        	            	+ 00000050  36 30 34 00 00                                    |604..|
        	            	+}
 
        	Test:       	TestChangeStream/resume_token/no_getMore/with_PBRT_support/neither
        	Messages:   	expected resume token , got {"_data": "8264B1CF6D0000000F2B0229296E5A1004A7EA483168C745B4A0C017C56BC9787604"}
    change_stream_test.go:420:
        	Error Trace:	/mongo-driver/mongo/integration/change_stream_test.go:858
        	            				/mongo-driver/mongo/integration/change_stream_test.go:420
        	            				/mongo-driver/mongo/integration/mongotest.go:263
        	Error:      	Not equal:
        	            	expected: bson.Raw{0x55, 0x0, 0x0, 0x0, 0x2, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x0, 0x45, 0x0, 0x0, 0x0, 0x38, 0x32, 0x36, 0x34, 0x42, 0x31, 0x43, 0x46, 0x36, 0x44, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x46, 0x32, 0x42, 0x30, 0x32, 0x32, 0x39, 0x32, 0x39, 0x36, 0x45, 0x35, 0x41, 0x31, 0x30, 0x30, 0x34, 0x41, 0x37, 0x45, 0x41, 0x34, 0x38, 0x33, 0x31, 0x36, 0x38, 0x43, 0x37, 0x34, 0x35, 0x42, 0x34, 0x41, 0x30, 0x43, 0x30, 0x31, 0x37, 0x43, 0x35, 0x36, 0x42, 0x43, 0x39, 0x37, 0x38, 0x37, 0x36, 0x30, 0x34, 0x0, 0x0}
        	            	actual  : bson.Raw{0x81, 0x0, 0x0, 0x0, 0x2, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x0, 0x71, 0x0, 0x0, 0x0, 0x38, 0x32, 0x36, 0x34, 0x42, 0x31, 0x43, 0x46, 0x36, 0x44, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x36, 0x32, 0x42, 0x30, 0x32, 0x32, 0x43, 0x30, 0x31, 0x30, 0x30, 0x32, 0x39, 0x36, 0x45, 0x35, 0x41, 0x31, 0x30, 0x30, 0x34, 0x41, 0x37, 0x45, 0x41, 0x34, 0x38, 0x33, 0x31, 0x36, 0x38, 0x43, 0x37, 0x34, 0x35, 0x42, 0x34, 0x41, 0x30, 0x43, 0x30, 0x31, 0x37, 0x43, 0x35, 0x36, 0x42, 0x43, 0x39, 0x37, 0x38, 0x37, 0x36, 0x34, 0x36, 0x36, 0x34, 0x35, 0x46, 0x36, 0x39, 0x36, 0x34, 0x30, 0x30, 0x36, 0x34, 0x36, 0x34, 0x42, 0x31, 0x43, 0x46, 0x36, 0x44, 0x36, 0x44, 0x43, 0x33, 0x37, 0x37, 0x30, 0x41, 0x42, 0x38, 0x44, 0x39, 0x41, 0x30, 0x45, 0x46, 0x30, 0x30, 0x30, 0x34, 0x0, 0x0}
 
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -1,8 +1,11 @@
        	            	-(bson.Raw) (len=85) {
        	            	- 00000000  55 00 00 00 02 5f 64 61  74 61 00 45 00 00 00 38  |U...._data.E...8|
        	            	- 00000010  32 36 34 42 31 43 46 36  44 30 30 30 30 30 30 30  |264B1CF6D0000000|
        	            	- 00000020  46 32 42 30 32 32 39 32  39 36 45 35 41 31 30 30  |F2B0229296E5A100|
        	            	- 00000030  34 41 37 45 41 34 38 33  31 36 38 43 37 34 35 42  |4A7EA483168C745B|
        	            	- 00000040  34 41 30 43 30 31 37 43  35 36 42 43 39 37 38 37  |4A0C017C56BC9787|
        	            	- 00000050  36 30 34 00 00                                    |604..|
        	            	+(bson.Raw) (len=129) {
        	            	+ 00000000  81 00 00 00 02 5f 64 61  74 61 00 71 00 00 00 38  |....._data.q...8|
        	            	+ 00000010  32 36 34 42 31 43 46 36  44 30 30 30 30 30 30 31  |264B1CF6D0000001|
        	            	+ 00000020  36 32 42 30 32 32 43 30  31 30 30 32 39 36 45 35  |62B022C0100296E5|
        	            	+ 00000030  41 31 30 30 34 41 37 45  41 34 38 33 31 36 38 43  |A1004A7EA483168C|
        	            	+ 00000040  37 34 35 42 34 41 30 43  30 31 37 43 35 36 42 43  |745B4A0C017C56BC|
        	            	+ 00000050  39 37 38 37 36 34 36 36  34 35 46 36 39 36 34 30  |9787646645F69640|
        	            	+ 00000060  30 36 34 36 34 42 31 43  46 36 44 36 44 43 33 37  |06464B1CF6D6DC37|
        	            	+ 00000070  37 30 41 42 38 44 39 41  30 45 46 30 30 30 34 00  |70AB8D9A0EF0004.|
        	            	+ 00000080  00                                                |.|
        	            	 }
        	Test:       	TestChangeStream/resume_token/no_getMore/with_PBRT_support/neither
        	Messages:   	expected resume token {"_data": "8264B1CF6D0000000F2B0229296E5A1004A7EA483168C745B4A0C017C56BC9787604"}, got {"_data": "8264B1CF6D000000162B022C0100296E5A1004A7EA483168C745B4A0C017C56BC9787646645F6964006464B1CF6D6DC3770AB8D9A0EF0004"}

See a full test run here.

Comment by Matt Dale [ 14/Jul/23 ]

Draft PR to check what happens if we just enable all change stream tests on sharded clusters: https://github.com/mongodb/mongo-go-driver/pull/1319

Generated at Thu Feb 08 08:37:23 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.