k8s mode fix
diff --git a/app/dubbo-cp/cmd/run.go b/app/dubbo-cp/cmd/run.go
index f168898..d4eb467 100644
--- a/app/dubbo-cp/cmd/run.go
+++ b/app/dubbo-cp/cmd/run.go
@@ -19,6 +19,8 @@
 
 import (
 	"fmt"
+	"github.com/apache/dubbo-kubernetes/pkg/config/core"
+	"github.com/apache/dubbo-kubernetes/pkg/test"
 	"time"
 )
 
@@ -31,7 +33,6 @@
 	"github.com/apache/dubbo-kubernetes/pkg/bufman"
 	"github.com/apache/dubbo-kubernetes/pkg/config"
 	dubbo_cp "github.com/apache/dubbo-kubernetes/pkg/config/app/dubbo-cp"
-	"github.com/apache/dubbo-kubernetes/pkg/config/core"
 	"github.com/apache/dubbo-kubernetes/pkg/core/bootstrap"
 	dubbo_cmd "github.com/apache/dubbo-kubernetes/pkg/core/cmd"
 	dds_global "github.com/apache/dubbo-kubernetes/pkg/dds/global"
@@ -42,7 +43,6 @@
 	"github.com/apache/dubbo-kubernetes/pkg/dubbo"
 	"github.com/apache/dubbo-kubernetes/pkg/hds"
 	"github.com/apache/dubbo-kubernetes/pkg/intercp"
-	"github.com/apache/dubbo-kubernetes/pkg/test"
 	"github.com/apache/dubbo-kubernetes/pkg/util/os"
 	dubbo_version "github.com/apache/dubbo-kubernetes/pkg/version"
 	"github.com/apache/dubbo-kubernetes/pkg/xds"
@@ -100,13 +100,6 @@
 					"minimim-open-files", minOpenFileLimit)
 			}
 
-			if rt.GetMode() == core.Test {
-				if err := test.Setup(rt); err != nil {
-					runLog.Error(err, "unable to set up test")
-					return err
-				}
-			}
-
 			if err := admin.Setup(rt); err != nil {
 				runLog.Error(err, "unable to set up admin")
 				return err
@@ -151,6 +144,13 @@
 				return err
 			}
 
+			if rt.GetMode() == core.Test {
+				if err := test.Setup(rt); err != nil {
+					runLog.Error(err, "unable to set up test")
+					return err
+				}
+			}
+
 			runLog.Info("starting Control Plane", "version", dubbo_version.Build.Version)
 			if err := rt.Start(gracefulCtx.Done()); err != nil {
 				runLog.Error(err, "problem running Control Plane")
diff --git a/pkg/dubbo/pusher/pusher.go b/pkg/dubbo/pusher/pusher.go
index f3aa079..e8427e9 100644
--- a/pkg/dubbo/pusher/pusher.go
+++ b/pkg/dubbo/pusher/pusher.go
@@ -19,6 +19,7 @@
 
 import (
 	"context"
+	"github.com/apache/dubbo-kubernetes/pkg/core/resources/registry"
 	"reflect"
 	"time"
 )
@@ -72,6 +73,7 @@
 		eventBus:                      eventBus,
 		newFullResyncTicker:           newFullResyncTicker,
 		resourceTypes:                 make(map[core_model.ResourceType]struct{}),
+		resourceLastPushed:            make(map[core_model.ResourceType]core_model.ResourceList),
 		resourceRevisions:             make(map[core_model.ResourceType]revision),
 		resourceChangedEventListeners: make(map[core_model.ResourceType]events.Listener),
 		eventsChannel:                 make(chan *changedEvent, eventsChannelSize),
@@ -152,8 +154,12 @@
 			return nil
 		case ce := <-p.eventsChannel:
 			log.Info("event received", "ResourceType", ce.resourceType)
-			var resourceList core_model.ResourceList
-			err := p.resourceManager.List(ctx, resourceList)
+			resourceList, err := registry.Global().NewList(ce.resourceType)
+			if err != nil {
+				log.Info("can not get resourceList")
+				continue
+			}
+			err = p.resourceManager.List(ctx, resourceList)
 			if err != nil {
 				log.Error(err, "list resource failed", "ResourceType", ce.resourceType)
 				continue
diff --git a/pkg/test/component.go b/pkg/test/component.go
index 18df6c2..60769f2 100644
--- a/pkg/test/component.go
+++ b/pkg/test/component.go
@@ -19,6 +19,7 @@
 
 import (
 	mesh_proto "github.com/apache/dubbo-kubernetes/api/mesh/v1alpha1"
+	"github.com/apache/dubbo-kubernetes/pkg/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"
@@ -26,36 +27,63 @@
 	"strings"
 )
 
+var testServerLog = core.Log.WithName("test")
+
 func Setup(rt core_runtime.Runtime) error {
+	testServer := NewTestServer(rt)
+	if err := rt.Add(testServer); err != nil {
+		testServerLog.Error(err, "fail to start the test server")
+	}
+	return nil
+}
+
+type TestServer struct {
+	rt core_runtime.Runtime
+}
+
+func NewTestServer(rt core_runtime.Runtime) *TestServer {
+	return &TestServer{rt: rt}
+}
+
+func (t *TestServer) Start(stop <-chan struct{}) error {
+	// 测试dataplane资源
+	if err := testDataplane(t.rt); err != nil {
+		return err
+	}
 	// 测试mapping资源
-	if err := testMapping(rt); err != nil {
+	if err := testMapping(t.rt); err != nil {
 		return err
 	}
 	// 测试metadata资源
-	if err := testMetadata(rt); err != nil {
+	if err := testMetadata(t.rt); err != nil {
 		return err
 	}
-	// 测试dataplane资源
-	if err := testDataplane(rt); err != nil {
-		return err
-	}
+
 	return nil
 }
 
+func (a *TestServer) NeedLeaderElection() bool {
+	return false
+}
+
 // 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
 	}
+
+	// get
+	if err := manager.Get(rt.AppContext(), dataplaneResource,
+		store.GetByApplication("dubbo-springboot-demo-provider"),
+		store.GetByRevision("bdc0958191bba7a0f050a32709ee1262")); err != nil {
+		return err
+	}
+
 	return nil
 }