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]