ChangedenCZD opened a new pull request #1372: URL: https://github.com/apache/dubbo-go/pull/1372
<!-- Thanks for sending a pull request! Read https://github.com/apache/dubbo-go/blob/master/CONTRIBUTING.md before commit pull request. --> **What this PR does**: ```go func TestLoadWithLoaderHooks(t *testing.T) { extension.SetFilter(constant.GracefulShutdownConsumerFilterKey, func() filter.Filter { return &mockGracefulShutdownFilter{} }) extension.SetFilter(constant.GracefulShutdownProviderFilterKey, func() filter.Filter { return &mockGracefulShutdownFilter{} }) doInitConsumer() doInitProvider() ms := &MockService{} SetConsumerService(ms) SetProviderService(ms) extension.SetProtocol("registry", GetProtocol) extension.SetCluster(constant.ZONEAWARE_CLUSTER_NAME, cluster_impl.NewZoneAwareCluster) extension.SetProxyFactory("default", proxy_factory.NewDefaultProxyFactory) GetApplicationConfig().MetadataType = "mock" var mm *mockMetadataService extension.SetLocalMetadataService("mock", func() (metadataService service.MetadataService, err error) { if mm == nil { mm = &mockMetadataService{ exportedServiceURLs: new(sync.Map), lock: new(sync.RWMutex), } } return mm, nil }) // create consumer loader hooks beforeConsumerConnectHook := NewBeforeConsumerConnectHook(func(info *ConsumerConnectInfo) { logger.Debug("BeforeConsumerConnectHook", info) assert.NotNil(t, info) }) consumerConnectSuccessHook := NewConsumerConnectSuccessHook(func(info *ConsumerConnectInfo) { logger.Debug("ConsumerConnectSuccessHook", info) assert.NotNil(t, info) }) consumerConnectFailHook := NewConsumerConnectFailHook(func(info *ConsumerConnectFailInfo) { logger.Debug("ConsumerConnectFailHook", info) assert.NotNil(t, info) }) allConsumersConnectCompleteHook := NewAllConsumersConnectCompleteHook(func() { logger.Debug("AllConsumersConnectCompleteHook") RemoveLoaderHooks( // Remove some consumer loader hooks beforeConsumerConnectHook, consumerConnectSuccessHook, consumerConnectFailHook, ) logger.Debug("LoaderHooks length = ", len(loaderHooks), " after AllConsumersConnectCompleteHook") // beforeConsumerConnectHook, consumerConnectSuccessHook // and consumerConnectFailHook have been removed assert.Equal(t, len(loaderHooks), 6) }) // create provider loader hooks beforeProviderConnectHook := NewBeforeProviderConnectHook(func(info *ProviderConnectInfo) { logger.Debug("BeforeProviderConnectHook", info) assert.NotNil(t, info) }) providerConnectSuccessHook := NewProviderConnectSuccessHook(func(info *ProviderConnectInfo) { logger.Debug("ProviderConnectSuccessHook", info) assert.NotNil(t, info) }) providerConnectFailHook := NewProviderConnectFailHook(func(info *ProviderConnectFailInfo) { logger.Debug("ProviderConnectFailHook", info) assert.NotNil(t, info) }) allProvidersConnectCompleteHook := NewAllProvidersConnectCompleteHook(func() { logger.Debug("AllProvidersConnectCompleteHook") RemoveLoaderHooks( // Remove some provider loader hooks beforeProviderConnectHook, providerConnectSuccessHook, providerConnectFailHook, ) logger.Debug("LoaderHooks length = ", len(loaderHooks), " after AllProvidersConnectCompleteHook") // beforeProviderConnectHook, providerConnectSuccessHook // and providerConnectFailHook have been removed assert.Equal(t, len(loaderHooks), 3) }) beforeShutdownHook := NewBeforeShutdownHook(func() { logger.Debug("BeforeShutDownHook") RemoveLoaderHooks( // Remove some consumer and provider loader hooks // Consumer Hooks beforeConsumerConnectHook, consumerConnectSuccessHook, consumerConnectFailHook, allConsumersConnectCompleteHook, // Provider Hooks beforeProviderConnectHook, providerConnectSuccessHook, providerConnectFailHook, allProvidersConnectCompleteHook, ) assert.Equal(t, len(loaderHooks), 1) }) // add loader hooks before config.Load AddLoaderHooks( // Consumer Hooks beforeConsumerConnectHook, consumerConnectSuccessHook, consumerConnectFailHook, allConsumersConnectCompleteHook, // Provider Hooks beforeProviderConnectHook, providerConnectSuccessHook, providerConnectFailHook, allProvidersConnectCompleteHook, // Shut Down hook beforeShutdownHook, ) // check loaderHooks length assert.Equal(t, len(loaderHooks), 9) Load() assert.Equal(t, ms, GetRPCService(ms.Reference())) ms2 := &struct { MockService }{} RPCService(ms2) assert.NotEqual(t, ms2, GetRPCService(ms2.Reference())) conServices = map[string]common.RPCService{} proServices = map[string]common.RPCService{} err := common.ServiceMap.UnRegister("com.MockService", "mock", common.ServiceKey("com.MockService", "huadong_idc", "1.0.0")) assert.Nil(t, err) consumerConfig = nil providerConfig = nil } ``` **Which issue(s) this PR fixes**: <!-- *Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. _If PR is about `failing-tests or flakes`, please post the related issues/tests in a comment and do not use `Fixes`_* --> Fixes #1364 **Special notes for your reviewer**: **Does this PR introduce a user-facing change?**: <!-- If no, just write "NONE" in the release-note block below. If yes, a release note is required: Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required". --> ```release-note None ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
