| /** |
| * 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.mapred; |
| |
| import junit.framework.TestCase; |
| |
| import org.apache.hadoop.fs.Path; |
| import org.apache.hadoop.mapred.FileInputFormat; |
| import org.apache.hadoop.mapred.JobConf; |
| import org.apache.hadoop.util.StringUtils; |
| |
| public class TestInputPath extends TestCase { |
| public void testInputPath() throws Exception { |
| JobConf jobConf = new JobConf(); |
| Path workingDir = jobConf.getWorkingDirectory(); |
| |
| Path path = new Path(workingDir, |
| "xx{y"+StringUtils.COMMA_STR+"z}"); |
| FileInputFormat.setInputPaths(jobConf, path); |
| Path[] paths = FileInputFormat.getInputPaths(jobConf); |
| assertEquals(1, paths.length); |
| assertEquals(path.toString(), paths[0].toString()); |
| |
| StringBuilder pathStr = new StringBuilder(); |
| pathStr.append(StringUtils.ESCAPE_CHAR); |
| pathStr.append(StringUtils.ESCAPE_CHAR); |
| pathStr.append(StringUtils.COMMA); |
| pathStr.append(StringUtils.COMMA); |
| pathStr.append('a'); |
| path = new Path(workingDir, pathStr.toString()); |
| FileInputFormat.setInputPaths(jobConf, path); |
| paths = FileInputFormat.getInputPaths(jobConf); |
| assertEquals(1, paths.length); |
| assertEquals(path.toString(), paths[0].toString()); |
| |
| pathStr.setLength(0); |
| pathStr.append(StringUtils.ESCAPE_CHAR); |
| pathStr.append("xx"); |
| pathStr.append(StringUtils.ESCAPE_CHAR); |
| path = new Path(workingDir, pathStr.toString()); |
| Path path1 = new Path(workingDir, |
| "yy"+StringUtils.COMMA_STR+"zz"); |
| FileInputFormat.setInputPaths(jobConf, path); |
| FileInputFormat.addInputPath(jobConf, path1); |
| paths = FileInputFormat.getInputPaths(jobConf); |
| assertEquals(2, paths.length); |
| assertEquals(path.toString(), paths[0].toString()); |
| assertEquals(path1.toString(), paths[1].toString()); |
| |
| FileInputFormat.setInputPaths(jobConf, path, path1); |
| paths = FileInputFormat.getInputPaths(jobConf); |
| assertEquals(2, paths.length); |
| assertEquals(path.toString(), paths[0].toString()); |
| assertEquals(path1.toString(), paths[1].toString()); |
| |
| Path[] input = new Path[] {path, path1}; |
| FileInputFormat.setInputPaths(jobConf, input); |
| paths = FileInputFormat.getInputPaths(jobConf); |
| assertEquals(2, paths.length); |
| assertEquals(path.toString(), paths[0].toString()); |
| assertEquals(path1.toString(), paths[1].toString()); |
| |
| pathStr.setLength(0); |
| String str1 = "{a{b,c},de}"; |
| String str2 = "xyz"; |
| String str3 = "x{y,z}"; |
| pathStr.append(str1); |
| pathStr.append(StringUtils.COMMA); |
| pathStr.append(str2); |
| pathStr.append(StringUtils.COMMA); |
| pathStr.append(str3); |
| FileInputFormat.setInputPaths(jobConf, pathStr.toString()); |
| paths = FileInputFormat.getInputPaths(jobConf); |
| assertEquals(3, paths.length); |
| assertEquals(new Path(workingDir, str1).toString(), paths[0].toString()); |
| assertEquals(new Path(workingDir, str2).toString(), paths[1].toString()); |
| assertEquals(new Path(workingDir, str3).toString(), paths[2].toString()); |
| |
| pathStr.setLength(0); |
| String str4 = "abc"; |
| String str5 = "pq{r,s}"; |
| pathStr.append(str4); |
| pathStr.append(StringUtils.COMMA); |
| pathStr.append(str5); |
| FileInputFormat.addInputPaths(jobConf, pathStr.toString()); |
| paths = FileInputFormat.getInputPaths(jobConf); |
| assertEquals(5, paths.length); |
| assertEquals(new Path(workingDir, str1).toString(), paths[0].toString()); |
| assertEquals(new Path(workingDir, str2).toString(), paths[1].toString()); |
| assertEquals(new Path(workingDir, str3).toString(), paths[2].toString()); |
| assertEquals(new Path(workingDir, str4).toString(), paths[3].toString()); |
| assertEquals(new Path(workingDir, str5).toString(), paths[4].toString()); |
| } |
| } |