public void testFormat() throws Exception {
    localFs = FileSystem.getLocal(defaultConf);
    localFs.delete(workDir, true);

    Job job = new Job(new Configuration(defaultConf));
    Path file = new Path(workDir, "test.txt");

    int seed = new Random().nextInt();
    Random random = new Random(seed);

    // for a variety of lengths
    for (int length = 0; length < MAX_LENGTH; length += random.nextInt(MAX_LENGTH / 10) + 1) {
      // create a file with length entries
      Writer writer = new OutputStreamWriter(localFs.create(file));
      try {
        MyClass mc = new MyClass();
        for (int i = 0; i < length; i++) {
          mc.s = Integer.toString(i);
          mc.v = i;
          byte[] raw = MessagePack.pack(mc);
          byte[] b64e = base64_.encodeBase64(raw);
          byte[] b64d = base64_.decode(b64e);
          MyClass mc2 = MessagePack.unpack(b64d, mc.getClass());
          assertEquals(mc.s, mc2.s);
          assertEquals(mc.v, mc2.v);

          writer.write(base64_.encodeToString(raw));
        }
      } finally {
        writer.close();
      }
      checkFormat(job);
    }
  }
 private void generateSaltIfNeeded(Path saltFilePath, Path secretsPath) throws Exception {
   FileSystem fileSystem = FileSystem.get(saltFilePath.toUri(), getConf());
   if (!fileSystem.exists(saltFilePath)) {
     FSDataOutputStream outputStream = fileSystem.create(saltFilePath);
     BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
     int numSaltsToGenerate = getNumSecrets(secretsPath);
     System.out.printf("Generating %d salts\n", numSaltsToGenerate);
     for (int i = 0; i < numSaltsToGenerate; i++) {
       writer.write(BCrypt.gensalt());
       writer.newLine();
     }
     writer.close();
     outputStream.close();
   }
 }