diff --git a/context.go b/context.go new file mode 100644 index 00000000..074ba35a --- /dev/null +++ b/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) +} diff --git a/context_test.go b/context_test.go new file mode 100644 index 00000000..29a6786b --- /dev/null +++ b/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) + */ +}