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]

Reply via email to