blob: d4317ccff1c9a48526d168b006bda14eaa49a42a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package test
import (
mesh_proto "github.com/apache/dubbo-kubernetes/api/mesh/v1alpha1"
"github.com/apache/dubbo-kubernetes/pkg/config/core"
"github.com/apache/dubbo-kubernetes/pkg/core/resources/apis/mesh"
core_model "github.com/apache/dubbo-kubernetes/pkg/core/resources/model"
"github.com/apache/dubbo-kubernetes/pkg/core/resources/store"
core_runtime "github.com/apache/dubbo-kubernetes/pkg/core/runtime"
)
func Setup(rt core_runtime.Runtime) error {
if rt.GetDeployMode() == core.KubernetesMode {
return nil
}
// 测试mapping资源
if err := testMapping(rt); err != nil {
return err
}
// 测试metadata资源
if err := testMetadata(rt); err != nil {
return err
}
// 测试dataplane资源
if err := testDataplane(rt); err != nil {
return err
}
return nil
}
// dataplane资源只有get, list接口, 其余均不支持
func testDataplane(rt core_runtime.Runtime) error {
manager := rt.ResourceManager()
dataplaneResource := mesh.NewDataplaneResource()
// get
if err := manager.Get(rt.AppContext(), dataplaneResource, store.GetByApplication("dubbo-springboot-demo-provider"), store.GetByRevision("bdc0958191bba7a0f050a32709ee1262")); err != nil {
return err
}
// list
dataplaneList := &mesh.DataplaneResourceList{}
if err := manager.List(rt.AppContext(), dataplaneList); err != nil {
return err
}
return nil
}
// metadata资源没有删除能力
func testMetadata(rt core_runtime.Runtime) error {
manager := rt.ResourceManager()
metadata1 := mesh.NewMetaDataResource()
// get
if err := manager.Get(rt.AppContext(), metadata1, store.GetByApplication("dubbo-springboot-demo-provider")); err != nil {
return err
}
// list
metadataList := &mesh.MetaDataResourceList{}
if err := manager.List(rt.AppContext(), metadataList); err != nil {
return err
}
// create
metadata2 := mesh.NewMetaDataResource()
err := metadata2.SetSpec(&mesh_proto.MetaData{
App: "dubbo-springboot-demo-lixinyang",
Revision: "bdc0958191bba7a0f050a32709ee1111",
Services: map[string]*mesh_proto.ServiceInfo{
"org.apache.dubbo.springboot.demo.DemoService:tri": {
Name: "org.apache.dubbo.springboot.demo.DemoService",
},
},
})
if err != nil {
return err
}
if err := manager.Create(rt.AppContext(), metadata2); err != nil {
return err
}
// update
metadata3 := mesh.NewMetaDataResource()
err = metadata3.SetSpec(&mesh_proto.MetaData{
App: "dubbo-springboot-demo-lixinyang",
Revision: "bdc0958191bba7a0f050a32709ee1111",
Services: map[string]*mesh_proto.ServiceInfo{
"org.apache.dubbo.springboot.demo.DemoService:tri": {
Name: "org.apache.dubbo.springboot.demo.lixinyang",
},
},
})
if err != nil {
return err
}
if err := manager.Update(rt.AppContext(), metadata3); err != nil {
return err
}
return nil
}
// mapping资源没有删除功能
func testMapping(rt core_runtime.Runtime) error {
manager := rt.ResourceManager()
// mapping test
mapping1 := mesh.NewMappingResource()
// get
if err := manager.Get(rt.AppContext(), mapping1, store.GetBy(core_model.ResourceKey{
Name: "org.apache.dubbo.springboot.demo.DemoService",
})); err != nil {
return err
}
mapping2 := mesh.NewMappingResource()
err := mapping2.SetSpec(&mesh_proto.Mapping{
Zone: "zone1",
InterfaceName: "org.apache.dubbo.springboot.demo.DemoService1",
ApplicationNames: []string{
"dubbo-springboot-demo-provider",
},
})
if err != nil {
return err
}
// create
if err := manager.Create(rt.AppContext(), mapping2); err != nil {
return err
}
mappingList := &mesh.MappingResourceList{}
// list
if err := manager.List(rt.AppContext(), mappingList); err != nil {
return err
}
mapping3 := mesh.NewMappingResource()
err = mapping3.SetSpec(&mesh_proto.Mapping{
Zone: "zone2",
InterfaceName: "org.apache.dubbo.springboot.demo.DemoService1",
ApplicationNames: []string{
"dubbo-springboot-demo-provider2",
},
})
if err != nil {
return err
}
// update
if err := manager.Update(rt.AppContext(), mapping3); err != nil {
return err
}
return nil
}