@@ -13,7 +13,7 @@ import (
1313)
1414
1515func (s * BaseCloningSuite ) TestLatestSnapshot () {
16- s .cloning .resetSnapshots (make (map [string ]* models.Snapshot ))
16+ s .cloning .resetSnapshots (make (map [string ]* models.Snapshot ), nil )
1717
1818 snapshot1 := & models.Snapshot {
1919 ID : "TestSnapshotID1" ,
@@ -38,10 +38,27 @@ func (s *BaseCloningSuite) TestLatestSnapshot() {
3838 latestSnapshot , err = s .cloning .getLatestSnapshot ()
3939 require .NoError (s .T (), err )
4040 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 )
4158}
4259
4360func (s * BaseCloningSuite ) TestSnapshotByID () {
44- s .cloning .resetSnapshots (make (map [string ]* models.Snapshot ))
61+ s .cloning .resetSnapshots (make (map [string ]* models.Snapshot ), nil )
4562
4663 snapshot1 := & models.Snapshot {
4764 ID : "TestSnapshotID1" ,
@@ -72,7 +89,7 @@ func (s *BaseCloningSuite) TestSnapshotByID() {
7289 require .NoError (s .T (), err )
7390 require .Equal (s .T (), latestSnapshot , snapshot2 )
7491
75- s .cloning .resetSnapshots (make (map [string ]* models.Snapshot ))
92+ s .cloning .resetSnapshots (make (map [string ]* models.Snapshot ), nil )
7693 require .Equal (s .T (), 0 , len (s .cloning .snapshotBox .items ))
7794 latestSnapshot , err = s .cloning .getLatestSnapshot ()
7895 require .Nil (s .T (), latestSnapshot )
@@ -102,3 +119,44 @@ func TestCloneCounter(t *testing.T) {
102119 require .Nil (t , err )
103120 require .Equal (t , 0 , snapshot .NumClones )
104121}
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