From 86e9118e2297982cc50814db9b9a42ac34e90097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beomgi=20Kim=20=7C=20=EA=B9=80=EB=B2=94=EA=B8=B0?= Date: Tue, 20 Sep 2022 18:43:55 +0900 Subject: [PATCH] Move retention-related tests to retention_test.go (#414) --- test/integration/retention_test.go | 132 +++++++++++++++++++++++++++ test/integration/snapshot_test.go | 137 ----------------------------- 2 files changed, 132 insertions(+), 137 deletions(-) diff --git a/test/integration/retention_test.go b/test/integration/retention_test.go index a42a8fb3b..65b315b8e 100644 --- a/test/integration/retention_test.go +++ b/test/integration/retention_test.go @@ -31,10 +31,12 @@ import ( "github.com/yorkie-team/yorkie/api/types" "github.com/yorkie-team/yorkie/client" "github.com/yorkie-team/yorkie/pkg/document" + "github.com/yorkie-team/yorkie/pkg/document/change" "github.com/yorkie-team/yorkie/pkg/document/json" "github.com/yorkie-team/yorkie/pkg/document/key" "github.com/yorkie-team/yorkie/server" "github.com/yorkie-team/yorkie/server/backend/background" + "github.com/yorkie-team/yorkie/server/backend/database/mongo" "github.com/yorkie-team/yorkie/server/logging" "github.com/yorkie-team/yorkie/test/helper" ) @@ -115,4 +117,134 @@ func TestRetention(t *testing.T) { assert.NoError(t, err) assert.Len(t, changes2, 0) }) + + t.Run("snapshot with purging chagnes test", func(t *testing.T) { + serverConfig := helper.TestConfig() + // Default SnapshotInterval is 0, SnashotThreshold must also be 0 + serverConfig.Backend.SnapshotThreshold = 0 + serverConfig.Backend.SnapshotWithPurgingChanges = true + testServer, err := server.New(serverConfig) + if err != nil { + log.Fatal(err) + } + + if err := testServer.Start(); err != nil { + logging.DefaultLogger().Fatal(err) + } + + cli1, err := client.Dial( + testServer.RPCAddr(), + client.WithPresence(types.Presence{"name": fmt.Sprintf("name-%d", 0)}), + ) + assert.NoError(t, err) + + err = cli1.Activate(context.Background()) + assert.NoError(t, err) + defer func() { + assert.NoError(t, cli1.Deactivate(context.Background())) + assert.NoError(t, cli1.Close()) + }() + + ctx := context.Background() + + d1 := document.New(key.Key(t.Name())) + assert.NoError(t, cli1.Attach(ctx, d1)) + defer func() { assert.NoError(t, cli1.Detach(ctx, d1)) }() + + err = d1.Update(func(root *json.Object) error { + root.SetNewText("k1") + return nil + }) + assert.NoError(t, err) + + var edits = []struct { + from int + to int + content string + }{ + {0, 0, "ㅎ"}, {0, 1, "하"}, + {0, 1, "한"}, {0, 1, "하"}, + {1, 1, "느"}, {1, 2, "늘"}, + } + + // Create 6 changes + for _, edit := range edits { + err = d1.Update(func(root *json.Object) error { + root.GetText("k1").Edit(edit.from, edit.to, edit.content) + return nil + }) + assert.NoError(t, err) + err = cli1.Sync(ctx) + assert.NoError(t, err) + } + + mongoConfig := &mongo.Config{ + ConnectionTimeout: "5s", + ConnectionURI: "mongodb://localhost:27017", + YorkieDatabase: helper.TestDBName(), + PingTimeout: "5s", + } + assert.NoError(t, mongoConfig.Validate()) + + mongoCli, err := mongo.Dial(mongoConfig) + assert.NoError(t, err) + + docInfo, err := mongoCli.FindDocInfoByKey( + ctx, + "000000000000000000000000", + d1.Key(), + ) + assert.NoError(t, err) + + changes, err := mongoCli.FindChangesBetweenServerSeqs( + ctx, + docInfo.ID, + change.InitialServerSeq, + change.MaxServerSeq, + ) + assert.NoError(t, err) + + // When the snapshot is created, changes before minSyncedServerSeq are deleted, so two changes remain. + // Since minSyncedServerSeq is one older from the most recent ServerSeq, + // one is most recent ServerSeq and one is one older from the most recent ServerSeq + assert.Len(t, changes, 2) + + cli2, err := client.Dial( + testServer.RPCAddr(), + client.WithPresence(types.Presence{"name": fmt.Sprintf("name-%d", 1)}), + ) + assert.NoError(t, err) + + err = cli2.Activate(context.Background()) + assert.NoError(t, err) + defer func() { + assert.NoError(t, cli2.Deactivate(context.Background())) + assert.NoError(t, cli2.Close()) + }() + + d2 := document.New(key.Key(t.Name())) + assert.NoError(t, cli2.Attach(ctx, d2)) + defer func() { assert.NoError(t, cli2.Detach(ctx, d2)) }() + + // Create 6 changes + for _, edit := range edits { + err = d2.Update(func(root *json.Object) error { + root.GetText("k1").Edit(edit.from, edit.to, edit.content) + return nil + }) + assert.NoError(t, err) + err = cli2.Sync(ctx) + assert.NoError(t, err) + } + + changes, err = mongoCli.FindChangesBetweenServerSeqs( + ctx, + docInfo.ID, + change.InitialServerSeq, + change.MaxServerSeq, + ) + assert.NoError(t, err) + + assert.Len(t, changes, 8) + }) } diff --git a/test/integration/snapshot_test.go b/test/integration/snapshot_test.go index 183050970..01e5815c3 100644 --- a/test/integration/snapshot_test.go +++ b/test/integration/snapshot_test.go @@ -21,23 +21,16 @@ package integration import ( "context" "fmt" - "log" "reflect" "testing" "bou.ke/monkey" "github.com/stretchr/testify/assert" - "github.com/yorkie-team/yorkie/api/types" - "github.com/yorkie-team/yorkie/client" "github.com/yorkie-team/yorkie/pkg/document" - "github.com/yorkie-team/yorkie/pkg/document/change" "github.com/yorkie-team/yorkie/pkg/document/json" "github.com/yorkie-team/yorkie/pkg/document/key" - "github.com/yorkie-team/yorkie/server" "github.com/yorkie-team/yorkie/server/backend/background" - "github.com/yorkie-team/yorkie/server/backend/database/mongo" - "github.com/yorkie-team/yorkie/server/logging" "github.com/yorkie-team/yorkie/test/helper" ) @@ -175,134 +168,4 @@ func TestSnapshot(t *testing.T) { syncClientsThenAssertEqual(t, []clientAndDocPair{{c1, d1}, {c2, d2}}) }) - - t.Run("snapshot with purging chagnes test", func(t *testing.T) { - serverConfig := helper.TestConfig() - // Default SnapshotInterval is 0, SnashotThreshold must also be 0 - serverConfig.Backend.SnapshotThreshold = 0 - serverConfig.Backend.SnapshotWithPurgingChanges = true - testServer, err := server.New(serverConfig) - if err != nil { - log.Fatal(err) - } - - if err := testServer.Start(); err != nil { - logging.DefaultLogger().Fatal(err) - } - - cli1, err := client.Dial( - testServer.RPCAddr(), - client.WithPresence(types.Presence{"name": fmt.Sprintf("name-%d", 0)}), - ) - assert.NoError(t, err) - - err = cli1.Activate(context.Background()) - assert.NoError(t, err) - defer func() { - assert.NoError(t, cli1.Deactivate(context.Background())) - assert.NoError(t, cli1.Close()) - }() - - ctx := context.Background() - - d1 := document.New(key.Key(t.Name())) - assert.NoError(t, cli1.Attach(ctx, d1)) - defer func() { assert.NoError(t, cli1.Detach(ctx, d1)) }() - - err = d1.Update(func(root *json.Object) error { - root.SetNewText("k1") - return nil - }) - assert.NoError(t, err) - - var edits = []struct { - from int - to int - content string - }{ - {0, 0, "ㅎ"}, {0, 1, "하"}, - {0, 1, "한"}, {0, 1, "하"}, - {1, 1, "느"}, {1, 2, "늘"}, - } - - // Create 6 changes - for _, edit := range edits { - err = d1.Update(func(root *json.Object) error { - root.GetText("k1").Edit(edit.from, edit.to, edit.content) - return nil - }) - assert.NoError(t, err) - err = cli1.Sync(ctx) - assert.NoError(t, err) - } - - mongoConfig := &mongo.Config{ - ConnectionTimeout: "5s", - ConnectionURI: "mongodb://localhost:27017", - YorkieDatabase: helper.TestDBName(), - PingTimeout: "5s", - } - assert.NoError(t, mongoConfig.Validate()) - - mongoCli, err := mongo.Dial(mongoConfig) - assert.NoError(t, err) - - docInfo, err := mongoCli.FindDocInfoByKey( - ctx, - "000000000000000000000000", - d1.Key(), - ) - assert.NoError(t, err) - - changes, err := mongoCli.FindChangesBetweenServerSeqs( - ctx, - docInfo.ID, - change.InitialServerSeq, - change.MaxServerSeq, - ) - assert.NoError(t, err) - - // When the snapshot is created, changes before minSyncedServerSeq are deleted, so two changes remain. - // Since minSyncedServerSeq is one older from the most recent ServerSeq, - // one is most recent ServerSeq and one is one older from the most recent ServerSeq - assert.Len(t, changes, 2) - - cli2, err := client.Dial( - testServer.RPCAddr(), - client.WithPresence(types.Presence{"name": fmt.Sprintf("name-%d", 1)}), - ) - assert.NoError(t, err) - - err = cli2.Activate(context.Background()) - assert.NoError(t, err) - defer func() { - assert.NoError(t, cli2.Deactivate(context.Background())) - assert.NoError(t, cli2.Close()) - }() - - d2 := document.New(key.Key(t.Name())) - assert.NoError(t, cli2.Attach(ctx, d2)) - defer func() { assert.NoError(t, cli2.Detach(ctx, d2)) }() - - // Create 6 changes - for _, edit := range edits { - err = d2.Update(func(root *json.Object) error { - root.GetText("k1").Edit(edit.from, edit.to, edit.content) - return nil - }) - assert.NoError(t, err) - err = cli2.Sync(ctx) - assert.NoError(t, err) - } - - changes, err = mongoCli.FindChangesBetweenServerSeqs( - ctx, - docInfo.ID, - change.InitialServerSeq, - change.MaxServerSeq, - ) - assert.NoError(t, err) - - assert.Len(t, changes, 8) - }) }