mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
add snapshotted integration test
This commit is contained in:
parent
d1e7fee3ca
commit
2d5ccf12ef
@ -146,16 +146,7 @@ type cluster struct {
|
||||
Members []*member
|
||||
}
|
||||
|
||||
// NewCluster returns an unlaunched cluster of the given size which has been
|
||||
// set to use static bootstrap.
|
||||
func NewCluster(t *testing.T, size int) *cluster {
|
||||
c := &cluster{}
|
||||
ms := make([]*member, size)
|
||||
for i := 0; i < size; i++ {
|
||||
ms[i] = mustNewMember(t, c.name(i))
|
||||
}
|
||||
c.Members = ms
|
||||
|
||||
func fillClusterForMembers(ms []*member, cName string) error {
|
||||
addrs := make([]string, 0)
|
||||
for _, m := range ms {
|
||||
for _, l := range m.PeerListeners {
|
||||
@ -165,11 +156,26 @@ func NewCluster(t *testing.T, size int) *cluster {
|
||||
clusterStr := strings.Join(addrs, ",")
|
||||
var err error
|
||||
for _, m := range ms {
|
||||
m.Cluster, err = etcdserver.NewClusterFromString(clusterName, clusterStr)
|
||||
m.Cluster, err = etcdserver.NewClusterFromString(cName, clusterStr)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// NewCluster returns an unlaunched cluster of the given size which has been
|
||||
// set to use static bootstrap.
|
||||
func NewCluster(t *testing.T, size int) *cluster {
|
||||
c := &cluster{}
|
||||
ms := make([]*member, size)
|
||||
for i := 0; i < size; i++ {
|
||||
ms[i] = mustNewMember(t, c.name(i))
|
||||
}
|
||||
c.Members = ms
|
||||
if err := fillClusterForMembers(c.Members, clusterName); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
return c
|
||||
}
|
||||
|
34
integration/migration_test.go
Normal file
34
integration/migration_test.go
Normal file
@ -0,0 +1,34 @@
|
||||
package integration
|
||||
|
||||
import (
|
||||
"github.com/coreos/etcd/pkg/types"
|
||||
"net"
|
||||
"os/exec"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestUpgradeMember(t *testing.T) {
|
||||
defer afterTest(t)
|
||||
m := mustNewMember(t, "integration046")
|
||||
newPeerListeners := make([]net.Listener, 0)
|
||||
newPeerListeners = append(newPeerListeners, newListenerWithAddr(t, "127.0.0.1:59892"))
|
||||
m.PeerListeners = newPeerListeners
|
||||
urls, err := types.NewURLs([]string{"http://127.0.0.1:59892"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
m.PeerURLs = urls
|
||||
m.NewCluster = true
|
||||
c := &cluster{}
|
||||
c.Members = []*member{m}
|
||||
fillClusterForMembers(c.Members, "etcd-cluster")
|
||||
cmd := exec.Command("cp", "-r", "testdata/integration046_data/conf", "testdata/integration046_data/log", "testdata/integration046_data/snapshot", m.DataDir)
|
||||
err = cmd.Run()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
c.Launch(t)
|
||||
defer c.Terminate(t)
|
||||
clusterMustProgress(t, c)
|
||||
}
|
1
integration/testdata/integration046_data/conf
vendored
Normal file
1
integration/testdata/integration046_data/conf
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"commitIndex":1,"peers":[]}
|
BIN
integration/testdata/integration046_data/log
vendored
Normal file
BIN
integration/testdata/integration046_data/log
vendored
Normal file
Binary file not shown.
2
integration/testdata/integration046_data/snapshot/1_90.ss
vendored
Normal file
2
integration/testdata/integration046_data/snapshot/1_90.ss
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -8,6 +8,7 @@ import (
|
||||
|
||||
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
|
||||
"github.com/coreos/etcd/pkg/pbutil"
|
||||
"github.com/coreos/etcd/pkg/types"
|
||||
raftpb "github.com/coreos/etcd/raft/raftpb"
|
||||
"github.com/coreos/etcd/snap"
|
||||
"github.com/coreos/etcd/wal"
|
||||
@ -125,12 +126,12 @@ func GuessNodeID(nodes map[string]uint64, snap4 *Snapshot4, cfg *Config4, name s
|
||||
if name != "" {
|
||||
log.Printf("Using suggested name %s", name)
|
||||
if val, ok := nodes[name]; ok {
|
||||
log.Printf("Found ID %d", val)
|
||||
log.Printf("Found ID %s", types.ID(val))
|
||||
return val
|
||||
}
|
||||
if snapNodes != nil {
|
||||
if val, ok := snapNodes[name]; ok {
|
||||
log.Printf("Found ID %d", val)
|
||||
log.Printf("Found ID %s", types.ID(val))
|
||||
return val
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user