@@ -581,3 +581,40 @@ func TestMeteringWriter(t *testing.T) {
581581 re .True (ok )
582582 re .Equal (rmserver .ResourceManagerCategory , ruCollector .Category ())
583583}
584+
585+ func TestSetPDServerConfigWithDashboard (t * testing.T ) {
586+ re := require .New (t )
587+ ctx , cancel := context .WithCancel (context .Background ())
588+ defer cancel ()
589+
590+ cluster , err := tests .NewTestCluster (ctx , 1 )
591+ defer cluster .Destroy ()
592+ re .NoError (err )
593+
594+ err = cluster .RunInitialServers ()
595+ re .NoError (err )
596+
597+ leader := cluster .WaitLeader ()
598+ re .NotEmpty (leader )
599+ svr := cluster .GetServer (leader ).GetServer ()
600+
601+ // Test updating config without changing dashboard address
602+ cfg := svr .GetPDServerConfig ()
603+ originalDashboard := cfg .DashboardAddress
604+ originalUseRegionStorage := cfg .UseRegionStorage
605+
606+ // Change some other field but keep dashboard the same
607+ cfg .UseRegionStorage = ! cfg .UseRegionStorage
608+ err = svr .SetPDServerConfig (* cfg )
609+ re .NoError (err )
610+
611+ newCfg := svr .GetPDServerConfig ()
612+ re .Equal (originalDashboard , newCfg .DashboardAddress )
613+ re .NotEqual (originalUseRegionStorage , newCfg .UseRegionStorage )
614+
615+ // Change both other field and dashboard
616+ cfg .UseRegionStorage = ! cfg .UseRegionStorage
617+ cfg .DashboardAddress = "https://new-dashboard-address:1234"
618+ err = svr .SetPDServerConfig (* cfg )
619+ re .ErrorContains (err , "is not the client url of any member" )
620+ }
0 commit comments