/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.nifi.reporting.ambari.api; import org.junit.Assert; import org.junit.Test; import javax.json.Json; import javax.json.JsonArray; import javax.json.JsonBuilderFactory; import javax.json.JsonObject; import java.util.Collections; import java.util.HashMap; import java.util.Map; public class TestMetricsBuilder { @Test public void testBuildMetricsObject() { final Map<String, ?> config = Collections.emptyMap(); final JsonBuilderFactory factory = Json.createBuilderFactory(config); final String instanceId = "1234-5678-1234-5678"; final String applicationId = "NIFI"; final String hostname = "localhost"; final long timestamp = System.currentTimeMillis(); final Map<String,String> metrics = new HashMap<>(); metrics.put("a", "1"); metrics.put("b", "2"); final MetricsBuilder metricsBuilder = new MetricsBuilder(factory); final JsonObject metricsObject = metricsBuilder .applicationId(applicationId) .instanceId(instanceId) .hostname(hostname) .timestamp(timestamp) .addAllMetrics(metrics) .build(); final JsonArray metricsArray = metricsObject.getJsonArray("metrics"); Assert.assertNotNull(metricsArray); Assert.assertEquals(2, metricsArray.size()); JsonObject firstMetric = metricsArray.getJsonObject(0); if (!"a".equals(firstMetric.getString(MetricFields.METRIC_NAME))) { firstMetric = metricsArray.getJsonObject(1); } Assert.assertEquals("a", firstMetric.getString(MetricFields.METRIC_NAME)); Assert.assertEquals(applicationId, firstMetric.getString(MetricFields.APP_ID)); Assert.assertEquals(instanceId, firstMetric.getString(MetricFields.INSTANCE_ID)); Assert.assertEquals(hostname, firstMetric.getString(MetricFields.HOSTNAME)); Assert.assertEquals(String.valueOf(timestamp), firstMetric.getString(MetricFields.TIMESTAMP)); final JsonObject firstMetricValues = firstMetric.getJsonObject("metrics"); Assert.assertEquals("1", firstMetricValues.getString("" + timestamp)); } }