commit
b66679132a
@ -0,0 +1,125 @@ |
||||
package resolver |
||||
|
||||
import ( |
||||
"fmt" |
||||
"testing" |
||||
"time" |
||||
|
||||
"github.com/bilibili/kratos/pkg/naming" |
||||
) |
||||
|
||||
func Test_FilterLittle(t *testing.T) { |
||||
var backs []*naming.Instance |
||||
for i := 0; i < 3; i++ { |
||||
backs = append(backs, &naming.Instance{ |
||||
Zone: "sh1", |
||||
Env: "prod", |
||||
AppID: "2233", |
||||
Hostname: fmt.Sprintf("linux-%d", i), |
||||
Addrs: []string{fmt.Sprintf("grpc://127.0.0.%d:9000", i)}, |
||||
LastTs: time.Now().Unix(), |
||||
}) |
||||
} |
||||
r := &Resolver{ |
||||
quit: make(chan struct{}, 1), |
||||
zone: "sh1", |
||||
subsetSize: 50, |
||||
} |
||||
|
||||
if len(r.filter(backs)) != 3 { |
||||
t.Fatalf("backends length must be 3") |
||||
} |
||||
} |
||||
|
||||
func Test_FilterBig(t *testing.T) { |
||||
var backs []*naming.Instance |
||||
for i := 0; i < 100; i++ { |
||||
backs = append(backs, &naming.Instance{ |
||||
Zone: "sh1", |
||||
Env: "prod", |
||||
AppID: "2233", |
||||
Hostname: fmt.Sprintf("linux-%d", i), |
||||
Addrs: []string{fmt.Sprintf("grpc://127.0.0.%d:9000", i)}, |
||||
LastTs: time.Now().Unix(), |
||||
}) |
||||
} |
||||
r := &Resolver{ |
||||
quit: make(chan struct{}, 1), |
||||
zone: "sh1", |
||||
subsetSize: 50, |
||||
} |
||||
|
||||
if len(r.filter(backs)) != 50 { |
||||
t.Fatalf("backends length must be 50") |
||||
} |
||||
} |
||||
|
||||
func Test_FilterNone(t *testing.T) { |
||||
var backs []*naming.Instance |
||||
for i := 0; i < 100; i++ { |
||||
backs = append(backs, &naming.Instance{ |
||||
Zone: "sh1", |
||||
Env: "prod", |
||||
AppID: "2233", |
||||
Metadata: map[string]string{naming.MetaCluster: "c1"}, |
||||
Hostname: fmt.Sprintf("linux-%d", i), |
||||
Addrs: []string{fmt.Sprintf("grpc://127.0.0.%d:9000", i)}, |
||||
LastTs: time.Now().Unix(), |
||||
}) |
||||
} |
||||
r := &Resolver{ |
||||
quit: make(chan struct{}, 1), |
||||
zone: "sh1", |
||||
subsetSize: 50, |
||||
clusters: map[string]struct{}{"c2": struct{}{}}, |
||||
} |
||||
|
||||
if len(r.filter(backs)) != 0 { |
||||
t.Fatalf("backends length must be 0") |
||||
} |
||||
} |
||||
|
||||
func Test_FilterSome(t *testing.T) { |
||||
var backs []*naming.Instance |
||||
for i := 0; i < 40; i++ { |
||||
backs = append(backs, &naming.Instance{ |
||||
Zone: "sh1", |
||||
Env: "prod", |
||||
AppID: "2233", |
||||
Metadata: map[string]string{naming.MetaCluster: "c1"}, |
||||
Hostname: fmt.Sprintf("linux-%d", i), |
||||
Addrs: []string{fmt.Sprintf("grpc://127.0.0.%d:9000", i)}, |
||||
LastTs: time.Now().Unix(), |
||||
}) |
||||
} |
||||
for i := 50; i < 150; i++ { |
||||
backs = append(backs, &naming.Instance{ |
||||
Zone: "sh1", |
||||
Env: "prod", |
||||
AppID: "2233", |
||||
Metadata: map[string]string{naming.MetaCluster: "c2"}, |
||||
Hostname: fmt.Sprintf("linux-%d", i), |
||||
Addrs: []string{fmt.Sprintf("grpc://127.0.0.%d:9000", i)}, |
||||
LastTs: time.Now().Unix(), |
||||
}) |
||||
} |
||||
r := &Resolver{ |
||||
quit: make(chan struct{}, 1), |
||||
zone: "sh1", |
||||
subsetSize: 50, |
||||
clusters: map[string]struct{}{"c2": struct{}{}}, |
||||
} |
||||
if len(r.filter(backs)) != 50 { |
||||
t.Fatalf("backends length must be 0") |
||||
} |
||||
|
||||
r2 := &Resolver{ |
||||
quit: make(chan struct{}, 1), |
||||
zone: "sh1", |
||||
subsetSize: 50, |
||||
clusters: map[string]struct{}{"c1": struct{}{}}, |
||||
} |
||||
if len(r2.filter(backs)) != 40 { |
||||
t.Fatalf("backends length must be 0") |
||||
} |
||||
} |
Loading…
Reference in new issue