From 9203047327becb91b21bfc49b75c681b7d1bddb6 Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Tue, 24 Jun 2014 10:38:30 -0400 Subject: [PATCH] CatRank.setupRequest --- .../java/org/capnproto/benchmark/CatRank.java | 41 +++++++++++++++++-- .../java/org/capnproto/benchmark/Common.java | 5 +++ runtime/src/main/java/org/capnproto/Text.java | 4 ++ 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/benchmark/src/main/java/org/capnproto/benchmark/CatRank.java b/benchmark/src/main/java/org/capnproto/benchmark/CatRank.java index 387374b..f729141 100644 --- a/benchmark/src/main/java/org/capnproto/benchmark/CatRank.java +++ b/benchmark/src/main/java/org/capnproto/benchmark/CatRank.java @@ -27,7 +27,7 @@ public class CatRank } - static final String URL_PREFIX = "http://example.com"; + static final Text.Reader URL_PREFIX = new Text.Reader("http://example.com"); public Integer setupRequest(Common.FastRand rng, SearchResultList.Builder request) { int count = rng.nextLessThan(1000); @@ -38,9 +38,39 @@ public class CatRank SearchResult.Builder result = list.get(i); result.setScore(1000.0 - (double)i); int urlSize = rng.nextLessThan(100); - } - // ... + int urlPrefixLength = URL_PREFIX.size(); + StringBuilder url = new StringBuilder(); + url.append(URL_PREFIX); + + for (int j = 0; j < urlSize; j++) { + url.append('a' + rng.nextLessThan(26)); + } + + result.setUrl(new Text.Reader(url.toString())); + + boolean isCat = rng.nextLessThan(8) == 0; + boolean isDog = rng.nextLessThan(8) == 0; + if (isCat && !isDog) { + goodCount += 1; + } + + StringBuilder snippet = new StringBuilder(" "); + + int prefix = rng.nextLessThan(20); + for (int j = 0; j < prefix; ++j) { + snippet.append(Common.WORDS[rng.nextLessThan(Common.WORDS.length)]); + } + if (isCat) { snippet.append("cat "); } + if (isDog) { snippet.append("dog "); } + + int suffix = rng.nextLessThan(20); + for (int j = 0; j < suffix; ++j) { + snippet.append(Common.WORDS[rng.nextLessThan(Common.WORDS.length)]); + } + + result.setSnippet(new Text.Reader(snippet.toString())); + } return goodCount; } @@ -83,4 +113,9 @@ public class CatRank return goodCount == expectedGoodCount; } + public static void main(String[] args) { + CatRank testCase = new CatRank(); + testCase.execute(args, SearchResultList.factory, SearchResultList.factory); + } + } diff --git a/benchmark/src/main/java/org/capnproto/benchmark/Common.java b/benchmark/src/main/java/org/capnproto/benchmark/Common.java index 73ca64c..6e7c7a5 100644 --- a/benchmark/src/main/java/org/capnproto/benchmark/Common.java +++ b/benchmark/src/main/java/org/capnproto/benchmark/Common.java @@ -43,5 +43,10 @@ public class Common { } + public static String[] WORDS = { + "foo ", "bar ", "baz ", "qux ", "quux ", "corge ", "grault ", "garply ", "waldo ", "fred ", + "plugh ", "xyzzy ", "thud " + }; + } diff --git a/runtime/src/main/java/org/capnproto/Text.java b/runtime/src/main/java/org/capnproto/Text.java index 0f43432..e742682 100644 --- a/runtime/src/main/java/org/capnproto/Text.java +++ b/runtime/src/main/java/org/capnproto/Text.java @@ -26,6 +26,10 @@ public final class Text { } } + public final int size() { + return this.size; + } + @Override public final String toString() { byte[] bytes = new byte[this.size];