TestDFSShellGenericOptions.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:4k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.hdfs;
  19. import java.io.File;
  20. import java.io.FileNotFoundException;
  21. import java.io.IOException;
  22. import java.io.PrintWriter;
  23. import junit.framework.TestCase;
  24. import org.apache.hadoop.conf.Configuration;
  25. import org.apache.hadoop.fs.FileSystem;
  26. import org.apache.hadoop.fs.FsShell;
  27. import org.apache.hadoop.fs.Path;
  28. import org.apache.hadoop.hdfs.server.namenode.NameNode;
  29. import org.apache.hadoop.net.NetUtils;
  30. import org.apache.hadoop.util.ToolRunner;
  31. public class TestDFSShellGenericOptions extends TestCase {
  32.   public void testDFSCommand() throws IOException {
  33.     String namenode = null;
  34.     MiniDFSCluster cluster = null;
  35.     try {
  36.       Configuration conf = new Configuration();
  37.       cluster = new MiniDFSCluster(conf, 1, true, null);
  38.       namenode = FileSystem.getDefaultUri(conf).toString();
  39.       String [] args = new String[4];
  40.       args[2] = "-mkdir";
  41.       args[3] = "/data";
  42.       testFsOption(args, namenode);
  43.       testConfOption(args, namenode);
  44.       testPropertyOption(args, namenode);
  45.     } finally {
  46.       if (cluster != null) { cluster.shutdown(); }
  47.     }
  48.   }
  49.   private void testFsOption(String [] args, String namenode) {        
  50.     // prepare arguments to create a directory /data
  51.     args[0] = "-fs";
  52.     args[1] = namenode;
  53.     execute(args, namenode);
  54.   }
  55.     
  56.   private void testConfOption(String[] args, String namenode) {
  57.     // prepare configuration hdfs-site.xml
  58.     File configDir = new File(new File("build", "test"), "minidfs");
  59.     assertTrue(configDir.mkdirs());
  60.     File siteFile = new File(configDir, "hdfs-site.xml");
  61.     PrintWriter pw;
  62.     try {
  63.       pw = new PrintWriter(siteFile);
  64.       pw.print("<?xml version="1.0"?>n"+
  65.                "<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>n"+
  66.                "<configuration>n"+
  67.                " <property>n"+
  68.                "   <name>fs.default.name</name>n"+
  69.                "   <value>"+namenode+"</value>n"+
  70.                " </property>n"+
  71.                "</configuration>n");
  72.       pw.close();
  73.     
  74.       // prepare arguments to create a directory /data
  75.       args[0] = "-conf";
  76.       args[1] = siteFile.getPath();
  77.       execute(args, namenode); 
  78.     } catch (FileNotFoundException e) {
  79.       e.printStackTrace();
  80.     } finally {
  81.       siteFile.delete();
  82.       configDir.delete();
  83.     }
  84.   }
  85.     
  86.   private void testPropertyOption(String[] args, String namenode) {
  87.     // prepare arguments to create a directory /data
  88.     args[0] = "-D";
  89.     args[1] = "fs.default.name="+namenode;
  90.     execute(args, namenode);        
  91.   }
  92.     
  93.   private void execute(String [] args, String namenode) {
  94.     FsShell shell=new FsShell();
  95.     FileSystem fs=null;
  96.     try {
  97.       ToolRunner.run(shell, args);
  98.       fs = new DistributedFileSystem(NameNode.getAddress(namenode), 
  99.                                      shell.getConf());
  100.       assertTrue("Directory does not get created", 
  101.                  fs.isDirectory(new Path("/data")));
  102.       fs.delete(new Path("/data"), true);
  103.     } catch (Exception e) {
  104.       System.err.println(e.getMessage());
  105.       e.printStackTrace();
  106.     } finally {
  107.       if (fs!=null) {
  108.         try {
  109.           fs.close();
  110.         } catch (IOException ignored) {
  111.         }
  112.       }
  113.     }
  114.   }
  115. }