Skip to content

Commit

Permalink
more control over dimensions/cardinality
Browse files Browse the repository at this point in the history
  • Loading branch information
dclim committed Jun 20, 2016
1 parent c7ec918 commit 667b7ad
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 16 deletions.
27 changes: 18 additions & 9 deletions src/main/java/io/imply/jackhammer/EventGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,27 @@
public class EventGenerator
{
private static final Random RND = new Random();
private static final String EVENT_FORMAT = "{\"timestamp\":\"%s\", \"dim1\":\"%s\", \"dim2\":\"%s\", \"value\":%d}";
private static final String TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
private static final String[] METHODS = {"GET", "PUT", "POST", "DELETE", "OPTIONS", "HEAD"};

public static String generate(int cardinality)
public static String generate(int numLowCardDims, int numHighCardDims, int lowCardRange, int highCardRange)
{
return String.format(
EVENT_FORMAT,
new DateTime(DateTimeZone.UTC).toString(TIME_FORMAT),
METHODS[RND.nextInt(6)],
RND.nextInt(cardinality),
RND.nextInt(1000000)
StringBuilder builder = new StringBuilder(150);
builder.append(
String.format(
"{\"timestamp\":\"%s\", \"value\":%d",
new DateTime(DateTimeZone.UTC).toString(TIME_FORMAT),
RND.nextInt(1000000)
)
);

for (int i = 0; i < numLowCardDims; i++) {
builder.append(String.format(", \"dim%d\":\"%s\"", i, RND.nextInt(lowCardRange)));
}

for (int i = numLowCardDims; i < numLowCardDims + numHighCardDims; i++) {
builder.append(String.format(", \"dim%d\":\"%s\"", i, RND.nextInt(highCardRange)));
}

return builder.append("}").toString();
}
}
19 changes: 16 additions & 3 deletions src/main/java/io/imply/jackhammer/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,18 @@ public class Main
@Option(name = {"-n", "--threads"}, description = "Number of threads (default: 1)")
public int numThreads = 1;

@Option(name = {"-c", "--cardinality"}, description = "Cardinality (default: 10)")
public int cardinality = 10;
@Option(name = {"-nl"}, description = "Number of low cardinality dimensions (default: 1)")
public int numLowCardDims = 1;

@Option(name = {"-nh"}, description = "Number of high cardinality dimensions (default: 0)")
public int numHighCardDims = 0;

@Option(name = {"-rl"}, description = "Low cardinality range (default: 10)")
public int lowCardRange = 10;

@Option(name = {"-rh"}, description = "High cardinality range (default: 1000000)")
public int highCardRange = 1000000;


public static void main(String[] args) throws Exception
{
Expand Down Expand Up @@ -85,7 +95,10 @@ public void run() throws InterruptedException
rate,
eventsPerThread,
numThreads,
cardinality
numLowCardDims,
numHighCardDims,
lowCardRange,
highCardRange
);
runner.run();

Expand Down
23 changes: 19 additions & 4 deletions src/main/java/io/imply/jackhammer/Runner.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@ public class Runner
private final long eventsPerThread;
private final int rate;
private final int numThreads;
private final int cardinality;
private final int numLowCardDims;
private final int numHighCardDims;
private final int lowCardRange;
private final int highCardRange;
private final ExecutorService executorService;
private final ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();

Expand All @@ -43,14 +46,26 @@ public class Runner
private long startTime;
private List<LittleHammer> littleHammers = new ArrayList<>();

public Runner(KafkaEventWriter writer, int rate, long eventsPerThread, int numThreads, int cardinality)
public Runner(
KafkaEventWriter writer,
int rate,
long eventsPerThread,
int numThreads,
int numLowCardDims,
int numHighCardDims,
int lowCardRange,
int highCardRange
)
{
this.writer = writer;
this.eventsPerThread = eventsPerThread;
this.rate = rate;
this.numThreads = numThreads;
this.executorService = Executors.newFixedThreadPool(numThreads);
this.cardinality = cardinality;
this.numLowCardDims = numLowCardDims;
this.numHighCardDims = numHighCardDims;
this.lowCardRange = lowCardRange;
this.highCardRange = highCardRange;
}

public void run() throws InterruptedException
Expand Down Expand Up @@ -133,7 +148,7 @@ public void run()
break;
}

writer.write(EventGenerator.generate(cardinality));
writer.write(EventGenerator.generate(numLowCardDims, numHighCardDims, lowCardRange, highCardRange));
counter++;

if (rate > 0) {
Expand Down

0 comments on commit 667b7ad

Please sign in to comment.