parser_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package parser
  2. import (
  3. "os"
  4. "strings"
  5. "testing"
  6. )
  7. const interestingFloatCases = `
  8. # HELP random comment
  9. test_metric{label1="value1", label2="value2"} .0123 1708014188740
  10. test_metric{label1="value1", label2="value2"} 1.23e-2 1708014188740
  11. test_metric{label1="value1", label2="value2"} 1.23e2 1708014188740
  12. test_metric{label1="value1", label2="value2"} 1.23e+2 1708014188740
  13. test_metric{label1="value1", label2="value2"} 0.23E-1 1708014188740
  14. test_metric{label1="value1", label2="value2"} 0.23E1 1708014188740
  15. test_metric{label1="value1", label2="value2"} 0.23E+1 1708014188740
  16. test_metric{label1="value1", label2="value2"} 1_000_000.0 1708014188740
  17. test_metric{label1="value1", label2="value2"} ___123 1708014188740
  18. `
  19. const cases = `
  20. # HELP random comment
  21. test_metric{ , label1="value1" , label2="value2" ,} 123 1708014188740
  22. a_metric{} 0
  23. another_metric{__foo="bar", } 15.2 1708014188740
  24. spaced_metric
  25. {
  26. label1="value1",
  27. label2="value2"
  28. }
  29. 123.52
  30. 1708014188740
  31. `
  32. func TestParser(t *testing.T) {
  33. f, err := os.Open("scrape.txt")
  34. if err != nil {
  35. t.Fatal(err)
  36. }
  37. defer f.Close()
  38. p := newParser(f)
  39. metrics, err := p.parse()
  40. if err != nil {
  41. t.Fatal(err)
  42. }
  43. for _, m := range metrics {
  44. t.Logf("Metric: %v", m)
  45. }
  46. }
  47. func TestInterestingFloatParsing(t *testing.T) {
  48. f := strings.NewReader(interestingFloatCases)
  49. p := newParser(f)
  50. metrics, err := p.parse()
  51. if err != nil {
  52. t.Fatal(err)
  53. }
  54. for _, m := range metrics {
  55. t.Logf("Metric: %v", m)
  56. }
  57. }
  58. func TestMetricFormatResilience(t *testing.T) {
  59. f := strings.NewReader(cases)
  60. p := newParser(f)
  61. metrics, err := p.parse()
  62. if err != nil {
  63. t.Fatal(err)
  64. }
  65. for _, m := range metrics {
  66. t.Logf("Metric: %v", m)
  67. }
  68. }