lizining1231 commented on code in PR #3590:
URL: https://github.com/apache/dubbo-go/pull/3590#discussion_r3713926796


##########
registry/servicediscovery/service_discovery_registry_test.go:
##########
@@ -97,6 +97,275 @@ func TestServiceDiscoveryRegistryRegister(t *testing.T) {
        }
 }
 
+// TestServiceDiscoveryRegistryRegisterPublishesMetadataOnce verifies that
+// app metadata is published exactly once.
+func TestServiceDiscoveryRegistryRegisterPublishesMetadataOnce(t *testing.T) {
+       mockSD, mockMapping := setupEnvironment(t)
+       regID := fmt.Sprintf("mock-reg-%s-%d", t.Name(), time.Now().UnixNano())
+       prevType := metadata.GetMetadataType()
+       opts := 
metadata.NewOptions(metadata.WithMetadataType(constant.RemoteMetadataStorageType))
+       _ = opts.Init()
+       defer func() {
+               restoreOpts := 
metadata.NewOptions(metadata.WithMetadataType(prevType))
+               _ = restoreOpts.Init()
+       }()
+
+       registryURL, err := common.NewURL(testRegistryURL,
+               common.WithParamsValue(constant.RegistryKey, "mock"),
+               common.WithParamsValue(constant.RegistryIdKey, regID))
+       require.NoError(t, err)
+
+       reg, err := newServiceDiscoveryRegistry(registryURL)
+       require.NoError(t, err)
+
+       countingReport := &mockMetadataReportForGC{}
+       sdReg, ok := reg.(*serviceDiscoveryRegistry)
+       require.True(t, ok)
+       sdReg.metadataReport = countingReport
+
+       providerURL1, err := common.NewURL("dubbo://127.0.0.1:20880/",
+               common.WithParamsValue(constant.ApplicationKey, testApp),
+               common.WithInterface(testInterface),
+               common.WithParamsValue(constant.SideKey, constant.SideProvider),
+       )
+       require.NoError(t, err)
+       providerURL2, err := common.NewURL("dubbo://127.0.0.1:20881/",
+               common.WithParamsValue(constant.ApplicationKey, testApp),
+               common.WithInterface(testInterface),
+               common.WithParamsValue(constant.SideKey, constant.SideProvider),
+       )
+       require.NoError(t, err)
+
+       err = reg.Register(providerURL1)
+       require.NoError(t, err)
+       err = reg.Register(providerURL2)
+       require.NoError(t, err)
+       assert.True(t, mockMapping.mapCalled, "ServiceNameMapping.Map should be 
called")
+
+       err = sdReg.RegisterService()
+       require.NoError(t, err)
+
+       assert.True(t, mockSD.registerCalled, "ServiceDiscovery.Register should 
be called")
+       assert.Len(t, sdReg.instances, 2)
+       assert.Equal(t, 1, countingReport.published)

Review Comment:
   好的, 感谢review! 我已做出相应改动,具体改动如下: 
   1. 为本测试显示设置 MetadataRenewOnStartupKey 为 false
   2. 调用 stopMetadataTimers() 以在 cleanup 停止 timer
   3. 补充 package 级 -race 门禁
   
   其中针对 3.补充门禁,遇到该问题: 测试 TestServiceDiscoveryRegistryUnRegister_Concurrent 
   (service_discovery_registry_test.go#L1307-L1393) 故意制造竞态, 与 test-race 冲突
   对此做出改动为: 通过 -skip flag 排除该测试



-- 
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