Package com.facebook.LinkBench

Source Code of com.facebook.LinkBench.GeneratedDataDump

/*
* Copyright 2012, Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.facebook.LinkBench;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;

import com.facebook.LinkBench.generators.DataGenerator;
import com.facebook.LinkBench.generators.MotifDataGenerator;
import com.facebook.LinkBench.generators.UniformDataGenerator;
/**
* Generate some sample data using data generators, in order to test out compressibility
* of randomly generated data.
*
* This generates several output files consistent of many generated payload data fields
* separated by newlines
*/
public class GeneratedDataDump {
  private static final Random rng = new Random();

  public static void main(String args[]) {
    String outputDir = "";
    if (args.length == 0) {
      outputDir = ".";
    } else if (args.length == 1) {
      outputDir = args[0];
    } else {
      System.err.println("GeneratedDataDump <output dir>");
      System.exit(1);
    }


    // Number of bytes per row
    final int objBytes = 256;
    final int assocBytes = 6;
    // Number of rows to generate
    final int objRows = 250000;
    final int assocRows = 10000000;
    writeGeneratedDataFile(outputDir + "/gen-data-motif.txt", makeMotifObj(), objRows, objBytes);
    writeGeneratedDataFile(outputDir + "/gen-data-uniform.txt", makeUniformObj(), objRows, objBytes);
    writeGeneratedDataFile(outputDir + "/gen-data-assoc-motif.txt", makeMotifAssoc(), assocRows, assocBytes);
    writeGeneratedDataFile(outputDir + "/gen-data-assoc-uniform.txt", makeUniformAssoc(), assocRows, assocBytes);
  }

  private static void writeGeneratedDataFile(String outFileName,
      DataGenerator gen, int rows, int bytes) {
    OutputStream out = null;
    try {
      out = new BufferedOutputStream(new FileOutputStream(outFileName));
    } catch (FileNotFoundException e) {
      System.err.println("file " + outFileName + " could not be opened");
      System.exit(1);
    }


    byte buf[] = new byte[bytes];

    try {
      for (int i = 0; i < rows; i++) {
        gen.fill(rng, buf);
        out.write(buf);
        out.write('\n');
      }
      out.close();
    } catch (IOException e) {
      e.printStackTrace();
      System.exit(1);
    }
  }

  private static DataGenerator makeUniformObj() {
    UniformDataGenerator gen = new UniformDataGenerator();
    gen.init(50, 75);
    return gen;
  }

  private static MotifDataGenerator makeMotifObj() {
    MotifDataGenerator gen = new MotifDataGenerator();
    int start = 50;
    int end = 220;
    double uniqueness = 0.63;
    gen.init(start, end, uniqueness);
    return gen;
  }

  private static DataGenerator makeUniformAssoc() {
    UniformDataGenerator gen = new UniformDataGenerator();
    gen.init(50, 75);
    return gen;
  }

  private static MotifDataGenerator makeMotifAssoc() {
    MotifDataGenerator gen = new MotifDataGenerator();
    int start = 32;
    int end = 100;
    double uniqueness = 0.225;
    int motifSize = 128;
    gen.init(start, end, uniqueness, motifSize);
    return gen;
  }
}
TOP

Related Classes of com.facebook.LinkBench.GeneratedDataDump

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.