Skip to content
Snippets Groups Projects
Commit dcd25568 authored by zonghaishang's avatar zonghaishang
Browse files

refactor & unit test

parent 51651d68
No related branches found
No related tags found
No related merge requests found
package loadbalance
import (
"context"
"fmt"
"testing"
)
import (
"github.com/stretchr/testify/assert"
)
import (
"github.com/apache/dubbo-go/common"
"github.com/apache/dubbo-go/protocol"
"github.com/apache/dubbo-go/protocol/invocation"
)
func TestLeastActiveSelect(t *testing.T) {
loadBalance := NewLeastActiveLoadBalance()
var invokers []protocol.Invoker
url, _ := common.NewURL(context.TODO(), "dubbo://192.168.1.0:20000/org.apache.demo.HelloService")
invokers = append(invokers, protocol.NewBaseInvoker(url))
i := loadBalance.Select(invokers, &invocation.RPCInvocation{})
assert.True(t, i.GetUrl().URLEqual(url))
for i := 1; i < 10; i++ {
url, _ := common.NewURL(context.TODO(), fmt.Sprintf("dubbo://192.168.1.%v:20000/org.apache.demo.HelloService", i))
invokers = append(invokers, protocol.NewBaseInvoker(url))
}
loadBalance.Select(invokers, &invocation.RPCInvocation{})
}
func TestLeastActiveByWeight(t *testing.T) {
loadBalance := NewLeastActiveLoadBalance()
var invokers []protocol.Invoker
loop := 3
for i := 1; i <= loop; i++ {
url, _ := common.NewURL(context.TODO(), fmt.Sprintf("test%v://192.168.1.%v:20000/org.apache.demo.HelloService?weight=%v", i, i, i))
invokers = append(invokers, protocol.NewBaseInvoker(url))
}
inv := new(invocation.RPCInvocation)
inv.SetMethod("test")
// test3 active count equals 1
protocol.BeginCount(invokers[2].GetUrl(), inv.MethodName())
loop = 10000
var (
firstCount int
secondCount int
)
for i := 1; i <= loop; i++ {
invoker := loadBalance.Select(invokers, inv)
if invoker.GetUrl().Protocol == "test1" {
firstCount++
} else if invoker.GetUrl().Protocol == "test2" {
secondCount++
}
}
assert.Equal(t, firstCount+secondCount, loop)
}
......@@ -14,13 +14,13 @@
package impl
import (
"github.com/dubbo/go-for-apache-dubbo/common/logger"
"github.com/apache/dubbo-go/common/logger"
)
import (
"github.com/dubbo/go-for-apache-dubbo/common/extension"
"github.com/dubbo/go-for-apache-dubbo/filter"
"github.com/dubbo/go-for-apache-dubbo/protocol"
"github.com/apache/dubbo-go/common/extension"
"github.com/apache/dubbo-go/filter"
"github.com/apache/dubbo-go/protocol"
)
const active = "active"
......
......@@ -19,7 +19,7 @@ import (
)
import (
"github.com/dubbo/go-for-apache-dubbo/common"
"github.com/apache/dubbo-go/common"
)
var (
......@@ -35,22 +35,22 @@ func (rpc *RpcStatus) GetActive() int32 {
}
func GetStatus(url common.URL, methodName string) *RpcStatus {
identity := url.Key()
methodMap, found := methodStatistics.Load(identity)
identifier := url.Key()
methodMap, found := methodStatistics.Load(identifier)
if !found {
methodMap = sync.Map{}
methodStatistics.Store(identity, methodMap)
methodStatistics.Store(identifier, methodMap)
}
methodActive := methodMap.(sync.Map)
rpcStatus, found := methodActive.Load(methodName)
if !found {
rpcStatus = RpcStatus{}
rpcStatus = &RpcStatus{}
methodActive.Store(methodName, rpcStatus)
}
status := rpcStatus.(RpcStatus)
return &status
status := rpcStatus.(*RpcStatus)
return status
}
func BeginCount(url common.URL, methodName string) {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment