You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.8 KiB
70 lines
1.8 KiB
package direct |
|
|
|
import ( |
|
"context" |
|
"reflect" |
|
"testing" |
|
"time" |
|
|
|
"github.com/go-kratos/kratos/v2/registry" |
|
"github.com/go-kratos/kratos/v2/selector" |
|
) |
|
|
|
func TestDirect(t *testing.T) { |
|
b := &Builder{} |
|
wn := b.Build(selector.NewNode( |
|
"http", |
|
"127.0.0.1:9090", |
|
®istry.ServiceInstance{ |
|
ID: "127.0.0.1:9090", |
|
Name: "helloworld", |
|
Version: "v1.0.0", |
|
Endpoints: []string{"http://127.0.0.1:9090"}, |
|
Metadata: map[string]string{"weight": "10"}, |
|
})) |
|
|
|
done := wn.Pick() |
|
if done == nil { |
|
t.Errorf("expect %v, got %v", nil, done) |
|
} |
|
time.Sleep(time.Millisecond * 10) |
|
done(context.Background(), selector.DoneInfo{}) |
|
if !reflect.DeepEqual(float64(10), wn.Weight()) { |
|
t.Errorf("expect %v, got %v", float64(10), wn.Weight()) |
|
} |
|
if time.Millisecond*20 <= wn.PickElapsed() { |
|
t.Errorf("20ms <= wn.PickElapsed()(%s)", wn.PickElapsed()) |
|
} |
|
if time.Millisecond*10 >= wn.PickElapsed() { |
|
t.Errorf("10ms >= wn.PickElapsed()(%s)", wn.PickElapsed()) |
|
} |
|
} |
|
|
|
func TestDirectDefaultWeight(t *testing.T) { |
|
b := &Builder{} |
|
wn := b.Build(selector.NewNode( |
|
"http", |
|
"127.0.0.1:9090", |
|
®istry.ServiceInstance{ |
|
ID: "127.0.0.1:9090", |
|
Name: "helloworld", |
|
Version: "v1.0.0", |
|
Endpoints: []string{"http://127.0.0.1:9090"}, |
|
})) |
|
|
|
done := wn.Pick() |
|
if done == nil { |
|
t.Errorf("expect %v, got %v", nil, done) |
|
} |
|
time.Sleep(time.Millisecond * 10) |
|
done(context.Background(), selector.DoneInfo{}) |
|
if !reflect.DeepEqual(float64(100), wn.Weight()) { |
|
t.Errorf("expect %v, got %v", float64(100), wn.Weight()) |
|
} |
|
if time.Millisecond*20 <= wn.PickElapsed() { |
|
t.Errorf("time.Millisecond*20 <= wn.PickElapsed()(%s)", wn.PickElapsed()) |
|
} |
|
if time.Millisecond*5 >= wn.PickElapsed() { |
|
t.Errorf("time.Millisecond*5 >= wn.PickElapsed()(%s)", wn.PickElapsed()) |
|
} |
|
}
|
|
|