@@ -36,13 +36,32 @@ func (s *BufferListTest) TestAppend(t *C) {
36
36
t .Assert (l .Add (0 , filledBuf (1024 , 1 ), BUF_DIRTY , true ), Equals , int64 (1024 ))
37
37
t .Assert (l .Add (1024 , filledBuf (1024 , 2 ), BUF_DIRTY , true ), Equals , int64 (1024 ))
38
38
t .Assert (l .Add (1536 , filledBuf (1024 , 3 ), BUF_DIRTY , true ), Equals , int64 (1024 ))
39
- data , _ , err := l .GetData (0 , 2048 , true )
39
+ data , ids , err := l .GetData (0 , 2048 , true )
40
40
t .Assert (err , IsNil )
41
+ t .Assert (len (ids ), Equals , 1 )
42
+ var oldId uint64
43
+ for id := range ids {
44
+ oldId = id
45
+ }
41
46
t .Assert (len (data ), Equals , 1 )
42
47
t .Assert (len (data [0 ]), Equals , 2048 )
43
48
t .Assert (data [0 ][0 :1024 ], DeepEquals , filledBuf (1024 , 1 ))
44
49
t .Assert (data [0 ][1024 :1536 ], DeepEquals , filledBuf (512 , 2 ))
45
50
t .Assert (data [0 ][1536 :], DeepEquals , filledBuf (512 , 3 ))
51
+ // Then modify one of the buffers again and recheck that dirty ID is reassigned
52
+ t .Assert (l .Add (1536 , filledBuf (1024 , 4 ), BUF_DIRTY , true ), Equals , int64 (0 ))
53
+ l .SetState (0 , 2048 , ids , BUF_CLEAN )
54
+ data , ids , err = l .GetData (0 , 2048 , true )
55
+ t .Assert (len (ids ), Equals , 1 )
56
+ for id := range ids {
57
+ t .Assert (id , Not (Equals ), oldId )
58
+ }
59
+ t .Assert (err , IsNil )
60
+ t .Assert (len (data ), Equals , 1 )
61
+ t .Assert (len (data [0 ]), Equals , 2048 )
62
+ t .Assert (data [0 ][0 :1024 ], DeepEquals , filledBuf (1024 , 1 ))
63
+ t .Assert (data [0 ][1024 :1536 ], DeepEquals , filledBuf (512 , 2 ))
64
+ t .Assert (data [0 ][1536 :], DeepEquals , filledBuf (512 , 4 ))
46
65
}
47
66
48
67
func (s * BufferListTest ) TestGetHoles (t * C ) {
0 commit comments