@@ -19,12 +19,11 @@ import (
19
19
// Returns an empty string if no changes are found.
20
20
func compareSettingsToDefault (settings config.SimulationSettings ) string {
21
21
defaultSettings := config .DefaultSimulationSettings ()
22
- var changes []string
23
-
24
22
// Use reflection to compare all fields
25
23
settingsVal := reflect .ValueOf (settings )
26
24
defaultVal := reflect .ValueOf (* defaultSettings )
27
25
settingsType := reflect .TypeOf (settings )
26
+ var buf strings.Builder
28
27
29
28
for i := 0 ; i < settingsVal .NumField (); i ++ {
30
29
field := settingsType .Field (i )
@@ -39,18 +38,17 @@ func compareSettingsToDefault(settings config.SimulationSettings) string {
39
38
}
40
39
41
40
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)" ,
43
45
field .Name ,
44
46
settingsFieldVal .Interface (),
45
- defaultFieldVal .Interface ()))
47
+ defaultFieldVal .Interface ())
46
48
}
47
49
}
48
50
49
- if len (changes ) == 0 {
50
- return ""
51
- }
52
-
53
- return strings .Join (changes , "\n " )
51
+ return buf .String ()
54
52
}
55
53
56
54
// generateClusterVisualization generates a visualization of the cluster state.
@@ -82,14 +80,21 @@ func generateClusterVisualization(
82
80
if buf == nil {
83
81
return
84
82
}
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
94
89
}
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 )
95
100
}
0 commit comments