diff --git a/views.go b/views.go index 497dbf587..a31864ef3 100644 --- a/views.go +++ b/views.go @@ -262,7 +262,7 @@ func autocomplete(c *gin.Context) { return } - acData := []string{} + acData := sort.StringSlice{} store.Store.Lock.RLock() for _, hint := range store.Store.Autocomplete { @@ -278,7 +278,7 @@ func autocomplete(c *gin.Context) { } store.Store.Lock.RUnlock() - sort.Strings(acData) + sort.Sort(sort.Reverse(acData)) data, err := json.Marshal(acData) if err != nil { log.Error(err.Error()) diff --git a/views_test.go b/views_test.go index f11fff370..3b6c4d1b7 100644 --- a/views_test.go +++ b/views_test.go @@ -206,122 +206,122 @@ var acTests = []acTestCase{ acTestCase{ Term: "a", Results: []string{ - "@age<10m", - "@age<1h", - "@age>10m", - "@age>1h", - "alertname!=Free_Disk_Space_Too_Low", - "alertname!=HTTP_Probe_Failed", - "alertname!=Host_Down", - "alertname!=Memory_Usage_Too_High", - "alertname=Free_Disk_Space_Too_Low", - "alertname=HTTP_Probe_Failed", - "alertname=Host_Down", "alertname=Memory_Usage_Too_High", + "alertname=Host_Down", + "alertname=HTTP_Probe_Failed", + "alertname=Free_Disk_Space_Too_Low", + "alertname!=Memory_Usage_Too_High", + "alertname!=Host_Down", + "alertname!=HTTP_Probe_Failed", + "alertname!=Free_Disk_Space_Too_Low", + "@age>1h", + "@age>10m", + "@age<1h", + "@age<10m", }, }, acTestCase{ Term: "alert", Results: []string{ - "alertname!=Free_Disk_Space_Too_Low", - "alertname!=HTTP_Probe_Failed", - "alertname!=Host_Down", - "alertname!=Memory_Usage_Too_High", - "alertname=Free_Disk_Space_Too_Low", - "alertname=HTTP_Probe_Failed", - "alertname=Host_Down", "alertname=Memory_Usage_Too_High", + "alertname=Host_Down", + "alertname=HTTP_Probe_Failed", + "alertname=Free_Disk_Space_Too_Low", + "alertname!=Memory_Usage_Too_High", + "alertname!=Host_Down", + "alertname!=HTTP_Probe_Failed", + "alertname!=Free_Disk_Space_Too_Low", }, }, acTestCase{ Term: "alertname", Results: []string{ - "alertname!=Free_Disk_Space_Too_Low", - "alertname!=HTTP_Probe_Failed", - "alertname!=Host_Down", - "alertname!=Memory_Usage_Too_High", - "alertname=Free_Disk_Space_Too_Low", - "alertname=HTTP_Probe_Failed", - "alertname=Host_Down", "alertname=Memory_Usage_Too_High", + "alertname=Host_Down", + "alertname=HTTP_Probe_Failed", + "alertname=Free_Disk_Space_Too_Low", + "alertname!=Memory_Usage_Too_High", + "alertname!=Host_Down", + "alertname!=HTTP_Probe_Failed", + "alertname!=Free_Disk_Space_Too_Low", }, }, acTestCase{ Term: "aLeRtNaMe", Results: []string{ - "alertname!=Free_Disk_Space_Too_Low", - "alertname!=HTTP_Probe_Failed", - "alertname!=Host_Down", - "alertname!=Memory_Usage_Too_High", - "alertname=Free_Disk_Space_Too_Low", - "alertname=HTTP_Probe_Failed", - "alertname=Host_Down", "alertname=Memory_Usage_Too_High", + "alertname=Host_Down", + "alertname=HTTP_Probe_Failed", + "alertname=Free_Disk_Space_Too_Low", + "alertname!=Memory_Usage_Too_High", + "alertname!=Host_Down", + "alertname!=HTTP_Probe_Failed", + "alertname!=Free_Disk_Space_Too_Low", }, }, acTestCase{ Term: "http", Results: []string{ - "alertname!=HTTP_Probe_Failed", "alertname=HTTP_Probe_Failed", + "alertname!=HTTP_Probe_Failed", }, }, acTestCase{ Term: "hTTp_", Results: []string{ - "alertname!=HTTP_Probe_Failed", "alertname=HTTP_Probe_Failed", + "alertname!=HTTP_Probe_Failed", }, }, acTestCase{ Term: "@", Results: []string{ - "@age<10m", - "@age<1h", - "@age>10m", - "@age>1h", - "@limit=10", - "@limit=50", - "@receiver!=by-cluster-service", - "@receiver!=by-name", - "@receiver=by-cluster-service", - "@receiver=by-name", - "@silence_author!=john@example.com", - "@silence_author!~john@example.com", - "@silence_author=john@example.com", - "@silence_author=~john@example.com", - "@state!=active", - "@state!=suppressed", - "@state=active", "@state=suppressed", + "@state=active", + "@state!=suppressed", + "@state!=active", + "@silence_author=~john@example.com", + "@silence_author=john@example.com", + "@silence_author!~john@example.com", + "@silence_author!=john@example.com", + "@receiver=by-name", + "@receiver=by-cluster-service", + "@receiver!=by-name", + "@receiver!=by-cluster-service", + "@limit=50", + "@limit=10", + "@age>1h", + "@age>10m", + "@age<1h", + "@age<10m", }, }, acTestCase{ Term: "nod", Results: []string{ - "job!=node_exporter", - "job!=node_ping", - "job=node_exporter", "job=node_ping", + "job=node_exporter", + "job!=node_ping", + "job!=node_exporter", }, }, acTestCase{ Term: "Nod", Results: []string{ - "job!=node_exporter", - "job!=node_ping", - "job=node_exporter", "job=node_ping", + "job=node_exporter", + "job!=node_ping", + "job!=node_exporter", }, }, // duplicated to test reponse caching acTestCase{ Term: "Nod", Results: []string{ - "job!=node_exporter", - "job!=node_ping", - "job=node_exporter", "job=node_ping", + "job=node_exporter", + "job!=node_ping", + "job!=node_exporter", }, }, }