Skip to content

Commit 6e66b26

Browse files
authored
GODRIVER-3092 Fix UNIX socket in URL parsing. (#1554)
1 parent 4cb576d commit 6e66b26

File tree

11 files changed

+674
-673
lines changed

11 files changed

+674
-673
lines changed

internal/integtest/integtest.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import (
2929
"go.mongodb.org/mongo-driver/x/mongo/driver/topology"
3030
)
3131

32-
var connectionString connstring.ConnString
32+
var connectionString *connstring.ConnString
3333
var connectionStringOnce sync.Once
3434
var connectionStringErr error
3535
var liveTopology *topology.Topology
@@ -211,7 +211,7 @@ func AddServerlessAuthCredentials(uri string) (string, error) {
211211
}
212212

213213
// ConnString gets the globally configured connection string.
214-
func ConnString(t *testing.T) connstring.ConnString {
214+
func ConnString(t *testing.T) *connstring.ConnString {
215215
connectionStringOnce.Do(func() {
216216
uri, err := MongoDBURI()
217217
require.NoError(t, err, "error constructing mongodb URI: %v", err)
@@ -228,7 +228,7 @@ func ConnString(t *testing.T) connstring.ConnString {
228228
return connectionString
229229
}
230230

231-
func GetConnString() (connstring.ConnString, error) {
231+
func GetConnString() (*connstring.ConnString, error) {
232232
mongodbURI := os.Getenv("MONGODB_URI")
233233
if mongodbURI == "" {
234234
mongodbURI = "mongodb://localhost:27017"
@@ -238,7 +238,7 @@ func GetConnString() (connstring.ConnString, error) {
238238

239239
cs, err := connstring.ParseAndValidate(mongodbURI)
240240
if err != nil {
241-
return connstring.ConnString{}, err
241+
return nil, err
242242
}
243243

244244
return cs, nil
@@ -249,7 +249,7 @@ func DBName(t *testing.T) string {
249249
return GetDBName(ConnString(t))
250250
}
251251

252-
func GetDBName(cs connstring.ConnString) string {
252+
func GetDBName(cs *connstring.ConnString) string {
253253
if cs.Database != "" {
254254
return cs.Database
255255
}

mongo/integration/initial_dns_seedlist_discovery_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ func buildSet(list []string) map[string]struct{} {
172172
return set
173173
}
174174

175-
func verifyConnstringOptions(mt *mtest.T, expected bson.Raw, cs connstring.ConnString) {
175+
func verifyConnstringOptions(mt *mtest.T, expected bson.Raw, cs *connstring.ConnString) {
176176
mt.Helper()
177177

178178
elems, _ := expected.Elements()

mongo/integration/mtest/global_state.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func MultiMongosLoadBalancerURI() string {
5454
}
5555

5656
// ClusterConnString returns the parsed ConnString for the cluster.
57-
func ClusterConnString() connstring.ConnString {
57+
func ClusterConnString() *connstring.ConnString {
5858
return testContext.connString
5959
}
6060

mongo/integration/mtest/setup.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ const (
3737
// once during the global setup in TestMain. These variables should only be accessed indirectly through MongoTest
3838
// instances.
3939
var testContext struct {
40-
connString connstring.ConnString
40+
connString *connstring.ConnString
4141
topo *topology.Topology
4242
topoKind TopologyKind
4343
// shardedReplicaSet will be true if we're connected to a sharded cluster and each shard is backed by a replica set.

mongo/options/clientoptions.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,6 @@ type ClientOptions struct {
237237
ZstdLevel *int
238238

239239
err error
240-
uri string
241240
cs *connstring.ConnString
242241

243242
// AuthenticateToAnything skips server type checks when deciding if authentication is possible.
@@ -338,7 +337,10 @@ func (c *ClientOptions) validate() error {
338337
// GetURI returns the original URI used to configure the ClientOptions instance. If ApplyURI was not called during
339338
// construction, this returns "".
340339
func (c *ClientOptions) GetURI() string {
341-
return c.uri
340+
if c.cs == nil {
341+
return ""
342+
}
343+
return c.cs.Original
342344
}
343345

344346
// ApplyURI parses the given URI and sets options accordingly. The URI can contain host names, IPv4/IPv6 literals, or
@@ -360,13 +362,12 @@ func (c *ClientOptions) ApplyURI(uri string) *ClientOptions {
360362
return c
361363
}
362364

363-
c.uri = uri
364365
cs, err := connstring.ParseAndValidate(uri)
365366
if err != nil {
366367
c.err = err
367368
return c
368369
}
369-
c.cs = &cs
370+
c.cs = cs
370371

371372
if cs.AppName != "" {
372373
c.AppName = &cs.AppName
@@ -1134,9 +1135,6 @@ func MergeClientOptions(opts ...*ClientOptions) *ClientOptions {
11341135
if opt.err != nil {
11351136
c.err = opt.err
11361137
}
1137-
if opt.uri != "" {
1138-
c.uri = opt.uri
1139-
}
11401138
if opt.cs != nil {
11411139
c.cs = opt.cs
11421140
}

mongo/options/clientoptions_test.go

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -184,16 +184,6 @@ func TestClientOptions(t *testing.T) {
184184
t.Errorf("Merged client options do not match. got %v; want %v", got.err.Error(), opt1.err.Error())
185185
}
186186
})
187-
188-
t.Run("MergeClientOptions/uri", func(t *testing.T) {
189-
opt1, opt2 := Client(), Client()
190-
opt1.uri = "Test URI"
191-
192-
got := MergeClientOptions(nil, opt1, opt2)
193-
if got.uri != "Test URI" {
194-
t.Errorf("Merged client options do not match. got %v; want %v", got.uri, opt1.uri)
195-
}
196-
})
197187
})
198188
t.Run("ApplyURI", func(t *testing.T) {
199189
baseClient := func() *ClientOptions {
@@ -586,10 +576,9 @@ func TestClientOptions(t *testing.T) {
586576

587577
// Manually add the URI and ConnString to the test expectations to avoid adding them in each test
588578
// definition. The ConnString should only be recorded if there was no error while parsing.
589-
tc.result.uri = tc.uri
590579
cs, err := connstring.ParseAndValidate(tc.uri)
591580
if err == nil {
592-
tc.result.cs = &cs
581+
tc.result.cs = cs
593582
}
594583

595584
// We have to sort string slices in comparison, as Hosts resolved from SRV URIs do not have a set order.

0 commit comments

Comments
 (0)