|
|
@@ -19,6 +19,7 @@ import (
|
|
|
"testing"
|
|
|
|
|
|
"github.com/coreos/etcd/Godeps/_workspace/src/github.com/coreos/go-semver/semver"
|
|
|
+ "github.com/coreos/etcd/pkg/types"
|
|
|
"github.com/coreos/etcd/version"
|
|
|
)
|
|
|
|
|
|
@@ -57,3 +58,74 @@ func TestDecideClusterVersion(t *testing.T) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+func TestIsCompatibleWithVers(t *testing.T) {
|
|
|
+ tests := []struct {
|
|
|
+ vers map[string]*version.Versions
|
|
|
+ local types.ID
|
|
|
+ minV, maxV *semver.Version
|
|
|
+ wok bool
|
|
|
+ }{
|
|
|
+ // too low
|
|
|
+ {
|
|
|
+ map[string]*version.Versions{
|
|
|
+ "a": &version.Versions{Server: "2.0.0", Cluster: "not_decided"},
|
|
|
+ "b": &version.Versions{Server: "2.1.0", Cluster: "2.1.0"},
|
|
|
+ "c": &version.Versions{Server: "2.1.0", Cluster: "2.1.0"},
|
|
|
+ },
|
|
|
+ 0xa,
|
|
|
+ semver.Must(semver.NewVersion("2.0.0")), semver.Must(semver.NewVersion("2.0.0")),
|
|
|
+ false,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ map[string]*version.Versions{
|
|
|
+ "a": &version.Versions{Server: "2.1.0", Cluster: "not_decided"},
|
|
|
+ "b": &version.Versions{Server: "2.1.0", Cluster: "2.1.0"},
|
|
|
+ "c": &version.Versions{Server: "2.1.0", Cluster: "2.1.0"},
|
|
|
+ },
|
|
|
+ 0xa,
|
|
|
+ semver.Must(semver.NewVersion("2.0.0")), semver.Must(semver.NewVersion("2.1.0")),
|
|
|
+ true,
|
|
|
+ },
|
|
|
+ // too high
|
|
|
+ {
|
|
|
+ map[string]*version.Versions{
|
|
|
+ "a": &version.Versions{Server: "2.2.0", Cluster: "not_decided"},
|
|
|
+ "b": &version.Versions{Server: "2.0.0", Cluster: "2.0.0"},
|
|
|
+ "c": &version.Versions{Server: "2.0.0", Cluster: "2.0.0"},
|
|
|
+ },
|
|
|
+ 0xa,
|
|
|
+ semver.Must(semver.NewVersion("2.1.0")), semver.Must(semver.NewVersion("2.2.0")),
|
|
|
+ false,
|
|
|
+ },
|
|
|
+ // cannot get b's version, expect ok
|
|
|
+ {
|
|
|
+ map[string]*version.Versions{
|
|
|
+ "a": &version.Versions{Server: "2.1.0", Cluster: "not_decided"},
|
|
|
+ "b": nil,
|
|
|
+ "c": &version.Versions{Server: "2.1.0", Cluster: "2.1.0"},
|
|
|
+ },
|
|
|
+ 0xa,
|
|
|
+ semver.Must(semver.NewVersion("2.0.0")), semver.Must(semver.NewVersion("2.1.0")),
|
|
|
+ true,
|
|
|
+ },
|
|
|
+ // cannot get b and c's version, expect not ok
|
|
|
+ {
|
|
|
+ map[string]*version.Versions{
|
|
|
+ "a": &version.Versions{Server: "2.1.0", Cluster: "not_decided"},
|
|
|
+ "b": nil,
|
|
|
+ "c": nil,
|
|
|
+ },
|
|
|
+ 0xa,
|
|
|
+ semver.Must(semver.NewVersion("2.0.0")), semver.Must(semver.NewVersion("2.1.0")),
|
|
|
+ false,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ for i, tt := range tests {
|
|
|
+ ok := isCompatibleWithVers(tt.vers, tt.local, tt.minV, tt.maxV)
|
|
|
+ if ok != tt.wok {
|
|
|
+ t.Errorf("#%d: ok = %+v, want %+v", i, ok, tt.wok)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|