Skip to content

Commit a82a4f8

Browse files
authored
Enhance range tests and regex and add better default for output validator (OpenTSDB#2217)
* Enhance range tests and regex and add better default for output validator
1 parent 8c6a86d commit a82a4f8

File tree

3 files changed

+87
-3
lines changed

3 files changed

+87
-3
lines changed

src/tsd/GraphHandler.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,9 @@ final class GraphHandler implements HttpRpc {
7070
private static final boolean IS_WINDOWS =
7171
System.getProperty("os.name", "").contains("Windows");
7272

73+
private static final String RANGE_COMPONENT = "\\\"?-?\\d*\\.?(\\d+)?([eE]-?\\d+)?\\\"?";
7374
private static Pattern RANGE_VALIDATOR = Pattern.compile(
74-
"\\[\\\"?-?\\d+\\.?(\\d+)?([eE]-?\\d+)?\\\"?:\\\"?-?(\\d+\\.?\\d+?)?([eE]-?\\d+)?\\\"?\\]");
75+
"\\["+RANGE_COMPONENT+":"+RANGE_COMPONENT+"]");
7576
private static Pattern LABEL_VALIDATOR = Pattern.compile("[a-zA-z0-9 \\-_]");
7677
private static Pattern KEY_VALIDATOR = Pattern.compile(
7778
"(out|left|top|center|right|horiz|box|bottom)?\\s?");

src/utils/Config.java

+1
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,7 @@ protected void setDefaults() {
556556
default_map.put("tsd.core.storage_exception_handler.enable", "false");
557557
default_map.put("tsd.core.uid.random_metrics", "false");
558558
default_map.put("tsd.core.bulk.allow_out_of_order_timestamps", "false");
559+
default_map.put("tsd.gnuplot.options.allowlist", ";axis x1y2");
559560
default_map.put("tsd.query.filter.expansion_limit", "4096");
560561
default_map.put("tsd.query.skip_unresolved_tagvs", "false");
561562
default_map.put("tsd.query.allow_simultaneous_duplicates", "true");

test/tsd/TestGraphHandler.java

+84-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import static org.junit.Assert.assertNull;
2727
import static org.junit.Assert.assertTrue;
2828
import static org.junit.Assert.fail;
29+
2930
import static org.mockito.Matchers.anyString;
3031
import static org.mockito.Mockito.times;
3132
import static org.mockito.Mockito.verify;
@@ -65,13 +66,94 @@ public final class TestGraphHandler {
6566
}
6667

6768
@Test
68-
public void setPlotParams() throws Exception {
69+
public void setYRangeParams() throws Exception {
6970
Plot plot = mock(Plot.class);
7071
HttpQuery query = mock(HttpQuery.class);
7172
Map<String, List<String>> params = Maps.newHashMap();
7273
when(query.getQueryString()).thenReturn(params);
74+
75+
params.put("yrange", Lists.newArrayList("[0:1]"));
76+
GraphHandler.setPlotParams(query, plot);
77+
78+
params.put("yrange", Lists.newArrayList("[:]"));
79+
GraphHandler.setPlotParams(query, plot);
80+
81+
params.put("yrange", Lists.newArrayList("[:0]"));
82+
GraphHandler.setPlotParams(query, plot);
83+
84+
params.put("yrange", Lists.newArrayList("[:42]"));
85+
GraphHandler.setPlotParams(query, plot);
86+
87+
params.put("yrange", Lists.newArrayList("[:-42]"));
88+
GraphHandler.setPlotParams(query, plot);
89+
90+
params.put("yrange", Lists.newArrayList("[:0.8]"));
91+
GraphHandler.setPlotParams(query, plot);
92+
93+
params.put("yrange", Lists.newArrayList("[:-0.8]"));
94+
GraphHandler.setPlotParams(query, plot);
95+
96+
params.put("yrange", Lists.newArrayList("[:42.4]"));
97+
GraphHandler.setPlotParams(query, plot);
98+
99+
params.put("yrange", Lists.newArrayList("[:-42.4]"));
100+
GraphHandler.setPlotParams(query, plot);
101+
102+
params.put("yrange", Lists.newArrayList("[:4e4]"));
103+
GraphHandler.setPlotParams(query, plot);
104+
105+
params.put("yrange", Lists.newArrayList("[:-4e4]"));
106+
GraphHandler.setPlotParams(query, plot);
107+
108+
params.put("yrange", Lists.newArrayList("[:4e-4]"));
109+
GraphHandler.setPlotParams(query, plot);
110+
111+
params.put("yrange", Lists.newArrayList("[:-4e-4]"));
112+
GraphHandler.setPlotParams(query, plot);
113+
114+
params.put("yrange", Lists.newArrayList("[:4.2e4]"));
115+
GraphHandler.setPlotParams(query, plot);
116+
117+
params.put("yrange", Lists.newArrayList("[:-4.2e4]"));
118+
GraphHandler.setPlotParams(query, plot);
119+
120+
params.put("yrange", Lists.newArrayList("[0:]"));
121+
GraphHandler.setPlotParams(query, plot);
122+
123+
params.put("yrange", Lists.newArrayList("[5:]"));
124+
GraphHandler.setPlotParams(query, plot);
125+
126+
params.put("yrange", Lists.newArrayList("[-5:]"));
127+
GraphHandler.setPlotParams(query, plot);
128+
129+
params.put("yrange", Lists.newArrayList("[0.5:]"));
130+
GraphHandler.setPlotParams(query, plot);
131+
132+
params.put("yrange", Lists.newArrayList("[-0.5:]"));
133+
GraphHandler.setPlotParams(query, plot);
134+
135+
params.put("yrange", Lists.newArrayList("[10.5:]"));
136+
GraphHandler.setPlotParams(query, plot);
137+
138+
params.put("yrange", Lists.newArrayList("[-10.5:]"));
139+
GraphHandler.setPlotParams(query, plot);
140+
141+
params.put("yrange", Lists.newArrayList("[10e5:]"));
142+
GraphHandler.setPlotParams(query, plot);
143+
144+
params.put("yrange", Lists.newArrayList("[-10e5:]"));
145+
GraphHandler.setPlotParams(query, plot);
146+
147+
params.put("yrange", Lists.newArrayList("[10e-5:]"));
148+
GraphHandler.setPlotParams(query, plot);
149+
150+
params.put("yrange", Lists.newArrayList("[-10e-5:]"));
151+
GraphHandler.setPlotParams(query, plot);
152+
153+
params.put("yrange", Lists.newArrayList("[10.1e-5:]"));
154+
GraphHandler.setPlotParams(query, plot);
73155

74-
params.put("yrange", Lists.newArrayList("[0:42]"));
156+
params.put("yrange", Lists.newArrayList("[-10.1e-5:]"));
75157
GraphHandler.setPlotParams(query, plot);
76158

77159
params.put("yrange", Lists.newArrayList("[33:system('touch /tmp/poc.txt')]"));

0 commit comments

Comments
 (0)