prometheus.test.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233
  1. import { getCleanSelector } from './prometheus';
  2. describe('getCleanSelector()', () => {
  3. it('returns a clean selector from an empty selector', () => {
  4. expect(getCleanSelector('{}', 1)).toBe('{}');
  5. });
  6. it('throws if selector is broken', () => {
  7. expect(() => getCleanSelector('{foo')).toThrow();
  8. });
  9. it('returns the selector sorted by label key', () => {
  10. expect(getCleanSelector('{foo="bar"}')).toBe('{foo="bar"}');
  11. expect(getCleanSelector('{foo="bar",baz="xx"}')).toBe('{baz="xx",foo="bar"}');
  12. });
  13. it('returns a clean selector from an incomplete one', () => {
  14. expect(getCleanSelector('{foo}')).toBe('{}');
  15. expect(getCleanSelector('{foo="bar",baz}')).toBe('{foo="bar"}');
  16. expect(getCleanSelector('{foo="bar",baz="}')).toBe('{foo="bar"}');
  17. });
  18. it('throws if not inside a selector', () => {
  19. expect(() => getCleanSelector('foo{}', 0)).toThrow();
  20. expect(() => getCleanSelector('foo{} + bar{}', 5)).toThrow();
  21. });
  22. it('returns the selector nearest to the cursor offset', () => {
  23. expect(() => getCleanSelector('{foo="bar"} + {foo="bar"}', 0)).toThrow();
  24. expect(getCleanSelector('{foo="bar"} + {foo="bar"}', 1)).toBe('{foo="bar"}');
  25. expect(getCleanSelector('{foo="bar"} + {baz="xx"}', 1)).toBe('{foo="bar"}');
  26. expect(getCleanSelector('{baz="xx"} + {foo="bar"}', 16)).toBe('{foo="bar"}');
  27. });
  28. it('returns a selector with metric if metric is given', () => {
  29. expect(getCleanSelector('bar{foo}', 4)).toBe('{__name__="bar"}');
  30. expect(getCleanSelector('baz{foo="bar"}', 12)).toBe('{__name__="baz",foo="bar"}');
  31. });
  32. });