@SuppressWarnings("unchecked")
  public static <T extends InputSplit> void createSplitFiles(Path jobSubmitDir, 
      Configuration conf, FileSystem fs, List<InputSplit> splits) 
  throws IOException, InterruptedException {
    T[] array = (T[]) splits.toArray(new InputSplit[splits.size()]);
    createSplitFiles(jobSubmitDir, conf, fs, array);
  }
@Test
  public void testMaxBlockLocationsNewSplits() throws Exception {
    TEST_DIR.mkdirs();
    try {
      Configuration conf = new Configuration();
      conf.setInt(MRConfig.MAX_BLOCK_LOCATIONS_KEY, 4);
      Path submitDir = new Path(TEST_DIR.getAbsolutePath());
      FileSystem fs = FileSystem.getLocal(conf);
      FileSplit split = new FileSplit(new Path("/some/path"), 0, 1,
          new String[] { "loc1", "loc2", "loc3", "loc4", "loc5" });
      JobSplitWriter.createSplitFiles(submitDir, conf, fs,
          new FileSplit[] { split });
      JobSplit.TaskSplitMetaInfo[] infos =
          SplitMetaInfoReader.readSplitMetaInfo(new JobID(), fs, conf,
              submitDir);
      assertEquals("unexpected number of splits", 1, infos.length);
      assertEquals("unexpected number of split locations",
          4, infos[0].getLocations().length);
    } finally {
      FileUtil.fullyDelete(TEST_DIR);
    }
  }