add PingContext support for go1.8+ (#766)

This commit is contained in:
Lunny Xiao 2017-10-31 17:30:01 +08:00 committed by GitHub
parent 865979f716
commit 23049ffafa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 0 deletions

26
context.go Normal file
View File

@ -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
context_test.go Normal file
View File

@ -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)
*/
}