Skip to content

Commit 9b79475

Browse files
committed
Merge branch 'pr/88'
Change-Id: Id4084146a0b00db05f7c3612a37f322fbed16e13
2 parents 46eb1c8 + d961bbe commit 9b79475

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

mongo/client.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,22 @@ func (c *Client) Disconnect(ctx context.Context) error {
109109
return c.topology.Disconnect(ctx)
110110
}
111111

112+
// Ping verifies that the client can connect to the topology.
113+
// If readPreference is nil then will use the client's default read
114+
// preference.
115+
func (c *Client) Ping(ctx context.Context, rp *readpref.ReadPref) error {
116+
if ctx == nil {
117+
ctx = context.Background()
118+
}
119+
120+
if rp == nil {
121+
rp = c.readPreference
122+
}
123+
124+
_, err := c.topology.SelectServer(ctx, description.ReadPrefSelector(rp))
125+
return err
126+
}
127+
112128
// StartSession starts a new session.
113129
func (c *Client) StartSession(opts ...sessionopt.Session) (*Session, error) {
114130
if c.topology.SessionPool == nil {

mongo/client_internal_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,3 +406,28 @@ func TestClient_CausalConsistency(t *testing.T) {
406406
require.True(t, sess.Consistent)
407407
sess.EndSession(ctx)
408408
}
409+
410+
func TestClient_Ping_DefaultReadPreference(t *testing.T) {
411+
cs := testutil.ConnString(t)
412+
c, err := NewClient(cs.String())
413+
require.NoError(t, err)
414+
require.NotNil(t, c)
415+
416+
err = c.Connect(ctx)
417+
require.NoError(t, err)
418+
419+
err = c.Ping(ctx, nil)
420+
require.NoError(t, err)
421+
}
422+
423+
func TestClient_Ping_InvalidHost(t *testing.T) {
424+
c, err := NewClientWithOptions("mongodb://nohost:27017", clientopt.ServerSelectionTimeout(1*time.Millisecond))
425+
require.NoError(t, err)
426+
require.NotNil(t, c)
427+
428+
err = c.Connect(ctx)
429+
require.NoError(t, err)
430+
431+
err = c.Ping(ctx, nil)
432+
require.NotNil(t, err)
433+
}

0 commit comments

Comments
 (0)