You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2011/10/27 19:18:15 UTC
svn commit: r1189876 - in /tomcat/tc7.0.x/trunk: ./
test/org/apache/tomcat/util/http/TestParameters.java
Author: markt
Date: Thu Oct 27 17:18:14 2011
New Revision: 1189876
URL: http://svn.apache.org/viewvc?rev=1189876&view=rev
Log:
Add a test for parameter processing prior to some refactoring
Added:
tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/http/TestParameters.java (contents, props changed)
- copied, changed from r1189857, tomcat/trunk/test/org/apache/tomcat/util/http/TestParameters.java
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 27 17:18:14 2011
@@ -1 +1 @@
-/tomcat/trunk:1156115,1156171,1156276,1156304,1156519,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335,1158426,1160347,1160592,1160611,1160619,1160626,1160639,1160652,1160720-1160721,1160772,1160774,1160776,1161303,1161310,1161322,1161339,1161486,1161540,1161549,1161584,1162082,1162149,1162169,1162721,1162769,1162836,1162932,1163630,1164419,1164438,1164469,1164480,1164567,1165234,1165247-1165248,1165253,1165273,1165282,1165309,1165331,1165338,1165347,1165360-1165361,1165367-1165368,1165602,1165608,1165677,1165693,1165721,1165723,1165728,1165730,1165738,1165746,1165765,1165777,1165918,1165921,1166077,1166150-1166151,1166290,1166366,1166620,1166686,1166693,1166752,1166757,1167368,1167394,1169447,1170647,1171692,1172233-1172234,1172236,1172269,1172278,1172282,1172556,1172610,1172664,1172689,1172711,1173020-1173021,1173082,1173088,1173090,1173096
,1173241,1173256,1173288,1173333,1173342,1173461,1173614,1173630,1173659,1173722,1174061,1174239,1174322,1174325,1174329-1174330,1174337-1174339,1174343,1174353,1174799,1174882,1174884,1174983,1175155,1175158,1175167,1175182,1175190,1175201,1175272,1175275,1175283,1175582,1175589-1175590,1175594,1175602,1175613,1175633,1175690,1175713,1175889,1175896,1175907,1176584,1176590,1176799,1177050,1177060,1177125,1177152,1177160,1177245,1177850,1177862,1177978,1178209,1178228,1178233,1178449,1178542,1178681,1178684,1178721,1179268,1179274,1180261,1180865,1180891,1180894,1180907,1181028,1181123,1181125,1181136,1181291,1181743,1182796,1183078,1183105,1183142,1183328,1183339-1183340,1183492-1183494,1183605,1184917,1184919,1185018,1185020,1185200,1185588,1185626,1185756,1185758,1186011,1186042-1186045,1186104,1186123,1186137,1186153,1186254,1186257,1186377-1186379,1186479-1186480,1186712,1186743,1186750,1186763,1186890-1186892,1186894,1186949,1187018,1187027-1187028,1187381,1187755,1187
775,1187827,1188301,1188303-1188305,1188399,1188822,1188930-1188931,1189116,1189129,1189183,1189240,1189256,1189386,1189413-1189414,1189477,1189685,1189805
+/tomcat/trunk:1156115,1156171,1156276,1156304,1156519,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335,1158426,1160347,1160592,1160611,1160619,1160626,1160639,1160652,1160720-1160721,1160772,1160774,1160776,1161303,1161310,1161322,1161339,1161486,1161540,1161549,1161584,1162082,1162149,1162169,1162721,1162769,1162836,1162932,1163630,1164419,1164438,1164469,1164480,1164567,1165234,1165247-1165248,1165253,1165273,1165282,1165309,1165331,1165338,1165347,1165360-1165361,1165367-1165368,1165602,1165608,1165677,1165693,1165721,1165723,1165728,1165730,1165738,1165746,1165765,1165777,1165918,1165921,1166077,1166150-1166151,1166290,1166366,1166620,1166686,1166693,1166752,1166757,1167368,1167394,1169447,1170647,1171692,1172233-1172234,1172236,1172269,1172278,1172282,1172556,1172610,1172664,1172689,1172711,1173020-1173021,1173082,1173088,1173090,1173096
,1173241,1173256,1173288,1173333,1173342,1173461,1173614,1173630,1173659,1173722,1174061,1174239,1174322,1174325,1174329-1174330,1174337-1174339,1174343,1174353,1174799,1174882,1174884,1174983,1175155,1175158,1175167,1175182,1175190,1175201,1175272,1175275,1175283,1175582,1175589-1175590,1175594,1175602,1175613,1175633,1175690,1175713,1175889,1175896,1175907,1176584,1176590,1176799,1177050,1177060,1177125,1177152,1177160,1177245,1177850,1177862,1177978,1178209,1178228,1178233,1178449,1178542,1178681,1178684,1178721,1179268,1179274,1180261,1180865,1180891,1180894,1180907,1181028,1181123,1181125,1181136,1181291,1181743,1182796,1183078,1183105,1183142,1183328,1183339-1183340,1183492-1183494,1183605,1184917,1184919,1185018,1185020,1185200,1185588,1185626,1185756,1185758,1186011,1186042-1186045,1186104,1186123,1186137,1186153,1186254,1186257,1186377-1186379,1186479-1186480,1186712,1186743,1186750,1186763,1186890-1186892,1186894,1186949,1187018,1187027-1187028,1187381,1187755,1187
775,1187827,1188301,1188303-1188305,1188399,1188822,1188930-1188931,1189116,1189129,1189183,1189240,1189256,1189386,1189413-1189414,1189477,1189685,1189805,1189857,1189864
Copied: tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/http/TestParameters.java (from r1189857, tomcat/trunk/test/org/apache/tomcat/util/http/TestParameters.java)
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/http/TestParameters.java?p2=tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/http/TestParameters.java&p1=tomcat/trunk/test/org/apache/tomcat/util/http/TestParameters.java&r1=1189857&r2=1189876&rev=1189876&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/util/http/TestParameters.java (original)
+++ tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/http/TestParameters.java Thu Oct 27 17:18:14 2011
@@ -1,170 +1,170 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.tomcat.util.http;
-
-import java.util.Enumeration;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import org.junit.Test;
-
-import org.apache.tomcat.util.buf.UEncoder;
-
-public class TestParameters {
-
- private static final Parameter SIMPLE =
- new Parameter("foo1", "bar1");
- private static final Parameter SIMPLE_MULTIPLE =
- new Parameter("foo2", "bar1", "bar2");
- private static final Parameter NO_VALUE =
- new Parameter("foo3");
- private static final Parameter EMPTY_VALUE =
- new Parameter("foo4", "");
- private static final Parameter EMPTY =
- new Parameter("");
-
- @Test
- public void testProcessParametersByteArrayIntInt() {
- doTestProcessParametersByteArrayIntInt(SIMPLE);
- doTestProcessParametersByteArrayIntInt(SIMPLE_MULTIPLE);
- doTestProcessParametersByteArrayIntInt(NO_VALUE);
- doTestProcessParametersByteArrayIntInt(EMPTY_VALUE);
- doTestProcessParametersByteArrayIntInt(EMPTY);
- doTestProcessParametersByteArrayIntInt(
- SIMPLE, SIMPLE_MULTIPLE, NO_VALUE, EMPTY_VALUE, EMPTY);
- doTestProcessParametersByteArrayIntInt(
- SIMPLE_MULTIPLE, NO_VALUE, EMPTY_VALUE, EMPTY, SIMPLE);
- doTestProcessParametersByteArrayIntInt(
- NO_VALUE, EMPTY_VALUE, EMPTY, SIMPLE, SIMPLE_MULTIPLE);
- doTestProcessParametersByteArrayIntInt(
- EMPTY_VALUE, EMPTY, SIMPLE, SIMPLE_MULTIPLE, NO_VALUE);
- doTestProcessParametersByteArrayIntInt(
- EMPTY, SIMPLE, SIMPLE_MULTIPLE, NO_VALUE, EMPTY_VALUE);
- }
-
- // Make sure the inner Parameter class behaves correctly
- @Test
- public void testInternal() {
- assertEquals("foo1=bar1", SIMPLE.toString());
- assertEquals("foo2=bar1&foo2=bar2", SIMPLE_MULTIPLE.toString());
- assertEquals("foo3", NO_VALUE.toString());
- assertEquals("foo4=", EMPTY_VALUE.toString());
- }
-
- private long doTestProcessParametersByteArrayIntInt(
- Parameter... parameters) {
- // Build the byte array
- StringBuilder input = new StringBuilder();
- boolean first = true;
- for (Parameter parameter : parameters) {
- if (first) {
- first = false;
- } else {
- input.append('&');
- }
- input.append(parameter.toString());
- }
-
- byte[] data = input.toString().getBytes();
-
- Parameters p = new Parameters();
- p.setEncoding("UTF-8");
-
- long start = System.nanoTime();
- p.processParameters(data, 0, data.length);
- long end = System.nanoTime();
-
- validateParameters(parameters, p);
- return end - start;
- }
-
- private void validateParameters(Parameter[] parameters, Parameters p) {
- Enumeration<String> names = p.getParameterNames();
-
- int i = 0;
- while (names.hasMoreElements()) {
- while (parameters[i].getName() == null) {
- i++;
- }
-
- String name = names.nextElement();
- String[] values = p.getParameterValues(name);
-
- boolean match = false;
-
- for (Parameter parameter : parameters) {
- if (name.equals(parameter.getName())) {
- match = true;
- if (parameter.values.length == 0) {
- // Special case
- assertArrayEquals(new String[] {""}, values);
- } else {
- assertArrayEquals(parameter.getValues(), values);
- }
- break;
- }
- }
- assertTrue(match);
- }
- }
-
- private static class Parameter {
- private final String name;
- private final String[] values;
-
- UEncoder uencoder = new UEncoder();
-
- public Parameter(String name, String... values) {
- this.name = name;
- this.values = values;
- }
-
- public String getName() {
- return name;
- }
-
- public String[] getValues() {
- return values;
- }
-
- @Override
- public String toString() {
- StringBuilder result = new StringBuilder();
- boolean first = true;
- if (values.length == 0) {
- return name;
- }
- for (String value : values) {
- if (first) {
- first = false;
- } else {
- result.append('&');
- }
- if (name != null) {
- result.append(uencoder.encodeURL(name));
- }
- if (value != null) {
- result.append('=');
- result.append(value);
- }
- }
-
- return result.toString();
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomcat.util.http;
+
+import java.util.Enumeration;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+
+import org.apache.tomcat.util.buf.UEncoder;
+
+public class TestParameters {
+
+ private static final Parameter SIMPLE =
+ new Parameter("foo1", "bar1");
+ private static final Parameter SIMPLE_MULTIPLE =
+ new Parameter("foo2", "bar1", "bar2");
+ private static final Parameter NO_VALUE =
+ new Parameter("foo3");
+ private static final Parameter EMPTY_VALUE =
+ new Parameter("foo4", "");
+ private static final Parameter EMPTY =
+ new Parameter("");
+
+ @Test
+ public void testProcessParametersByteArrayIntInt() {
+ doTestProcessParametersByteArrayIntInt(SIMPLE);
+ doTestProcessParametersByteArrayIntInt(SIMPLE_MULTIPLE);
+ doTestProcessParametersByteArrayIntInt(NO_VALUE);
+ doTestProcessParametersByteArrayIntInt(EMPTY_VALUE);
+ doTestProcessParametersByteArrayIntInt(EMPTY);
+ doTestProcessParametersByteArrayIntInt(
+ SIMPLE, SIMPLE_MULTIPLE, NO_VALUE, EMPTY_VALUE, EMPTY);
+ doTestProcessParametersByteArrayIntInt(
+ SIMPLE_MULTIPLE, NO_VALUE, EMPTY_VALUE, EMPTY, SIMPLE);
+ doTestProcessParametersByteArrayIntInt(
+ NO_VALUE, EMPTY_VALUE, EMPTY, SIMPLE, SIMPLE_MULTIPLE);
+ doTestProcessParametersByteArrayIntInt(
+ EMPTY_VALUE, EMPTY, SIMPLE, SIMPLE_MULTIPLE, NO_VALUE);
+ doTestProcessParametersByteArrayIntInt(
+ EMPTY, SIMPLE, SIMPLE_MULTIPLE, NO_VALUE, EMPTY_VALUE);
+ }
+
+ // Make sure the inner Parameter class behaves correctly
+ @Test
+ public void testInternal() {
+ assertEquals("foo1=bar1", SIMPLE.toString());
+ assertEquals("foo2=bar1&foo2=bar2", SIMPLE_MULTIPLE.toString());
+ assertEquals("foo3", NO_VALUE.toString());
+ assertEquals("foo4=", EMPTY_VALUE.toString());
+ }
+
+ private long doTestProcessParametersByteArrayIntInt(
+ Parameter... parameters) {
+ // Build the byte array
+ StringBuilder input = new StringBuilder();
+ boolean first = true;
+ for (Parameter parameter : parameters) {
+ if (first) {
+ first = false;
+ } else {
+ input.append('&');
+ }
+ input.append(parameter.toString());
+ }
+
+ byte[] data = input.toString().getBytes();
+
+ Parameters p = new Parameters();
+ p.setEncoding("UTF-8");
+
+ long start = System.nanoTime();
+ p.processParameters(data, 0, data.length);
+ long end = System.nanoTime();
+
+ validateParameters(parameters, p);
+ return end - start;
+ }
+
+ private void validateParameters(Parameter[] parameters, Parameters p) {
+ Enumeration<String> names = p.getParameterNames();
+
+ int i = 0;
+ while (names.hasMoreElements()) {
+ while (parameters[i].getName() == null) {
+ i++;
+ }
+
+ String name = names.nextElement();
+ String[] values = p.getParameterValues(name);
+
+ boolean match = false;
+
+ for (Parameter parameter : parameters) {
+ if (name.equals(parameter.getName())) {
+ match = true;
+ if (parameter.values.length == 0) {
+ // Special case
+ assertArrayEquals(new String[] {""}, values);
+ } else {
+ assertArrayEquals(parameter.getValues(), values);
+ }
+ break;
+ }
+ }
+ assertTrue(match);
+ }
+ }
+
+ private static class Parameter {
+ private final String name;
+ private final String[] values;
+
+ UEncoder uencoder = new UEncoder();
+
+ public Parameter(String name, String... values) {
+ this.name = name;
+ this.values = values;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String[] getValues() {
+ return values;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder result = new StringBuilder();
+ boolean first = true;
+ if (values.length == 0) {
+ return name;
+ }
+ for (String value : values) {
+ if (first) {
+ first = false;
+ } else {
+ result.append('&');
+ }
+ if (name != null) {
+ result.append(uencoder.encodeURL(name));
+ }
+ if (value != null) {
+ result.append('=');
+ result.append(value);
+ }
+ }
+
+ return result.toString();
+ }
+ }
+}
Propchange: tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/http/TestParameters.java
------------------------------------------------------------------------------
svn:eol-style = native
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org