diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-11-08 08:54:44 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-11-08 08:54:44 +0100 |
commit | 62188314149190ee4c9aab8e986f962ea5a3f2f5 (patch) | |
tree | 0e224742a91edf985a59c3bb724e64f738aba672 /container-search | |
parent | a6aede7c79dcda9bee20174296b9673d9e0b32b1 (diff) |
Deprecate statistics
Diffstat (limited to 'container-search')
4 files changed, 9 insertions, 254 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/statistics/PeakQpsSearcher.java b/container-search/src/main/java/com/yahoo/search/statistics/PeakQpsSearcher.java index e4bce05b4f2..2823a7d74e1 100644 --- a/container-search/src/main/java/com/yahoo/search/statistics/PeakQpsSearcher.java +++ b/container-search/src/main/java/com/yahoo/search/statistics/PeakQpsSearcher.java @@ -14,13 +14,19 @@ import com.yahoo.statistics.Handle; import com.yahoo.statistics.Statistics; import com.yahoo.statistics.Value; -import java.util.*; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Deque; +import java.util.List; +import java.util.ListIterator; /** * Aggregate peak qps and expose through meta hits and/or log events. * * @author Steinar Knutsen + * @deprecated Will be removed on Vespa 8 */ +@Deprecated public class PeakQpsSearcher extends Searcher { private final ThreadLocalDirectory<Deque<QueryRatePerSecond>, Long> directory; diff --git a/container-search/src/main/java/com/yahoo/search/statistics/TimingSearcher.java b/container-search/src/main/java/com/yahoo/search/statistics/TimingSearcher.java index 8aa68d83d88..5d036b8fa20 100644 --- a/container-search/src/main/java/com/yahoo/search/statistics/TimingSearcher.java +++ b/container-search/src/main/java/com/yahoo/search/statistics/TimingSearcher.java @@ -19,8 +19,10 @@ import com.yahoo.statistics.Value; * measuring time consumption a search chain. * * @author Steinar Knutsen + * @deprecated Will be removed on Vespa 8 */ @Before("rawQuery") +@Deprecated public class TimingSearcher extends PingableSearcher { private Value measurements; diff --git a/container-search/src/test/java/com/yahoo/search/statistics/PeakQpsTestCase.java b/container-search/src/test/java/com/yahoo/search/statistics/PeakQpsTestCase.java deleted file mode 100644 index 4bc8ee76165..00000000000 --- a/container-search/src/test/java/com/yahoo/search/statistics/PeakQpsTestCase.java +++ /dev/null @@ -1,164 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.search.statistics; - -import static org.junit.Assert.*; - -import java.util.Deque; -import java.util.List; - -import com.yahoo.statistics.Statistics; -import org.junit.Test; - -import com.yahoo.component.chain.Chain; -import com.yahoo.concurrent.LocalInstance; -import com.yahoo.concurrent.ThreadLocalDirectory; -import com.yahoo.search.Query; -import com.yahoo.search.Result; -import com.yahoo.search.Searcher; -import com.yahoo.search.result.Hit; -import com.yahoo.search.searchchain.Execution; -import com.yahoo.search.statistics.PeakQpsSearcher.QueryRatePerSecond; - -/** - * Check peak QPS aggregation has a chance of working. - * - * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> - */ -public class PeakQpsTestCase { - - static class Producer implements Runnable { - private final ThreadLocalDirectory<Deque<QueryRatePerSecond>, Long> rates; - - Producer(ThreadLocalDirectory<Deque<QueryRatePerSecond>, Long> rates) { - this.rates = rates; - } - - @Override - public void run() { - LocalInstance<Deque<QueryRatePerSecond>, Long> rate = rates.getLocalInstance(); - rates.update(1L, rate); - rates.update(2L, rate); - rates.update(2L, rate); - rates.update(3L, rate); - rates.update(3L, rate); - rates.update(3L, rate); - rates.update(4L, rate); - rates.update(4L, rate); - rates.update(4L, rate); - rates.update(4L, rate); - } - } - - static class LaterProducer implements Runnable { - private final ThreadLocalDirectory<Deque<QueryRatePerSecond>, Long> rates; - - LaterProducer(ThreadLocalDirectory<Deque<QueryRatePerSecond>, Long> rates) { - this.rates = rates; - } - - @Override - public void run() { - LocalInstance<Deque<QueryRatePerSecond>, Long> rate = rates.getLocalInstance(); - rates.update(2L, rate); - rates.update(2L, rate); - rates.update(3L, rate); - rates.update(3L, rate); - rates.update(3L, rate); - rates.update(5L, rate); - rates.update(5L, rate); - rates.update(6L, rate); - rates.update(7L, rate); - } - } - - @Test - public void checkBasicDataAggregation() { - ThreadLocalDirectory<Deque<QueryRatePerSecond>, Long> directory = PeakQpsSearcher.createDirectory(); - final int threadCount = 20; - Thread[] threads = new Thread[threadCount]; - for (int i = 0; i < threadCount; ++i) { - Producer p = new Producer(directory); - threads[i] = new Thread(p); - threads[i].start(); - } - for (Thread t : threads) { - try { - t.join(); - } catch (InterruptedException e) { - // nop - } - } - List<Deque<QueryRatePerSecond>> measurements = directory.fetch(); - List<QueryRatePerSecond> results = PeakQpsSearcher.merge(measurements); - assertTrue(results.get(0).when == 1L); - assertTrue(results.get(0).howMany == threadCount); - assertTrue(results.get(1).when == 2L); - assertTrue(results.get(1).howMany == threadCount * 2); - assertTrue(results.get(2).when == 3L); - assertTrue(results.get(2).howMany == threadCount * 3); - assertTrue(results.get(3).when == 4L); - assertTrue(results.get(3).howMany == threadCount * 4); - } - - @Test - public void checkMixedDataAggregation() { - ThreadLocalDirectory<Deque<QueryRatePerSecond>, Long> directory = PeakQpsSearcher.createDirectory(); - final int firstThreads = 20; - final int secondThreads = 20; - final int threadCount = firstThreads + secondThreads; - Thread[] threads = new Thread[threadCount]; - for (int i = 0; i < threadCount; ++i) { - if (i < firstThreads) { - Producer p = new Producer(directory); - threads[i] = new Thread(p); - } else { - LaterProducer p = new LaterProducer(directory); - threads[i] = new Thread(p); - } - threads[i].start(); - - } - for (Thread t : threads) { - try { - t.join(); - } catch (InterruptedException e) { - // nop - } - } - List<Deque<QueryRatePerSecond>> measurements = directory.fetch(); - List<QueryRatePerSecond> results = PeakQpsSearcher.merge(measurements); - assertTrue(results.size() == 7); - assertTrue(results.get(0).when == 1L); - assertTrue(results.get(0).howMany == firstThreads); - assertTrue(results.get(1).when == 2L); - assertTrue(results.get(1).howMany == threadCount * 2); - assertTrue(results.get(2).when == 3L); - assertTrue(results.get(2).howMany == threadCount * 3); - assertTrue(results.get(3).when == 4L); - assertTrue(results.get(3).howMany == firstThreads * 4); - assertTrue(results.get(4).when == 5L); - assertTrue(results.get(4).howMany == secondThreads * 2); - assertTrue(results.get(5).when == 6L); - assertTrue(results.get(5).howMany == secondThreads); - assertTrue(results.get(6).when == 7L); - assertTrue(results.get(6).howMany == secondThreads); - } - - @Test - public void checkSearch() { - MeasureQpsConfig config = new MeasureQpsConfig( - new MeasureQpsConfig.Builder().outputmethod( - MeasureQpsConfig.Outputmethod.METAHIT).queryproperty( - "qpsprobe")); - Searcher s = new PeakQpsSearcher(config, Statistics.nullImplementation); - Chain<Searcher> c = new Chain<>(s); - Execution e = new Execution(c, Execution.Context.createContextStub()); - e.search(new Query("/?query=a")); - new Execution(c, Execution.Context.createContextStub()); - Result r = e.search(new Query("/?query=a&qpsprobe=true")); - final Hit hit = r.hits().get(0); - assertTrue(hit instanceof PeakQpsSearcher.QpsHit); - assertNotNull(hit.fields().get(PeakQpsSearcher.QpsHit.MEAN_QPS)); - assertNotNull(hit.fields().get(PeakQpsSearcher.QpsHit.PEAK_QPS)); - } -} diff --git a/container-search/src/test/java/com/yahoo/search/statistics/TimingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/statistics/TimingSearcherTestCase.java deleted file mode 100644 index 673d38cc2b8..00000000000 --- a/container-search/src/test/java/com/yahoo/search/statistics/TimingSearcherTestCase.java +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.search.statistics; - -import com.yahoo.component.ComponentId; -import com.yahoo.prelude.Ping; -import com.yahoo.search.Query; -import com.yahoo.search.Result; -import com.yahoo.search.result.Hit; -import com.yahoo.search.searchchain.Execution; -import com.yahoo.search.statistics.TimingSearcher.Parameters; -import com.yahoo.statistics.Statistics; -import com.yahoo.statistics.Value; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class TimingSearcherTestCase { - - public static class MockValue extends Value { - public int putCount = 0; - - public MockValue() { - super("mock", Statistics.nullImplementation, new Value.Parameters()); - } - - @Override - public void put(double x) { - putCount += 1; - } - } - - @Test - public void testMeasurementSearchPath() { - Parameters p = new Parameters("timingtest", TimeTracker.Activity.SEARCH); - TimingSearcher ts = new TimingSearcher(new ComponentId("lblblbl"), p, Statistics.nullImplementation); - MockValue v = new MockValue(); - ts.setMeasurements(v); - Execution exec = new Execution(ts, Execution.Context.createContextStub()); - Result r = exec.search(new Query("/?query=a")); - Hit f = new Hit("blblbl"); - f.setFillable(); - r.hits().add(f); - exec.fill(r, "whatever"); - exec.fill(r, "lalala"); - exec.ping(new Ping()); - exec.ping(new Ping()); - exec.ping(new Ping()); - assertEquals(1, v.putCount); - } - - @Test - public void testMeasurementFillPath() { - Parameters p = new Parameters("timingtest", TimeTracker.Activity.FILL); - TimingSearcher ts = new TimingSearcher(new ComponentId("lblblbl"), p, Statistics.nullImplementation); - MockValue v = new MockValue(); - ts.setMeasurements(v); - Execution exec = new Execution(ts, Execution.Context.createContextStub()); - Result r = exec.search(new Query("/?query=a")); - Hit f = new Hit("blblbl"); - f.setFillable(); - r.hits().add(f); - exec.fill(r, "whatever"); - exec.fill(r, "lalala"); - exec.ping(new Ping()); - exec.ping(new Ping()); - exec.ping(new Ping()); - assertEquals(2, v.putCount); - } - - @Test - public void testMeasurementPingPath() { - Parameters p = new Parameters("timingtest", TimeTracker.Activity.PING); - TimingSearcher ts = new TimingSearcher(new ComponentId("lblblbl"), p, Statistics.nullImplementation); - MockValue v = new MockValue(); - ts.setMeasurements(v); - Execution exec = new Execution(ts, Execution.Context.createContextStub()); - Result r = exec.search(new Query("/?query=a")); - Hit f = new Hit("blblbl"); - f.setFillable(); - r.hits().add(f); - exec.fill(r, "whatever"); - exec.fill(r, "lalala"); - exec.ping(new Ping()); - exec.ping(new Ping()); - exec.ping(new Ping()); - assertEquals(3, v.putCount); - } - -} |