-
Notifications
You must be signed in to change notification settings - Fork 230
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test against MongoDB 3.4.x #35
Conversation
Firstly, amazing work @feliixx - really clear update too. I will try to update the index tests this afternoon and open a PR into your branch :) The 3.4 tests are a little tricker, as master/slave replication is still technically possible (though deprecated) I think it's best we keep the test coverage for those running in this configuration. I'll speak to @weiishann about the complexities involved in this - is it a case of changing the test harness to spin up a master/slave cluster in addition to the replica set cluster?
I agree with all your points, happy to drop 2.6.X tests, and swap Go 1.6 for Go 1.9. Amazing work, if you're ever in London we have a pint for you! Dom |
Just saw that Also, could you consider running the test against only the last version of each major serie serie ? ie
Let me know if there is more work to do to get this merge, I'll be happy to help ! |
Hey @feliixx Can you add a skip on the failing tests due to the above bug (well found!) with comment referencing the bug ticket and a I'll work on getting the latest MongoDB versions set up and integration tested in a different PR - you're right :) Dom |
harness/mongojs/init.js
Outdated
rs1a.runCommand({replSetInitiate: rs1cfg}) | ||
rs2a.runCommand({replSetInitiate: rs2cfg}) | ||
rs3a.runCommand({replSetInitiate: rs3cfg}) | ||
|
||
if (getMongoVersion() == "3.4.8") { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Um, do we need to specify the minor version here ? Not just 3.4.x.?
- skip `TestViewWithCollation` because of SERVER-31049, cf: https://jira.mongodb.org/browse/SERVER-31049 - add versionAtLeast() method in init.js script to better detect server version fix #31
I added a Let me know if you want me to squash the 3 commits into a single one |
Thanks @feliixx! Really appreciate the work that went into this, and the other 3.4.X features you added. Dom |
* add DropAllIndexes() method (#25) Create a new method to drop all the indexes of a collection in a single call * readme: credit @feliixx for #25 (#26) * send metadata during handshake (#28) fix [#484](https://github.com/go-mgo/mgo/issues/484) Annotate connections with metadata provided by the connecting client. informations send: { "aplication": { // optional "name": "myAppName" } "driver": { "name": "mgo", "version": "v2" }, "os": { "type": runtime.GOOS, "architecture": runtime.GOARCH } } to set "application.name", add `appname` param in options of string connection URI, for example : "mongodb://localhost:27017?appname=myAppName" * Update README to add appName (#32) * docs: elaborate on what appName does * readme: add appName to changes * add method CreateView() (#33) Fix #30. Thanks to @feliixx for the time and effort. * readme: credit @feliixx in the README (#36) * Don't panic on indexed int64 fields (#23) * Stop all db instances after tests (go-mgo#462) If all tests pass, the builds for mongo earlier than 2.6 are still failing. Running a clean up fixes the issue. * fixing int64 type failing when getting indexes and trying to type them * requested changes relating to case statement and panic * Update README.md to credit @mapete94. * tests: ensure indexed int64 fields do not cause a panic in Indexes() See: * #23 * https://github.com/go-mgo/mgo/issues/475 * go-mgo#476 * Add collation option to collection.Create() (#37) - Allow specifying the default collation for the collection when creating it. - Add some documentation to query.Collation() method. fix #29 * Test against MongoDB 3.4.x (#35) * test against MongoDB 3.4.x * tests: use listIndexes to assert index state for 3.4+ * make test pass against v3.4.x - skip `TestViewWithCollation` because of SERVER-31049, cf: https://jira.mongodb.org/browse/SERVER-31049 - add versionAtLeast() method in init.js script to better detect server version fixes #31
* development: readme: credit @bozaro (#47) Fix GetBSON() method usage (#40) readme: credit @feliixx (#46) fix golint, go vet and gofmt warnings (#44) readme: add missing features / credit bson.Unmarshal returns time in UTC (#42) Introduce constants for BSON element types (#41) Test against MongoDB 3.4.x (#35) Add collation option to collection.Create() (#37) Don't panic on indexed int64 fields (#23) readme: credit @feliixx in the README (#36) add method CreateView() (#33) Update README to add appName (#32) send metadata during handshake (#28) readme: credit @feliixx for #25 (#26) add DropAllIndexes() method (#25) # Conflicts: # README.md # cluster.go # session.go # session_test.go
* add DropAllIndexes() method (#25) Create a new method to drop all the indexes of a collection in a single call * readme: credit @feliixx for #25 (#26) * send metadata during handshake (#28) fix [#484](https://github.com/go-mgo/mgo/issues/484) Annotate connections with metadata provided by the connecting client. informations send: { "aplication": { // optional "name": "myAppName" } "driver": { "name": "mgo", "version": "v2" }, "os": { "type": runtime.GOOS, "architecture": runtime.GOARCH } } to set "application.name", add `appname` param in options of string connection URI, for example : "mongodb://localhost:27017?appname=myAppName" * Update README to add appName (#32) * docs: elaborate on what appName does * readme: add appName to changes * add method CreateView() (#33) Fix #30. Thanks to @feliixx for the time and effort. * readme: credit @feliixx in the README (#36) * Don't panic on indexed int64 fields (#23) * Stop all db instances after tests (go-mgo#462) If all tests pass, the builds for mongo earlier than 2.6 are still failing. Running a clean up fixes the issue. * fixing int64 type failing when getting indexes and trying to type them * requested changes relating to case statement and panic * Update README.md to credit @mapete94. * tests: ensure indexed int64 fields do not cause a panic in Indexes() See: * #23 * https://github.com/go-mgo/mgo/issues/475 * go-mgo#476 * Add collation option to collection.Create() (#37) - Allow specifying the default collation for the collection when creating it. - Add some documentation to query.Collation() method. fix #29 * Test against MongoDB 3.4.x (#35) * test against MongoDB 3.4.x * tests: use listIndexes to assert index state for 3.4+ * make test pass against v3.4.x - skip `TestViewWithCollation` because of SERVER-31049, cf: https://jira.mongodb.org/browse/SERVER-31049 - add versionAtLeast() method in init.js script to better detect server version fixes #31 * Introduce constants for BSON element types (#41) * bson.Unmarshal returns time in UTC (#42) * readme: add missing features / credit * Adds missing collation feature description (by @feliixx). * Adds missing 3.4 tests description (by @feliixx). * Adds BSON constants description (by @bozaro). * Adds UTC time.Time unmarshalling (by @gazoon). * fix golint, go vet and gofmt warnings (#44) Fixes #43 * readme: credit @feliixx (#46) * Fix GetBSON() method usage (#40) * Fix GetBSON() method usage Original issue --- You can't use type with custom GetBSON() method mixed with structure field type and structure field reference type. For example, you can't create custom GetBSON() for Bar type: ``` struct Foo { a Bar b *Bar } ``` Type implementation (`func (t Bar) GetBSON()` ) would crash on `Foo.b = nil` value encoding. Reference implementation (`func (t *Bar) GetBSON()` ) would not call on `Foo.a` value encoding. After this change --- For type implementation `func (t Bar) GetBSON()` would not call on `Foo.b = nil` value encoding. In this case `nil` value would be seariazied as `nil` BSON value. For reference implementation `func (t *Bar) GetBSON()` would call even on `Foo.a` value encoding. * Minor refactoring * readme: credit @bozaro (#47)
* commit '0454966c021aa1737c9680aceef7e2ba26952fe3': do not lock while writing to a socket (#52) (#54) readme: credit @bozaro and @idy (#53) Improve cursorData struct unmarshaling speed (#49) readme: credit @bozaro (#47) Fix GetBSON() method usage (#40) readme: credit @feliixx (#46) fix golint, go vet and gofmt warnings (#44) readme: add missing features / credit bson.Unmarshal returns time in UTC (#42) Introduce constants for BSON element types (#41) Test against MongoDB 3.4.x (#35) Add collation option to collection.Create() (#37) Don't panic on indexed int64 fields (#23) readme: credit @feliixx in the README (#36) add method CreateView() (#33) Update README to add appName (#32) send metadata during handshake (#28) readme: credit @feliixx for #25 (#26) add DropAllIndexes() method (#25) # Conflicts: # README.md # bson/decode.go
* add DropAllIndexes() method (#25) Create a new method to drop all the indexes of a collection in a single call * readme: credit @feliixx for #25 (#26) * send metadata during handshake (#28) fix [#484](https://github.com/go-mgo/mgo/issues/484) Annotate connections with metadata provided by the connecting client. informations send: { "aplication": { // optional "name": "myAppName" } "driver": { "name": "mgo", "version": "v2" }, "os": { "type": runtime.GOOS, "architecture": runtime.GOARCH } } to set "application.name", add `appname` param in options of string connection URI, for example : "mongodb://localhost:27017?appname=myAppName" * Update README to add appName (#32) * docs: elaborate on what appName does * readme: add appName to changes * add method CreateView() (#33) Fix #30. Thanks to @feliixx for the time and effort. * readme: credit @feliixx in the README (#36) * Don't panic on indexed int64 fields (#23) * Stop all db instances after tests (go-mgo#462) If all tests pass, the builds for mongo earlier than 2.6 are still failing. Running a clean up fixes the issue. * fixing int64 type failing when getting indexes and trying to type them * requested changes relating to case statement and panic * Update README.md to credit @mapete94. * tests: ensure indexed int64 fields do not cause a panic in Indexes() See: * #23 * https://github.com/go-mgo/mgo/issues/475 * go-mgo#476 * Add collation option to collection.Create() (#37) - Allow specifying the default collation for the collection when creating it. - Add some documentation to query.Collation() method. fix #29 * Test against MongoDB 3.4.x (#35) * test against MongoDB 3.4.x * tests: use listIndexes to assert index state for 3.4+ * make test pass against v3.4.x - skip `TestViewWithCollation` because of SERVER-31049, cf: https://jira.mongodb.org/browse/SERVER-31049 - add versionAtLeast() method in init.js script to better detect server version fixes #31 * Introduce constants for BSON element types (#41) * bson.Unmarshal returns time in UTC (#42) * readme: add missing features / credit * Adds missing collation feature description (by @feliixx). * Adds missing 3.4 tests description (by @feliixx). * Adds BSON constants description (by @bozaro). * Adds UTC time.Time unmarshalling (by @gazoon). * fix golint, go vet and gofmt warnings (#44) Fixes #43 * readme: credit @feliixx (#46) * Fix GetBSON() method usage (#40) * Fix GetBSON() method usage Original issue --- You can't use type with custom GetBSON() method mixed with structure field type and structure field reference type. For example, you can't create custom GetBSON() for Bar type: ``` struct Foo { a Bar b *Bar } ``` Type implementation (`func (t Bar) GetBSON()` ) would crash on `Foo.b = nil` value encoding. Reference implementation (`func (t *Bar) GetBSON()` ) would not call on `Foo.a` value encoding. After this change --- For type implementation `func (t Bar) GetBSON()` would not call on `Foo.b = nil` value encoding. In this case `nil` value would be seariazied as `nil` BSON value. For reference implementation `func (t *Bar) GetBSON()` would call even on `Foo.a` value encoding. * Minor refactoring * readme: credit @bozaro (#47) * Improve cursorData struct unmarshaling speed (#49) This change remove full BSON decoding on: - parsing to `bson.Raw` and `bson.DocElem` fields; - skipping unused BSON fields. * readme: credit @bozaro and @idy (#53) * readme: credit @bozaro and @idy * readme: add @idy to contributor list * do not lock while writing to a socket (#52) (#54) fix #51
* add DropAllIndexes() method (globalsign#25) Create a new method to drop all the indexes of a collection in a single call * readme: credit @feliixx for globalsign#25 (globalsign#26) * send metadata during handshake (globalsign#28) fix [#484](https://github.com/go-mgo/mgo/issues/484) Annotate connections with metadata provided by the connecting client. informations send: { "aplication": { // optional "name": "myAppName" } "driver": { "name": "mgo", "version": "v2" }, "os": { "type": runtime.GOOS, "architecture": runtime.GOARCH } } to set "application.name", add `appname` param in options of string connection URI, for example : "mongodb://localhost:27017?appname=myAppName" * Update README to add appName (globalsign#32) * docs: elaborate on what appName does * readme: add appName to changes * add method CreateView() (globalsign#33) Fix globalsign#30. Thanks to @feliixx for the time and effort. * readme: credit @feliixx in the README (globalsign#36) * Don't panic on indexed int64 fields (globalsign#23) * Stop all db instances after tests (go-mgo#462) If all tests pass, the builds for mongo earlier than 2.6 are still failing. Running a clean up fixes the issue. * fixing int64 type failing when getting indexes and trying to type them * requested changes relating to case statement and panic * Update README.md to credit @mapete94. * tests: ensure indexed int64 fields do not cause a panic in Indexes() See: * globalsign#23 * https://github.com/go-mgo/mgo/issues/475 * go-mgo#476 * Add collation option to collection.Create() (globalsign#37) - Allow specifying the default collation for the collection when creating it. - Add some documentation to query.Collation() method. fix globalsign#29 * Test against MongoDB 3.4.x (globalsign#35) * test against MongoDB 3.4.x * tests: use listIndexes to assert index state for 3.4+ * make test pass against v3.4.x - skip `TestViewWithCollation` because of SERVER-31049, cf: https://jira.mongodb.org/browse/SERVER-31049 - add versionAtLeast() method in init.js script to better detect server version fixes globalsign#31
* add DropAllIndexes() method (globalsign#25) Create a new method to drop all the indexes of a collection in a single call * readme: credit @feliixx for globalsign#25 (globalsign#26) * send metadata during handshake (globalsign#28) fix [#484](https://github.com/go-mgo/mgo/issues/484) Annotate connections with metadata provided by the connecting client. informations send: { "aplication": { // optional "name": "myAppName" } "driver": { "name": "mgo", "version": "v2" }, "os": { "type": runtime.GOOS, "architecture": runtime.GOARCH } } to set "application.name", add `appname` param in options of string connection URI, for example : "mongodb://localhost:27017?appname=myAppName" * Update README to add appName (globalsign#32) * docs: elaborate on what appName does * readme: add appName to changes * add method CreateView() (globalsign#33) Fix globalsign#30. Thanks to @feliixx for the time and effort. * readme: credit @feliixx in the README (globalsign#36) * Don't panic on indexed int64 fields (globalsign#23) * Stop all db instances after tests (go-mgo#462) If all tests pass, the builds for mongo earlier than 2.6 are still failing. Running a clean up fixes the issue. * fixing int64 type failing when getting indexes and trying to type them * requested changes relating to case statement and panic * Update README.md to credit @mapete94. * tests: ensure indexed int64 fields do not cause a panic in Indexes() See: * globalsign#23 * https://github.com/go-mgo/mgo/issues/475 * go-mgo#476 * Add collation option to collection.Create() (globalsign#37) - Allow specifying the default collation for the collection when creating it. - Add some documentation to query.Collation() method. fix globalsign#29 * Test against MongoDB 3.4.x (globalsign#35) * test against MongoDB 3.4.x * tests: use listIndexes to assert index state for 3.4+ * make test pass against v3.4.x - skip `TestViewWithCollation` because of SERVER-31049, cf: https://jira.mongodb.org/browse/SERVER-31049 - add versionAtLeast() method in init.js script to better detect server version fixes globalsign#31 * Introduce constants for BSON element types (globalsign#41) * bson.Unmarshal returns time in UTC (globalsign#42) * readme: add missing features / credit * Adds missing collation feature description (by @feliixx). * Adds missing 3.4 tests description (by @feliixx). * Adds BSON constants description (by @bozaro). * Adds UTC time.Time unmarshalling (by @gazoon). * fix golint, go vet and gofmt warnings (globalsign#44) Fixes globalsign#43 * readme: credit @feliixx (globalsign#46) * Fix GetBSON() method usage (globalsign#40) * Fix GetBSON() method usage Original issue --- You can't use type with custom GetBSON() method mixed with structure field type and structure field reference type. For example, you can't create custom GetBSON() for Bar type: ``` struct Foo { a Bar b *Bar } ``` Type implementation (`func (t Bar) GetBSON()` ) would crash on `Foo.b = nil` value encoding. Reference implementation (`func (t *Bar) GetBSON()` ) would not call on `Foo.a` value encoding. After this change --- For type implementation `func (t Bar) GetBSON()` would not call on `Foo.b = nil` value encoding. In this case `nil` value would be seariazied as `nil` BSON value. For reference implementation `func (t *Bar) GetBSON()` would call even on `Foo.a` value encoding. * Minor refactoring * readme: credit @bozaro (globalsign#47)
* add DropAllIndexes() method (globalsign#25) Create a new method to drop all the indexes of a collection in a single call * readme: credit @feliixx for globalsign#25 (globalsign#26) * send metadata during handshake (globalsign#28) fix [#484](https://github.com/go-mgo/mgo/issues/484) Annotate connections with metadata provided by the connecting client. informations send: { "aplication": { // optional "name": "myAppName" } "driver": { "name": "mgo", "version": "v2" }, "os": { "type": runtime.GOOS, "architecture": runtime.GOARCH } } to set "application.name", add `appname` param in options of string connection URI, for example : "mongodb://localhost:27017?appname=myAppName" * Update README to add appName (globalsign#32) * docs: elaborate on what appName does * readme: add appName to changes * add method CreateView() (globalsign#33) Fix globalsign#30. Thanks to @feliixx for the time and effort. * readme: credit @feliixx in the README (globalsign#36) * Don't panic on indexed int64 fields (globalsign#23) * Stop all db instances after tests (go-mgo#462) If all tests pass, the builds for mongo earlier than 2.6 are still failing. Running a clean up fixes the issue. * fixing int64 type failing when getting indexes and trying to type them * requested changes relating to case statement and panic * Update README.md to credit @mapete94. * tests: ensure indexed int64 fields do not cause a panic in Indexes() See: * globalsign#23 * https://github.com/go-mgo/mgo/issues/475 * go-mgo#476 * Add collation option to collection.Create() (globalsign#37) - Allow specifying the default collation for the collection when creating it. - Add some documentation to query.Collation() method. fix globalsign#29 * Test against MongoDB 3.4.x (globalsign#35) * test against MongoDB 3.4.x * tests: use listIndexes to assert index state for 3.4+ * make test pass against v3.4.x - skip `TestViewWithCollation` because of SERVER-31049, cf: https://jira.mongodb.org/browse/SERVER-31049 - add versionAtLeast() method in init.js script to better detect server version fixes globalsign#31 * Introduce constants for BSON element types (globalsign#41) * bson.Unmarshal returns time in UTC (globalsign#42) * readme: add missing features / credit * Adds missing collation feature description (by @feliixx). * Adds missing 3.4 tests description (by @feliixx). * Adds BSON constants description (by @bozaro). * Adds UTC time.Time unmarshalling (by @gazoon). * fix golint, go vet and gofmt warnings (globalsign#44) Fixes globalsign#43 * readme: credit @feliixx (globalsign#46) * Fix GetBSON() method usage (globalsign#40) * Fix GetBSON() method usage Original issue --- You can't use type with custom GetBSON() method mixed with structure field type and structure field reference type. For example, you can't create custom GetBSON() for Bar type: ``` struct Foo { a Bar b *Bar } ``` Type implementation (`func (t Bar) GetBSON()` ) would crash on `Foo.b = nil` value encoding. Reference implementation (`func (t *Bar) GetBSON()` ) would not call on `Foo.a` value encoding. After this change --- For type implementation `func (t Bar) GetBSON()` would not call on `Foo.b = nil` value encoding. In this case `nil` value would be seariazied as `nil` BSON value. For reference implementation `func (t *Bar) GetBSON()` would call even on `Foo.a` value encoding. * Minor refactoring * readme: credit @bozaro (globalsign#47) * Improve cursorData struct unmarshaling speed (globalsign#49) This change remove full BSON decoding on: - parsing to `bson.Raw` and `bson.DocElem` fields; - skipping unused BSON fields. * readme: credit @bozaro and @idy (globalsign#53) * readme: credit @bozaro and @idy * readme: add @idy to contributor list * do not lock while writing to a socket (globalsign#52) (globalsign#54) fix globalsign#51
Run test against MongoDB 3.4.x
cf #31
WIP - Do not merge!
After few configuration changes I was able to make tests pass against MongoDB 3.4.8.
5 tests need to be updated, and 7 tests have to be skipped (but they might not be
relevant anymore)
1 test is randomly failing against the 3.2 serie, so is currently skipped with
-fast
Test that need to be updated on 3.4:
TestEnsureIndex
(session_test.go )TestEnsureIndexKey
(session_test.go)TestEnsureIndexDropIndex
(session_test.go )TestEnsureIndexDropIndexName
(session_test.go )TestEnsureIndexDropAllIndexes
(session_test.go )These test failed because they use the
system.indexes
collection to make sure that indexeshave been created correctly, but this is deprecated since 3.0 (cf mongodb 3.0 list indexes )
Instead, they should use
Test not passing on 3.4:
TestMonotonicSlaveOkFlagWithMongos
(cluster_test.go)TestSecondaryModeWithMongos
(cluster_test.go)TestNearestSecondary
(cluster_test.go)TestNearestServer
(cluster_test.go)TestSelectServersWithMongos
(cluster_test.go)TestDoNotFallbackToMonotonic
(cluster_test.go)TestFindIterLimitWithMore
(session_test.go)Related to master/slave cluster architecture, deprecated since 3.2 ?
Config server for cluster need to be launched as ReplicaSet, and can no
longer be mirrored instance.
Test failing for 3.2 serie:
TestSecondaryModeWithMongos
(cluster_test.go)This test randomly fails on mongodb 3.2.x serie, no idea why.
Other considerations
be removed from the test matrix
Before going any further, I would like to have some feedbacks on this !
Thanks in advance