@@ -13,7 +13,7 @@ import (
13
13
)
14
14
15
15
func (s * BaseCloningSuite ) TestLatestSnapshot () {
16
- s .cloning .resetSnapshots (make (map [string ]* models.Snapshot ))
16
+ s .cloning .resetSnapshots (make (map [string ]* models.Snapshot ), nil )
17
17
18
18
snapshot1 := & models.Snapshot {
19
19
ID : "TestSnapshotID1" ,
@@ -38,10 +38,27 @@ func (s *BaseCloningSuite) TestLatestSnapshot() {
38
38
latestSnapshot , err = s .cloning .getLatestSnapshot ()
39
39
require .NoError (s .T (), err )
40
40
require .Equal (s .T (), latestSnapshot , snapshot2 )
41
+
42
+ snapshot3 := & models.Snapshot {
43
+ ID : "TestSnapshotID3" ,
44
+ CreatedAt : "2020-02-21 05:43:21" ,
45
+ DataStateAt : "2020-02-21 00:00:00" ,
46
+ }
47
+
48
+ snapshotMap := make (map [string ]* models.Snapshot )
49
+ snapshotMap [snapshot1 .ID ] = snapshot1
50
+ snapshotMap [snapshot2 .ID ] = snapshot2
51
+ snapshotMap [snapshot3 .ID ] = snapshot3
52
+ s .cloning .resetSnapshots (snapshotMap , snapshot3 )
53
+
54
+ require .Equal (s .T (), 3 , len (s .cloning .snapshotBox .items ))
55
+ latestSnapshot , err = s .cloning .getLatestSnapshot ()
56
+ require .NoError (s .T (), err )
57
+ require .Equal (s .T (), latestSnapshot , snapshot3 )
41
58
}
42
59
43
60
func (s * BaseCloningSuite ) TestSnapshotByID () {
44
- s .cloning .resetSnapshots (make (map [string ]* models.Snapshot ))
61
+ s .cloning .resetSnapshots (make (map [string ]* models.Snapshot ), nil )
45
62
46
63
snapshot1 := & models.Snapshot {
47
64
ID : "TestSnapshotID1" ,
@@ -72,7 +89,7 @@ func (s *BaseCloningSuite) TestSnapshotByID() {
72
89
require .NoError (s .T (), err )
73
90
require .Equal (s .T (), latestSnapshot , snapshot2 )
74
91
75
- s .cloning .resetSnapshots (make (map [string ]* models.Snapshot ))
92
+ s .cloning .resetSnapshots (make (map [string ]* models.Snapshot ), nil )
76
93
require .Equal (s .T (), 0 , len (s .cloning .snapshotBox .items ))
77
94
latestSnapshot , err = s .cloning .getLatestSnapshot ()
78
95
require .Nil (s .T (), latestSnapshot )
@@ -102,3 +119,44 @@ func TestCloneCounter(t *testing.T) {
102
119
require .Nil (t , err )
103
120
require .Equal (t , 0 , snapshot .NumClones )
104
121
}
122
+
123
+ func TestLatestSnapshots (t * testing.T ) {
124
+ baseSnapshot := & models.Snapshot {
125
+ DataStateAt : "2020-02-19 00:00:00" ,
126
+ }
127
+ newSnapshot := & models.Snapshot {
128
+ DataStateAt : "2020-02-21 00:00:00" ,
129
+ }
130
+ oldSnapshot := & models.Snapshot {
131
+ DataStateAt : "2020-02-01 00:00:00" ,
132
+ }
133
+
134
+ testCases := []struct {
135
+ latest , challenger , result * models.Snapshot
136
+ }{
137
+ {
138
+ latest : baseSnapshot ,
139
+ challenger : newSnapshot ,
140
+ result : newSnapshot ,
141
+ },
142
+ {
143
+ latest : baseSnapshot ,
144
+ challenger : oldSnapshot ,
145
+ result : baseSnapshot ,
146
+ },
147
+ {
148
+ latest : nil ,
149
+ challenger : oldSnapshot ,
150
+ result : oldSnapshot ,
151
+ },
152
+ {
153
+ latest : & models.Snapshot {},
154
+ challenger : oldSnapshot ,
155
+ result : oldSnapshot ,
156
+ },
157
+ }
158
+
159
+ for _ , tc := range testCases {
160
+ require .Equal (t , tc .result , defineLatestSnapshot (tc .latest , tc .challenger ))
161
+ }
162
+ }
0 commit comments