blob: 2ae12ac4110038ad7e7746d9cdd8f4b65c9c4263 [file] [log] [blame]
import java.io.*;
import java.util.Random;
import org.codehaus.jackson.*;
public class GenerateDoubleDoc
{
final static int AVG_ARRAY_LEN = 32;
private GenerateDoubleDoc() { }
private void generate(OutputStream out, int kbSize)
throws IOException
{
int bsize = kbSize * 1000;
// Let's first buffer in memory, to know exact length
ByteArrayOutputStream bos = new ByteArrayOutputStream(bsize + 500);
Random r = new Random(kbSize);
JsonGenerator gen = new JsonFactory().createJsonGenerator(bos, JsonEncoding.UTF8);
gen.writeStartArray(); // outermost array
gen.writeStartArray(); // inner array
do {
// First, do we close current, start new array?
if (r.nextInt(AVG_ARRAY_LEN) == 3) { // to get average array length of 16
gen.writeEndArray();
if (r.nextBoolean()) {
gen.writeRaw("\n");
}
gen.writeStartArray();
gen.flush();
}
// Then need to calculate number to output
float f;
do {
f = Float.intBitsToFloat(r.nextInt());
} while (Double.isNaN(f) || Double.isInfinite(f));
gen.writeNumber(f);
} while (bos.size() < bsize);
gen.writeEndArray();
gen.writeEndArray();
gen.writeRaw("\n");
gen.close();
bos.writeTo(out);
}
public static void main(String[] args)
throws Exception
{
if (args.length != 1) {
System.err.println("Usage: java test.GenerateDoubleDoc <size-in-kbytes>");
System.exit(1);
}
new GenerateDoubleDoc().generate(System.out, Integer.parseInt(args[0]));
System.out.flush();
}
}