Skip to content

Commit

Permalink
Move retention-related tests to retention_test.go
Browse files Browse the repository at this point in the history
  • Loading branch information
chromato99 committed Sep 20, 2022
1 parent 6ec473d commit 7794bfb
Show file tree
Hide file tree
Showing 2 changed files with 132 additions and 137 deletions.
132 changes: 132 additions & 0 deletions test/integration/retention_test.go
Expand Up @@ -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"
)
Expand Down Expand Up @@ -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)
})
}
137 changes: 0 additions & 137 deletions test/integration/snapshot_test.go
Expand Up @@ -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"
)

Expand Down Expand Up @@ -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)
})
}

0 comments on commit 7794bfb

Please sign in to comment.