794 lines
21 KiB
Go
794 lines
21 KiB
Go
package server
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
"d7y.io/dragonfly/v2/manager/apis/v2/types"
|
|
"d7y.io/dragonfly/v2/manager/config"
|
|
"d7y.io/dragonfly/v2/manager/configsvc"
|
|
"d7y.io/dragonfly/v2/manager/store"
|
|
"d7y.io/dragonfly/v2/pkg/basic/dfnet"
|
|
"d7y.io/dragonfly/v2/pkg/dflog/logcore"
|
|
"d7y.io/dragonfly/v2/pkg/rpc/manager"
|
|
"d7y.io/dragonfly/v2/pkg/rpc/manager/client"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/suite"
|
|
)
|
|
|
|
type ServerTestSuite struct {
|
|
suite.Suite
|
|
server *Server
|
|
client client.ManagerClient
|
|
}
|
|
|
|
func (suite *ServerTestSuite) testDefaultSchedulerCluster() *types.SchedulerCluster {
|
|
schedulerConfigMap := map[string]string{
|
|
"schedulerConfig_a": "a",
|
|
"schedulerConfig_b": "b",
|
|
"schedulerConfig_c": "c",
|
|
}
|
|
|
|
clientConfigMap := map[string]string{
|
|
"clientConfig_a": "a",
|
|
"clientConfig_b": "b",
|
|
"clientConfig_c": "c",
|
|
}
|
|
|
|
schedulerConfigBytes, _ := json.Marshal(&schedulerConfigMap)
|
|
clientConfigBytes, _ := json.Marshal(&clientConfigMap)
|
|
|
|
return &types.SchedulerCluster{
|
|
SchedulerConfig: string(schedulerConfigBytes),
|
|
ClientConfig: string(clientConfigBytes),
|
|
}
|
|
}
|
|
|
|
func (suite *ServerTestSuite) testDefaultCDNCluster() *types.CDNCluster {
|
|
cdnConfigMap := map[string]string{
|
|
"cdnConfig_a": "a",
|
|
"cdnConfig_b": "b",
|
|
"cdnConfig_c": "c",
|
|
}
|
|
|
|
cdnConfigBytes, _ := json.Marshal(&cdnConfigMap)
|
|
return &types.CDNCluster{
|
|
Config: string(cdnConfigBytes),
|
|
}
|
|
}
|
|
|
|
func (suite *ServerTestSuite) TestGetSchedulers() {
|
|
assert := assert.New(suite.T())
|
|
|
|
var cluster *types.SchedulerCluster
|
|
{
|
|
cluster = suite.testDefaultSchedulerCluster()
|
|
ret, err := suite.server.ms.AddSchedulerCluster(context.TODO(), cluster)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
cluster.ClusterID = ret.ClusterID
|
|
}
|
|
|
|
var instance *types.SchedulerInstance
|
|
{
|
|
instance = &types.SchedulerInstance{
|
|
ClusterID: cluster.ClusterID,
|
|
SecurityDomain: "security_abc",
|
|
IDC: "idc_abc",
|
|
Location: "location_abc",
|
|
NetConfig: "",
|
|
HostName: suite.randPrefix() + "hostname_abc",
|
|
IP: "192.168.0.11",
|
|
Port: 80,
|
|
}
|
|
|
|
ret, err := suite.server.ms.AddSchedulerInstance(context.TODO(), instance)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
instance.InstanceID = ret.InstanceID
|
|
}
|
|
|
|
{
|
|
req := &manager.KeepAliveRequest{
|
|
HostName: instance.HostName,
|
|
Type: manager.ResourceType_Scheduler,
|
|
}
|
|
|
|
err := suite.server.ms.KeepAlive(context.TODO(), req)
|
|
assert.Nil(err)
|
|
}
|
|
|
|
{
|
|
req := &manager.GetSchedulersRequest{
|
|
HostName: instance.HostName,
|
|
}
|
|
|
|
ret, err := suite.server.ms.GetSchedulers(context.TODO(), req)
|
|
assert.Nil(err)
|
|
assert.NotNil(ret)
|
|
}
|
|
}
|
|
|
|
func (suite *ServerTestSuite) TestKeepAliveScheduler() {
|
|
assert := assert.New(suite.T())
|
|
|
|
var cluster *types.SchedulerCluster
|
|
{
|
|
cluster = suite.testDefaultSchedulerCluster()
|
|
ret, err := suite.server.ms.AddSchedulerCluster(context.TODO(), cluster)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
cluster.ClusterID = ret.ClusterID
|
|
}
|
|
|
|
var instance *types.SchedulerInstance
|
|
{
|
|
instance = &types.SchedulerInstance{
|
|
ClusterID: cluster.ClusterID,
|
|
SecurityDomain: "security_abc",
|
|
IDC: "idc_abc",
|
|
Location: "location_abc",
|
|
NetConfig: "",
|
|
HostName: suite.randPrefix() + "hostname_abc",
|
|
IP: "192.168.0.11",
|
|
Port: 80,
|
|
}
|
|
|
|
ret, err := suite.server.ms.AddSchedulerInstance(context.TODO(), instance)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
instance.InstanceID = ret.InstanceID
|
|
}
|
|
|
|
for i := 0; i < 10; i++ {
|
|
req := &manager.KeepAliveRequest{
|
|
HostName: instance.HostName,
|
|
Type: manager.ResourceType_Scheduler,
|
|
}
|
|
|
|
err := suite.server.ms.KeepAlive(context.TODO(), req)
|
|
assert.Nil(err)
|
|
|
|
if i%2 == 0 {
|
|
time.Sleep(configsvc.KeepAliveTimeoutMax - time.Second)
|
|
|
|
ret, err := suite.server.ms.GetSchedulerInstance(context.TODO(), instance.InstanceID)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(configsvc.InstanceActive, ret.State)
|
|
} else {
|
|
time.Sleep(configsvc.KeepAliveTimeoutMax * 2)
|
|
|
|
ret, err := suite.server.ms.GetSchedulerInstance(context.TODO(), instance.InstanceID)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(configsvc.InstanceInactive, ret.State)
|
|
}
|
|
}
|
|
}
|
|
|
|
func (suite *ServerTestSuite) TestKeepAliveCDN() {
|
|
assert := assert.New(suite.T())
|
|
|
|
var cluster *types.CDNCluster
|
|
{
|
|
cluster = suite.testDefaultCDNCluster()
|
|
ret, err := suite.server.ms.AddCDNCluster(context.TODO(), cluster)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
cluster.ClusterID = ret.ClusterID
|
|
}
|
|
|
|
var instance *types.CDNInstance
|
|
{
|
|
instance = &types.CDNInstance{
|
|
ClusterID: cluster.ClusterID,
|
|
IDC: "idc_abc",
|
|
Location: "location_abc",
|
|
HostName: suite.randPrefix() + "hostname_abc",
|
|
IP: "ip_abc",
|
|
Port: 0,
|
|
RPCPort: 0,
|
|
DownPort: 0,
|
|
}
|
|
|
|
ret, err := suite.server.ms.AddCDNInstance(context.TODO(), instance)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
instance.InstanceID = ret.InstanceID
|
|
}
|
|
|
|
for i := 0; i < 10; i++ {
|
|
req := &manager.KeepAliveRequest{
|
|
HostName: instance.HostName,
|
|
Type: manager.ResourceType_Cdn,
|
|
}
|
|
|
|
err := suite.server.ms.KeepAlive(context.TODO(), req)
|
|
assert.Nil(err)
|
|
|
|
if i%2 == 0 {
|
|
time.Sleep(configsvc.KeepAliveTimeoutMax - time.Second)
|
|
|
|
ret, err := suite.server.ms.GetCDNInstance(context.TODO(), instance.InstanceID)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(configsvc.InstanceActive, ret.State)
|
|
} else {
|
|
time.Sleep(configsvc.KeepAliveTimeoutMax * 2)
|
|
|
|
ret, err := suite.server.ms.GetCDNInstance(context.TODO(), instance.InstanceID)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(configsvc.InstanceInactive, ret.State)
|
|
}
|
|
}
|
|
}
|
|
|
|
func (suite *ServerTestSuite) TestGetSchedulerClusterConfig() {
|
|
assert := assert.New(suite.T())
|
|
|
|
var cluster *types.SchedulerCluster
|
|
{
|
|
cluster = suite.testDefaultSchedulerCluster()
|
|
ret, err := suite.server.ms.AddSchedulerCluster(context.TODO(), cluster)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
cluster.ClusterID = ret.ClusterID
|
|
}
|
|
|
|
var instance *types.SchedulerInstance
|
|
{
|
|
instance = &types.SchedulerInstance{
|
|
ClusterID: cluster.ClusterID,
|
|
SecurityDomain: "security_abc",
|
|
IDC: "idc_abc",
|
|
Location: "location_abc",
|
|
NetConfig: "",
|
|
HostName: suite.randPrefix() + "hostname_abc",
|
|
IP: "192.168.0.11",
|
|
Port: 80,
|
|
}
|
|
|
|
ret, err := suite.server.ms.AddSchedulerInstance(context.TODO(), instance)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
instance.InstanceID = ret.InstanceID
|
|
}
|
|
|
|
{
|
|
req := &manager.GetClusterConfigRequest{
|
|
HostName: instance.HostName,
|
|
Type: manager.ResourceType_Scheduler,
|
|
}
|
|
|
|
ret, err := suite.server.ms.GetClusterConfig(context.TODO(), req)
|
|
assert.Nil(err)
|
|
assert.NotNil(ret)
|
|
cfg := ret.GetSchedulerConfig()
|
|
assert.Equal(cluster.SchedulerConfig, cfg.ClusterConfig)
|
|
assert.Equal(cluster.ClientConfig, cfg.ClientConfig)
|
|
}
|
|
|
|
var cdnCluster *types.CDNCluster
|
|
{
|
|
cdnCluster = suite.testDefaultCDNCluster()
|
|
ret, err := suite.server.ms.AddCDNCluster(context.TODO(), cdnCluster)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
cdnCluster.ClusterID = ret.ClusterID
|
|
}
|
|
|
|
var cdnInstance *types.CDNInstance
|
|
{
|
|
cdnInstance = &types.CDNInstance{
|
|
ClusterID: cdnCluster.ClusterID,
|
|
IDC: "idc_abc",
|
|
Location: "location_abc",
|
|
HostName: suite.randPrefix() + "hostname_abc",
|
|
IP: "ip_abc",
|
|
Port: 0,
|
|
RPCPort: 0,
|
|
DownPort: 0,
|
|
}
|
|
|
|
ret, err := suite.server.ms.AddCDNInstance(context.TODO(), cdnInstance)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
cdnInstance.InstanceID = ret.InstanceID
|
|
}
|
|
|
|
{
|
|
req := &manager.KeepAliveRequest{
|
|
HostName: cdnInstance.HostName,
|
|
Type: manager.ResourceType_Cdn,
|
|
}
|
|
|
|
err := suite.server.ms.KeepAlive(context.TODO(), req)
|
|
assert.Nil(err)
|
|
}
|
|
|
|
{
|
|
var schedulerConfigMap map[string]string
|
|
err := json.Unmarshal([]byte(cluster.SchedulerConfig), &schedulerConfigMap)
|
|
assert.Nil(err)
|
|
|
|
schedulerConfigMap["CDN_CLUSTER_ID"] = cdnCluster.ClusterID
|
|
schedulerConfigByte, err := json.Marshal(schedulerConfigMap)
|
|
assert.Nil(err)
|
|
cluster.SchedulerConfig = string(schedulerConfigByte)
|
|
|
|
suite.server.ms.UpdateSchedulerCluster(context.TODO(), cluster)
|
|
}
|
|
|
|
{
|
|
req := &manager.GetClusterConfigRequest{
|
|
HostName: instance.HostName,
|
|
Type: manager.ResourceType_Scheduler,
|
|
}
|
|
|
|
ret, err := suite.server.ms.GetClusterConfig(context.TODO(), req)
|
|
assert.Nil(err)
|
|
assert.NotNil(ret)
|
|
cfg := ret.GetSchedulerConfig()
|
|
assert.Equal(cluster.SchedulerConfig, cfg.ClusterConfig)
|
|
assert.Equal(cluster.ClientConfig, cfg.ClientConfig)
|
|
|
|
cdnHost := cfg.GetCdnHosts()
|
|
assert.Equal(1, len(cdnHost))
|
|
|
|
assert.Equal(cdnInstance.HostName, cdnHost[0].HostInfo.HostName)
|
|
assert.Equal(cdnInstance.IP, cdnHost[0].HostInfo.Ip)
|
|
}
|
|
}
|
|
|
|
func (suite *ServerTestSuite) TestGetCDNClusterConfig() {
|
|
assert := assert.New(suite.T())
|
|
|
|
var cluster *types.CDNCluster
|
|
{
|
|
cluster = suite.testDefaultCDNCluster()
|
|
ret, err := suite.server.ms.AddCDNCluster(context.TODO(), cluster)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
cluster.ClusterID = ret.ClusterID
|
|
}
|
|
|
|
var instance *types.CDNInstance
|
|
{
|
|
instance = &types.CDNInstance{
|
|
ClusterID: cluster.ClusterID,
|
|
IDC: "idc_abc",
|
|
Location: "location_abc",
|
|
HostName: suite.randPrefix() + "hostname_abc",
|
|
IP: "ip_abc",
|
|
Port: 0,
|
|
RPCPort: 0,
|
|
DownPort: 0,
|
|
}
|
|
|
|
ret, err := suite.server.ms.AddCDNInstance(context.TODO(), instance)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
instance.InstanceID = ret.InstanceID
|
|
}
|
|
|
|
{
|
|
req := &manager.GetClusterConfigRequest{
|
|
HostName: instance.HostName,
|
|
Type: manager.ResourceType_Cdn,
|
|
}
|
|
|
|
ret, err := suite.server.ms.GetClusterConfig(context.TODO(), req)
|
|
assert.Nil(err)
|
|
assert.NotNil(ret)
|
|
cfg := ret.GetCdnConfig()
|
|
assert.Equal(cluster.Config, cfg.ClusterConfig)
|
|
}
|
|
}
|
|
|
|
func (suite *ServerTestSuite) TestSchedulerCluster() {
|
|
assert := assert.New(suite.T())
|
|
|
|
var cluster *types.SchedulerCluster
|
|
{
|
|
cluster = suite.testDefaultSchedulerCluster()
|
|
ret, err := suite.server.ms.AddSchedulerCluster(context.TODO(), cluster)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
cluster.ClusterID = ret.ClusterID
|
|
}
|
|
|
|
{
|
|
ret, err := suite.server.ms.GetSchedulerCluster(context.TODO(), cluster.ClusterID)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(cluster.ClusterID, ret.ClusterID)
|
|
assert.Equal(cluster.SchedulerConfig, ret.SchedulerConfig)
|
|
assert.Equal(cluster.ClientConfig, ret.ClientConfig)
|
|
}
|
|
|
|
{
|
|
var schedulerConfigMap map[string]string
|
|
err := json.Unmarshal([]byte(cluster.SchedulerConfig), &schedulerConfigMap)
|
|
assert.Nil(err)
|
|
|
|
schedulerConfigMap["schedulerConfig_a"] = "schedulerConfig_a_update"
|
|
schedulerConfigByte, err := json.Marshal(schedulerConfigMap)
|
|
assert.Nil(err)
|
|
cluster.SchedulerConfig = string(schedulerConfigByte)
|
|
|
|
ret, err := suite.server.ms.UpdateSchedulerCluster(context.TODO(), cluster)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(cluster.ClusterID, ret.ClusterID)
|
|
assert.Equal(cluster.SchedulerConfig, ret.SchedulerConfig)
|
|
assert.Equal(cluster.ClientConfig, ret.ClientConfig)
|
|
}
|
|
|
|
{
|
|
ret, err := suite.server.ms.ListSchedulerClusters(context.TODO(), store.WithMarker(0, 10))
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
for i, c := range ret {
|
|
if cluster.ClusterID == c.ClusterID {
|
|
assert.Equal(cluster.ClusterID, ret[i].ClusterID)
|
|
assert.Equal(cluster.SchedulerConfig, ret[i].SchedulerConfig)
|
|
assert.Equal(cluster.ClientConfig, ret[i].ClientConfig)
|
|
}
|
|
}
|
|
}
|
|
|
|
{
|
|
ret, err := suite.server.ms.DeleteSchedulerCluster(context.TODO(), cluster.ClusterID)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
|
|
ret, err = suite.server.ms.GetSchedulerCluster(context.TODO(), cluster.ClusterID)
|
|
assert.Nil(ret)
|
|
assert.NotNil(err)
|
|
|
|
ret, err = suite.server.ms.DeleteSchedulerCluster(context.TODO(), fmt.Sprintf("%sabc", cluster.ClusterID))
|
|
assert.Nil(ret)
|
|
assert.Nil(err)
|
|
}
|
|
}
|
|
|
|
func (suite *ServerTestSuite) TestSchedulerInstance() {
|
|
assert := assert.New(suite.T())
|
|
|
|
var cluster *types.SchedulerCluster
|
|
{
|
|
cluster = suite.testDefaultSchedulerCluster()
|
|
ret, err := suite.server.ms.AddSchedulerCluster(context.TODO(), cluster)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
cluster.ClusterID = ret.ClusterID
|
|
}
|
|
|
|
var instance *types.SchedulerInstance
|
|
{
|
|
instance = &types.SchedulerInstance{
|
|
ClusterID: cluster.ClusterID,
|
|
SecurityDomain: "security_abc",
|
|
IDC: "idc_abc",
|
|
Location: "location_abc",
|
|
NetConfig: "",
|
|
HostName: suite.randPrefix() + "hostname_abc",
|
|
IP: "192.168.0.11",
|
|
Port: 80,
|
|
}
|
|
|
|
ret, err := suite.server.ms.AddSchedulerInstance(context.TODO(), instance)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
instance.InstanceID = ret.InstanceID
|
|
}
|
|
|
|
{
|
|
ret, err := suite.server.ms.GetSchedulerInstance(context.TODO(), instance.InstanceID)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(instance.InstanceID, ret.InstanceID)
|
|
assert.Equal(instance.SecurityDomain, ret.SecurityDomain)
|
|
assert.Equal(instance.Location, ret.Location)
|
|
}
|
|
|
|
{
|
|
instance.SecurityDomain = "security_abc_update"
|
|
ret, err := suite.server.ms.UpdateSchedulerInstance(context.TODO(), instance)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(instance.InstanceID, ret.InstanceID)
|
|
assert.Equal(instance.SecurityDomain, ret.SecurityDomain)
|
|
assert.Equal(instance.Location, ret.Location)
|
|
}
|
|
|
|
{
|
|
op := []store.OpOption{}
|
|
op = append(op, store.WithClusterID(cluster.ClusterID))
|
|
op = append(op, store.WithMarker(0, 10))
|
|
|
|
ret, err := suite.server.ms.ListSchedulerInstances(context.TODO(), op...)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(instance.InstanceID, ret[0].InstanceID)
|
|
assert.Equal(instance.SecurityDomain, ret[0].SecurityDomain)
|
|
assert.Equal(instance.Location, ret[0].Location)
|
|
}
|
|
|
|
{
|
|
ret, err := suite.server.ms.DeleteSchedulerInstance(context.TODO(), instance.InstanceID)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
|
|
ret, err = suite.server.ms.GetSchedulerInstance(context.TODO(), instance.InstanceID)
|
|
assert.Nil(ret)
|
|
assert.NotNil(err)
|
|
|
|
ret, err = suite.server.ms.DeleteSchedulerInstance(context.TODO(), fmt.Sprintf("%sabc", instance.InstanceID))
|
|
assert.Nil(ret)
|
|
assert.Nil(err)
|
|
}
|
|
}
|
|
|
|
func (suite *ServerTestSuite) TestCDNCluster() {
|
|
assert := assert.New(suite.T())
|
|
|
|
var cluster *types.CDNCluster
|
|
{
|
|
cluster = suite.testDefaultCDNCluster()
|
|
ret, err := suite.server.ms.AddCDNCluster(context.TODO(), cluster)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
cluster.ClusterID = ret.ClusterID
|
|
}
|
|
|
|
{
|
|
ret, err := suite.server.ms.GetCDNCluster(context.TODO(), cluster.ClusterID)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(cluster.ClusterID, ret.ClusterID)
|
|
assert.Equal(cluster.Config, ret.Config)
|
|
}
|
|
|
|
{
|
|
var cdnConfigMap map[string]string
|
|
err := json.Unmarshal([]byte(cluster.Config), &cdnConfigMap)
|
|
assert.Nil(err)
|
|
|
|
cdnConfigMap["cdnConfig_a"] = "cdnConfig_a_update"
|
|
cdnConfigByte, err := json.Marshal(cdnConfigMap)
|
|
assert.Nil(err)
|
|
cluster.Config = string(cdnConfigByte)
|
|
|
|
ret, err := suite.server.ms.UpdateCDNCluster(context.TODO(), cluster)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(cluster.ClusterID, ret.ClusterID)
|
|
assert.Equal(cluster.Config, ret.Config)
|
|
}
|
|
|
|
{
|
|
ret, err := suite.server.ms.ListCDNClusters(context.TODO(), store.WithMarker(0, 10))
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
for i, c := range ret {
|
|
if cluster.ClusterID == c.ClusterID {
|
|
assert.Equal(cluster.ClusterID, ret[i].ClusterID)
|
|
assert.Equal(cluster.Config, ret[i].Config)
|
|
}
|
|
}
|
|
}
|
|
|
|
{
|
|
ret, err := suite.server.ms.DeleteCDNCluster(context.TODO(), cluster.ClusterID)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
|
|
ret, err = suite.server.ms.GetCDNCluster(context.TODO(), cluster.ClusterID)
|
|
assert.Nil(ret)
|
|
assert.NotNil(err)
|
|
|
|
ret, err = suite.server.ms.DeleteCDNCluster(context.TODO(), fmt.Sprintf("%sabc", cluster.ClusterID))
|
|
assert.Nil(ret)
|
|
assert.Nil(err)
|
|
}
|
|
}
|
|
|
|
func (suite *ServerTestSuite) TestCDNInstance() {
|
|
assert := assert.New(suite.T())
|
|
|
|
var cluster *types.CDNCluster
|
|
{
|
|
cluster = suite.testDefaultCDNCluster()
|
|
ret, err := suite.server.ms.AddCDNCluster(context.TODO(), cluster)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
cluster.ClusterID = ret.ClusterID
|
|
}
|
|
|
|
var instance *types.CDNInstance
|
|
{
|
|
instance = &types.CDNInstance{
|
|
ClusterID: cluster.ClusterID,
|
|
IDC: "idc_abc",
|
|
Location: "location_abc",
|
|
HostName: suite.randPrefix() + "hostname_abc",
|
|
IP: "ip_abc",
|
|
Port: 0,
|
|
RPCPort: 0,
|
|
DownPort: 0,
|
|
}
|
|
|
|
ret, err := suite.server.ms.AddCDNInstance(context.TODO(), instance)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
instance.InstanceID = ret.InstanceID
|
|
}
|
|
|
|
{
|
|
ret, err := suite.server.ms.GetCDNInstance(context.TODO(), instance.InstanceID)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(instance.InstanceID, ret.InstanceID)
|
|
assert.Equal(instance.IDC, ret.IDC)
|
|
assert.Equal(instance.Location, ret.Location)
|
|
}
|
|
|
|
{
|
|
instance.Location = "location_abc_update"
|
|
ret, err := suite.server.ms.UpdateCDNInstance(context.TODO(), instance)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(instance.InstanceID, ret.InstanceID)
|
|
assert.Equal(instance.IDC, ret.IDC)
|
|
assert.Equal(instance.Location, ret.Location)
|
|
}
|
|
|
|
{
|
|
op := []store.OpOption{}
|
|
op = append(op, store.WithClusterID(cluster.ClusterID))
|
|
op = append(op, store.WithMarker(0, 10))
|
|
|
|
ret, err := suite.server.ms.ListCDNInstances(context.TODO(), op...)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(instance.InstanceID, ret[0].InstanceID)
|
|
assert.Equal(instance.IDC, ret[0].IDC)
|
|
assert.Equal(instance.Location, ret[0].Location)
|
|
}
|
|
|
|
{
|
|
ret, err := suite.server.ms.DeleteCDNInstance(context.TODO(), instance.InstanceID)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
|
|
ret, err = suite.server.ms.GetCDNInstance(context.TODO(), instance.InstanceID)
|
|
assert.Nil(ret)
|
|
assert.NotNil(err)
|
|
|
|
ret, err = suite.server.ms.DeleteCDNInstance(context.TODO(), fmt.Sprintf("%sabc", instance.InstanceID))
|
|
assert.Nil(ret)
|
|
assert.Nil(err)
|
|
}
|
|
}
|
|
|
|
func (suite *ServerTestSuite) testDefaultSecurityDomain() *types.SecurityDomain {
|
|
var proxyDomainMap = map[string]string{
|
|
"proxyDomain_a": "proxyDomain_a",
|
|
"proxyDomain_b": "proxyDomain_b",
|
|
"proxyDomain_c": "proxyDomain_c",
|
|
}
|
|
|
|
proxyDomainByte, _ := json.Marshal(proxyDomainMap)
|
|
domain := fmt.Sprintf("securityDomain_%d", time.Now().Unix())
|
|
return &types.SecurityDomain{
|
|
SecurityDomain: domain,
|
|
DisplayName: domain,
|
|
ProxyDomain: string(proxyDomainByte),
|
|
}
|
|
}
|
|
|
|
func (suite *ServerTestSuite) TestSecurityDomain() {
|
|
assert := assert.New(suite.T())
|
|
|
|
var domain *types.SecurityDomain
|
|
{
|
|
domain = suite.testDefaultSecurityDomain()
|
|
ret, err := suite.server.ms.AddSecurityDomain(context.TODO(), domain)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
}
|
|
|
|
{
|
|
ret, err := suite.server.ms.GetSecurityDomain(context.TODO(), domain.SecurityDomain)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(domain.SecurityDomain, ret.SecurityDomain)
|
|
assert.Equal(domain.ProxyDomain, ret.ProxyDomain)
|
|
}
|
|
|
|
{
|
|
var proxyDomainMap map[string]string
|
|
err := json.Unmarshal([]byte(domain.ProxyDomain), &proxyDomainMap)
|
|
assert.Nil(err)
|
|
|
|
proxyDomainMap["proxyDomain_a"] = "proxyDomain_a_update"
|
|
proxyDomainByte, err := json.Marshal(proxyDomainMap)
|
|
assert.Nil(err)
|
|
domain.ProxyDomain = string(proxyDomainByte)
|
|
|
|
ret, err := suite.server.ms.UpdateSecurityDomain(context.TODO(), domain)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
assert.Equal(domain.SecurityDomain, ret.SecurityDomain)
|
|
assert.Equal(domain.ProxyDomain, ret.ProxyDomain)
|
|
}
|
|
|
|
{
|
|
ret, err := suite.server.ms.ListSecurityDomains(context.TODO(), store.WithMarker(0, 10))
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
for i, d := range ret {
|
|
if domain.SecurityDomain == d.SecurityDomain {
|
|
assert.Equal(domain.ProxyDomain, ret[i].ProxyDomain)
|
|
}
|
|
}
|
|
}
|
|
|
|
{
|
|
ret, err := suite.server.ms.DeleteSecurityDomain(context.TODO(), domain.SecurityDomain)
|
|
assert.NotNil(ret)
|
|
assert.Nil(err)
|
|
|
|
ret, err = suite.server.ms.GetSecurityDomain(context.TODO(), domain.SecurityDomain)
|
|
assert.Nil(ret)
|
|
assert.NotNil(err)
|
|
|
|
ret, err = suite.server.ms.DeleteSecurityDomain(context.TODO(), domain.SecurityDomain)
|
|
assert.Nil(ret)
|
|
assert.Nil(err)
|
|
}
|
|
}
|
|
|
|
func (suite *ServerTestSuite) randPrefix() string {
|
|
return fmt.Sprintf("%d_", time.Now().Unix())
|
|
}
|
|
|
|
func (suite *ServerTestSuite) SetupSuite() {
|
|
assert := assert.New(suite.T())
|
|
|
|
configsvc.KeepAliveTimeoutMax = 2 * time.Second
|
|
_ = logcore.InitManager(false)
|
|
cfg := config.New()
|
|
server, err := New(cfg)
|
|
assert.Nil(err)
|
|
assert.NotNil(server)
|
|
suite.server = server
|
|
|
|
go server.Serve()
|
|
|
|
addr := fmt.Sprintf("%s:%d", cfg.Server.IP, cfg.Server.Port)
|
|
client, err := client.NewClient([]dfnet.NetAddr{
|
|
{
|
|
Type: dfnet.TCP,
|
|
Addr: addr,
|
|
},
|
|
})
|
|
assert.Nil(err)
|
|
assert.NotNil(client)
|
|
suite.client = client
|
|
}
|
|
|
|
func (suite *ServerTestSuite) TearDownSuite() {
|
|
suite.server.Stop()
|
|
}
|
|
|
|
func TestServerTestSuite(t *testing.T) {
|
|
suite.Run(t, new(ServerTestSuite))
|
|
}
|