This repository was archived by the owner on Mar 23, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstate_test.go
More file actions
54 lines (46 loc) · 1.41 KB
/
state_test.go
File metadata and controls
54 lines (46 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package raftify
import (
"fmt"
"os"
"testing"
)
func TestSaveLoadDeleteState(t *testing.T) {
// Reserve ports for this test
ports := reservePorts(3)
// Initialize and start dummy node
node := initDummyNode("TestNode", 1, 1, ports[0])
node.config.PeerList = []string{
fmt.Sprintf("127.0.0.1:%v", ports[1]),
fmt.Sprintf("127.0.0.1:%v", ports[2]),
}
node.createMemberlist()
defer node.memberlist.Shutdown()
// Fail loading the current node state
list, err := node.loadState()
if err == nil {
t.Log("Expected loadState to throw an error, instead it didn't")
t.FailNow()
}
// Save the current node state
node.saveState()
if _, err := os.Stat(node.workingDir + "/state.json"); err != nil {
t.Logf("Expected existing state.json, instead got error: %v", err.Error())
t.FailNow()
}
// Succeed loading the current node state
list, err = node.loadState()
if err != nil {
t.Logf("Expected state.json to be loaded successfully, instead got error: %v", err.Error())
t.FailNow()
}
if len(list) != len(node.memberlist.Members()) {
t.Logf("Expected loaded list to be equal in size to the internal memberlist, instead got sizes %v (loaded) and %v (internal)", len(list), len(node.memberlist.Members()))
t.FailNow()
}
// Delete the current node state
node.deleteState()
if _, err := os.Stat(node.workingDir + "/state.json"); err == nil {
t.Log("Expected no state.json, instead it exists")
t.FailNow()
}
}