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

网格计算

开发平台:

Java

  1. /**
  2.  *
  3.  * Licensed under the Apache License, Version 2.0
  4.  * (the "License"); you may not use this file except in compliance with
  5.  * the License. You may obtain a copy of the License at
  6.  *
  7.  * http://www.apache.org/licenses/LICENSE-2.0
  8.  *
  9.  * Unless required by applicable law or agreed to in writing, software
  10.  * distributed under the License is distributed on an "AS IS" BASIS,
  11.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
  12.  * implied. See the License for the specific language governing
  13.  * permissions and limitations under the License.
  14.  *
  15.  * @author: Sriram Rao (Kosmix Corp.)
  16.  * 
  17.  * Unit tests for testing the KosmosFileSystem API implementation.
  18.  */
  19. package org.apache.hadoop.fs.kfs;
  20. import java.io.*;
  21. import java.net.*;
  22. import junit.framework.TestCase;
  23. import org.apache.hadoop.conf.Configuration;
  24. import org.apache.hadoop.fs.FSDataInputStream;
  25. import org.apache.hadoop.fs.FSDataOutputStream;
  26. import org.apache.hadoop.fs.FileSystem;
  27. import org.apache.hadoop.fs.FileStatus;
  28. import org.apache.hadoop.fs.FileUtil;
  29. import org.apache.hadoop.fs.Path;
  30. import org.apache.hadoop.fs.kfs.KosmosFileSystem;
  31. public class TestKosmosFileSystem extends TestCase {
  32.     KosmosFileSystem kosmosFileSystem;
  33.     KFSEmulationImpl kfsEmul;
  34.     Path baseDir;
  35.     
  36.     @Override
  37.     protected void setUp() throws IOException {
  38.         Configuration conf = new Configuration();
  39.     
  40.         kfsEmul = new KFSEmulationImpl(conf);
  41.         kosmosFileSystem = new KosmosFileSystem(kfsEmul);
  42.         // a dummy URI; we are not connecting to any setup here
  43.         kosmosFileSystem.initialize(URI.create("kfs:///"), conf);
  44.         baseDir = new Path(System.getProperty("test.build.data", "/tmp" ) +
  45.                                               "/kfs-test");
  46.     }
  47.     @Override
  48.     protected void tearDown() throws Exception {
  49.     }
  50.     // @Test
  51.     // Check all the directory API's in KFS
  52.     public void testDirs() throws Exception {
  53.         Path subDir1 = new Path("dir.1");
  54.         // make the dir
  55.         kosmosFileSystem.mkdirs(baseDir);
  56.         assertTrue(kosmosFileSystem.isDirectory(baseDir));
  57.         kosmosFileSystem.setWorkingDirectory(baseDir);
  58.         kosmosFileSystem.mkdirs(subDir1);
  59.         assertTrue(kosmosFileSystem.isDirectory(subDir1));
  60.         assertFalse(kosmosFileSystem.exists(new Path("test1")));
  61.         assertFalse(kosmosFileSystem.isDirectory(new Path("test/dir.2")));
  62.         FileStatus[] p = kosmosFileSystem.listStatus(baseDir);
  63.         assertEquals(p.length, 1);
  64.         kosmosFileSystem.delete(baseDir, true);
  65.         assertFalse(kosmosFileSystem.exists(baseDir));
  66.     }
  67.     // @Test
  68.     // Check the file API's
  69.     public void testFiles() throws Exception {
  70.         Path subDir1 = new Path("dir.1");
  71.         Path file1 = new Path("dir.1/foo.1");
  72.         Path file2 = new Path("dir.1/foo.2");
  73.         kosmosFileSystem.mkdirs(baseDir);
  74.         assertTrue(kosmosFileSystem.isDirectory(baseDir));
  75.         kosmosFileSystem.setWorkingDirectory(baseDir);
  76.         kosmosFileSystem.mkdirs(subDir1);
  77.         FSDataOutputStream s1 = kosmosFileSystem.create(file1, true, 4096, (short) 1, (long) 4096, null);
  78.         FSDataOutputStream s2 = kosmosFileSystem.create(file2, true, 4096, (short) 1, (long) 4096, null);
  79.         s1.close();
  80.         s2.close();
  81.         FileStatus[] p = kosmosFileSystem.listStatus(subDir1);
  82.         assertEquals(p.length, 2);
  83.         kosmosFileSystem.delete(file1, true);
  84.         p = kosmosFileSystem.listStatus(subDir1);
  85.         assertEquals(p.length, 1);
  86.         kosmosFileSystem.delete(file2, true);
  87.         p = kosmosFileSystem.listStatus(subDir1);
  88.         assertEquals(p.length, 0);
  89.         kosmosFileSystem.delete(baseDir, true);
  90.         assertFalse(kosmosFileSystem.exists(baseDir));
  91.     }
  92.     // @Test
  93.     // Check file/read write
  94.     public void testFileIO() throws Exception {
  95.         Path subDir1 = new Path("dir.1");
  96.         Path file1 = new Path("dir.1/foo.1");
  97.         kosmosFileSystem.mkdirs(baseDir);
  98.         assertTrue(kosmosFileSystem.isDirectory(baseDir));
  99.         kosmosFileSystem.setWorkingDirectory(baseDir);
  100.         kosmosFileSystem.mkdirs(subDir1);
  101.         FSDataOutputStream s1 = kosmosFileSystem.create(file1, true, 4096, (short) 1, (long) 4096, null);
  102.         int bufsz = 4096;
  103.         byte[] data = new byte[bufsz];
  104.         for (int i = 0; i < data.length; i++)
  105.             data[i] = (byte) (i % 16);
  106.         // write 4 bytes and read them back; read API should return a byte per call
  107.         s1.write(32);
  108.         s1.write(32);
  109.         s1.write(32);
  110.         s1.write(32);
  111.         // write some data
  112.         s1.write(data, 0, data.length);
  113.         // flush out the changes
  114.         s1.close();
  115.         // Read the stuff back and verify it is correct
  116.         FSDataInputStream s2 = kosmosFileSystem.open(file1, 4096);
  117.         int v;
  118.         v = s2.read();
  119.         assertEquals(v, 32);
  120.         v = s2.read();
  121.         assertEquals(v, 32);
  122.         v = s2.read();
  123.         assertEquals(v, 32);
  124.         v = s2.read();
  125.         assertEquals(v, 32);
  126.         assertEquals(s2.available(), data.length);
  127.         byte[] buf = new byte[bufsz];
  128.         s2.read(buf, 0, buf.length);
  129.         for (int i = 0; i < data.length; i++)
  130.             assertEquals(data[i], buf[i]);
  131.         assertEquals(s2.available(), 0);
  132.         s2.close();
  133.         kosmosFileSystem.delete(file1, true);
  134.         assertFalse(kosmosFileSystem.exists(file1));        
  135.         kosmosFileSystem.delete(subDir1, true);
  136.         assertFalse(kosmosFileSystem.exists(subDir1));        
  137.         kosmosFileSystem.delete(baseDir, true);
  138.         assertFalse(kosmosFileSystem.exists(baseDir));        
  139.     }
  140.     
  141. }