aboutsummaryrefslogtreecommitdiffstats
path: root/application
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2023-03-03 15:16:12 +0100
committerJon Bratseth <bratseth@gmail.com>2023-03-03 15:16:12 +0100
commit47188f0c7749ec328e4f9bc555c44b8ab2b90182 (patch)
tree8216de8385b45ed52364c8e52ae92f00d86c7e1f /application
parentf3d1ec3b144acbfde712a6cd61a5ff47e1ecf1b1 (diff)
Use the metric provider returned after configuration
Diffstat (limited to 'application')
-rw-r--r--application/src/main/java/com/yahoo/application/Application.java2
-rw-r--r--application/src/test/java/com/yahoo/application/ApplicationTest.java22
-rw-r--r--application/src/test/java/com/yahoo/application/container/components/ComponentWithMetrics.java27
3 files changed, 50 insertions, 1 deletions
diff --git a/application/src/main/java/com/yahoo/application/Application.java b/application/src/main/java/com/yahoo/application/Application.java
index b4857d18459..d9234584630 100644
--- a/application/src/main/java/com/yahoo/application/Application.java
+++ b/application/src/main/java/com/yahoo/application/Application.java
@@ -345,7 +345,7 @@ public final class Application implements AutoCloseable {
}
// generate the services xml and load the container
- private Application build() throws Exception {
+ public Application build() throws Exception {
Application app = null;
Exception exception = null;
diff --git a/application/src/test/java/com/yahoo/application/ApplicationTest.java b/application/src/test/java/com/yahoo/application/ApplicationTest.java
index 5b4a68756f0..6b394cdebd9 100644
--- a/application/src/test/java/com/yahoo/application/ApplicationTest.java
+++ b/application/src/test/java/com/yahoo/application/ApplicationTest.java
@@ -2,6 +2,7 @@
package com.yahoo.application;
import com.yahoo.application.container.MockServer;
+import com.yahoo.application.container.components.ComponentWithMetrics;
import com.yahoo.application.container.docprocs.MockDocproc;
import com.yahoo.application.container.handler.Request;
import com.yahoo.application.container.handler.Response;
@@ -15,6 +16,8 @@ import com.yahoo.docproc.Processing;
import com.yahoo.document.DocumentRemove;
import com.yahoo.document.DocumentType;
import com.yahoo.jdisc.handler.RequestHandler;
+import com.yahoo.metrics.simple.Bucket;
+import com.yahoo.metrics.simple.jdisc.SimpleMetricConsumer;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.handler.SearchHandler;
@@ -263,6 +266,25 @@ public class ApplicationTest {
}
@Test
+ void application_generation_metric() throws Exception {
+ try (ApplicationFacade app = new ApplicationFacade(Application.fromBuilder(new Application.Builder().container("default", new Application.Builder.Container()
+ .component(ComponentWithMetrics.class))))) {
+ var component = (ComponentWithMetrics)app.getComponentById(ComponentWithMetrics.class.getName());
+ assertNotNull(component);
+ var metrics = (SimpleMetricConsumer)component.metrics().newInstance(); // not actually a new instance
+ assertNotNull(metrics);
+ int maxWaitMs = 10000;
+ Bucket snapshot = null;
+ while (maxWaitMs-- > 0 && ( snapshot = metrics.receiver().getSnapshot() ) == null) {
+ Thread.sleep(1);
+ }
+ assertNotNull(snapshot);
+ assertEquals(1, snapshot.getValuesForMetric("application_generation").size());
+ assertEquals(0, snapshot.getValuesForMetric("application_generation").iterator().next().getValue().getLast());
+ }
+ }
+
+ @Test
void component_with_config() throws Exception {
MockApplicationConfig config = new MockApplicationConfig(new MockApplicationConfig.Builder().mystruct(new MockApplicationConfig.Mystruct.Builder().id("foo").value("bar")));
try (ApplicationFacade app = new ApplicationFacade(Application.fromBuilder(new Application.Builder().container("default", new Application.Builder.Container()
diff --git a/application/src/test/java/com/yahoo/application/container/components/ComponentWithMetrics.java b/application/src/test/java/com/yahoo/application/container/components/ComponentWithMetrics.java
new file mode 100644
index 00000000000..45bb9bd846d
--- /dev/null
+++ b/application/src/test/java/com/yahoo/application/container/components/ComponentWithMetrics.java
@@ -0,0 +1,27 @@
+package com.yahoo.application.container.components;
+
+import com.yahoo.metrics.simple.jdisc.JdiscMetricsFactory;
+import com.yahoo.search.Query;
+import com.yahoo.search.Result;
+import com.yahoo.search.Searcher;
+import com.yahoo.search.searchchain.Execution;
+
+/**
+ * @author bratseth
+ */
+public class ComponentWithMetrics extends Searcher {
+
+ private final JdiscMetricsFactory metrics;
+
+ public ComponentWithMetrics(JdiscMetricsFactory metrics) {
+ this.metrics = metrics;
+ }
+
+ public JdiscMetricsFactory metrics() { return metrics; }
+
+ @Override
+ public Result search(Query query, Execution execution) {
+ return execution.search(query);
+ }
+
+}