Skip to content

Commit 9b2d02e

Browse files
committed
fix: wrong selection of the latest snapshot (#304)
1 parent 17603ca commit 9b2d02e

File tree

4 files changed

+29
-23
lines changed

4 files changed

+29
-23
lines changed

cmd/cli/commands/clone/actions.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,16 @@ func list(cliCtx *cli.Context) error {
4040
defer func() { _ = body.Close() }()
4141

4242
viewCloneList := &models.CloneListView{
43-
Clones: make([]*models.CloneView, 0),
43+
Cloning: models.CloningView{
44+
Clones: make([]*models.CloneView, 0),
45+
},
4446
}
4547

4648
if err := json.NewDecoder(body).Decode(&viewCloneList); err != nil {
4749
return err
4850
}
4951

50-
commandResponse, err := json.MarshalIndent(viewCloneList.Clones, "", " ")
52+
commandResponse, err := json.MarshalIndent(viewCloneList.Cloning.Clones, "", " ")
5153
if err != nil {
5254
return err
5355
}

pkg/models/instance_status.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,13 @@ type CloneList struct {
5555
Cloning Cloning `json:"cloning"`
5656
}
5757

58-
// CloneListView represents a list of clone views.
58+
// CloneListView represents cloning process views.
5959
type CloneListView struct {
60+
Cloning CloningView `json:"cloning"`
61+
}
62+
63+
// CloningView represents a list of clone views.
64+
type CloningView struct {
6065
Clones []*CloneView `json:"clones"`
6166
}
6267

pkg/services/cloning/snapshots.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func (c *Base) addSnapshot(snapshot *models.Snapshot) {
7171
c.snapshotBox.items[snapshot.ID] = snapshot
7272

7373
if c.snapshotBox.latestSnapshot == nil ||
74-
c.snapshotBox.latestSnapshot.DataStateAt == "" || c.snapshotBox.latestSnapshot.DataStateAt > snapshot.DataStateAt {
74+
c.snapshotBox.latestSnapshot.DataStateAt == "" || c.snapshotBox.latestSnapshot.DataStateAt < snapshot.DataStateAt {
7575
c.snapshotBox.latestSnapshot = snapshot
7676
}
7777

pkg/services/cloning/snapshots_test.go

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ package cloning
77
import (
88
"testing"
99

10-
"github.com/stretchr/testify/assert"
1110
"github.com/stretchr/testify/require"
1211

1312
"gitlab.com/postgres-ai/database-lab/v2/pkg/models"
@@ -28,17 +27,17 @@ func (s *BaseCloningSuite) TestLatestSnapshot() {
2827
DataStateAt: "2020-02-20 00:00:00",
2928
}
3029

31-
assert.Equal(s.T(), 0, len(s.cloning.snapshotBox.items))
30+
require.Equal(s.T(), 0, len(s.cloning.snapshotBox.items))
3231
latestSnapshot, err := s.cloning.getLatestSnapshot()
33-
assert.Nil(s.T(), latestSnapshot)
34-
assert.EqualError(s.T(), err, "no snapshot found")
32+
require.Nil(s.T(), latestSnapshot)
33+
require.EqualError(s.T(), err, "no snapshot found")
3534

3635
s.cloning.addSnapshot(snapshot1)
3736
s.cloning.addSnapshot(snapshot2)
3837

3938
latestSnapshot, err = s.cloning.getLatestSnapshot()
4039
require.NoError(s.T(), err)
41-
assert.Equal(s.T(), latestSnapshot, snapshot1)
40+
require.Equal(s.T(), latestSnapshot, snapshot2)
4241
}
4342

4443
func (s *BaseCloningSuite) TestSnapshotByID() {
@@ -56,28 +55,28 @@ func (s *BaseCloningSuite) TestSnapshotByID() {
5655
DataStateAt: "2020-02-20 00:00:00",
5756
}
5857

59-
assert.Equal(s.T(), 0, len(s.cloning.snapshotBox.items))
58+
require.Equal(s.T(), 0, len(s.cloning.snapshotBox.items))
6059
latestSnapshot, err := s.cloning.getLatestSnapshot()
61-
assert.Nil(s.T(), latestSnapshot)
62-
assert.EqualError(s.T(), err, "no snapshot found")
60+
require.Nil(s.T(), latestSnapshot)
61+
require.EqualError(s.T(), err, "no snapshot found")
6362

6463
s.cloning.addSnapshot(snapshot1)
65-
assert.Equal(s.T(), 1, len(s.cloning.snapshotBox.items))
66-
assert.Equal(s.T(), "TestSnapshotID1", s.cloning.snapshotBox.items[snapshot1.ID].ID)
64+
require.Equal(s.T(), 1, len(s.cloning.snapshotBox.items))
65+
require.Equal(s.T(), "TestSnapshotID1", s.cloning.snapshotBox.items[snapshot1.ID].ID)
6766

6867
s.cloning.addSnapshot(snapshot2)
69-
assert.Equal(s.T(), 2, len(s.cloning.snapshotBox.items))
70-
assert.Equal(s.T(), "TestSnapshotID2", s.cloning.snapshotBox.items[snapshot2.ID].ID)
68+
require.Equal(s.T(), 2, len(s.cloning.snapshotBox.items))
69+
require.Equal(s.T(), "TestSnapshotID2", s.cloning.snapshotBox.items[snapshot2.ID].ID)
7170

7271
latestSnapshot, err = s.cloning.getSnapshotByID("TestSnapshotID2")
7372
require.NoError(s.T(), err)
74-
assert.Equal(s.T(), latestSnapshot, snapshot2)
73+
require.Equal(s.T(), latestSnapshot, snapshot2)
7574

7675
s.cloning.resetSnapshots(make(map[string]*models.Snapshot))
77-
assert.Equal(s.T(), 0, len(s.cloning.snapshotBox.items))
76+
require.Equal(s.T(), 0, len(s.cloning.snapshotBox.items))
7877
latestSnapshot, err = s.cloning.getLatestSnapshot()
79-
assert.Nil(s.T(), latestSnapshot)
80-
assert.EqualError(s.T(), err, "no snapshot found")
78+
require.Nil(s.T(), latestSnapshot)
79+
require.EqualError(s.T(), err, "no snapshot found")
8180
}
8281

8382
func TestCloneCounter(t *testing.T) {
@@ -91,15 +90,15 @@ func TestCloneCounter(t *testing.T) {
9190

9291
snapshot, err := c.getSnapshotByID("testSnapshotID")
9392
require.Nil(t, err)
94-
assert.Equal(t, 0, snapshot.NumClones)
93+
require.Equal(t, 0, snapshot.NumClones)
9594

9695
c.incrementCloneNumber("testSnapshotID")
9796
snapshot, err = c.getSnapshotByID("testSnapshotID")
9897
require.Nil(t, err)
99-
assert.Equal(t, 1, snapshot.NumClones)
98+
require.Equal(t, 1, snapshot.NumClones)
10099

101100
c.decrementCloneNumber("testSnapshotID")
102101
snapshot, err = c.getSnapshotByID("testSnapshotID")
103102
require.Nil(t, err)
104-
assert.Equal(t, 0, snapshot.NumClones)
103+
require.Equal(t, 0, snapshot.NumClones)
105104
}

0 commit comments

Comments
 (0)