MCPcopy
hub / github.com/dgraph-io/dgraph / TestCalculateSnapshot

Function TestCalculateSnapshot

worker/draft_test.go:41–100  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

39}
40
41func TestCalculateSnapshot(t *testing.T) {
42 dir := t.TempDir()
43 ds := raftwal.Init(dir)
44 defer ds.Close()
45
46 n := newNode(ds, 1, 1, "")
47 var entries []raftpb.Entry
48 // Txn: 1 -> 5 // 5 should be the ReadTs.
49 // Txn: 2 // Should correspond to the index. Subtract 1 from the index.
50 // Txn: 3 -> 4
51 entries = append(entries, getEntryForMutation(1, 1), getEntryForMutation(2, 3),
52 getEntryForMutation(3, 2), getEntryForCommit(4, 3, 4), getEntryForCommit(5, 1, 5))
53 require.NoError(t, n.Store.Save(&raftpb.HardState{}, entries, &raftpb.Snapshot{}))
54 n.Applied.SetDoneUntil(5)
55 posting.Oracle().RegisterStartTs(2)
56 snap, err := n.calculateSnapshot(0, n.Applied.DoneUntil(), posting.Oracle().MinPendingStartTs())
57 require.NoError(t, err)
58 require.Equal(t, uint64(5), snap.ReadTs)
59 require.Equal(t, uint64(1), snap.Index)
60
61 // Check state of Raft store.
62 var cs raftpb.ConfState
63 require.NoError(t, n.Store.CreateSnapshot(snap.Index, &cs, nil))
64
65 first, err := n.Store.FirstIndex()
66 require.NoError(t, err)
67 require.Equal(t, uint64(2), first)
68
69 last, err := n.Store.LastIndex()
70 require.NoError(t, err)
71 require.Equal(t, uint64(5), last)
72
73 // This time commit all txns.
74 // Txn: 7 -> 8
75 // Txn: 2 -> 9
76 entries = entries[:0]
77 entries = append(entries, getEntryForMutation(6, 7), getEntryForCommit(7, 7, 8),
78 getEntryForCommit(8, 2, 9))
79 require.NoError(t, n.Store.Save(&raftpb.HardState{}, entries, &raftpb.Snapshot{}))
80 n.Applied.SetDoneUntil(8)
81 posting.Oracle().ResetTxns()
82 snap, err = n.calculateSnapshot(0, n.Applied.DoneUntil(), posting.Oracle().MinPendingStartTs())
83 require.NoError(t, err)
84 require.Equal(t, uint64(9), snap.ReadTs)
85 require.Equal(t, uint64(8), snap.Index)
86
87 // Check state of Raft store.
88 require.NoError(t, n.Store.CreateSnapshot(snap.Index, &cs, nil))
89 first, err = n.Store.FirstIndex()
90 require.NoError(t, err)
91 require.Equal(t, uint64(9), first)
92
93 entries = entries[:0]
94 entries = append(entries, getEntryForMutation(9, 11))
95 require.NoError(t, n.Store.Save(&raftpb.HardState{}, entries, &raftpb.Snapshot{}))
96 n.Applied.SetDoneUntil(9)
97 snap, err = n.calculateSnapshot(0, n.Applied.DoneUntil(), posting.Oracle().MinPendingStartTs())
98 require.NoError(t, err)

Callers

nothing calls this directly

Calls 14

InitFunction · 0.92
OracleFunction · 0.92
newNodeFunction · 0.85
getEntryForMutationFunction · 0.85
getEntryForCommitFunction · 0.85
RegisterStartTsMethod · 0.80
calculateSnapshotMethod · 0.80
MinPendingStartTsMethod · 0.80
CreateSnapshotMethod · 0.80
FirstIndexMethod · 0.80
ResetTxnsMethod · 0.80
CloseMethod · 0.65

Tested by

no test coverage detected