@ -2,11 +2,14 @@ package sqlstore
import (
"testing"
"time"
"github.com/go-xorm/xorm"
. "github.com/smartystreets/goconvey/convey"
"github.com/grafana/grafana/pkg/components/simplejson"
m "github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/setting"
)
func TestDashboardSnapshotDBAccess ( t * testing . T ) {
@ -105,3 +108,65 @@ func TestDashboardSnapshotDBAccess(t *testing.T) {
} )
} )
}
func TestDeleteExpiredSnapshots ( t * testing . T ) {
Convey ( "Testing dashboard snapshots clean up" , t , func ( ) {
x := InitTestDB ( t )
setting . SnapShotRemoveExpired = true
notExpiredsnapshot := createTestSnapshot ( x , "key1" , 1000 )
createTestSnapshot ( x , "key2" , - 1000 )
createTestSnapshot ( x , "key3" , - 1000 )
Convey ( "Clean up old dashboard snapshots" , func ( ) {
err := DeleteExpiredSnapshots ( & m . DeleteExpiredSnapshotsCommand { } )
So ( err , ShouldBeNil )
query := m . GetDashboardSnapshotsQuery {
OrgId : 1 ,
SignedInUser : & m . SignedInUser { OrgRole : m . ROLE_ADMIN } ,
}
err = SearchDashboardSnapshots ( & query )
So ( err , ShouldBeNil )
So ( len ( query . Result ) , ShouldEqual , 1 )
So ( query . Result [ 0 ] . Key , ShouldEqual , notExpiredsnapshot . Key )
} )
Convey ( "Don't delete anything if there are no expired snapshots" , func ( ) {
err := DeleteExpiredSnapshots ( & m . DeleteExpiredSnapshotsCommand { } )
So ( err , ShouldBeNil )
query := m . GetDashboardSnapshotsQuery {
OrgId : 1 ,
SignedInUser : & m . SignedInUser { OrgRole : m . ROLE_ADMIN } ,
}
SearchDashboardSnapshots ( & query )
So ( len ( query . Result ) , ShouldEqual , 1 )
} )
} )
}
func createTestSnapshot ( x * xorm . Engine , key string , expires int64 ) * m . DashboardSnapshot {
cmd := m . CreateDashboardSnapshotCommand {
Key : key ,
DeleteKey : "delete" + key ,
Dashboard : simplejson . NewFromAny ( map [ string ] interface { } {
"hello" : "mupp" ,
} ) ,
UserId : 1000 ,
OrgId : 1 ,
Expires : expires ,
}
err := CreateDashboardSnapshot ( & cmd )
So ( err , ShouldBeNil )
// Set expiry date manually - to be able to create expired snapshots
expireDate := time . Now ( ) . Add ( time . Second * time . Duration ( expires ) )
_ , err = x . Exec ( "update dashboard_snapshot set expires = ? where " + dialect . Quote ( "key" ) + " = ?" , expireDate , key )
So ( err , ShouldBeNil )
return cmd . Result
}