From 586399a81494489c7ccb42240b1aa8e3a2358ad0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Fri, 1 Aug 2014 09:28:57 +0200 Subject: [PATCH] Graphite: Fix for graphite expressions parser failure when metric expressions starts with curly brace segment, Fixes #528 --- CHANGELOG.md | 1 + src/app/services/graphite/parser.js | 7 +++++-- src/test/specs/parser-specs.js | 10 +++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9c498fc1dd..c41f7bb135e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ - [Issue #545](https://github.com/grafana/grafana/issues/545). Chart: Fix formatting negative values (axis formats, legend values) - [Issue #460](https://github.com/grafana/grafana/issues/460). Chart: fix for max legend value when max value is zero - [Issue #628](https://github.com/grafana/grafana/issues/628). Filtering: Fix for nested filters, changing a child filter could result in infinite recursion in some cases +- [Issue #528](https://github.com/grafana/grafana/issues/528). Graphite: Fix for graphite expressions parser failure when metric expressions starts with curly brace segment # 1.6.1 (2014-06-24) diff --git a/src/app/services/graphite/parser.js b/src/app/services/graphite/parser.js index c3e2598a816..c30e32e7d05 100644 --- a/src/app/services/graphite/parser.js +++ b/src/app/services/graphite/parser.js @@ -97,7 +97,10 @@ define([ }, metricExpression: function() { - if (!this.match('templateStart') && !this.match('identifier') && !this.match('number')) { + if (!this.match('templateStart') && + !this.match('identifier') && + !this.match('number') && + !this.match('{')) { return null; } @@ -221,4 +224,4 @@ define([ }; return Parser; -}); \ No newline at end of file +}); diff --git a/src/test/specs/parser-specs.js b/src/test/specs/parser-specs.js index a8ca4681180..feb5367711d 100644 --- a/src/test/specs/parser-specs.js +++ b/src/test/specs/parser-specs.js @@ -140,7 +140,7 @@ define([ expect(rootNode.type).to.be('function'); }); - it('handle float function arguments', function() { + it('handle float function arguments', function() { var parser = new Parser('scale(test, 0.002)'); var rootNode = parser.getAst(); expect(rootNode.type).to.be('function'); @@ -148,6 +148,14 @@ define([ expect(rootNode.params[1].value).to.be(0.002); }); + it('handle curly brace pattern at start', function() { + var parser = new Parser('{apps}.test'); + var rootNode = parser.getAst(); + expect(rootNode.type).to.be('metric'); + expect(rootNode.segments[0].value).to.be('{apps}'); + expect(rootNode.segments[1].value).to.be('test'); + }); + }); });