From 9e406c40b5653c867326582deb44d6b98cf230ee Mon Sep 17 00:00:00 2001 From: zikaeroh <48577114+zikaeroh@users.noreply.github.com> Date: Wed, 14 Aug 2019 17:40:52 -0700 Subject: [PATCH] Update MongoDB driver to 1.1.0, use correct import path --- database/mongodb/mongodb.go | 22 ++++++++------------- database/mongodb/mongodb_test.go | 33 +++++++++++++++----------------- go.mod | 2 +- go.sum | 4 ++-- 4 files changed, 26 insertions(+), 35 deletions(-) diff --git a/database/mongodb/mongodb.go b/database/mongodb/mongodb.go index d6986ee..af632a1 100644 --- a/database/mongodb/mongodb.go +++ b/database/mongodb/mongodb.go @@ -8,11 +8,11 @@ import ( "net/url" "strconv" - "github.com/golang-migrate/migrate/v4" "github.com/golang-migrate/migrate/v4/database" - "github.com/mongodb/mongo-go-driver/bson" - "github.com/mongodb/mongo-go-driver/mongo" - "github.com/mongodb/mongo-go-driver/x/network/connstring" + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" + "go.mongodb.org/mongo-driver/x/mongo/driver/connstring" ) func init() { @@ -73,18 +73,12 @@ func (m *Mongo) Open(dsn string) (database.Driver, error) { return nil, ErrNoDatabaseName } - purl, err := url.Parse(dsn) - if err != nil { - return nil, err - } - migrationsCollection := purl.Query().Get("x-migrations-collection") + unknown := url.Values(uri.UnknownOptions) - transactionMode, _ := strconv.ParseBool(purl.Query().Get("x-transaction-mode")) + migrationsCollection := unknown.Get("x-migrations-collection") + transactionMode, _ := strconv.ParseBool(unknown.Get("x-transaction-mode")) - q := migrate.FilterCustomQuery(purl) - q.Scheme = "mongodb" - - client, err := mongo.Connect(context.TODO(), q.String()) + client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(dsn)) if err != nil { return nil, err } diff --git a/database/mongodb/mongodb_test.go b/database/mongodb/mongodb_test.go index d2ba645..2814f50 100644 --- a/database/mongodb/mongodb_test.go +++ b/database/mongodb/mongodb_test.go @@ -17,8 +17,9 @@ import ( import ( "github.com/dhui/dktest" - "github.com/mongodb/mongo-go-driver/bson" - "github.com/mongodb/mongo-go-driver/mongo" + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" ) import ( @@ -34,6 +35,7 @@ var ( {ImageName: "mongo:3.4", Options: opts}, {ImageName: "mongo:3.6", Options: opts}, {ImageName: "mongo:4.0", Options: opts}, + {ImageName: "mongo:4.2", Options: opts}, } ) @@ -49,7 +51,7 @@ func isReady(ctx context.Context, c dktest.ContainerInfo) bool { return false } - client, err := mongo.Connect(ctx, mongoConnectionString(ip, port)) + client, err := mongo.Connect(ctx, options.Client().ApplyURI(mongoConnectionString(ip, port))) if err != nil { return false } @@ -154,24 +156,19 @@ func TestWithAuth(t *testing.T) { {"right auth data", "mongodb://deminem:gogo@%s:%v/testMigration", false}, {"wrong auth data", "mongodb://wrong:auth@%s:%v/testMigration", true}, } - insertCMD := []byte(`[{"insert":"hello","documents":[{"wild":"world"}]}]`) for _, tcase := range testcases { - //With wrong authenticate `Open` func doesn't return auth error - //Because at the moment golang mongo driver doesn't support auth during connection - //For getting auth error we should execute database command t.Run(tcase.name, func(t *testing.T) { mc := &Mongo{} d, err := mc.Open(fmt.Sprintf(tcase.connectUri, ip, port)) - if err != nil { - t.Fatal(err) + if err == nil { + defer func() { + if err := d.Close(); err != nil { + t.Error(err) + } + }() } - defer func() { - if err := d.Close(); err != nil { - t.Error(err) - } - }() - err = d.Run(bytes.NewReader(insertCMD)) + switch { case tcase.isErrorExpected && err == nil: t.Fatalf("no error when expected") @@ -194,7 +191,7 @@ func TestTransaction(t *testing.T) { t.Fatal(err) } - client, err := mongo.Connect(context.TODO(), mongoConnectionString(ip, port)) + client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(mongoConnectionString(ip, port))) if err != nil { t.Fatal(err) } @@ -274,7 +271,7 @@ func TestTransaction(t *testing.T) { } for _, tcase := range testcases { t.Run(tcase.name, func(t *testing.T) { - client, err := mongo.Connect(context.TODO(), mongoConnectionString(ip, port)) + client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(mongoConnectionString(ip, port))) if err != nil { t.Fatal(err) } @@ -300,7 +297,7 @@ func TestTransaction(t *testing.T) { t.Fatal(runErr) } } - documentsCount, err := client.Database("testMigration").Collection("hello").Count(context.TODO(), bson.M{}) + documentsCount, err := client.Database("testMigration").Collection("hello").CountDocuments(context.TODO(), bson.M{}) if err != nil { t.Fatal(err) } diff --git a/go.mod b/go.mod index ae6e818..a31b00b 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,6 @@ require ( github.com/kshvakov/clickhouse v1.3.5 github.com/lib/pq v1.0.0 github.com/mattn/go-sqlite3 v1.10.0 - github.com/mongodb/mongo-go-driver v0.3.0 github.com/nakagami/firebirdsql v0.0.0-20190310045651-3c02a58cfed8 github.com/pkg/errors v0.8.1 // indirect github.com/satori/go.uuid v1.2.0 // indirect @@ -40,6 +39,7 @@ require ( github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c // indirect github.com/xdg/stringprep v1.0.0 // indirect gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b // indirect + go.mongodb.org/mongo-driver v1.1.0 golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734 // indirect golang.org/x/net v0.0.0-20190424112056-4829fb13d2c6 golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a // indirect diff --git a/go.sum b/go.sum index 55002b3..3aae9b0 100644 --- a/go.sum +++ b/go.sum @@ -147,8 +147,6 @@ github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/mattn/go-sqlite3 v1.10.0 h1:jbhqpg7tQe4SupckyijYiy0mJJ/pRyHvXf7JdWK860o= github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mongodb/mongo-go-driver v0.3.0 h1:00tKWMrabkVU1e57/TTP4ZBIfhn/wmjlSiRnIM9d0T8= -github.com/mongodb/mongo-go-driver v0.3.0/go.mod h1:NK/HWDIIZkaYsnYa0hmtP443T5ELr0KDecmIioVuuyU= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nakagami/firebirdsql v0.0.0-20190310045651-3c02a58cfed8 h1:P48LjvUQpTReR3TQRbxSeSBsMXzfK0uol7eRcr7VBYQ= github.com/nakagami/firebirdsql v0.0.0-20190310045651-3c02a58cfed8/go.mod h1:86wM1zFnC6/uDBfZGNwB65O+pR2OFi5q/YQaEUid1qA= @@ -196,6 +194,8 @@ github.com/xdg/stringprep v1.0.0 h1:d9X0esnoa3dFsV0FG35rAT0RIhYFlPq7MiP+DW89La0= github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b h1:7gd+rd8P3bqcn/96gOZa3F5dpJr/vEiDQYlNb/y2uNs= gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b/go.mod h1:T3BPAOm2cqquPa0MKWeNkmOM5RQsRhkrwMWonFMN7fE= +go.mongodb.org/mongo-driver v1.1.0 h1:aeOqSrhl9eDRAap/3T5pCfMBEBxZ0vuXBP+RMtp2KX8= +go.mongodb.org/mongo-driver v1.1.0/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.opencensus.io v0.20.1 h1:pMEjRZ1M4ebWGikflH7nQpV6+Zr88KBMA2XJD3sbijw= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0 h1:mU6zScU4U1YAFPHEHYk+3JC4SY7JxgkqS10ZOSyksNg=