Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/java/org/apache/hadoop/lib/wsrs/ShortParam.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/java/org/apache/hadoop/lib/wsrs/ShortParam.java?rev=1354599&r1=1354598&r2=1354599&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/java/org/apache/hadoop/lib/wsrs/ShortParam.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/java/org/apache/hadoop/lib/wsrs/ShortParam.java Wed Jun 27 16:06:37 2012 @@ -20,8 +20,8 @@ package org.apache.hadoop.lib.wsrs; public abstract class ShortParam extends Param<Short> { - public ShortParam(String name, String str) { - value = parseParam(name, str); + public ShortParam(String name, Short defaultValue) { + super(name, defaultValue); } protected Short parse(String str) throws Exception {
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/java/org/apache/hadoop/lib/wsrs/StringParam.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/java/org/apache/hadoop/lib/wsrs/StringParam.java?rev=1354599&r1=1354598&r2=1354599&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/java/org/apache/hadoop/lib/wsrs/StringParam.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/java/org/apache/hadoop/lib/wsrs/StringParam.java Wed Jun 27 16:06:37 2012 @@ -15,42 +15,38 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.hadoop.lib.wsrs; -import org.apache.hadoop.lib.util.Check; - import java.text.MessageFormat; import java.util.regex.Pattern; public abstract class StringParam extends Param<String> { private Pattern pattern; - public StringParam(String name, String str) { - this(name, str, null); + public StringParam(String name, String defaultValue) { + this(name, defaultValue, null); } - public StringParam(String name, String str, Pattern pattern) { + public StringParam(String name, String defaultValue, Pattern pattern) { + super(name, defaultValue); this.pattern = pattern; - value = parseParam(name, str); + parseParam(defaultValue); } - public String parseParam(String name, String str) { - String ret = null; - Check.notNull(name, "name"); + public String parseParam(String str) { try { if (str != null) { str = str.trim(); if (str.length() > 0) { - return parse(str); + value = parse(str); } } } catch (Exception ex) { throw new IllegalArgumentException( MessageFormat.format("Parameter [{0}], invalid value [{1}], value must be [{2}]", - name, str, getDomain())); + getName(), str, getDomain())); } - return ret; + return value; } protected String parse(String str) throws Exception { Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/fs/http/client/TestHttpFSFileSystem.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/fs/http/client/TestHttpFSFileSystem.java?rev=1354599&r1=1354598&r2=1354599&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/fs/http/client/TestHttpFSFileSystem.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/fs/http/client/TestHttpFSFileSystem.java Wed Jun 27 16:06:37 2012 @@ -475,6 +475,7 @@ public class TestHttpFSFileSystem extend ops[i] = new Object[]{Operation.values()[i]}; } return Arrays.asList(ops); +// return Arrays.asList(new Object[][]{ new Object[]{Operation.CREATE}}); } private Operation operation; Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/fs/http/server/TestCheckUploadContentTypeFilter.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/fs/http/server/TestCheckUploadContentTypeFilter.java?rev=1354599&r1=1354598&r2=1354599&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/fs/http/server/TestCheckUploadContentTypeFilter.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/fs/http/server/TestCheckUploadContentTypeFilter.java Wed Jun 27 16:06:37 2012 @@ -31,34 +31,34 @@ public class TestCheckUploadContentTypeF @Test public void putUpload() throws Exception { - test("PUT", HttpFSFileSystem.PutOpValues.CREATE.toString(), "application/octet-stream", true, false); + test("PUT", HttpFSFileSystem.Operation.CREATE.toString(), "application/octet-stream", true, false); } @Test public void postUpload() throws Exception { - test("POST", HttpFSFileSystem.PostOpValues.APPEND.toString(), "APPLICATION/OCTET-STREAM", true, false); + test("POST", HttpFSFileSystem.Operation.APPEND.toString(), "APPLICATION/OCTET-STREAM", true, false); } @Test public void putUploadWrong() throws Exception { - test("PUT", HttpFSFileSystem.PutOpValues.CREATE.toString(), "plain/text", false, false); - test("PUT", HttpFSFileSystem.PutOpValues.CREATE.toString(), "plain/text", true, true); + test("PUT", HttpFSFileSystem.Operation.CREATE.toString(), "plain/text", false, false); + test("PUT", HttpFSFileSystem.Operation.CREATE.toString(), "plain/text", true, true); } @Test public void postUploadWrong() throws Exception { - test("POST", HttpFSFileSystem.PostOpValues.APPEND.toString(), "plain/text", false, false); - test("POST", HttpFSFileSystem.PostOpValues.APPEND.toString(), "plain/text", true, true); + test("POST", HttpFSFileSystem.Operation.APPEND.toString(), "plain/text", false, false); + test("POST", HttpFSFileSystem.Operation.APPEND.toString(), "plain/text", true, true); } @Test public void getOther() throws Exception { - test("GET", HttpFSFileSystem.GetOpValues.GETHOMEDIRECTORY.toString(), "plain/text", false, false); + test("GET", HttpFSFileSystem.Operation.GETHOMEDIRECTORY.toString(), "plain/text", false, false); } @Test public void putOther() throws Exception { - test("PUT", HttpFSFileSystem.PutOpValues.MKDIRS.toString(), "plain/text", false, false); + test("PUT", HttpFSFileSystem.Operation.MKDIRS.toString(), "plain/text", false, false); } private void test(String method, String operation, String contentType, @@ -68,7 +68,7 @@ public class TestCheckUploadContentTypeF Mockito.reset(request); Mockito.when(request.getMethod()).thenReturn(method); Mockito.when(request.getParameter(HttpFSFileSystem.OP_PARAM)).thenReturn(operation); - Mockito.when(request.getParameter(HttpFSParams.DataParam.NAME)). + Mockito.when(request.getParameter(HttpFSParametersProvider.DataParam.NAME)). thenReturn(Boolean.toString(upload)); Mockito.when(request.getContentType()).thenReturn(contentType); Added: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/lib/wsrs/TestParam.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/lib/wsrs/TestParam.java?rev=1354599&view=auto ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/lib/wsrs/TestParam.java (added) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/lib/wsrs/TestParam.java Wed Jun 27 16:06:37 2012 @@ -0,0 +1,120 @@ +/** + * 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.hadoop.lib.wsrs; + +import junit.framework.Assert; +import org.junit.Test; + +import java.util.regex.Pattern; + +public class TestParam { + + private <T> void test(Param<T> param, String name, + String domain, T defaultValue, T validValue, + String invalidStrValue, String outOfRangeValue) throws Exception { + + Assert.assertEquals(name, param.getName()); + Assert.assertEquals(domain, param.getDomain()); + Assert.assertEquals(defaultValue, param.value()); + Assert.assertEquals(defaultValue, param.parseParam("")); + Assert.assertEquals(defaultValue, param.parseParam(null)); + Assert.assertEquals(validValue, param.parseParam(validValue.toString())); + if (invalidStrValue != null) { + try { + param.parseParam(invalidStrValue); + Assert.fail(); + } catch (IllegalArgumentException ex) { + //NOP + } catch (Exception ex) { + Assert.fail(); + } + } + if (outOfRangeValue != null) { + try { + param.parseParam(outOfRangeValue); + Assert.fail(); + } catch (IllegalArgumentException ex) { + //NOP + } catch (Exception ex) { + Assert.fail(); + } + } + } + + @Test + public void testBoolean() throws Exception { + Param<Boolean> param = new BooleanParam("b", false) { + }; + test(param, "b", "a boolean", false, true, "x", null); + } + + @Test + public void testByte() throws Exception { + Param<Byte> param = new ByteParam("B", (byte) 1) { + }; + test(param, "B", "a byte", (byte) 1, (byte) 2, "x", "256"); + } + + @Test + public void testShort() throws Exception { + Param<Short> param = new ShortParam("S", (short) 1) { + }; + test(param, "S", "a short", (short) 1, (short) 2, "x", + "" + ((int)Short.MAX_VALUE + 1)); + } + + @Test + public void testInteger() throws Exception { + Param<Integer> param = new IntegerParam("I", 1) { + }; + test(param, "I", "an integer", 1, 2, "x", "" + ((long)Integer.MAX_VALUE + 1)); + } + + @Test + public void testLong() throws Exception { + Param<Long> param = new LongParam("L", 1L) { + }; + test(param, "L", "a long", 1L, 2L, "x", null); + } + + public static enum ENUM { + FOO, BAR + } + + @Test + public void testEnum() throws Exception { + EnumParam<ENUM> param = new EnumParam<ENUM>("e", ENUM.class, ENUM.FOO) { + }; + test(param, "e", "FOO,BAR", ENUM.FOO, ENUM.BAR, "x", null); + } + + @Test + public void testString() throws Exception { + Param<String> param = new StringParam("s", "foo") { + }; + test(param, "s", "a string", "foo", "bar", null, null); + } + + @Test + public void testRegEx() throws Exception { + Param<String> param = new StringParam("r", "aa", Pattern.compile("..")) { + }; + test(param, "r", "..", "aa", "bb", "c", null); + } +} Added: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/resources/httpfs-log4j.properties URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/resources/httpfs-log4j.properties?rev=1354599&view=auto ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/resources/httpfs-log4j.properties (added) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/resources/httpfs-log4j.properties Wed Jun 27 16:06:37 2012 @@ -0,0 +1,22 @@ +# +# Licensed 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. +# +#log4j.appender.test=org.apache.log4j.varia.NullAppender +#log4j.appender.test=org.apache.log4j.ConsoleAppender +log4j.appender.test=org.apache.log4j.FileAppender +log4j.appender.test.File=${test.dir}/test.log +log4j.appender.test.Append=true +log4j.appender.test.layout=org.apache.log4j.PatternLayout +log4j.appender.test.layout.ConversionPattern=%d{ISO8601} %5p %20c{1}: %4L - %m%n +log4j.rootLogger=ALL, test + Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1354599&r1=1354598&r2=1354599&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Wed Jun 27 16:06:37 2012 @@ -246,6 +246,8 @@ Branch-2 ( Unreleased changes ) HDFS-3535. Audit logging should log denied accesses. (Andy Isaacson via eli) + HDFS-3481. Refactor HttpFS handling of JAX-RS query string parameters (tucu) + OPTIMIZATIONS HDFS-2982. Startup performance suffers when there are many edit log
