diff --git a/web/cypress/integration/logs-page.cy.ts b/web/cypress/integration/logs-page.cy.ts index d54ec8323..ffc6867db 100644 --- a/web/cypress/integration/logs-page.cy.ts +++ b/web/cypress/integration/logs-page.cy.ts @@ -346,7 +346,7 @@ describe('Logs Page', () => { .invoke('val') .should( 'equal', - '{ log_type="application" } |= "line filter" | json | level=~"error|err|eror|info|inf|information|notice"', + '{ log_type="application" } |= `line filter` | json | level=~"error|err|eror|info|inf|information|notice"', ); }); @@ -370,7 +370,7 @@ describe('Logs Page', () => { .invoke('val') .should( 'equal', - '{ log_type="application", kubernetes_namespace_name="gitops" } |= "line filter" | json | level=~"error|err|eror|info|inf|information|notice"', + '{ log_type="application", kubernetes_namespace_name="gitops" } |= `line filter` | json | level=~"error|err|eror|info|inf|information|notice"', ); }); diff --git a/web/src/__tests__/attribute-filters.spec.ts b/web/src/__tests__/attribute-filters.spec.ts index c144d76da..b98e055c6 100644 --- a/web/src/__tests__/attribute-filters.spec.ts +++ b/web/src/__tests__/attribute-filters.spec.ts @@ -109,7 +109,7 @@ describe('Attribute filters', () => { filters: { content: new Set(['my search query']), }, - expected: { operator: '|=', value: '"my search query"' }, + expected: { operator: '|=', value: '`my search query`' }, }, ].forEach(({ filters, expected }) => { const pipeline = getContentPipelineStage(filters); @@ -267,11 +267,11 @@ describe('Attribute filters', () => { }, { query: - '{ kubernetes_pod_name=~"a-pod|b-pod", kubernetes_namespace_name=~"ns-1|ns-2", label="test" } |="some line content" | other="filter" | level="inf"', + '{ kubernetes_pod_name=~"a-pod|b-pod", kubernetes_namespace_name=~"ns-1|ns-2", label="test" } |=`some line content` | other="filter" | level="inf"', expectedFilters: { pod: new Set(['a-pod', 'b-pod']), namespace: new Set(['ns-1', 'ns-2']), - content: new Set(['some line content']), + content: new Set([`some line content`]), severity: new Set(['info']), }, }, @@ -295,38 +295,60 @@ describe('Attribute filters', () => { }, }, { - query: '{ kubernetes_pod_name=~"a-pod|b-pod" } |="some line', + query: '{ kubernetes_pod_name=~"a-pod|b-pod" } |=`some line', expectedFilters: { content: new Set(['']), pod: new Set(['a-pod', 'b-pod']), }, }, { - query: '{ kubernetes_pod_name=~"a-pod|b-pod" } |="some line" |', + query: '{ kubernetes_pod_name=~"a-pod|b-pod" } |=`some line` |', expectedFilters: { - content: new Set(['some line']), + content: new Set([`some line`]), pod: new Set(['a-pod', 'b-pod']), }, }, { query: - '{ kubernetes_pod_name=~"a-pod|b-pod", kubernetes_namespace_name=~"ns-1|ns-2", label="test", kubernetes_container_name="container-1" } |="some line content" | other="filter" | level="err|eror" or level="unknown" or level=""', + '{ kubernetes_pod_name=~"a-pod|b-pod", kubernetes_namespace_name=~"ns-1|ns-2", label="test", kubernetes_container_name="container-1" } |=`some line content` | other="filter" | level="err|eror" or level="unknown" or level=""', expectedFilters: { pod: new Set(['a-pod', 'b-pod']), namespace: new Set(['ns-1', 'ns-2']), container: new Set(['container-1']), - content: new Set(['some line content']), + content: new Set([`some line content`]), severity: new Set(['error', 'unknown']), }, }, { query: - '{ kubernetes_pod_name=~"a-pod|b-pod", kubernetes_namespace_name=~"ns-1|ns-2", label="test", kubernetes_container_name="container-1" } |="some line content" | other="filter" | level', + '{ kubernetes_pod_name=~"a-pod|b-pod", kubernetes_namespace_name=~"ns-1|ns-2", label="test", kubernetes_container_name="container-1" } |=`some line content` | other="filter" | level', + expectedFilters: { + pod: new Set(['a-pod', 'b-pod']), + namespace: new Set(['ns-1', 'ns-2']), + container: new Set(['container-1']), + content: new Set([`some line content`]), + severity: new Set(), + }, + }, + { + query: + '{ kubernetes_pod_name=~"a-pod|b-pod", kubernetes_namespace_name=~"ns-1|ns-2", label="test", kubernetes_container_name="container-1" } |=`"some line content"` | other="filter" | level', + expectedFilters: { + pod: new Set(['a-pod', 'b-pod']), + namespace: new Set(['ns-1', 'ns-2']), + container: new Set(['container-1']), + content: new Set([`"some line content"`]), + severity: new Set(), + }, + }, + { + query: + '{ kubernetes_pod_name=~"a-pod|b-pod", kubernetes_namespace_name=~"ns-1|ns-2", label="test", kubernetes_container_name="container-1" } |=`"some-line-content"` | other="filter" | level', expectedFilters: { pod: new Set(['a-pod', 'b-pod']), namespace: new Set(['ns-1', 'ns-2']), container: new Set(['container-1']), - content: new Set(['some line content']), + content: new Set([`"some-line-content"`]), severity: new Set(), }, }, @@ -381,7 +403,7 @@ describe('Attribute filters', () => { severity: new Set(['error', 'unknown']), }, expectedQuery: - '{ kubernetes_namespace_name=~"namespace-3|namespace-4", label="test" } |= "new line filter" | other="filter" | level="unknown" or level="" or level=~"error|err|eror"', + '{ kubernetes_namespace_name=~"namespace-3|namespace-4", label="test" } |= `new line filter` | other="filter" | level="unknown" or level="" or level=~"error|err|eror"', }, { initialQuery: @@ -392,7 +414,7 @@ describe('Attribute filters', () => { severity: new Set(['error']), }, expectedQuery: - '{ kubernetes_namespace_name=~"namespace-3|namespace-4", label="test" } |= "new line filter" | other="filter" | level=~"error|err|eror"', + '{ kubernetes_namespace_name=~"namespace-3|namespace-4", label="test" } |= `new line filter` | other="filter" | level=~"error|err|eror"', }, { initialQuery: @@ -404,7 +426,7 @@ describe('Attribute filters', () => { pod: new Set(['some-pod']), }, expectedQuery: - '{ kubernetes_pod_name="some-pod", kubernetes_namespace_name=~"namespace-3|namespace-4", label="test" } |= "new line filter" | other="filter" | level=~"error|err|eror|info|inf|information|notice"', + '{ kubernetes_pod_name="some-pod", kubernetes_namespace_name=~"namespace-3|namespace-4", label="test" } |= `new line filter` | other="filter" | level=~"error|err|eror|info|inf|information|notice"', }, { initialQuery: @@ -416,7 +438,7 @@ describe('Attribute filters', () => { pod: new Set(['some-pod']), }, expectedQuery: - '{ kubernetes_pod_name="some-pod", kubernetes_namespace_name=~"namespace-3|namespace-4", label="test" } |= "new line filter" | other="filter"', + '{ kubernetes_pod_name="some-pod", kubernetes_namespace_name=~"namespace-3|namespace-4", label="test" } |= `new line filter` | other="filter"', }, { initialQuery: diff --git a/web/src/attribute-filters.tsx b/web/src/attribute-filters.tsx index 0adb73e47..5c1d1536b 100644 --- a/web/src/attribute-filters.tsx +++ b/web/src/attribute-filters.tsx @@ -219,6 +219,7 @@ export const queryFromFilters = ({ }; const removeQuotes = (value?: string) => (value ? value.replace(/"/g, '') : ''); +const removeBacktick = (value?: string) => (value ? value.replace(/`/g, '') : ''); export const filtersFromQuery = ({ query, @@ -253,7 +254,7 @@ export const filtersFromQuery = ({ .filter(notUndefined); filters.severity = new Set(severityValues); } else if (pipelineStage.operator === '|=' && !filters.content) { - filters.content = new Set([removeQuotes(pipelineStage.value)]); + filters.content = new Set([removeBacktick(pipelineStage.value)]); } } @@ -345,7 +346,7 @@ export const getContentPipelineStage = (filters?: Filters): PipelineStage | unde return undefined; } - return { operator: '|=', value: `"${textValue}"` }; + return { operator: '|=', value: `\`${textValue}\`` }; }; export const getSeverityFilterPipelineStage = (filters?: Filters): PipelineStage | undefined => {