@@ -19,12 +19,11 @@ import (
1919// Returns an empty string if no changes are found.
2020func compareSettingsToDefault (settings config.SimulationSettings ) string {
2121 defaultSettings := config .DefaultSimulationSettings ()
22- var changes []string
23-
2422 // Use reflection to compare all fields
2523 settingsVal := reflect .ValueOf (settings )
2624 defaultVal := reflect .ValueOf (* defaultSettings )
2725 settingsType := reflect .TypeOf (settings )
26+ var buf strings.Builder
2827
2928 for i := 0 ; i < settingsVal .NumField (); i ++ {
3029 field := settingsType .Field (i )
@@ -39,18 +38,17 @@ func compareSettingsToDefault(settings config.SimulationSettings) string {
3938 }
4039
4140 if ! reflect .DeepEqual (settingsFieldVal .Interface (), defaultFieldVal .Interface ()) {
42- changes = append (changes , fmt .Sprintf ("\t %s: %v (default: %v)" ,
41+ if buf .Len () != 0 {
42+ _ , _ = fmt .Fprintf (& buf , "\n " )
43+ }
44+ _ , _ = fmt .Fprintf (& buf , "\t %s: %v (default: %v)" ,
4345 field .Name ,
4446 settingsFieldVal .Interface (),
45- defaultFieldVal .Interface ()))
47+ defaultFieldVal .Interface ())
4648 }
4749 }
4850
49- if len (changes ) == 0 {
50- return ""
51- }
52-
53- return strings .Join (changes , "\n " )
51+ return buf .String ()
5452}
5553
5654// generateClusterVisualization generates a visualization of the cluster state.
@@ -82,14 +80,21 @@ func generateClusterVisualization(
8280 if buf == nil {
8381 return
8482 }
85- _ , _ = fmt .Fprintf (buf , "Cluster Set Up\n " )
86- _ , _ = fmt .Fprintf (buf , "%v" , s .NodesString ())
87- _ , _ = fmt .Fprintf (buf , "Key Space\n %s" , rangeStateStr )
88- _ , _ = fmt .Fprintf (buf , "Event\n %s" , eventGen .String ())
89- _ , _ = fmt .Fprintf (buf , "Workload Set Up\n %s" , loadGen .String ())
90-
91- // Only print settings section if there are changes from defaults.
92- if settingsChanges := compareSettingsToDefault (settings ); settingsChanges != "" {
93- _ , _ = fmt .Fprintf (buf , "Changed Settings\n %s\n " , settingsChanges )
83+ // Helper function to return "empty" if string is empty, otherwise return the string
84+ emptyIfBlank := func (s string ) string {
85+ if s == "" {
86+ return "\t empty"
87+ }
88+ return s
9489 }
90+ clusterSetUp := emptyIfBlank (s .NodesString ())
91+ rangeState := emptyIfBlank (rangeStateStr )
92+ event := emptyIfBlank (eventGen .String ())
93+ workloadSetUp := emptyIfBlank (loadGen .String ())
94+ settingsChanges := emptyIfBlank (compareSettingsToDefault (settings ))
95+ _ , _ = fmt .Fprintf (buf , "Cluster Set Up\n %s\n " , clusterSetUp )
96+ _ , _ = fmt .Fprintf (buf , "Key Space\n %s\n " , rangeState )
97+ _ , _ = fmt .Fprintf (buf , "Event\n %s\n " , event )
98+ _ , _ = fmt .Fprintf (buf , "Workload Set Up\n %s\n " , workloadSetUp )
99+ _ , _ = fmt .Fprintf (buf , "Changed Settings\n %s" , settingsChanges )
95100}
0 commit comments