| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- import { describe, it, expect } from "test/lib/common";
- import { InfluxQueryBuilder } from "../query_builder";
- describe("InfluxQueryBuilder", function() {
- describe("when building explore queries", function() {
- it("should only have measurement condition in tag keys query given query with measurement", function() {
- var builder = new InfluxQueryBuilder({ measurement: "cpu", tags: [] });
- var query = builder.buildExploreQuery("TAG_KEYS");
- expect(query).toBe('SHOW TAG KEYS FROM "cpu"');
- });
- it("should handle regex measurement in tag keys query", function() {
- var builder = new InfluxQueryBuilder({
- measurement: "/.*/",
- tags: []
- });
- var query = builder.buildExploreQuery("TAG_KEYS");
- expect(query).toBe("SHOW TAG KEYS FROM /.*/");
- });
- it("should have no conditions in tags keys query given query with no measurement or tag", function() {
- var builder = new InfluxQueryBuilder({ measurement: "", tags: [] });
- var query = builder.buildExploreQuery("TAG_KEYS");
- expect(query).toBe("SHOW TAG KEYS");
- });
- it("should have where condition in tag keys query with tags", function() {
- var builder = new InfluxQueryBuilder({
- measurement: "",
- tags: [{ key: "host", value: "se1" }]
- });
- var query = builder.buildExploreQuery("TAG_KEYS");
- expect(query).toBe("SHOW TAG KEYS WHERE \"host\" = 'se1'");
- });
- it("should have no conditions in measurement query for query with no tags", function() {
- var builder = new InfluxQueryBuilder({ measurement: "", tags: [] });
- var query = builder.buildExploreQuery("MEASUREMENTS");
- expect(query).toBe("SHOW MEASUREMENTS LIMIT 100");
- });
- it("should have no conditions in measurement query for query with no tags and empty query", function() {
- var builder = new InfluxQueryBuilder({ measurement: "", tags: [] });
- var query = builder.buildExploreQuery("MEASUREMENTS", undefined, "");
- expect(query).toBe("SHOW MEASUREMENTS LIMIT 100");
- });
- it("should have WITH MEASUREMENT in measurement query for non-empty query with no tags", function() {
- var builder = new InfluxQueryBuilder({ measurement: "", tags: [] });
- var query = builder.buildExploreQuery(
- "MEASUREMENTS",
- undefined,
- "something"
- );
- expect(query).toBe(
- "SHOW MEASUREMENTS WITH MEASUREMENT =~ /something/ LIMIT 100"
- );
- });
- it("should have WITH MEASUREMENT WHERE in measurement query for non-empty query with tags", function() {
- var builder = new InfluxQueryBuilder({
- measurement: "",
- tags: [{ key: "app", value: "email" }]
- });
- var query = builder.buildExploreQuery(
- "MEASUREMENTS",
- undefined,
- "something"
- );
- expect(query).toBe(
- "SHOW MEASUREMENTS WITH MEASUREMENT =~ /something/ WHERE \"app\" = 'email' LIMIT 100"
- );
- });
- it("should have where condition in measurement query for query with tags", function() {
- var builder = new InfluxQueryBuilder({
- measurement: "",
- tags: [{ key: "app", value: "email" }]
- });
- var query = builder.buildExploreQuery("MEASUREMENTS");
- expect(query).toBe("SHOW MEASUREMENTS WHERE \"app\" = 'email' LIMIT 100");
- });
- it("should have where tag name IN filter in tag values query for query with one tag", function() {
- var builder = new InfluxQueryBuilder({
- measurement: "",
- tags: [{ key: "app", value: "asdsadsad" }]
- });
- var query = builder.buildExploreQuery("TAG_VALUES", "app");
- expect(query).toBe('SHOW TAG VALUES WITH KEY = "app"');
- });
- it("should have measurement tag condition and tag name IN filter in tag values query", function() {
- var builder = new InfluxQueryBuilder({
- measurement: "cpu",
- tags: [
- { key: "app", value: "email" },
- { key: "host", value: "server1" }
- ]
- });
- var query = builder.buildExploreQuery("TAG_VALUES", "app");
- expect(query).toBe(
- 'SHOW TAG VALUES FROM "cpu" WITH KEY = "app" WHERE "host" = \'server1\''
- );
- });
- it("should select from policy correctly if policy is specified", function() {
- var builder = new InfluxQueryBuilder({
- measurement: "cpu",
- policy: "one_week",
- tags: [
- { key: "app", value: "email" },
- { key: "host", value: "server1" }
- ]
- });
- var query = builder.buildExploreQuery("TAG_VALUES", "app");
- expect(query).toBe(
- 'SHOW TAG VALUES FROM "one_week"."cpu" WITH KEY = "app" WHERE "host" = \'server1\''
- );
- });
- it("should not includ policy when policy is default", function() {
- var builder = new InfluxQueryBuilder({
- measurement: "cpu",
- policy: "default",
- tags: []
- });
- var query = builder.buildExploreQuery("TAG_VALUES", "app");
- expect(query).toBe('SHOW TAG VALUES FROM "cpu" WITH KEY = "app"');
- });
- it("should switch to regex operator in tag condition", function() {
- var builder = new InfluxQueryBuilder({
- measurement: "cpu",
- tags: [{ key: "host", value: "/server.*/" }]
- });
- var query = builder.buildExploreQuery("TAG_VALUES", "app");
- expect(query).toBe(
- 'SHOW TAG VALUES FROM "cpu" WITH KEY = "app" WHERE "host" =~ /server.*/'
- );
- });
- it("should build show field query", function() {
- var builder = new InfluxQueryBuilder({
- measurement: "cpu",
- tags: [{ key: "app", value: "email" }]
- });
- var query = builder.buildExploreQuery("FIELDS");
- expect(query).toBe('SHOW FIELD KEYS FROM "cpu"');
- });
- it("should build show field query with regexp", function() {
- var builder = new InfluxQueryBuilder({
- measurement: "/$var/",
- tags: [{ key: "app", value: "email" }]
- });
- var query = builder.buildExploreQuery("FIELDS");
- expect(query).toBe("SHOW FIELD KEYS FROM /$var/");
- });
- it("should build show retention policies query", function() {
- var builder = new InfluxQueryBuilder(
- { measurement: "cpu", tags: [] },
- "site"
- );
- var query = builder.buildExploreQuery("RETENTION POLICIES");
- expect(query).toBe('SHOW RETENTION POLICIES on "site"');
- });
- });
- });
|