summaryrefslogtreecommitdiffstats
path: root/container-search-and-docproc/src/test/java/com/yahoo/container/handler/observability/ApplicationStatusHandlerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-search-and-docproc/src/test/java/com/yahoo/container/handler/observability/ApplicationStatusHandlerTest.java')
-rw-r--r--container-search-and-docproc/src/test/java/com/yahoo/container/handler/observability/ApplicationStatusHandlerTest.java132
1 files changed, 132 insertions, 0 deletions
diff --git a/container-search-and-docproc/src/test/java/com/yahoo/container/handler/observability/ApplicationStatusHandlerTest.java b/container-search-and-docproc/src/test/java/com/yahoo/container/handler/observability/ApplicationStatusHandlerTest.java
new file mode 100644
index 00000000000..317f5fc1329
--- /dev/null
+++ b/container-search-and-docproc/src/test/java/com/yahoo/container/handler/observability/ApplicationStatusHandlerTest.java
@@ -0,0 +1,132 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.container.handler.observability;
+
+import com.yahoo.component.ComponentId;
+import com.yahoo.component.chain.Chain;
+import com.yahoo.container.core.ApplicationMetadataConfig;
+import com.yahoo.container.jdisc.JdiscBindingsConfig;
+import com.yahoo.jdisc.handler.RequestHandler;
+import com.yahoo.jdisc.service.ClientProvider;
+import com.yahoo.processing.Processor;
+import com.yahoo.processing.Request;
+import com.yahoo.processing.Response;
+import com.yahoo.processing.execution.Execution;
+import com.yahoo.processing.execution.chain.ChainRegistry;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import java.util.HashMap;
+
+import static com.yahoo.container.jdisc.JdiscBindingsConfig.Handlers;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author gjoranv
+ * @since 5.1.10
+ */
+public class ApplicationStatusHandlerTest {
+
+ @Test
+ public void application_configs_are_rendered() {
+ ApplicationMetadataConfig metaConfig = new ApplicationMetadataConfig(
+ new ApplicationMetadataConfig.Builder()
+ .checksum("abc")
+ .name("app")
+ .path("/a/b/c")
+ .timestamp(3000)
+ .user("donald"));
+
+ ApplicationUserdataConfig userConfig = new ApplicationUserdataConfig(
+ new ApplicationUserdataConfig.Builder()
+ .version("v1"));
+
+ String json = ApplicationStatusHandler.renderApplicationConfigs(metaConfig, userConfig).toString();
+ assertTrue(json.contains("version"));
+ assertTrue(json.contains("meta"));
+ assertTrue(json.contains("abc"));
+ assertTrue(json.contains("app"));
+ assertTrue(json.contains("/a/b/c"));
+ assertTrue(json.contains("3000"));
+ assertTrue(json.contains("donald"));
+
+ assertTrue(json.contains("v1"));
+ }
+
+ @Test
+ public void object_components_are_rendered() {
+ HashMap<ComponentId, Object> id2object = new HashMap<>();
+ id2object.put(new ComponentId("myComponent"), new Object());
+
+ String json = ApplicationStatusHandler.renderObjectComponents(id2object).toString();
+ assertTrue(json.contains("myComponent"));
+ }
+
+ @Test
+ public void request_handlers_are_rendered() {
+ final String id = "myHandler";
+ final String serverBinding1 = "http://*/serverBinding";
+ final String serverBinding2 = "http://*/anotherServerBinding";
+ final String clientBinding = "http://*/clientBinding";
+
+ HashMap<ComponentId, RequestHandler> handlersById = new HashMap<>();
+ handlersById.put(new ComponentId(id), Mockito.mock(RequestHandler.class));
+
+ JdiscBindingsConfig bindingsConfig = new JdiscBindingsConfig(new JdiscBindingsConfig.Builder()
+ .handlers(id, new Handlers.Builder()
+ .serverBindings(serverBinding1)
+ .serverBindings(serverBinding2)
+ .clientBindings(clientBinding))
+ );
+ String json = ApplicationStatusHandler.renderRequestHandlers(bindingsConfig, handlersById).toString();
+ assertTrue(json.contains("\"" + id + "\""));
+ assertTrue(json.contains(serverBinding1));
+ assertTrue(json.contains(serverBinding2));
+ assertTrue(json.contains(clientBinding));
+ }
+
+ @Test
+ public void client_providers_are_rendered() {
+ final String id = "myClient";
+ final String clientBinding = "http://*/clientBinding";
+ final String clientBinding2 = "http://*/anotherClientBinding";
+ final String serverBinding = "http://*/serverBinding";
+
+ HashMap<ComponentId, ClientProvider> clientsById = new HashMap<>();
+ clientsById.put(new ComponentId(id), Mockito.mock(ClientProvider.class));
+
+ JdiscBindingsConfig bindingsConfig = new JdiscBindingsConfig(new JdiscBindingsConfig.Builder()
+ .handlers(id, new Handlers.Builder()
+ .clientBindings(clientBinding)
+ .clientBindings(clientBinding2)
+ .serverBindings(serverBinding))
+ );
+ String json = ApplicationStatusHandler.renderRequestHandlers(bindingsConfig, clientsById).toString();
+ System.out.println(json);
+ assertTrue(json.contains("\"" + id + "\""));
+ assertTrue(json.contains(clientBinding));
+ assertTrue(json.contains(clientBinding2));
+ assertTrue(json.contains(serverBinding));
+ }
+
+ @Test
+ public void chains_are_rendered() {
+ ChainRegistry<Processor> chains = new ChainRegistry<>();
+ Chain<Processor> chain = new Chain<>("myChain", new VoidProcessor(new ComponentId("voidProcessor")));
+ chains.register(new ComponentId("myChain"), chain);
+
+ String json = ApplicationStatusHandler.StatusResponse.renderChains(chains).toString();
+ assertTrue(json.contains("myChain"));
+ assertTrue(json.contains("voidProcessor"));
+ }
+
+ private static class VoidProcessor extends Processor {
+ private VoidProcessor(ComponentId id) {
+ super();
+ initId(id);
+ }
+ @Override
+ public Response process(Request request, Execution processorExecution) {
+ return null;
+ }
+ }
+}