From 618ee4211fe24a0243c911bab17060887724ce78 Mon Sep 17 00:00:00 2001 From: Kevin Yu Date: Tue, 7 Oct 2025 16:30:59 -0700 Subject: [PATCH] CloudWatch: Refactor logs language tests (#111204) --- .../completion/CompletionItemProvider.test.ts | 38 +++--- .../logs/completion/statementPosition.test.ts | 34 ++++-- .../logs/completion/statementPosition.ts | 6 +- .../commentOnlyQuery.ts | 8 -- .../mocks/cloudwatch-logs-test-data/empty.ts | 1 - .../cloudwatch-logs-test-data/filterQuery.ts | 13 --- .../multiLineFullQuery.ts | 110 +----------------- .../newCommandQuery.ts | 15 --- .../singleLineFullQuery.ts | 23 ---- .../cloudwatch-logs-test-data/sortQuery.ts | 17 --- .../whitespaceQuery.ts | 8 -- .../cloudwatch/mocks/monarch/Monaco.ts | 22 ---- 12 files changed, 55 insertions(+), 240 deletions(-) diff --git a/public/app/plugins/datasource/cloudwatch/language/logs/completion/CompletionItemProvider.test.ts b/public/app/plugins/datasource/cloudwatch/language/logs/completion/CompletionItemProvider.test.ts index 54a0a2cb941..052583eb6f2 100644 --- a/public/app/plugins/datasource/cloudwatch/language/logs/completion/CompletionItemProvider.test.ts +++ b/public/app/plugins/datasource/cloudwatch/language/logs/completion/CompletionItemProvider.test.ts @@ -1,25 +1,21 @@ +import * as monaco from 'monaco-editor/esm/vs/editor/editor.api'; + import { CustomVariableModel } from '@grafana/data'; -import { Monaco, monacoTypes } from '@grafana/ui'; +import { monacoTypes } from '@grafana/ui'; import { setupMockedTemplateService, logGroupNamesVariable } from '../../../mocks/CloudWatchDataSource'; import { logsTestDataEmptyQuery } from '../../../mocks/cloudwatch-logs-test-data/empty'; import { logsTestDataFilterQuery } from '../../../mocks/cloudwatch-logs-test-data/filterQuery'; import { logsTestDataNewCommandQuery } from '../../../mocks/cloudwatch-logs-test-data/newCommandQuery'; import { logsTestDataSortQuery } from '../../../mocks/cloudwatch-logs-test-data/sortQuery'; -import MonacoMock from '../../../mocks/monarch/Monaco'; -import TextModel from '../../../mocks/monarch/TextModel'; import { ResourcesAPI } from '../../../resources/ResourcesAPI'; import { ResourceResponse } from '../../../resources/types'; import { LogGroup, LogGroupField } from '../../../types'; -import cloudWatchLogsLanguageDefinition from '../definition'; -import { LOGS_COMMANDS, LOGS_FUNCTION_OPERATORS, SORT_DIRECTION_KEYWORDS } from '../language'; +import cloudWatchLogsLanguageDefinition, { CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID } from '../definition'; +import { LOGS_COMMANDS, LOGS_FUNCTION_OPERATORS, SORT_DIRECTION_KEYWORDS, language } from '../language'; import { LogsCompletionItemProvider } from './CompletionItemProvider'; -jest.mock('monaco-editor/esm/vs/editor/editor.api', () => ({ - Token: jest.fn((offset, type, language) => ({ offset, type, language })), -})); - const getSuggestions = async ( value: string, position: monacoTypes.IPosition, @@ -36,16 +32,30 @@ const getSuggestions = async ( ); setup.resources.getLogGroupFields = jest.fn().mockResolvedValue(fields); - const monaco = MonacoMock as Monaco; const provider = setup.getCompletionProvider(monaco, cloudWatchLogsLanguageDefinition); - const { suggestions } = await provider.provideCompletionItems( - TextModel(value) as monacoTypes.editor.ITextModel, - position - ); + const model = monaco.editor.createModel(value, CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID); + const { suggestions } = await provider.provideCompletionItems(model, position); return suggestions; }; describe('LogsCompletionItemProvider', () => { + let tokenizer: monaco.IDisposable; + + beforeAll(() => { + monaco.languages.register({ id: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }); + tokenizer = monaco.languages.setMonarchTokensProvider(CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID, language); + }); + + afterEach(() => { + for (const m of monaco.editor.getModels()) { + m.dispose(); + } + }); + + afterAll(() => { + tokenizer?.dispose(); + }); + describe('getSuggestions', () => { it('returns commands for an empty query', async () => { const suggestions = await getSuggestions(logsTestDataEmptyQuery.query, logsTestDataEmptyQuery.position); diff --git a/public/app/plugins/datasource/cloudwatch/language/logs/completion/statementPosition.test.ts b/public/app/plugins/datasource/cloudwatch/language/logs/completion/statementPosition.test.ts index 2820712f031..3996e81832e 100644 --- a/public/app/plugins/datasource/cloudwatch/language/logs/completion/statementPosition.test.ts +++ b/public/app/plugins/datasource/cloudwatch/language/logs/completion/statementPosition.test.ts @@ -1,3 +1,5 @@ +import * as monaco from 'monaco-editor/esm/vs/editor/editor.api'; + import { monacoTypes } from '@grafana/ui'; import { logsTestDataCommentOnlyQuery } from '../../../mocks/cloudwatch-logs-test-data/commentOnlyQuery'; @@ -5,27 +7,37 @@ import { logsTestDataEmptyQuery } from '../../../mocks/cloudwatch-logs-test-data import { logsTestDataMultiLineFullQuery } from '../../../mocks/cloudwatch-logs-test-data/multiLineFullQuery'; import { logsTestDataSingleLineFullQuery } from '../../../mocks/cloudwatch-logs-test-data/singleLineFullQuery'; import { logsTestDataWhitespaceOnlyQuery } from '../../../mocks/cloudwatch-logs-test-data/whitespaceQuery'; -import MonacoMock from '../../../mocks/monarch/Monaco'; -import TextModel from '../../../mocks/monarch/TextModel'; import { linkedTokenBuilder } from '../../monarch/linkedTokenBuilder'; import { StatementPosition } from '../../monarch/types'; -import cloudWatchLogsLanguageDefinition from '../definition'; +import cloudWatchLogsLanguageDefinition, { CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID } from '../definition'; +import { language } from '../language'; import { getStatementPosition } from './statementPosition'; import { LogsTokenTypes } from './types'; function generateToken(query: string, position: monacoTypes.IPosition) { - const testModel = TextModel(query); - return linkedTokenBuilder( - MonacoMock, - cloudWatchLogsLanguageDefinition, - testModel as monacoTypes.editor.ITextModel, - position, - LogsTokenTypes - ); + const model = monaco.editor.createModel(query, CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID); + return linkedTokenBuilder(monaco, cloudWatchLogsLanguageDefinition, model, position, LogsTokenTypes); } describe('getStatementPosition', () => { + let tokenizer: monaco.IDisposable; + + beforeAll(() => { + monaco.languages.register({ id: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }); + tokenizer = monaco.languages.setMonarchTokensProvider(CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID, language); + }); + + afterEach(() => { + for (const m of monaco.editor.getModels()) { + m.dispose(); + } + }); + + afterAll(() => { + tokenizer?.dispose(); + }); + it('should return StatementPosition.NewCommand the current token is null', () => { expect(getStatementPosition(null)).toEqual(StatementPosition.NewCommand); }); diff --git a/public/app/plugins/datasource/cloudwatch/language/logs/completion/statementPosition.ts b/public/app/plugins/datasource/cloudwatch/language/logs/completion/statementPosition.ts index e0cec8ae79e..01724bdf72b 100644 --- a/public/app/plugins/datasource/cloudwatch/language/logs/completion/statementPosition.ts +++ b/public/app/plugins/datasource/cloudwatch/language/logs/completion/statementPosition.ts @@ -44,10 +44,10 @@ export const getStatementPosition = (currentToken: LinkedToken | null): Statemen } if ( - currentToken?.is(LogsTokenTypes.Delimiter, ')') || - (currentToken?.isWhiteSpace() && previousNonWhiteSpace?.is(LogsTokenTypes.Delimiter, ')')) + currentToken?.is(LogsTokenTypes.Parenthesis, ')') || + (currentToken?.isWhiteSpace() && previousNonWhiteSpace?.is(LogsTokenTypes.Parenthesis, ')')) ) { - const openingParenthesis = currentToken?.getPreviousOfType(LogsTokenTypes.Delimiter, '('); + const openingParenthesis = currentToken?.getPreviousOfType(LogsTokenTypes.Parenthesis, '('); const normalizedNonWhitespacePreceedingOpeningParenthesis = openingParenthesis ?.getPreviousNonWhiteSpaceToken() ?.value?.toLowerCase(); diff --git a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/commentOnlyQuery.ts b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/commentOnlyQuery.ts index 511875c109c..46b38834870 100644 --- a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/commentOnlyQuery.ts +++ b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/commentOnlyQuery.ts @@ -1,11 +1,3 @@ -import { monacoTypes } from '@grafana/ui'; - -import { LogsTokenTypes } from '../../language/logs/completion/types'; -import { CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID } from '../../language/logs/definition'; - export const logsTestDataCommentOnlyQuery = { query: `# comment ending with whitespace `, - tokens: [ - [{ offset: 0, type: LogsTokenTypes.Comment, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }], - ] as monacoTypes.Token[][], }; diff --git a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/empty.ts b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/empty.ts index a47317dd1fc..cfbaa84e4a2 100644 --- a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/empty.ts +++ b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/empty.ts @@ -1,5 +1,4 @@ export const logsTestDataEmptyQuery = { query: '', - tokens: [], position: { lineNumber: 1, column: 1 }, }; diff --git a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/filterQuery.ts b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/filterQuery.ts index 725f1d00fc8..786e1c3fc87 100644 --- a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/filterQuery.ts +++ b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/filterQuery.ts @@ -1,17 +1,4 @@ -import { monacoTypes } from '@grafana/ui'; - -import { LogsTokenTypes } from '../../language/logs/completion/types'; -import { CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID } from '../../language/logs/definition'; - export const logsTestDataFilterQuery = { query: `filter logGroup `, - tokens: [ - [ - { offset: 0, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 6, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 7, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 15, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - ], - ] as monacoTypes.Token[][], position: { lineNumber: 1, column: 16 }, }; diff --git a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/multiLineFullQuery.ts b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/multiLineFullQuery.ts index 2034f5dc31a..560df68e8ee 100644 --- a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/multiLineFullQuery.ts +++ b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/multiLineFullQuery.ts @@ -1,109 +1,9 @@ -import { monacoTypes } from '@grafana/ui'; - -import { LogsTokenTypes } from '../../language/logs/completion/types'; -import { CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID } from '../../language/logs/definition'; - export const logsTestDataMultiLineFullQuery = { query: `fields @timestamp, unmask(@message) as msg, @memorySize - | filter (@message like /error/ and bytes > 1000) - | parse @message /(?eni-.*?)/ - | stats count(NetworkInterface), max(@memorySize / 1000 / 1000) as provisonedMemoryMB by bin(1m) - # this is a comment with the next line left being intentionally blank +| filter (@message like /error/ and bytes > 1000) +| parse @message /(?eni-.*?)/ +| stats count(NetworkInterface), max(@memorySize / 1000 / 1000) as provisonedMemoryMB by bin(1m) +# this is a comment with the next line left being intentionally blank - | limit 20`, - tokens: [ - [ - { offset: 0, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 6, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 7, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 17, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 18, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 19, type: LogsTokenTypes.Function, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 25, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 26, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 34, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 35, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 36, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 38, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 39, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 42, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 43, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 44, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - ], - [ - { offset: 0, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 1, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 2, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 8, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 9, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 10, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 18, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 19, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 26, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 27, type: LogsTokenTypes.Regexp, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 31, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 32, type: LogsTokenTypes.Operator, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 35, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 36, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 41, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 42, type: LogsTokenTypes.Operator, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 43, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 44, type: LogsTokenTypes.Number, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 48, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - ], - [ - { offset: 0, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 1, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 2, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 7, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 8, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 16, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 17, type: LogsTokenTypes.Regexp, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - ], - [ - { offset: 0, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 1, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 2, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 7, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 8, type: LogsTokenTypes.Function, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 13, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 14, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 30, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 31, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 32, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 33, type: LogsTokenTypes.Function, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 36, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 37, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 48, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 49, type: LogsTokenTypes.Operator, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 50, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 51, type: LogsTokenTypes.Number, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 55, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 56, type: LogsTokenTypes.Operator, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 57, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 58, type: LogsTokenTypes.Number, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 62, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 63, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 64, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 66, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 67, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 85, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 86, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 88, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 89, type: LogsTokenTypes.Function, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 92, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 93, type: LogsTokenTypes.Number, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 94, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 95, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - ], - [{ offset: 0, type: LogsTokenTypes.Comment, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }], - [{ offset: 0, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }], - [ - { offset: 0, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 1, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 2, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 7, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 8, type: LogsTokenTypes.Number, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - ], - ] as monacoTypes.Token[][], +| limit 20`, }; diff --git a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/newCommandQuery.ts b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/newCommandQuery.ts index 84730e5ddcd..8306a37b24b 100644 --- a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/newCommandQuery.ts +++ b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/newCommandQuery.ts @@ -1,19 +1,4 @@ -import { monacoTypes } from '@grafana/ui'; - -import { LogsTokenTypes } from '../../language/logs/completion/types'; -import { CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID } from '../../language/logs/definition'; - export const logsTestDataNewCommandQuery = { query: `fields @timestamp | `, - tokens: [ - [ - { offset: 0, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 6, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 7, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 17, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 18, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 19, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - ], - ] as monacoTypes.Token[][], position: { lineNumber: 1, column: 21 }, }; diff --git a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/singleLineFullQuery.ts b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/singleLineFullQuery.ts index ab2600320c7..6c11256d566 100644 --- a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/singleLineFullQuery.ts +++ b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/singleLineFullQuery.ts @@ -1,26 +1,3 @@ -import { monacoTypes } from '@grafana/ui'; - -import { LogsTokenTypes } from '../../language/logs/completion/types'; -import { CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID } from '../../language/logs/definition'; - export const logsTestDataSingleLineFullQuery = { query: `fields @timestamp, @message | limit 20 # this is a comment`, - tokens: [ - [ - { offset: 0, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 6, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 7, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 17, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 18, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 19, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 27, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 28, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 29, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 30, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 35, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 36, type: LogsTokenTypes.Number, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 38, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 39, type: LogsTokenTypes.Comment, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - ], - ] as monacoTypes.Token[][], }; diff --git a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/sortQuery.ts b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/sortQuery.ts index 2fa7dd472f9..cd7c471a120 100644 --- a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/sortQuery.ts +++ b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/sortQuery.ts @@ -1,21 +1,4 @@ -import { monacoTypes } from '@grafana/ui'; - -import { LogsTokenTypes } from '../../language/logs/completion/types'; -import { CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID } from '../../language/logs/definition'; - export const logsTestDataSortQuery = { query: `fields @timestamp | sort `, - tokens: [ - [ - { offset: 0, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 6, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 7, type: LogsTokenTypes.Identifier, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 17, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 18, type: LogsTokenTypes.Delimiter, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 19, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 20, type: LogsTokenTypes.Keyword, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - { offset: 24, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }, - ], - ] as monacoTypes.Token[][], position: { lineNumber: 1, column: 26 }, }; diff --git a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/whitespaceQuery.ts b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/whitespaceQuery.ts index e46bd219a16..62ab9e947c5 100644 --- a/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/whitespaceQuery.ts +++ b/public/app/plugins/datasource/cloudwatch/mocks/cloudwatch-logs-test-data/whitespaceQuery.ts @@ -1,11 +1,3 @@ -import { monacoTypes } from '@grafana/ui'; - -import { LogsTokenTypes } from '../../language/logs/completion/types'; -import { CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID } from '../../language/logs/definition'; - export const logsTestDataWhitespaceOnlyQuery = { query: ` `, - tokens: [ - [{ offset: 0, type: LogsTokenTypes.Whitespace, language: CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID }], - ] as monacoTypes.Token[][], }; diff --git a/public/app/plugins/datasource/cloudwatch/mocks/monarch/Monaco.ts b/public/app/plugins/datasource/cloudwatch/mocks/monarch/Monaco.ts index e1115ed2187..8de88b862c1 100644 --- a/public/app/plugins/datasource/cloudwatch/mocks/monarch/Monaco.ts +++ b/public/app/plugins/datasource/cloudwatch/mocks/monarch/Monaco.ts @@ -2,7 +2,6 @@ import { monacoTypes } from '@grafana/ui'; import { CLOUDWATCH_LOGS_SQL_LANGUAGE_DEFINITION_ID } from '../../language/cloudwatch-logs-sql/definition'; import { CLOUDWATCH_PPL_LANGUAGE_DEFINITION_ID } from '../../language/cloudwatch-ppl/language'; -import { CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID } from '../../language/logs/definition'; import { Monaco } from '../../language/monarch/types'; import { commentOnlyQuery as cloudwatchLogsSQLCommentOnlyQuery } from '../cloudwatch-logs-sql-test-data/commentOnlyQuery'; import { multiLineFullQuery as cloudwatchLogsSQLMultiLineFullQuery } from '../cloudwatch-logs-sql-test-data/multiLineFullQuery'; @@ -11,14 +10,6 @@ import { partialQueryWithFunction as cloudwatchLogsSQLPartialQueryWithFunction } import { partialQueryWithSubquery as cloudwatchLogsSQLPartialQueryWithSubquery } from '../cloudwatch-logs-sql-test-data/partialQueryWithSubquery'; import { singleLineFullQuery as cloudwatchLogsSQLSingleLineFullQuery } from '../cloudwatch-logs-sql-test-data/singleLineFullQuery'; import { whitespaceQuery as cloudwatchLogsSQLWhitespaceQuery } from '../cloudwatch-logs-sql-test-data/whitespaceQuery'; -import { logsTestDataCommentOnlyQuery } from '../cloudwatch-logs-test-data/commentOnlyQuery'; -import { logsTestDataEmptyQuery } from '../cloudwatch-logs-test-data/empty'; -import { logsTestDataFilterQuery } from '../cloudwatch-logs-test-data/filterQuery'; -import { logsTestDataMultiLineFullQuery } from '../cloudwatch-logs-test-data/multiLineFullQuery'; -import { logsTestDataNewCommandQuery } from '../cloudwatch-logs-test-data/newCommandQuery'; -import { logsTestDataSingleLineFullQuery } from '../cloudwatch-logs-test-data/singleLineFullQuery'; -import { logsTestDataSortQuery } from '../cloudwatch-logs-test-data/sortQuery'; -import { logsTestDataWhitespaceOnlyQuery } from '../cloudwatch-logs-test-data/whitespaceQuery'; import * as PPLMultilineQueries from '../cloudwatch-ppl-test-data/multilineQueries'; import { newCommandQuery as PPLNewCommandQuery } from '../cloudwatch-ppl-test-data/newCommandQuery'; import * as PPLSingleLineQueries from '../cloudwatch-ppl-test-data/singleLineQueries'; @@ -70,19 +61,6 @@ const MonacoMock: Monaco = { }; return TestData[value]; } - if (languageId === CLOUDWATCH_LOGS_LANGUAGE_DEFINITION_ID) { - const TestData = { - [logsTestDataEmptyQuery.query]: logsTestDataEmptyQuery.tokens, - [logsTestDataWhitespaceOnlyQuery.query]: logsTestDataWhitespaceOnlyQuery.tokens, - [logsTestDataCommentOnlyQuery.query]: logsTestDataCommentOnlyQuery.tokens, - [logsTestDataSingleLineFullQuery.query]: logsTestDataSingleLineFullQuery.tokens, - [logsTestDataMultiLineFullQuery.query]: logsTestDataMultiLineFullQuery.tokens, - [logsTestDataFilterQuery.query]: logsTestDataFilterQuery.tokens, - [logsTestDataNewCommandQuery.query]: logsTestDataNewCommandQuery.tokens, - [logsTestDataSortQuery.query]: logsTestDataSortQuery.tokens, - }; - return TestData[value]; - } if (languageId === CLOUDWATCH_PPL_LANGUAGE_DEFINITION_ID) { const TestData = { [PPLSingleLineQueries.emptyQuery.query]: PPLSingleLineQueries.emptyQuery.tokens,