Parcourir la source

add PingContext support for go1.8+

xormplus il y a 8 ans
Parent
commit
9b876ef498
2 fichiers modifiés avec 50 ajouts et 0 suppressions
  1. 26 0
      context.go
  2. 24 0
      context_test.go

+ 26 - 0
context.go

@@ -0,0 +1,26 @@
+// Copyright 2017 The Xorm Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.8
+
+package xorm
+
+import "context"
+
+// PingContext tests if database is alive
+func (engine *Engine) PingContext(ctx context.Context) error {
+	session := engine.NewSession()
+	defer session.Close()
+	return session.PingContext(ctx)
+}
+
+// PingContext test if database is ok
+func (session *Session) PingContext(ctx context.Context) error {
+	if session.isAutoClose {
+		defer session.Close()
+	}
+
+	session.engine.logger.Infof("PING DATABASE %v", session.engine.DriverName())
+	return session.DB().PingContext(ctx)
+}

+ 24 - 0
context_test.go

@@ -0,0 +1,24 @@
+// Copyright 2017 The Xorm Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.8
+
+package xorm
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestPingContext(t *testing.T) {
+	assert.NoError(t, prepareEngine())
+
+	// TODO: Since EngineInterface should be compitable with old Go version, PingContext is not supported.
+	/*
+		ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
+		err := testEngine.PingContext(ctx)
+		assert.NoError(t, err)
+	*/
+}