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

网格计算

开发平台:

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 junit.framework.TestCase;
  20. import java.io.*;
  21. import org.apache.hadoop.conf.Configuration;
  22. import org.apache.hadoop.fs.FileSystem;
  23. import org.apache.hadoop.fs.Path;
  24. /**
  25.  * This class tests the DFS class via the FileSystem interface in a single node
  26.  * mini-cluster.
  27.  */
  28. public class TestLocalDFS extends TestCase {
  29.   private void writeFile(FileSystem fileSys, Path name) throws IOException {
  30.     DataOutputStream stm = fileSys.create(name);
  31.     stm.writeBytes("oom");
  32.     stm.close();
  33.   }
  34.   
  35.   private void readFile(FileSystem fileSys, Path name) throws IOException {
  36.     DataInputStream stm = fileSys.open(name);
  37.     byte[] buffer = new byte[4];
  38.     int bytesRead = stm.read(buffer, 0 , 4);
  39.     assertEquals("oom", new String(buffer, 0 , bytesRead));
  40.     stm.close();
  41.   }
  42.   
  43.   private void cleanupFile(FileSystem fileSys, Path name) throws IOException {
  44.     assertTrue(fileSys.exists(name));
  45.     fileSys.delete(name, true);
  46.     assertTrue(!fileSys.exists(name));
  47.   }
  48.   static String getUserName(FileSystem fs) {
  49.     if (fs instanceof DistributedFileSystem) {
  50.       return ((DistributedFileSystem)fs).dfs.ugi.getUserName();
  51.     }
  52.     return System.getProperty("user.name");
  53.   }
  54.   /**
  55.    * Tests get/set working directory in DFS.
  56.    */
  57.   public void testWorkingDirectory() throws IOException {
  58.     Configuration conf = new Configuration();
  59.     MiniDFSCluster cluster = new MiniDFSCluster(conf, 1, true, null);
  60.     FileSystem fileSys = cluster.getFileSystem();
  61.     try {
  62.       Path orig_path = fileSys.getWorkingDirectory();
  63.       assertTrue(orig_path.isAbsolute());
  64.       Path file1 = new Path("somewhat/random.txt");
  65.       writeFile(fileSys, file1);
  66.       assertTrue(fileSys.exists(new Path(orig_path, file1.toString())));
  67.       fileSys.delete(file1, true);
  68.       Path subdir1 = new Path("/somewhere");
  69.       fileSys.setWorkingDirectory(subdir1);
  70.       writeFile(fileSys, file1);
  71.       cleanupFile(fileSys, new Path(subdir1, file1.toString()));
  72.       Path subdir2 = new Path("else");
  73.       fileSys.setWorkingDirectory(subdir2);
  74.       writeFile(fileSys, file1);
  75.       readFile(fileSys, file1);
  76.       cleanupFile(fileSys, new Path(new Path(subdir1, subdir2.toString()),
  77.                                     file1.toString()));
  78.       // test home directory
  79.       Path home = new Path("/user/" + getUserName(fileSys))
  80.         .makeQualified(fileSys);
  81.       Path fsHome = fileSys.getHomeDirectory();
  82.       assertEquals(home, fsHome);
  83.     } finally {
  84.       fileSys.close();
  85.       cluster.shutdown();
  86.     }
  87.   }
  88. }