8
"github.com/stretchr/testify/require"
11
func TestGetMaskFromString(t *testing.T) {
19
{TxOpMaskCreate, "create"},
20
{TxOpMaskRename, "rename"},
23
for _, c := range cs {
24
str := GetMaskString(c.op)
25
require.Equal(t, str, c.str)
29
func TestMaskContains(t *testing.T) {
35
{TxOpMaskOff, TxOpMaskOff, true},
36
{TxOpMaskOff, TxOpMaskRemove, false},
37
{TxOpMaskRemove | TxOpMaskRename, TxOpMaskRename, true},
38
{TxOpMaskAll, TxPause, false},
39
{TxOpMaskAll, TxOpMaskRename, true},
40
{TxPause, TxPause, true},
42
for _, c := range cs {
43
got := MaskContains(c.total, c.sub)
44
require.Equal(t, c.result, got)
48
func TestTxInodeInfoMarshal(t *testing.T) {
51
MpMembers: "m1,m2,m3",
58
bs, err := ifo.Marshal()
59
require.NoError(t, err)
61
nIfo := &TxInodeInfo{}
62
err = nIfo.Unmarshal(bs)
63
require.NoError(t, err)
65
require.True(t, reflect.DeepEqual(ifo, nIfo))
68
require.False(t, reflect.DeepEqual(ifo, nIfo))
71
func TestTxDentryInfoMarshal(t *testing.T) {
75
MpMembers: "m1,m2,m3",
82
bs, err := ifo.Marshal()
83
require.NoError(t, err)
85
nIfo := &TxDentryInfo{}
86
err = nIfo.Unmarshal(bs)
87
require.NoError(t, err)
89
require.True(t, reflect.DeepEqual(ifo, nIfo))
92
require.False(t, reflect.DeepEqual(ifo, nIfo))
95
func TestTransactionInfo_Marshal(t *testing.T) {
96
tx := NewTransactionInfo(1, TxTypeRename)
100
tx.State = TxStateRollbackDone
102
require.False(t, tx.IsInitialized())
104
inoIfo := &TxInodeInfo{
108
tx.TxInodeInfos[inoIfo.GetKey()] = inoIfo
110
dIfo := &TxDentryInfo{
115
tx.TxDentryInfos[dIfo.GetKey()] = dIfo
117
bs, err := tx.Marshal()
118
require.NoError(t, err)
120
ntx := NewTransactionInfo(2, TxTypeLink)
121
err = ntx.Unmarshal(bs)
122
require.NoError(t, err)
123
require.True(t, reflect.DeepEqual(tx, ntx))
126
require.False(t, reflect.DeepEqual(tx, ntx))
128
cpTx := tx.Copy().(*TransactionInfo)
129
require.True(t, reflect.DeepEqual(tx, cpTx))
132
func TestTransactionInfo_SetCreateInodeId(t *testing.T) {
133
tx := NewTransactionInfo(1, TxTypeRename)
134
inoIfo := &TxInodeInfo{
137
tx.TxInodeInfos[inoIfo.GetKey()] = inoIfo
140
tx.SetCreateInodeId(ino)
142
nifo := tx.TxInodeInfos[ino]
143
require.True(t, reflect.DeepEqual(nifo, inoIfo))
144
require.True(t, len(tx.TxInodeInfos) == 1)
147
func TestTransactionInfo_Less(t *testing.T) {
148
tx := &TransactionInfo{
151
tx2 := &TransactionInfo{
154
require.True(t, tx.Less(tx2))
157
func TestTransactionInfo_GroupByMp(t *testing.T) {
158
mp1, mp2 := uint64(1), uint64(2)
159
addr1, addr2 := "m1,m1", "m2,m2"
161
ino1 := &TxInodeInfo{
166
ino2 := &TxInodeInfo{
182
tx := NewTransactionInfo(0, TxTypeRename)
183
tx.TxInodeInfos[ino1.GetKey()] = ino1
184
tx.TxInodeInfos[ino2.GetKey()] = ino2
185
tx.TxDentryInfos[d1.GetKey()] = d1
186
tx.TxDentryInfos[d2.GetKey()] = d2
188
mps := tx.GroupByMp()
189
require.True(t, len(mps) == 2)
190
for id, mp := range mps {
192
require.Equal(t, addr1, mp.Members)
194
require.Equal(t, addr2, mp.Members)
196
require.Equal(t, len(mp.TxDentryInfos), 1)
197
require.Equal(t, len(mp.TxInodeInfos), 1)
201
func TestTxFunc(t *testing.T) {
202
tx := NewTransactionInfo(1, TxTypeRename)
204
require.False(t, tx.IsDone())
205
tx.State = TxStateRollbackDone
206
require.True(t, tx.IsDone())
207
tx.State = TxStateCommitDone
208
require.True(t, tx.IsDone())
212
tx.DoneTime = time.Now().Unix() - 130
213
require.True(t, tx.CanDelete())
215
tx.DoneTime = time.Now().Unix() - 61
216
require.True(t, tx.IsExpired())