metrics_test.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package prometheus
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. )
  6. func Test_getNginxStatusQuery(t *testing.T) {
  7. type input struct {
  8. opts *QueryOpts
  9. selectionRegex string
  10. }
  11. type output struct {
  12. query string
  13. err error
  14. }
  15. tests := []struct {
  16. name string
  17. input input
  18. expected struct {
  19. query string
  20. err error
  21. }
  22. }{
  23. {
  24. "valid status level",
  25. input{
  26. &QueryOpts{
  27. Name: "process-app-web",
  28. Namespace: "app-namespace",
  29. },
  30. "process-app-web",
  31. },
  32. output{
  33. `round(sum by (status_code, ingress)(label_replace(increase(nginx_ingress_controller_requests{exported_namespace=~"app-namespace",ingress="process-app-web",service="process-app-web"}[2m]), "status_code", "${1}xx", "status", "(.)..")), 0.001) or round(sum by (status_code, ingress)(label_replace(increase(nginx_ingress_controller_requests{namespace=~"app-namespace",ingress="process-app-web",service="process-app-web"}[2m]), "status_code", "${1}xx", "status", "(.)..")), 0.001)`,
  34. nil,
  35. },
  36. },
  37. }
  38. for _, tt := range tests {
  39. t.Run(tt.name, func(t *testing.T) {
  40. query, err := getNginxStatusQuery(tt.input.opts, tt.input.selectionRegex)
  41. if tt.expected.err == nil {
  42. assert.Nil(t, err, "expected nil, got %v", err)
  43. assert.Equal(t, tt.expected.query, query, "got %s, want %s", query, tt.expected.query)
  44. } else {
  45. if assert.Error(t, err) {
  46. assert.Equal(t, tt.expected.err, err)
  47. }
  48. }
  49. })
  50. }
  51. }