mirror of
https://github.com/grafana/grafana.git
synced 2025-09-22 22:23:39 +08:00
83 lines
2.7 KiB
TypeScript
83 lines
2.7 KiB
TypeScript
import { getStatsGroups } from './getStatsGroups';
|
|
|
|
describe('GroupListener', () => {
|
|
// https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-examples.html
|
|
// https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-view-metrics.html
|
|
it('should correctly parse groups in stats query', () => {
|
|
const testQueries = [
|
|
{
|
|
query:
|
|
'filter @message like /Exception/ | stats count(*) as exceptionCount by bin(1h) | sort exceptionCount desc',
|
|
expected: ['bin(1h)'],
|
|
},
|
|
{
|
|
query: `filter @type = "REPORT"
|
|
| stats max(@memorySize / 1024 / 1024) as provisonedMemoryMB,
|
|
min(@maxMemoryUsed / 1024 / 1024) as smallestMemoryRequestMB,
|
|
avg(@maxMemoryUsed / 1024 / 1024) as avgMemoryUsedMB,
|
|
max(@maxMemoryUsed / 1024 / 1024) as maxMemoryUsedMB,
|
|
provisonedMemoryMB - maxMemoryUsedMB as overProvisionedMB`,
|
|
expected: [],
|
|
},
|
|
{
|
|
query: `stats count(@message) by bin(1h), @log, @logStream as fieldAlias`,
|
|
expected: ['bin(1h)', '@log', 'fieldAlias'],
|
|
},
|
|
|
|
{
|
|
query: `stats sum(packets) as packetsTransferred by srcAddr, dstAddr
|
|
| sort packetsTransferred desc
|
|
| limit 15`,
|
|
expected: ['srcAddr', 'dstAddr'],
|
|
},
|
|
{
|
|
query: `filter isIpv4InSubnet(srcAddr, "192.0.2.0/24")
|
|
| stats sum(bytes) as bytesTransferred by dstAddr
|
|
| sort bytesTransferred desc
|
|
| limit 15`,
|
|
expected: ['dstAddr'],
|
|
},
|
|
{
|
|
query: `filter logStatus="SKIPDATA"
|
|
| stats count(*) by bin(1h) as t
|
|
| sort t
|
|
`,
|
|
expected: ['t'],
|
|
},
|
|
{
|
|
query: `stats count(*) by queryType, bin(1h)`,
|
|
expected: ['queryType', 'bin(1h)'],
|
|
},
|
|
{
|
|
query: `parse @message "user=*, method:*, latency := *" as @user,
|
|
@method, @latency | stats avg(@latency) by @method,
|
|
@user`,
|
|
expected: ['@method', '@user'],
|
|
},
|
|
{
|
|
query: 'fields @timestamp, @message | sort @timestamp desc | limit 25',
|
|
expected: [],
|
|
},
|
|
{
|
|
query: `stats count(*)`,
|
|
expected: [],
|
|
},
|
|
{
|
|
query: `filter responseCode="SERVFAIL" | stats count(*) by queryName.0.1 as f0, bin(5m)`,
|
|
expected: ['f0', 'bin(5m)'],
|
|
},
|
|
{
|
|
query: `fields @timestamp, @message
|
|
| filter @message like /dial tcp /
|
|
| parse log /dial tcp (?<ip>[\d\.]+)\:(?<port>\d+)\: (?<reason>[^\\\"]+)/
|
|
| stats count() by bin($__interval), reason`,
|
|
expected: ['bin($__interval)', 'reason'],
|
|
},
|
|
];
|
|
|
|
for (const { query, expected } of testQueries) {
|
|
expect(getStatsGroups(query)).toStrictEqual(expected);
|
|
}
|
|
});
|
|
});
|