blob: 21b108d08e748b47adba4997e3f45638e6c2176f [file] [log] [blame]
package holder
import (
"github.com/stretchr/testify/assert"
"github.com/dk-lockdown/seata-golang/meta"
"github.com/dk-lockdown/seata-golang/tc/model"
"testing"
)
func TestFileBasedSessionManager_AddGlobalSession(t *testing.T) {
gs := globalSessionProvider()
sessionManager := NewFileBasedSessionManager("root.data")
sessionManager.AddGlobalSession(gs)
sessionManager.RemoveGlobalSession(gs)
}
func TestFileBasedSessionManager_FindGlobalSession(t *testing.T) {
gs := globalSessionProvider()
sessionManager := NewFileBasedSessionManager("root.data")
sessionManager.AddGlobalSession(gs)
expected := sessionManager.FindGlobalSession(gs.Xid)
assert.NotNil(t,expected)
assert.Equal(t,gs.TransactionId,expected.TransactionId)
assert.Equal(t,gs.ApplicationId,expected.ApplicationId)
assert.Equal(t,gs.TransactionServiceGroup,expected.TransactionServiceGroup)
assert.Equal(t,gs.TransactionName,expected.TransactionName)
assert.Equal(t,gs.Status,expected.Status)
sessionManager.RemoveGlobalSession(gs)
}
func TestFileBasedSessionManager_UpdateGlobalSessionStatus(t *testing.T) {
gs := globalSessionProvider()
sessionManager := NewFileBasedSessionManager("root.data")
sessionManager.AddGlobalSession(gs)
gs.Status = meta.GlobalStatusFinished
sessionManager.UpdateGlobalSessionStatus(gs,meta.GlobalStatusFinished)
expected := sessionManager.FindGlobalSession(gs.Xid)
assert.NotNil(t,gs)
assert.Equal(t,meta.GlobalStatusFinished,expected.Status)
sessionManager.RemoveGlobalSession(gs)
}
func TestFileBasedSessionManager_RemoveGlobalSession(t *testing.T) {
gs := globalSessionProvider()
sessionManager := NewFileBasedSessionManager("root.data")
sessionManager.AddGlobalSession(gs)
sessionManager.RemoveGlobalSession(gs)
expected := sessionManager.FindGlobalSession(gs.Xid)
assert.Nil(t,expected)
}
func TestFileBasedSessionManager_AddBranchSession(t *testing.T) {
gs := globalSessionProvider()
bs := branchSessionProvider(gs)
sessionManager := NewFileBasedSessionManager("root.data")
sessionManager.AddGlobalSession(gs)
sessionManager.AddBranchSession(gs,bs)
sessionManager.RemoveBranchSession(gs,bs)
sessionManager.RemoveGlobalSession(gs)
}
func TestFileBasedSessionManager_UpdateBranchSessionStatus(t *testing.T) {
gs := globalSessionProvider()
bs := branchSessionProvider(gs)
sessionManager := NewFileBasedSessionManager("root.data")
sessionManager.AddGlobalSession(gs)
sessionManager.AddBranchSession(gs,bs)
sessionManager.UpdateBranchSessionStatus(bs,meta.BranchStatusPhasetwoCommitted)
sessionManager.RemoveBranchSession(gs,bs)
sessionManager.RemoveGlobalSession(gs)
}
func TestFileBasedSessionManager_RemoveBranchSession(t *testing.T) {
gs := globalSessionProvider()
bs := branchSessionProvider(gs)
sessionManager := NewFileBasedSessionManager("root.data")
sessionManager.AddGlobalSession(gs)
sessionManager.AddBranchSession(gs,bs)
sessionManager.RemoveBranchSession(gs,bs)
sessionManager.RemoveGlobalSession(gs)
}
func TestFileBasedSessionManager_AllSessions(t *testing.T) {
gss := globalSessionsProvider()
sessionManager := NewFileBasedSessionManager("root.data")
for _,gs := range gss {
sessionManager.AddGlobalSession(gs)
}
allGs := sessionManager.AllSessions()
assert.NotNil(t,allGs)
assert.Equal(t,2,len(allGs))
for _,gs := range gss {
sessionManager.RemoveGlobalSession(gs)
}
allGs2 := sessionManager.AllSessions()
assert.Equal(t,0,len(allGs2))
}
func TestFileBasedSessionManager_FindGlobalSessionTest(t *testing.T) {
gss := globalSessionsProvider()
sessionManager := NewFileBasedSessionManager("root.data")
for _,gs := range gss {
sessionManager.AddGlobalSession(gs)
}
sessionCondition := model.SessionCondition{
OverTimeAliveMills: 30 * 24 * 3600,
}
expectedGlobalSessions := sessionManager.FindGlobalSessions(sessionCondition)
assert.NotNil(t,expectedGlobalSessions)
assert.Equal(t,2,len(expectedGlobalSessions))
for _,gs := range gss {
sessionManager.RemoveGlobalSession(gs)
}
}