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

网格计算

开发平台:

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.fs.loadGenerator;
  19. import java.io.BufferedReader;
  20. import java.io.File;
  21. import java.io.FileReader;
  22. import java.io.FileWriter;
  23. import org.apache.hadoop.conf.Configuration;
  24. import org.apache.hadoop.hdfs.MiniDFSCluster;
  25. import junit.framework.TestCase;
  26. /**
  27.  * This class tests if a balancer schedules tasks correctly.
  28.  */
  29. public class TestLoadGenerator extends TestCase {
  30.   private static final Configuration CONF = new Configuration();
  31.   private static final int DEFAULT_BLOCK_SIZE = 10;
  32.   private static final String OUT_DIR = 
  33.     System.getProperty("test.build.data","build/test/data");
  34.   private static final File DIR_STRUCTURE_FILE = 
  35.     new File(OUT_DIR, StructureGenerator.DIR_STRUCTURE_FILE_NAME);
  36.   private static final File FILE_STRUCTURE_FILE =
  37.     new File(OUT_DIR, StructureGenerator.FILE_STRUCTURE_FILE_NAME);
  38.   private static final String DIR_STRUCTURE_FIRST_LINE = "/dir0";
  39.   private static final String DIR_STRUCTURE_SECOND_LINE = "/dir1";
  40.   private static final String FILE_STRUCTURE_FIRST_LINE =
  41.     "/dir0/_file_0 0.3754598635933768";
  42.   private static final String FILE_STRUCTURE_SECOND_LINE =
  43.     "/dir1/_file_1 1.4729310851145203";
  44.   
  45.   static {
  46.     CONF.setLong("dfs.block.size", DEFAULT_BLOCK_SIZE);
  47.     CONF.setInt("io.bytes.per.checksum", DEFAULT_BLOCK_SIZE);
  48.     CONF.setLong("dfs.heartbeat.interval", 1L);
  49.   }
  50.   /** Test if the structure generator works fine */ 
  51.   public void testStructureGenerator() throws Exception {
  52.     StructureGenerator sg = new StructureGenerator();
  53.     String[] args = new String[]{"-maxDepth", "2", "-minWidth", "1",
  54.         "-maxWidth", "2", "-numOfFiles", "2",
  55.         "-avgFileSize", "1", "-outDir", OUT_DIR, "-seed", "1"};
  56.     
  57.     final int MAX_DEPTH = 1;
  58.     final int MIN_WIDTH = 3;
  59.     final int MAX_WIDTH = 5;
  60.     final int NUM_OF_FILES = 7;
  61.     final int AVG_FILE_SIZE = 9;
  62.     final int SEED = 13;
  63.     try {
  64.       // successful case
  65.       assertEquals(0, sg.run(args));
  66.       BufferedReader in = new BufferedReader(new FileReader(DIR_STRUCTURE_FILE));
  67.       assertEquals(DIR_STRUCTURE_FIRST_LINE, in.readLine());
  68.       assertEquals(DIR_STRUCTURE_SECOND_LINE, in.readLine());
  69.       assertEquals(null, in.readLine());
  70.       in.close();
  71.       
  72.       in = new BufferedReader(new FileReader(FILE_STRUCTURE_FILE));
  73.       assertEquals(FILE_STRUCTURE_FIRST_LINE, in.readLine());
  74.       assertEquals(FILE_STRUCTURE_SECOND_LINE, in.readLine());
  75.       assertEquals(null, in.readLine());
  76.       in.close();
  77.       String oldArg = args[MAX_DEPTH];
  78.       args[MAX_DEPTH] = "0";
  79.       assertEquals(-1, sg.run(args));
  80.       args[MAX_DEPTH] = oldArg;
  81.       
  82.       oldArg = args[MIN_WIDTH];
  83.       args[MIN_WIDTH] = "-1";
  84.       assertEquals(-1, sg.run(args));
  85.       args[MIN_WIDTH] = oldArg;
  86.       
  87.       oldArg = args[MAX_WIDTH];
  88.       args[MAX_WIDTH] = "-1";
  89.       assertEquals(-1, sg.run(args));
  90.       args[MAX_WIDTH] = oldArg;
  91.       
  92.       oldArg = args[NUM_OF_FILES];
  93.       args[NUM_OF_FILES] = "-1";
  94.       assertEquals(-1, sg.run(args));
  95.       args[NUM_OF_FILES] = oldArg;
  96.       
  97.       oldArg = args[NUM_OF_FILES];
  98.       args[NUM_OF_FILES] = "-1";
  99.       assertEquals(-1, sg.run(args));
  100.       args[NUM_OF_FILES] = oldArg;
  101.       
  102.       oldArg = args[AVG_FILE_SIZE];
  103.       args[AVG_FILE_SIZE] = "-1";
  104.       assertEquals(-1, sg.run(args));
  105.       args[AVG_FILE_SIZE] = oldArg;
  106.       
  107.       oldArg = args[SEED];
  108.       args[SEED] = "34.d4";
  109.       assertEquals(-1, sg.run(args));
  110.       args[SEED] = oldArg;
  111.     } finally {
  112.       DIR_STRUCTURE_FILE.delete();
  113.       FILE_STRUCTURE_FILE.delete();
  114.     }
  115.   }
  116.   /** Test if the load generator works fine */
  117.   public void testLoadGenerator() throws Exception {
  118.     final String TEST_SPACE_ROOT = "/test";
  119.     FileWriter writer = new FileWriter(DIR_STRUCTURE_FILE);
  120.     writer.write(DIR_STRUCTURE_FIRST_LINE+"n");
  121.     writer.write(DIR_STRUCTURE_SECOND_LINE+"n");
  122.     writer.close();
  123.     
  124.     writer = new FileWriter(FILE_STRUCTURE_FILE);
  125.     writer.write(FILE_STRUCTURE_FIRST_LINE+"n");
  126.     writer.write(FILE_STRUCTURE_SECOND_LINE+"n");
  127.     writer.close();
  128.     
  129.     MiniDFSCluster cluster = new MiniDFSCluster(CONF, 3, true, null);
  130.     cluster.waitActive();
  131.     
  132.     try {
  133.       DataGenerator dg = new DataGenerator();
  134.       dg.setConf(CONF);
  135.       String [] args = new String[] {"-inDir", OUT_DIR, "-root", TEST_SPACE_ROOT};
  136.       assertEquals(0, dg.run(args));
  137.       final int READ_PROBABILITY = 1;
  138.       final int WRITE_PROBABILITY = 3;
  139.       final int MAX_DELAY_BETWEEN_OPS = 7;
  140.       final int NUM_OF_THREADS = 9;
  141.       final int START_TIME = 11;
  142.       final int ELAPSED_TIME = 13;
  143.       
  144.       LoadGenerator lg = new LoadGenerator();
  145.       lg.setConf(CONF);
  146.       args = new String[] {"-readProbability", "0.3", "-writeProbability", "0.3",
  147.           "-root", TEST_SPACE_ROOT, "-maxDelayBetweenOps", "0",
  148.           "-numOfThreads", "1", "-startTime", 
  149.           Long.toString(System.currentTimeMillis()), "-elapsedTime", "10"};
  150.       
  151.       assertEquals(0, lg.run(args));
  152.       String oldArg = args[READ_PROBABILITY];
  153.       args[READ_PROBABILITY] = "1.1";
  154.       assertEquals(-1, lg.run(args));
  155.       args[READ_PROBABILITY] = "-1.1";
  156.       assertEquals(-1, lg.run(args));
  157.       args[READ_PROBABILITY] = oldArg;
  158.       oldArg = args[WRITE_PROBABILITY];
  159.       args[WRITE_PROBABILITY] = "1.1";
  160.       assertEquals(-1, lg.run(args));
  161.       args[WRITE_PROBABILITY] = "-1.1";
  162.       assertEquals(-1, lg.run(args));
  163.       args[WRITE_PROBABILITY] = "0.9";
  164.       assertEquals(-1, lg.run(args));
  165.       args[READ_PROBABILITY] = oldArg;
  166.       oldArg = args[MAX_DELAY_BETWEEN_OPS];
  167.       args[MAX_DELAY_BETWEEN_OPS] = "1.x1";
  168.       assertEquals(-1, lg.run(args));
  169.       args[MAX_DELAY_BETWEEN_OPS] = oldArg;
  170.       
  171.       oldArg = args[MAX_DELAY_BETWEEN_OPS];
  172.       args[MAX_DELAY_BETWEEN_OPS] = "1.x1";
  173.       assertEquals(-1, lg.run(args));
  174.       args[MAX_DELAY_BETWEEN_OPS] = oldArg;
  175.       
  176.       oldArg = args[NUM_OF_THREADS];
  177.       args[NUM_OF_THREADS] = "-1";
  178.       assertEquals(-1, lg.run(args));
  179.       args[NUM_OF_THREADS] = oldArg;
  180.       
  181.       oldArg = args[START_TIME];
  182.       args[START_TIME] = "-1";
  183.       assertEquals(-1, lg.run(args));
  184.       args[START_TIME] = oldArg;
  185.       oldArg = args[ELAPSED_TIME];
  186.       args[ELAPSED_TIME] = "-1";
  187.       assertEquals(-1, lg.run(args));
  188.       args[ELAPSED_TIME] = oldArg;
  189.     } finally {
  190.       cluster.shutdown();
  191.       DIR_STRUCTURE_FILE.delete();
  192.       FILE_STRUCTURE_FILE.delete();
  193.     }
  194.   }
  195.   
  196.   /**
  197.    * @param args
  198.    */
  199.   public static void main(String[] args) throws Exception {
  200.     TestLoadGenerator loadGeneratorTest = new TestLoadGenerator();
  201.     loadGeneratorTest.testStructureGenerator();
  202.     loadGeneratorTest.testLoadGenerator();
  203.   }
  204. }