http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/hbase_master_jaas.conf.j2 ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/hbase_master_jaas.conf.j2 b/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/hbase_master_jaas.conf.j2 new file mode 100644 index 0000000..a93c36c --- /dev/null +++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/hbase_master_jaas.conf.j2 @@ -0,0 +1,26 @@ +{# +# 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. +#} + +Client { +com.sun.security.auth.module.Krb5LoginModule required +useKeyTab=true +storeKey=true +useTicketCache=false +keyTab="{{master_keytab_path}}" +principal="{{master_jaas_princ}}"; +};
http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/hbase_regionserver_jaas.conf.j2 ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/hbase_regionserver_jaas.conf.j2 b/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/hbase_regionserver_jaas.conf.j2 new file mode 100644 index 0000000..7097481 --- /dev/null +++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/hbase_regionserver_jaas.conf.j2 @@ -0,0 +1,26 @@ +{# +# 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. +#} + +Client { +com.sun.security.auth.module.Krb5LoginModule required +useKeyTab=true +storeKey=true +useTicketCache=false +keyTab="{{regionserver_keytab_path}}" +principal="{{regionserver_jaas_princ}}"; +}; http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/metric_groups.conf.j2 ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/metric_groups.conf.j2 b/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/metric_groups.conf.j2 new file mode 100644 index 0000000..aa03d19 --- /dev/null +++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/metric_groups.conf.j2 @@ -0,0 +1,37 @@ +{# +# 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. +#} + +{ + "host_metric_groups": { + "all": { + "collect_every": "10", + "metrics": [ + { + "name": "bytes_out", + "value_threshold": "128" + } + ] + } + }, + "process_metric_groups": { + "": { + "collect_every": "15", + "metrics": [] + } + } +} http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/metric_monitor.ini.j2 ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/metric_monitor.ini.j2 b/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/metric_monitor.ini.j2 new file mode 100644 index 0000000..5e672fc --- /dev/null +++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/metric_monitor.ini.j2 @@ -0,0 +1,30 @@ +{# +# 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. +#} + +[default] +debug_level = INFO +metrics_server = {{ams_collector_host_single}}:{{ams_collector_port}} +enable_time_threshold = false +enable_value_threshold = false + +[emitter] +send_interval = 60 + +[collector] +collector_sleep_interval = 5 +max_queue_size = 5000 http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/regionservers.j2 ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/regionservers.j2 b/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/regionservers.j2 new file mode 100644 index 0000000..fc6cc37 --- /dev/null +++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/AMS/package/templates/regionservers.j2 @@ -0,0 +1,20 @@ +{# +# 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. +#} + +{% for host in rs_hosts %}{{host}} +{% endfor %} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/main/resources/stacks/HDP/2.2/services/HBASE/configuration/hbase-env.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/HBASE/configuration/hbase-env.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/services/HBASE/configuration/hbase-env.xml new file mode 100644 index 0000000..9f37dd4 --- /dev/null +++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/HBASE/configuration/hbase-env.xml @@ -0,0 +1,139 @@ +<?xml version="1.0"?> +<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> +<!-- +/** + * 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. + */ +--> + +<configuration> + <property> + <name>hbase_log_dir</name> + <value>/var/log/hbase</value> + <description>Log Directories for HBase.</description> + </property> + <property> + <name>hbase_pid_dir</name> + <value>/var/run/hbase</value> + <description>Pid Directory for HBase.</description> + </property> + <property> + <name>hbase_regionserver_heapsize</name> + <value>1024</value> + <description>HBase RegionServer Heap Size.</description> + </property> + <property> + <name>hbase_regionserver_xmn_max</name> + <value>512</value> + <description>HBase RegionServer maximum value for minimum heap size.</description> + </property> + <property> + <name>hbase_regionserver_xmn_ratio</name> + <value>0.2</value> + <description>HBase RegionServer minimum heap size is calculated as a percentage of max heap size.</description> + </property> + <property> + <name>hbase_master_heapsize</name> + <value>1024</value> + <description>HBase Master Heap Size</description> + </property> + <property> + <name>hbase_user</name> + <value>hbase</value> + <property-type>USER</property-type> + <description>HBase User Name.</description> + </property> + + <!-- hbase-env.sh --> + <property> + <name>content</name> + <description>This is the jinja template for hbase-env.sh file</description> + <value> +# Set environment variables here. + +# The java implementation to use. Java 1.6 required. +export JAVA_HOME={{java64_home}} + +# HBase Configuration directory +export HBASE_CONF_DIR=${HBASE_CONF_DIR:-{{hbase_conf_dir}}} + +# Extra Java CLASSPATH elements. Optional. +export HBASE_CLASSPATH=${HBASE_CLASSPATH} + +if [ -f "/usr/lib/ambari-metrics-hadoop-sink/ambari-metrics-hadoop-sink.jar" ]; then + export HBASE_CLASSPATH=${HBASE_CLASSPATH}:/usr/lib/ambari-metrics-hadoop-sink/ambari-metrics-hadoop-sink.jar +fi + +# The maximum amount of heap to use, in MB. Default is 1000. +# export HBASE_HEAPSIZE=1000 + +# Extra Java runtime options. +# Below are what we set by default. May only work with SUN JVM. +# For more on why as well as other possible settings, +# see http://wiki.apache.org/hadoop/PerformanceTuning +export SERVER_GC_OPTS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:{{log_dir}}/gc.log-`date +'%Y%m%d%H%M'`" +# Uncomment below to enable java garbage collection logging. +# export HBASE_OPTS="$HBASE_OPTS -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$HBASE_HOME/logs/gc-hbase.log" + +# Uncomment and adjust to enable JMX exporting +# See jmxremote.password and jmxremote.access in $JRE_HOME/lib/management to configure remote password access. +# More details at: http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html +# +# export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" +# If you want to configure BucketCache, specify '-XX: MaxDirectMemorySize=' with proper direct memory size +# export HBASE_THRIFT_OPTS="$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10103" +# export HBASE_ZOOKEEPER_OPTS="$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10104" + +# File naming hosts on which HRegionServers will run. $HBASE_HOME/conf/regionservers by default. +export HBASE_REGIONSERVERS=${HBASE_CONF_DIR}/regionservers + +# Extra ssh options. Empty by default. +# export HBASE_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HBASE_CONF_DIR" + +# Where log files are stored. $HBASE_HOME/logs by default. +export HBASE_LOG_DIR={{log_dir}} + +# A string representing this instance of hbase. $USER by default. +# export HBASE_IDENT_STRING=$USER + +# The scheduling priority for daemon processes. See 'man nice'. +# export HBASE_NICENESS=10 + +# The directory where pid files are stored. /tmp by default. +export HBASE_PID_DIR={{pid_dir}} + +# Seconds to sleep between slave commands. Unset by default. This +# can be useful in large clusters, where, e.g., slave rsyncs can +# otherwise arrive faster than the master can service them. +# export HBASE_SLAVE_SLEEP=0.1 + +# Tell HBase whether it should manage it's own instance of Zookeeper or not. +export HBASE_MANAGES_ZK=false + +{% if security_enabled %} +export HBASE_OPTS="$HBASE_OPTS -XX:+UseConcMarkSweepGC -XX:ErrorFile={{log_dir}}/hs_err_pid%p.log -Djava.security.auth.login.config={{client_jaas_config_file}}" +export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xmx{{master_heapsize}} -Djava.security.auth.login.config={{master_jaas_config_file}}" +export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70 -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}} -Djava.security.auth.login.config={{regionserver_jaas_config_file}}" +{% else %} +export HBASE_OPTS="$HBASE_OPTS -XX:+UseConcMarkSweepGC -XX:ErrorFile={{log_dir}}/hs_err_pid%p.log" +export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xmx{{master_heapsize}}" +export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70 -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}}" +{% endif %} + </value> + </property> + +</configuration> http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/main/resources/stacks/HDP/2.2/services/HDFS/configuration/hadoop-env.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/HDFS/configuration/hadoop-env.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/services/HDFS/configuration/hadoop-env.xml index 490df3a..81eb04c 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.2/services/HDFS/configuration/hadoop-env.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/HDFS/configuration/hadoop-env.xml @@ -134,6 +134,10 @@ if [ -d "/usr/hdp/current/tez-client" ]; then fi fi +if [ -f "/usr/lib/ambari-metrics-hadoop-sink/ambari-metrics-hadoop-sink.jar" ]; then + export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:/usr/lib/ambari-metrics-hadoop-sink/ambari-metrics-hadoop-sink.jar +fi + # Setting path to hdfs command line export HADOOP_LIBEXEC_DIR={{hadoop_libexec_dir}} http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaHelperTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaHelperTest.java deleted file mode 100644 index 0237207..0000000 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaHelperTest.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * 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.ambari.server.controller.ganglia; - -import org.junit.Ignore; -import org.junit.Test; - -import java.text.SimpleDateFormat; -import java.util.*; - -/** - * - */ -public class GangliaHelperTest { - - - @Ignore - @Test - public void testGetGangliaMetrics() throws Exception { - //MM/dd/yy HH:mm:ss - - String target = "ec2-107-22-86-120.compute-1.amazonaws.com"; - String cluster = "HDPNameNode"; - String host = "domU-12-31-39-15-25-C7.compute-1.internal"; - Date startTime = new SimpleDateFormat("MM/dd/yy HH:mm:ss").parse("09/12/12 10:00:00"); - Date endTime = new SimpleDateFormat("MM/dd/yy HH:mm:ss").parse("09/12/12 16:15:00"); - long step = 60; -// String api = "rpcdetailed.rpcdetailed.sendHeartbeat_num_ops"; - String metric = "cpu_nice"; - -// List<GangliaMetric> metrics = GangliaHelper.getGangliaMetrics(target, cluster, host, metric, startTime, endTime, step); - - //TODO : assertions - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaMetricTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaMetricTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaMetricTest.java deleted file mode 100644 index ef25ad1..0000000 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaMetricTest.java +++ /dev/null @@ -1,116 +0,0 @@ -/** - * 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.ambari.server.controller.ganglia; - -import java.util.ArrayList; -import java.util.List; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author root - */ -public class GangliaMetricTest { - - - - /** - * Test of setDatapoints method, of class GangliaMetric. - */ - @Test - public void testSetDatapointsOfPercentValue() { - System.out.println("setDatapoints"); - List<GangliaMetric.TemporalMetric> listTemporalMetrics = - new ArrayList<GangliaMetric.TemporalMetric>(); - GangliaMetric instance = new GangliaMetric(); - instance.setDs_name("dsName"); - instance.setCluster_name("c1"); - instance.setHost_name("localhost"); - instance.setMetric_name("cpu_wio"); - - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("111.0", new Long(1362440880))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("11.0", new Long(1362440881))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("100.0", new Long(1362440882))); - instance.setDatapointsFromList(listTemporalMetrics); - assertTrue(instance.getDatapoints().length == 2); - } - - /** - * Test of setDatapoints method, of class GangliaMetric. - */ - //@Test - public void testSetDatapointsOfgcTimeMillisValue() { - System.out.println("setDatapoints"); - List<GangliaMetric.TemporalMetric> listTemporalMetrics = - new ArrayList<GangliaMetric.TemporalMetric>(); - GangliaMetric instance = new GangliaMetric(); - instance.setDs_name("dsName"); - instance.setCluster_name("c1"); - instance.setHost_name("localhost"); - instance.setMetric_name("jvm.metrics.gcTimeMillis"); - - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("0.0", new Long(1))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("0.0", new Long(2))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("0.0", new Long(3))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("111.0", new Long(4))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("11.0", new Long(5))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("100.0", new Long(6))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("0.0", new Long(7))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("11.0", new Long(8))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("0.0", new Long(9))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("0.0", new Long(10))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("0.0", new Long(11))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("0.0", new Long(12))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("11.0", new Long(13))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("100.0", new Long(14))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("0.0", new Long(15))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("0.0", new Long(16))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("0.0", new Long(17))); - listTemporalMetrics.add(new GangliaMetric.TemporalMetric("0.0", new Long(18))); - instance.setDatapointsFromList(listTemporalMetrics); - System.out.println(instance.toString()); - assertTrue(instance.getDatapoints().length == 11); - } - - /** - * Test of GangliaMetric.TemporalMetric constructor. - */ - @Test - public void testTemporalMetricFineValue() { - System.out.println("GangliaMetric.TemporalMetric"); - GangliaMetric.TemporalMetric tm; - tm = new GangliaMetric.TemporalMetric("100", new Long(1362440880)); - assertTrue("GangliaMetric.TemporalMetric is valid", tm.isValid()); - } - - /** - * Test of GangliaMetric.TemporalMetric constructor. - */ - @Test - public void testTemporalMetricIsNaNValue() { - System.out.println("GangliaMetric.TemporalMetric"); - GangliaMetric.TemporalMetric tm; - tm = new GangliaMetric.TemporalMetric("any string", new Long(1362440880)); - assertFalse("GangliaMetric.TemporalMetric is invalid", tm.isValid()); - } - - - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java deleted file mode 100644 index c9b7bdd..0000000 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java +++ /dev/null @@ -1,875 +0,0 @@ -/** - * 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.ambari.server.controller.ganglia; - -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.expect; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.apache.ambari.server.configuration.ComponentSSLConfiguration; -import org.apache.ambari.server.configuration.ComponentSSLConfigurationTest; -import org.apache.ambari.server.controller.internal.PropertyInfo; -import org.apache.ambari.server.controller.internal.ResourceImpl; -import org.apache.ambari.server.controller.internal.TemporalInfoImpl; -import org.apache.ambari.server.controller.spi.Request; -import org.apache.ambari.server.controller.spi.Resource; -import org.apache.ambari.server.controller.spi.SystemException; -import org.apache.ambari.server.controller.spi.TemporalInfo; -import org.apache.ambari.server.controller.utilities.PropertyHelper; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.Predicate; -import org.apache.http.NameValuePair; -import org.apache.http.client.utils.URIBuilder; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.powermock.api.easymock.PowerMock; -import org.powermock.core.classloader.annotations.PrepareForTest; - -/** - * Test the Ganglia property provider. - */ -@RunWith(Parameterized.class) -@PrepareForTest({ GangliaHostProvider.class }) -public class GangliaPropertyProviderTest { - - private static final String PROPERTY_ID = PropertyHelper.getPropertyId("metrics/jvm", "gcCount"); - private static final String PROPERTY_ID2 = PropertyHelper.getPropertyId("metrics/cpu", "cpu_wio"); - private static final String FLUME_CHANNEL_CAPACITY_PROPERTY = "metrics/flume/flume/CHANNEL/c1/ChannelCapacity"; - private static final String FLUME_CATEGORY = "metrics/flume"; - private static final String FLUME_CATEGORY2 = "metrics/flume/flume"; - private static final String FLUME_CATEGORY3 = "metrics/flume/flume/CHANNEL"; - private static final String FLUME_CATEGORY4 = "metrics/flume/flume/CHANNEL/c1"; - private static final String CLUSTER_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("HostRoles", "cluster_name"); - private static final String HOST_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("HostRoles", "host_name"); - private static final String COMPONENT_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("HostRoles", "component_name"); - - - - private ComponentSSLConfiguration configuration; - - @Parameterized.Parameters - public static Collection<Object[]> configs() { - ComponentSSLConfiguration configuration1 = ComponentSSLConfigurationTest.getConfiguration( - "tspath", "tspass", "tstype", false); - - ComponentSSLConfiguration configuration2 = ComponentSSLConfigurationTest.getConfiguration( - "tspath", "tspass", "tstype", true); - - ComponentSSLConfiguration configuration3 = ComponentSSLConfigurationTest.getConfiguration( - "tspath", "tspass", "tstype", false); - - return Arrays.asList(new Object[][]{ - {configuration1}, - {configuration2}, - {configuration3} - }); - } - - public GangliaPropertyProviderTest(ComponentSSLConfiguration configuration) { - this.configuration = configuration; - } - - @Test - public void testPopulateResources() throws Exception { - TestStreamProvider streamProvider = new TestStreamProvider("temporal_ganglia_data.txt"); - TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - - Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent); - GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider( - gangliaPropertyIds, - streamProvider, - configuration, - hostProvider, - CLUSTER_NAME_PROPERTY_ID, - HOST_NAME_PROPERTY_ID, - COMPONENT_NAME_PROPERTY_ID); - - // namenode - Resource resource = new ResourceImpl(Resource.Type.HostComponent); - - resource.setProperty(HOST_NAME_PROPERTY_ID, "domU-12-31-39-0E-34-E1.compute-1.internal"); - resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "DATANODE"); - - // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - temporalInfoMap.put(PROPERTY_ID, new TemporalInfoImpl(10L, 20L, 1L)); - Request request = PropertyHelper.getReadRequest(Collections.singleton(PROPERTY_ID), temporalInfoMap); - - Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size()); - - - String expected = (configuration.isGangliaSSL() ? "https" : "http") + - "://domU-12-31-39-0E-34-E1.compute-1.internal/cgi-bin/rrd.py?c=HDPDataNode%2CHDPSlaves&h=domU-12-31-39-0E-34-E1.compute-1.internal&m=jvm.metrics.gcCount&s=10&e=20&r=1"; - Assert.assertEquals(expected, streamProvider.getLastSpec()); - - Assert.assertEquals(3, PropertyHelper.getProperties(resource).size()); - Assert.assertNotNull(resource.getPropertyValue(PROPERTY_ID)); - - - // tasktracker - resource = new ResourceImpl(Resource.Type.HostComponent); - resource.setProperty(HOST_NAME_PROPERTY_ID, "domU-12-31-39-0E-34-E1.compute-1.internal"); - resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "TASKTRACKER"); - - // only ask for one property - temporalInfoMap = new HashMap<String, TemporalInfo>(); - - Set<String> properties = new HashSet<String>(); - String shuffle_exceptions_caught = PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput", "shuffle_exceptions_caught"); - String shuffle_failed_outputs = PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput", "shuffle_failed_outputs"); - String shuffle_output_bytes = PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput", "shuffle_output_bytes"); - String shuffle_success_outputs = PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput", "shuffle_success_outputs"); - - properties.add(shuffle_exceptions_caught); - properties.add(shuffle_failed_outputs); - properties.add(shuffle_output_bytes); - properties.add(shuffle_success_outputs); - request = PropertyHelper.getReadRequest(properties, temporalInfoMap); - - temporalInfoMap.put(shuffle_exceptions_caught, new TemporalInfoImpl(10L, 20L, 1L)); - temporalInfoMap.put(shuffle_failed_outputs, new TemporalInfoImpl(10L, 20L, 1L)); - temporalInfoMap.put(shuffle_output_bytes, new TemporalInfoImpl(10L, 20L, 1L)); - temporalInfoMap.put(shuffle_success_outputs, new TemporalInfoImpl(10L, 20L, 1L)); - - Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size()); - - - List<String> metricsRegexes = new ArrayList<String>(); - - metricsRegexes.add("metrics/mapred/shuffleOutput/shuffle_exceptions_caught"); - metricsRegexes.add("metrics/mapred/shuffleOutput/shuffle_failed_outputs"); - metricsRegexes.add("metrics/mapred/shuffleOutput/shuffle_output_bytes"); - metricsRegexes.add("metrics/mapred/shuffleOutput/shuffle_success_outputs"); - - - String metricsList = getMetricsRegexes(metricsRegexes, gangliaPropertyIds, "TASKTRACKER"); - - URIBuilder expectedUri = new URIBuilder(); - - expectedUri.setScheme((configuration.isGangliaSSL() ? "https" : "http")); - expectedUri.setHost("domU-12-31-39-0E-34-E1.compute-1.internal"); - expectedUri.setPath("/cgi-bin/rrd.py"); - expectedUri.setParameter("c", "HDPTaskTracker,HDPSlaves"); - expectedUri.setParameter("h", "domU-12-31-39-0E-34-E1.compute-1.internal"); - expectedUri.setParameter("m", metricsList); - expectedUri.setParameter("s", "10"); - expectedUri.setParameter("e", "20"); - expectedUri.setParameter("r", "1"); - - - URIBuilder actualUri = new URIBuilder(streamProvider.getLastSpec()); - - Assert.assertEquals(expectedUri.getScheme(), actualUri.getScheme()); - Assert.assertEquals(expectedUri.getHost(), actualUri.getHost()); - Assert.assertEquals(expectedUri.getPath(), actualUri.getPath()); - - Assert.assertTrue(isUrlParamsEquals(actualUri, expectedUri)); - - Assert.assertEquals(6, PropertyHelper.getProperties(resource).size()); - - Assert.assertNotNull(resource.getPropertyValue(shuffle_exceptions_caught)); - - Number[][] dataPoints = (Number[][]) resource.getPropertyValue(shuffle_exceptions_caught); - - Assert.assertEquals(106, dataPoints.length); - for (int i = 0; i < dataPoints.length; ++i) { - Assert.assertEquals(i >=10 && i < 20 ? 7 : 0.0, dataPoints[i][0]); - Assert.assertEquals(360 * i + 1358434800, dataPoints[i][1]); - } - - Assert.assertNotNull(resource.getPropertyValue(shuffle_failed_outputs)); - Assert.assertNotNull(resource.getPropertyValue(shuffle_output_bytes)); - Assert.assertNotNull(resource.getPropertyValue(shuffle_success_outputs)); - } - - @Test - public void testPopulateResources_checkHostComponent() throws Exception { - TestStreamProvider streamProvider = new TestStreamProvider("temporal_ganglia_data.txt"); - GangliaHostProvider hostProvider = PowerMock.createPartialMock(GangliaHostProvider.class, - "isGangliaCollectorHostLive", "isGangliaCollectorComponentLive"); - - GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider( - PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent), - streamProvider, - configuration, - hostProvider, - CLUSTER_NAME_PROPERTY_ID, - HOST_NAME_PROPERTY_ID, - COMPONENT_NAME_PROPERTY_ID); - - // datanode - Resource resource = new ResourceImpl(Resource.Type.HostComponent); - - resource.setProperty(HOST_NAME_PROPERTY_ID, "domU-12-31-39-0E-34-E1.compute-1.internal"); - resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "DATANODE"); - - // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - temporalInfoMap.put(PROPERTY_ID, new TemporalInfoImpl(10L, 20L, 1L)); - Request request = PropertyHelper.getReadRequest(Collections.singleton(PROPERTY_ID), temporalInfoMap); - - expect(hostProvider.getGangliaCollectorHostName(anyObject(String.class))).andReturn("ganglia-host"); - expect(hostProvider.isGangliaCollectorComponentLive(anyObject(String.class))).andReturn(true).once(); - expect(hostProvider.isGangliaCollectorHostLive(anyObject(String.class))).andReturn(true).once(); - - - PowerMock.replay(hostProvider); - - Set<Resource> populateResources = propertyProvider.populateResources(Collections.singleton(resource), request, null); - - PowerMock.verify(hostProvider); - - Assert.assertEquals(1, populateResources.size()); - - } - - @Test - public void testPopulateResources_checkHost() throws Exception { - TestStreamProvider streamProvider = new TestStreamProvider("host_temporal_ganglia_data.txt"); - TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - - GangliaPropertyProvider propertyProvider = new GangliaHostPropertyProvider( - PropertyHelper.getGangliaPropertyIds(Resource.Type.Host), - streamProvider, - configuration, - hostProvider, - CLUSTER_NAME_PROPERTY_ID, - HOST_NAME_PROPERTY_ID - ); - - // host - Resource resource = new ResourceImpl(Resource.Type.Host); - resource.setProperty(HOST_NAME_PROPERTY_ID, "corp-hadoopda05.client.ext"); - - // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - temporalInfoMap.put("metrics/process/proc_total", new TemporalInfoImpl(10L, 20L, 1L)); - Request request = PropertyHelper.getReadRequest(Collections.singleton("metrics/process/proc_total"), temporalInfoMap); - - Set<Resource> populateResources = propertyProvider.populateResources(Collections.singleton(resource), request, null); - - Assert.assertEquals(1, populateResources.size()); - - Resource res = populateResources.iterator().next(); - - Number[][] val = (Number[][]) res.getPropertyValue("metrics/process/proc_total"); - Assert.assertEquals(226, val.length); - } - - @Test - public void testPopulateManyResources() throws Exception { - TestStreamProvider streamProvider = new TestStreamProvider("temporal_ganglia_data_1.txt"); - TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - - GangliaPropertyProvider propertyProvider = new GangliaHostPropertyProvider( - PropertyHelper.getGangliaPropertyIds(Resource.Type.Host), - streamProvider, - configuration, - hostProvider, - CLUSTER_NAME_PROPERTY_ID, - HOST_NAME_PROPERTY_ID - ); - - Set<Resource> resources = new HashSet<Resource>(); - - // host - Resource resource = new ResourceImpl(Resource.Type.Host); - resource.setProperty(HOST_NAME_PROPERTY_ID, "domU-12-31-39-0E-34-E1.compute-1.internal"); - resources.add(resource); - - resource = new ResourceImpl(Resource.Type.Host); - resource.setProperty(HOST_NAME_PROPERTY_ID, "domU-12-31-39-0E-34-E2.compute-1.internal"); - resources.add(resource); - - resource = new ResourceImpl(Resource.Type.Host); - resource.setProperty(HOST_NAME_PROPERTY_ID, "domU-12-31-39-0E-34-E3.compute-1.internal"); - resources.add(resource); - - // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - temporalInfoMap.put(PROPERTY_ID, new TemporalInfoImpl(10L, 20L, 1L)); - Request request = PropertyHelper.getReadRequest(Collections.singleton(PROPERTY_ID), temporalInfoMap); - - Assert.assertEquals(3, propertyProvider.populateResources(resources, request, null).size()); - - URIBuilder uriBuilder = new URIBuilder(); - - uriBuilder.setScheme((configuration.isGangliaSSL() ? "https" : "http")); - uriBuilder.setHost("domU-12-31-39-0E-34-E1.compute-1.internal"); - uriBuilder.setPath("/cgi-bin/rrd.py"); - uriBuilder.setParameter("c", "HDPJobTracker,HDPHBaseMaster,HDPKafka,HDPResourceManager,HDPFlumeServer,HDPSlaves,HDPHistoryServer,HDPJournalNode,HDPTaskTracker,HDPHBaseRegionServer,HDPNameNode"); - uriBuilder.setParameter("h", "domU-12-31-39-0E-34-E3.compute-1.internal,domU-12-31-39-0E-34-E1.compute-1.internal,domU-12-31-39-0E-34-E2.compute-1.internal"); - uriBuilder.setParameter("m", "jvm.metrics.gcCount"); - uriBuilder.setParameter("s", "10"); - uriBuilder.setParameter("e", "20"); - uriBuilder.setParameter("r", "1"); - - String expected = uriBuilder.toString(); - - Assert.assertEquals(expected, streamProvider.getLastSpec()); - - for (Resource res : resources) { - Assert.assertEquals(2, PropertyHelper.getProperties(res).size()); - Assert.assertNotNull(res.getPropertyValue(PROPERTY_ID)); - } - } - - @Test - public void testPopulateResources__LargeNumberOfHostResources() throws Exception { - TestStreamProvider streamProvider = new TestStreamProvider("temporal_ganglia_data.txt"); - TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - - GangliaPropertyProvider propertyProvider = new GangliaHostPropertyProvider( - PropertyHelper.getGangliaPropertyIds(Resource.Type.Host), - streamProvider, - configuration, - hostProvider, - CLUSTER_NAME_PROPERTY_ID, - HOST_NAME_PROPERTY_ID - ); - - Set<Resource> resources = new HashSet<Resource>(); - - StringBuilder hostsList = new StringBuilder(); - - for (int i = 0; i < 150; ++i) { - Resource resource = new ResourceImpl(Resource.Type.Host); - resource.setProperty(HOST_NAME_PROPERTY_ID, "host" + i); - resources.add(resource); - - if (hostsList.length() != 0) { - hostsList.append("," + "host" + i ); - } else { - hostsList.append("host" + i); - } - } - - // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - temporalInfoMap.put(PROPERTY_ID, new TemporalInfoImpl(10L, 20L, 1L)); - Request request = PropertyHelper.getReadRequest(Collections.singleton(PROPERTY_ID), temporalInfoMap); - - Assert.assertEquals(150, propertyProvider.populateResources(resources, request, null).size()); - - - URIBuilder expectedUri = new URIBuilder(); - - expectedUri.setScheme((configuration.isGangliaSSL() ? "https" : "http")); - expectedUri.setHost("domU-12-31-39-0E-34-E1.compute-1.internal"); - expectedUri.setPath("/cgi-bin/rrd.py"); - expectedUri.setParameter("c", "HDPJobTracker,HDPHBaseMaster,HDPKafka,HDPResourceManager,HDPFlumeServer,HDPSlaves,HDPHistoryServer,HDPJournalNode,HDPTaskTracker,HDPHBaseRegionServer,HDPNameNode"); - - expectedUri.setParameter("h", hostsList.toString()); - expectedUri.setParameter("m", "jvm.metrics.gcCount"); - expectedUri.setParameter("s", "10"); - expectedUri.setParameter("e", "20"); - expectedUri.setParameter("r", "1"); - - URIBuilder actualUri = new URIBuilder(streamProvider.getLastSpec()); - - Assert.assertEquals(expectedUri.getScheme(), actualUri.getScheme()); - Assert.assertEquals(expectedUri.getHost(), actualUri.getHost()); - Assert.assertEquals(expectedUri.getPath(), actualUri.getPath()); - - Assert.assertTrue(isUrlParamsEquals(actualUri, expectedUri)); - } - - @Test - public void testPopulateResources_params() throws Exception { - TestStreamProvider streamProvider = new TestStreamProvider("flume_ganglia_data.txt"); - TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - - Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent); - GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider( - gangliaPropertyIds, - streamProvider, - configuration, - hostProvider, - CLUSTER_NAME_PROPERTY_ID, - HOST_NAME_PROPERTY_ID, - COMPONENT_NAME_PROPERTY_ID); - - // flume - Resource resource = new ResourceImpl(Resource.Type.HostComponent); - - resource.setProperty(HOST_NAME_PROPERTY_ID, "ip-10-39-113-33.ec2.internal"); - resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "FLUME_HANDLER"); - - // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - temporalInfoMap.put(FLUME_CHANNEL_CAPACITY_PROPERTY, new TemporalInfoImpl(10L, 20L, 1L)); - Request request = PropertyHelper.getReadRequest(Collections.singleton(FLUME_CHANNEL_CAPACITY_PROPERTY), temporalInfoMap); - - Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size()); - - List<String> metricsRegexes = new ArrayList<String>(); - - metricsRegexes.add(FLUME_CHANNEL_CAPACITY_PROPERTY); - - String metricsList = getMetricsRegexes(metricsRegexes, gangliaPropertyIds, "FLUME_HANDLER"); - - URIBuilder expectedUri = new URIBuilder(); - - expectedUri.setScheme((configuration.isGangliaSSL() ? "https" : "http")); - expectedUri.setHost("domU-12-31-39-0E-34-E1.compute-1.internal"); - expectedUri.setPath("/cgi-bin/rrd.py"); - expectedUri.setParameter("c", "HDPFlumeServer,HDPSlaves"); - expectedUri.setParameter("h", "ip-10-39-113-33.ec2.internal"); - expectedUri.setParameter("m", metricsList); - expectedUri.setParameter("s", "10"); - expectedUri.setParameter("e", "20"); - expectedUri.setParameter("r", "1"); - - URIBuilder actualUri = new URIBuilder(streamProvider.getLastSpec()); - - Assert.assertEquals(expectedUri.getScheme(), actualUri.getScheme()); - Assert.assertEquals(expectedUri.getHost(), actualUri.getHost()); - Assert.assertEquals(expectedUri.getPath(), actualUri.getPath()); - - Assert.assertTrue(isUrlParamsEquals(actualUri, expectedUri)); - - Assert.assertEquals(3, PropertyHelper.getProperties(resource).size()); - Assert.assertNotNull(resource.getPropertyValue(FLUME_CHANNEL_CAPACITY_PROPERTY)); - } - - @Test - public void testPopulateResources_paramsMixed() throws Exception { - TestStreamProvider streamProvider = new TestStreamProvider("flume_ganglia_data.txt"); - TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - - Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent); - GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider( - gangliaPropertyIds, - streamProvider, - configuration, - hostProvider, - CLUSTER_NAME_PROPERTY_ID, - HOST_NAME_PROPERTY_ID, - COMPONENT_NAME_PROPERTY_ID); - - // flume - Resource resource = new ResourceImpl(Resource.Type.HostComponent); - - resource.setProperty(HOST_NAME_PROPERTY_ID, "ip-10-39-113-33.ec2.internal"); - resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "FLUME_HANDLER"); - - // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - - Set<String> ids = new HashSet<String>(); - ids.add(FLUME_CATEGORY2); - ids.add(PROPERTY_ID2); - - Request request = PropertyHelper.getReadRequest(ids, temporalInfoMap); - - Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size()); - - List<String> metricsRegexes = new ArrayList<String>(); - - metricsRegexes.add("metrics/flume"); - metricsRegexes.add("metrics/cpu/cpu_wio"); - - String metricsList = getMetricsRegexes(metricsRegexes, gangliaPropertyIds, "FLUME_HANDLER"); - - URIBuilder expectedUri = new URIBuilder(); - - expectedUri.setScheme((configuration.isGangliaSSL() ? "https" : "http")); - expectedUri.setHost("domU-12-31-39-0E-34-E1.compute-1.internal"); - expectedUri.setPath("/cgi-bin/rrd.py"); - expectedUri.setParameter("c", "HDPFlumeServer,HDPSlaves"); - expectedUri.setParameter("h", "ip-10-39-113-33.ec2.internal"); - expectedUri.setParameter("m", metricsList); - expectedUri.setParameter("e", "now"); - expectedUri.setParameter("pt", "true"); - - URIBuilder actualUri = new URIBuilder(streamProvider.getLastSpec()); - - Assert.assertEquals(expectedUri.getScheme(), actualUri.getScheme()); - Assert.assertEquals(expectedUri.getHost(), actualUri.getHost()); - Assert.assertEquals(expectedUri.getPath(), actualUri.getPath()); - - Assert.assertTrue(isUrlParamsEquals(actualUri, expectedUri)); - - Assert.assertEquals(22, PropertyHelper.getProperties(resource).size()); - Assert.assertNotNull(resource.getPropertyValue(PROPERTY_ID2)); - Assert.assertNotNull(resource.getPropertyValue(FLUME_CHANNEL_CAPACITY_PROPERTY)); - } - - @Test - public void testPopulateResources_paramsAll() throws Exception { - TestStreamProvider streamProvider = new TestStreamProvider("flume_ganglia_data.txt"); - TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - - GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider( - PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent), - streamProvider, - configuration, - hostProvider, - CLUSTER_NAME_PROPERTY_ID, - HOST_NAME_PROPERTY_ID, - COMPONENT_NAME_PROPERTY_ID); - - // flume - Resource resource = new ResourceImpl(Resource.Type.HostComponent); - - resource.setProperty(HOST_NAME_PROPERTY_ID, "ip-10-39-113-33.ec2.internal"); - resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "FLUME_HANDLER"); - - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - Request request = PropertyHelper.getReadRequest(Collections.<String>emptySet(), temporalInfoMap); - - Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size()); - - String expected = (configuration.isGangliaSSL() ? "https" : "http") + - "://domU-12-31-39-0E-34-E1.compute-1.internal/cgi-bin/rrd.py?c=HDPFlumeServer%2CHDPSlaves&h=ip-10-39-113-33.ec2.internal&m="; - - Assert.assertTrue(streamProvider.getLastSpec().startsWith(expected)); - - Assert.assertEquals(33, PropertyHelper.getProperties(resource).size()); - Assert.assertNotNull(resource.getPropertyValue(FLUME_CHANNEL_CAPACITY_PROPERTY)); - } - - @Test - public void testPopulateResources_params_category1() throws Exception { - TestStreamProvider streamProvider = new TestStreamProvider("flume_ganglia_data.txt"); - TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - - Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent); - GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider( - gangliaPropertyIds, - streamProvider, - configuration, - hostProvider, - CLUSTER_NAME_PROPERTY_ID, - HOST_NAME_PROPERTY_ID, - COMPONENT_NAME_PROPERTY_ID); - - // flume - Resource resource = new ResourceImpl(Resource.Type.HostComponent); - - resource.setProperty(HOST_NAME_PROPERTY_ID, "ip-10-39-113-33.ec2.internal"); - resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "FLUME_HANDLER"); - - // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - temporalInfoMap.put(FLUME_CATEGORY, new TemporalInfoImpl(10L, 20L, 1L)); - Request request = PropertyHelper.getReadRequest(Collections.singleton(FLUME_CATEGORY), temporalInfoMap); - - Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size()); - - List<String> metricsRegexes = new ArrayList<String>(); - - metricsRegexes.add("metrics/flume"); - - String metricsList = getMetricsRegexes(metricsRegexes, gangliaPropertyIds, "FLUME_HANDLER"); - - URIBuilder expectedUri = new URIBuilder(); - - expectedUri.setScheme((configuration.isGangliaSSL() ? "https" : "http")); - expectedUri.setHost("domU-12-31-39-0E-34-E1.compute-1.internal"); - expectedUri.setPath("/cgi-bin/rrd.py"); - expectedUri.setParameter("c", "HDPFlumeServer,HDPSlaves"); - expectedUri.setParameter("h", "ip-10-39-113-33.ec2.internal"); - expectedUri.setParameter("m", metricsList); - expectedUri.setParameter("s", "10"); - expectedUri.setParameter("e", "20"); - expectedUri.setParameter("r", "1"); - - URIBuilder actualUri = new URIBuilder(streamProvider.getLastSpec()); - - Assert.assertEquals(expectedUri.getScheme(), actualUri.getScheme()); - Assert.assertEquals(expectedUri.getHost(), actualUri.getHost()); - Assert.assertEquals(expectedUri.getPath(), actualUri.getPath()); - - Assert.assertTrue(isUrlParamsEquals(actualUri, expectedUri)); - - Assert.assertEquals(21, PropertyHelper.getProperties(resource).size()); - Assert.assertNotNull(resource.getPropertyValue(FLUME_CHANNEL_CAPACITY_PROPERTY)); - } - - @Test - public void testPopulateResources_params_category2() throws Exception { - TestStreamProvider streamProvider = new TestStreamProvider("flume_ganglia_data.txt"); - TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - - Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent); - GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider( - gangliaPropertyIds, - streamProvider, - configuration, - hostProvider, - CLUSTER_NAME_PROPERTY_ID, - HOST_NAME_PROPERTY_ID, - COMPONENT_NAME_PROPERTY_ID); - - // flume - Resource resource = new ResourceImpl(Resource.Type.HostComponent); - - resource.setProperty(HOST_NAME_PROPERTY_ID, "ip-10-39-113-33.ec2.internal"); - resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "FLUME_HANDLER"); - - // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - temporalInfoMap.put(FLUME_CATEGORY2, new TemporalInfoImpl(10L, 20L, 1L)); - Request request = PropertyHelper.getReadRequest(Collections.singleton(FLUME_CATEGORY2), temporalInfoMap); - - Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size()); - - List<String> metricsRegexes = new ArrayList<String>(); - - metricsRegexes.add("metrics/flume/"); - - String metricsList = getMetricsRegexes(metricsRegexes, gangliaPropertyIds, "FLUME_HANDLER"); - - URIBuilder expectedUri = new URIBuilder(); - - expectedUri.setScheme((configuration.isGangliaSSL() ? "https" : "http")); - expectedUri.setHost("domU-12-31-39-0E-34-E1.compute-1.internal"); - expectedUri.setPath("/cgi-bin/rrd.py"); - expectedUri.setParameter("c", "HDPFlumeServer,HDPSlaves"); - expectedUri.setParameter("h", "ip-10-39-113-33.ec2.internal"); - expectedUri.setParameter("m", metricsList); - expectedUri.setParameter("s", "10"); - expectedUri.setParameter("e", "20"); - expectedUri.setParameter("r", "1"); - - URIBuilder actualUri = new URIBuilder(streamProvider.getLastSpec()); - - Assert.assertEquals(expectedUri.getScheme(), actualUri.getScheme()); - Assert.assertEquals(expectedUri.getHost(), actualUri.getHost()); - Assert.assertEquals(expectedUri.getPath(), actualUri.getPath()); - - Assert.assertTrue(isUrlParamsEquals(actualUri, expectedUri)); - - Assert.assertEquals(21, PropertyHelper.getProperties(resource).size()); - Assert.assertNotNull(resource.getPropertyValue(FLUME_CHANNEL_CAPACITY_PROPERTY)); - } - - @Test - public void testPopulateResources_params_category3() throws Exception { - TestStreamProvider streamProvider = new TestStreamProvider("flume_ganglia_data.txt"); - TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - - Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent); - GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider( - gangliaPropertyIds, - streamProvider, - configuration, - hostProvider, - CLUSTER_NAME_PROPERTY_ID, - HOST_NAME_PROPERTY_ID, - COMPONENT_NAME_PROPERTY_ID); - - // flume - Resource resource = new ResourceImpl(Resource.Type.HostComponent); - - resource.setProperty(HOST_NAME_PROPERTY_ID, "ip-10-39-113-33.ec2.internal"); - resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "FLUME_HANDLER"); - - // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - temporalInfoMap.put(FLUME_CATEGORY3, new TemporalInfoImpl(10L, 20L, 1L)); - Request request = PropertyHelper.getReadRequest(Collections.singleton(FLUME_CATEGORY3), temporalInfoMap); - - Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size()); - - List<String> metricsRegexes = new ArrayList<String>(); - - metricsRegexes.add("metrics/flume/$1/CHANNEL/$2/"); - metricsRegexes.add(FLUME_CHANNEL_CAPACITY_PROPERTY); - - String metricsList = getMetricsRegexes(metricsRegexes, gangliaPropertyIds, "FLUME_HANDLER"); - - URIBuilder expectedUri = new URIBuilder(); - - expectedUri.setScheme((configuration.isGangliaSSL() ? "https" : "http")); - expectedUri.setHost("domU-12-31-39-0E-34-E1.compute-1.internal"); - expectedUri.setPath("/cgi-bin/rrd.py"); - expectedUri.setParameter("c", "HDPFlumeServer,HDPSlaves"); - expectedUri.setParameter("h", "ip-10-39-113-33.ec2.internal"); - expectedUri.setParameter("m", metricsList); - expectedUri.setParameter("s", "10"); - expectedUri.setParameter("e", "20"); - expectedUri.setParameter("r", "1"); - - URIBuilder actualUri = new URIBuilder(streamProvider.getLastSpec()); - - Assert.assertEquals(expectedUri.getScheme(), actualUri.getScheme()); - Assert.assertEquals(expectedUri.getHost(), actualUri.getHost()); - Assert.assertEquals(expectedUri.getPath(), actualUri.getPath()); - - Assert.assertTrue(isUrlParamsEquals(actualUri, expectedUri)); - - Assert.assertEquals(11, PropertyHelper.getProperties(resource).size()); - Assert.assertNotNull(resource.getPropertyValue(FLUME_CHANNEL_CAPACITY_PROPERTY)); - } - - @Test - public void testPopulateResources_params_category4() throws Exception { - TestStreamProvider streamProvider = new TestStreamProvider("flume_ganglia_data.txt"); - TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - - Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent); - GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider( - gangliaPropertyIds, - streamProvider, - configuration, - hostProvider, - CLUSTER_NAME_PROPERTY_ID, - HOST_NAME_PROPERTY_ID, - COMPONENT_NAME_PROPERTY_ID); - - // flume - Resource resource = new ResourceImpl(Resource.Type.HostComponent); - - resource.setProperty(HOST_NAME_PROPERTY_ID, "ip-10-39-113-33.ec2.internal"); - resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "FLUME_HANDLER"); - - // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - temporalInfoMap.put(FLUME_CATEGORY4, new TemporalInfoImpl(10L, 20L, 1L)); - Request request = PropertyHelper.getReadRequest(Collections.singleton(FLUME_CATEGORY4), temporalInfoMap); - - Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size()); - - List<String> metricsRegexes = new ArrayList<String>(); - - metricsRegexes.add("metrics/flume/$1/CHANNEL/$2"); - metricsRegexes.add(FLUME_CHANNEL_CAPACITY_PROPERTY); - - String metricsList = getMetricsRegexes(metricsRegexes, gangliaPropertyIds, "FLUME_HANDLER"); - - URIBuilder expectedUri = new URIBuilder(); - - expectedUri.setScheme((configuration.isGangliaSSL() ? "https" : "http")); - expectedUri.setHost("domU-12-31-39-0E-34-E1.compute-1.internal"); - expectedUri.setPath("/cgi-bin/rrd.py"); - expectedUri.setParameter("c", "HDPFlumeServer,HDPSlaves"); - expectedUri.setParameter("h", "ip-10-39-113-33.ec2.internal"); - expectedUri.setParameter("m", metricsList); - expectedUri.setParameter("s", "10"); - expectedUri.setParameter("e", "20"); - expectedUri.setParameter("r", "1"); - - URIBuilder actualUri = new URIBuilder(streamProvider.getLastSpec()); - - Assert.assertEquals(expectedUri.getScheme(), actualUri.getScheme()); - Assert.assertEquals(expectedUri.getHost(), actualUri.getHost()); - Assert.assertEquals(expectedUri.getPath(), actualUri.getPath()); - - Assert.assertTrue(isUrlParamsEquals(actualUri, expectedUri)); - - Assert.assertEquals(11, PropertyHelper.getProperties(resource).size()); - Assert.assertNotNull(resource.getPropertyValue(FLUME_CHANNEL_CAPACITY_PROPERTY)); - } - - - - - - private boolean isUrlParamsEquals(URIBuilder actualUri, URIBuilder expectedUri) { - for (final NameValuePair expectedParam : expectedUri.getQueryParams()) { - NameValuePair actualParam = (NameValuePair) CollectionUtils.find(actualUri.getQueryParams(), new Predicate() { - - @Override - public boolean evaluate(Object arg0) { - if (!(arg0 instanceof NameValuePair)) { - return false; - } - - NameValuePair otherObj = (NameValuePair) arg0; - return otherObj.getName().equals(expectedParam.getName()); - } - }); - - - List<String> actualParamList = new ArrayList<String>(Arrays.asList(actualParam.getValue().split(","))); - List<String> expectedParamList = new ArrayList<String>(Arrays.asList(expectedParam.getValue().split(","))); - - Collections.sort(actualParamList); - Collections.sort(expectedParamList); - - if (!actualParamList.equals(expectedParamList)) { - return false; - } - } - - return true; - } - - private String getMetricsRegexes(List<String> metricsRegexes, - Map<String, Map<String, PropertyInfo>> gangliaPropertyIds, - String componentName) { - - StringBuilder metricsBuilder = new StringBuilder(); - - for (Map.Entry<String, PropertyInfo> entry : gangliaPropertyIds.get(componentName).entrySet()) - { - for (String metricRegex: metricsRegexes) - { - if (entry.getKey().startsWith(metricRegex)) { - metricsBuilder.append(entry.getValue().getPropertyId() + ","); - } - } - } - return metricsBuilder.toString(); - } - - public static class TestGangliaHostProvider implements GangliaHostProvider { - - private boolean isHostLive; - private boolean isComponentLive; - - public TestGangliaHostProvider() { - this(true, true); - } - - public TestGangliaHostProvider(boolean isHostLive, boolean isComponentLive) { - this.isHostLive = isHostLive; - this.isComponentLive = isComponentLive; - } - - @Override - public String getGangliaCollectorHostName(String clusterName) { - return "domU-12-31-39-0E-34-E1.compute-1.internal"; - } - - @Override - public boolean isGangliaCollectorHostLive(String clusterName) - throws SystemException { - return isHostLive; - } - - @Override - public boolean isGangliaCollectorComponentLive(String clusterName) - throws SystemException { - return isComponentLive; - } - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java deleted file mode 100644 index b8609c2..0000000 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java +++ /dev/null @@ -1,123 +0,0 @@ -/** - * 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.ambari.server.controller.ganglia; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import org.apache.ambari.server.configuration.ComponentSSLConfiguration; -import org.apache.ambari.server.configuration.ComponentSSLConfigurationTest; -import org.apache.ambari.server.controller.internal.ResourceImpl; -import org.apache.ambari.server.controller.internal.TemporalInfoImpl; -import org.apache.ambari.server.controller.spi.Request; -import org.apache.ambari.server.controller.spi.Resource; -import org.apache.ambari.server.controller.spi.SystemException; -import org.apache.ambari.server.controller.spi.TemporalInfo; -import org.apache.ambari.server.controller.utilities.PropertyHelper; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -/** - * Test the Ganglia report property provider. - */ -@RunWith(Parameterized.class) -public class GangliaReportPropertyProviderTest { - - private static final String PROPERTY_ID = PropertyHelper.getPropertyId("metrics/load", "Procs"); - private static final String CLUSTER_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("Clusters", "cluster_name"); - - private ComponentSSLConfiguration configuration; - - @Parameterized.Parameters - public static Collection<Object[]> configs() { - ComponentSSLConfiguration configuration1 = ComponentSSLConfigurationTest.getConfiguration( - "tspath", "tspass", "tstype", false); - - ComponentSSLConfiguration configuration2 = ComponentSSLConfigurationTest.getConfiguration( - "tspath", "tspass", "tstype", true); - - ComponentSSLConfiguration configuration3 = ComponentSSLConfigurationTest.getConfiguration( - "tspath", "tspass", "tstype", false); - - return Arrays.asList(new Object[][]{ - {configuration1}, - {configuration2}, - {configuration3} - }); - } - - public GangliaReportPropertyProviderTest(ComponentSSLConfiguration configuration) { - this.configuration = configuration; - } - - @Test - public void testPopulateResources() throws Exception { - - TestStreamProvider streamProvider = new TestStreamProvider("temporal_ganglia_report_data.json"); - TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - - GangliaReportPropertyProvider propertyProvider = new GangliaReportPropertyProvider( - PropertyHelper.getGangliaPropertyIds(Resource.Type.Cluster), - streamProvider, - configuration, - hostProvider, - CLUSTER_NAME_PROPERTY_ID); - - Resource resource = new ResourceImpl(Resource.Type.Cluster); - - resource.setProperty(CLUSTER_NAME_PROPERTY_ID, "c1"); - - // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - temporalInfoMap.put(PROPERTY_ID, new TemporalInfoImpl(10L, 20L, 1L)); - Request request = PropertyHelper.getReadRequest(Collections.singleton(PROPERTY_ID), temporalInfoMap); - - Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size()); - - String expected = (configuration.isGangliaSSL() ? "https" : "http") + "://domU-12-31-39-0E-34-E1.compute-1.internal/ganglia/graph.php?g=load_report&json=1"; - Assert.assertEquals(expected, streamProvider.getLastSpec()); - - Assert.assertEquals(2, PropertyHelper.getProperties(resource).size()); - Assert.assertNotNull(resource.getPropertyValue(PROPERTY_ID)); - } - - private static class TestGangliaHostProvider implements GangliaHostProvider { - - @Override - public String getGangliaCollectorHostName(String clusterName) { - return "domU-12-31-39-0E-34-E1.compute-1.internal"; - } - - @Override - public boolean isGangliaCollectorHostLive(String clusterName) - throws SystemException { - return true; - } - - @Override - public boolean isGangliaCollectorComponentLive(String clusterName) - throws SystemException { - return true; - } - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/TestStreamProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/TestStreamProvider.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/TestStreamProvider.java deleted file mode 100644 index 182d494..0000000 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/TestStreamProvider.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.apache.ambari.server.controller.ganglia; - -/** - * 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. - */ - -import org.apache.ambari.server.controller.utilities.StreamProvider; - -import java.io.IOException; -import java.io.InputStream; - -public class TestStreamProvider implements StreamProvider { - - private final String fileName; - private String lastSpec; - private boolean isLastSpecUpdated; - - public TestStreamProvider(String fileName) { - this.fileName = fileName; - } - - @Override - public InputStream readFrom(String spec) throws IOException { - if (!isLastSpecUpdated) - lastSpec = spec; - - isLastSpecUpdated = false; - - return ClassLoader.getSystemResourceAsStream(fileName); - } - - public String getLastSpec() { - return lastSpec; - } - - @Override - public InputStream readFrom(String spec, String requestMethod, String params) throws IOException { - lastSpec = spec + "?" + params; - isLastSpecUpdated = true; - return readFrom(spec); - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java index 8656e80..8888964 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java @@ -37,14 +37,14 @@ public class AbstractPropertyProviderTest { @Test public void testGetComponentMetrics() { - Map<String, Map<String, PropertyInfo>> componentMetrics = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent); + Map<String, Map<String, PropertyInfo>> componentMetrics = PropertyHelper.getMetricPropertyIds(Resource.Type.HostComponent); AbstractPropertyProvider provider = new TestPropertyProvider(componentMetrics); Assert.assertEquals(componentMetrics, provider.getComponentMetrics()); } @Test public void testGetPropertyInfoMap() { - AbstractPropertyProvider provider = new TestPropertyProvider(PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent)); + AbstractPropertyProvider provider = new TestPropertyProvider(PropertyHelper.getMetricPropertyIds(Resource.Type.HostComponent)); // specific property Map<String, PropertyInfo> propertyInfoMap = provider.getPropertyInfoMap("NAMENODE", "metrics/cpu/cpu_aidle"); @@ -112,7 +112,7 @@ public class AbstractPropertyProviderTest { @Test public void testUpdateComponentMetricMapHDP1() { Map<String, Map<String, PropertyInfo>> componentMetrics = - PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent); + PropertyHelper.getMetricPropertyIds(Resource.Type.HostComponent); AbstractPropertyProvider provider = new TestPropertyProvider(componentMetrics); http://git-wip-us.apache.org/repos/asf/ambari/blob/a52f8a55/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java index 58a2b23..8198e9c 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java @@ -17,23 +17,12 @@ */ package org.apache.ambari.server.controller.internal; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.Map.Entry; - -import org.apache.ambari.server.controller.ganglia.GangliaHostComponentPropertyProvider; -import org.apache.ambari.server.controller.ganglia.GangliaPropertyProvider; -import org.apache.ambari.server.controller.ganglia.GangliaPropertyProviderTest.TestGangliaHostProvider; -import org.apache.ambari.server.controller.jmx.JMXPropertyProvider; +import com.google.inject.Guice; +import com.google.inject.Injector; +import com.google.inject.persist.PersistService; import org.apache.ambari.server.controller.jmx.TestStreamProvider; import org.apache.ambari.server.controller.metrics.JMXPropertyProviderTest; +import org.apache.ambari.server.controller.metrics.ganglia.GangliaPropertyProviderTest.TestGangliaHostProvider; import org.apache.ambari.server.controller.spi.Predicate; import org.apache.ambari.server.controller.spi.PropertyProvider; import org.apache.ambari.server.controller.spi.Request; @@ -50,15 +39,20 @@ import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Host; import org.apache.ambari.server.state.StackId; import org.apache.ambari.server.state.stack.Metric; -import org.apache.http.client.utils.URIBuilder; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import com.google.inject.Guice; -import com.google.inject.Injector; -import com.google.inject.persist.PersistService; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; /** * Tests the stack defined property provider. @@ -108,10 +102,10 @@ public class StackDefinedPropertyProviderTest { public void testPopulateHostComponentResources() throws Exception { JMXPropertyProviderTest.TestJMXHostProvider tj = new JMXPropertyProviderTest.TestJMXHostProvider(true); TestGangliaHostProvider tg = new TestGangliaHostProvider(); - JMXPropertyProviderTest.TestMetricsHostProvider tm = new JMXPropertyProviderTest.TestMetricsHostProvider(); + JMXPropertyProviderTest.TestMetricHostProvider tm = new JMXPropertyProviderTest.TestMetricHostProvider(); StackDefinedPropertyProvider sdpp = new StackDefinedPropertyProvider( - Resource.Type.HostComponent, tj, tg, tm, new CombinedStreamProvider(), + Resource.Type.HostComponent, tj, tm, new CombinedStreamProvider(), "HostRoles/cluster_name", "HostRoles/host_name", "HostRoles/component_name", "HostRoles/state", null, null); Resource resource = new ResourceImpl(Resource.Type.HostComponent); @@ -295,12 +289,11 @@ public class StackDefinedPropertyProviderTest { StreamProvider streamProvider = new TestStreamProvider(); JMXPropertyProviderTest.TestJMXHostProvider hostProvider = new JMXPropertyProviderTest.TestJMXHostProvider(true); TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider(); - JMXPropertyProviderTest.TestMetricsHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricsHostProvider(); + JMXPropertyProviderTest.TestMetricHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricHostProvider(); StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider( Resource.Type.HostComponent, hostProvider, - gangliaHostProvider, metricsHostProvider, streamProvider, PropertyHelper.getPropertyId("HostRoles", "cluster_name"), @@ -357,12 +350,11 @@ public class StackDefinedPropertyProviderTest { TestStreamProvider streamProvider = new TestStreamProvider(); JMXPropertyProviderTest.TestJMXHostProvider hostProvider = new JMXPropertyProviderTest.TestJMXHostProvider(false); TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider(); - JMXPropertyProviderTest.TestMetricsHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricsHostProvider(); + JMXPropertyProviderTest.TestMetricHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricHostProvider(); StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider( Resource.Type.HostComponent, hostProvider, - gangliaHostProvider, metricsHostProvider, streamProvider, PropertyHelper.getPropertyId("HostRoles", "cluster_name"), @@ -410,12 +402,11 @@ public class StackDefinedPropertyProviderTest { TestStreamProvider streamProvider = new TestStreamProvider(); JMXPropertyProviderTest.TestJMXHostProvider hostProvider = new JMXPropertyProviderTest.TestJMXHostProvider(false); TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider(); - JMXPropertyProviderTest.TestMetricsHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricsHostProvider(); + JMXPropertyProviderTest.TestMetricHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricHostProvider(); StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider( Resource.Type.HostComponent, hostProvider, - gangliaHostProvider, metricsHostProvider, streamProvider, PropertyHelper.getPropertyId("HostRoles", "cluster_name"), @@ -448,12 +439,12 @@ public class StackDefinedPropertyProviderTest { TestStreamProvider streamProvider = new TestStreamProvider(); JMXPropertyProviderTest.TestJMXHostProvider hostProvider = new JMXPropertyProviderTest.TestJMXHostProvider(false); TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider(); - JMXPropertyProviderTest.TestMetricsHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricsHostProvider(); + JMXPropertyProviderTest.TestMetricHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricHostProvider(); StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider( Resource.Type.HostComponent, hostProvider, - gangliaHostProvider, + metricsHostProvider, streamProvider, PropertyHelper.getPropertyId("HostRoles", "cluster_name"), @@ -501,12 +492,12 @@ public class StackDefinedPropertyProviderTest { TestStreamProvider streamProvider = new TestStreamProvider(); JMXPropertyProviderTest.TestJMXHostProvider hostProvider = new JMXPropertyProviderTest.TestJMXHostProvider(false); TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider(); - JMXPropertyProviderTest.TestMetricsHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricsHostProvider(); + JMXPropertyProviderTest.TestMetricHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricHostProvider(); StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider( Resource.Type.HostComponent, hostProvider, - gangliaHostProvider, + metricsHostProvider, streamProvider, PropertyHelper.getPropertyId("HostRoles", "cluster_name"), @@ -560,12 +551,12 @@ public class StackDefinedPropertyProviderTest { TestStreamProvider streamProvider = new TestStreamProvider(); JMXPropertyProviderTest.TestJMXHostProvider hostProvider = new JMXPropertyProviderTest.TestJMXHostProvider(false); TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider(); - JMXPropertyProviderTest.TestMetricsHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricsHostProvider(); + JMXPropertyProviderTest.TestMetricHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricHostProvider(); StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider( Resource.Type.HostComponent, hostProvider, - gangliaHostProvider, + metricsHostProvider, streamProvider, PropertyHelper.getPropertyId("HostRoles", "cluster_name"), @@ -686,13 +677,12 @@ public class StackDefinedPropertyProviderTest { TestStreamProvider streamProvider = new TestStreamProvider(); JMXPropertyProviderTest.TestJMXHostProvider hostProvider = new JMXPropertyProviderTest.TestJMXHostProvider(false); TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider(); - JMXPropertyProviderTest.TestMetricsHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricsHostProvider(); + JMXPropertyProviderTest.TestMetricHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricHostProvider(); StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider( Resource.Type.HostComponent, hostProvider, gangliaHostProvider, - metricsHostProvider, streamProvider, PropertyHelper.getPropertyId("HostRoles", "cluster_name"), PropertyHelper.getPropertyId("HostRoles", "host_name"), @@ -729,12 +719,12 @@ public class StackDefinedPropertyProviderTest { TestStreamProvider streamProvider = new TestStreamProvider(); JMXPropertyProviderTest.TestJMXHostProvider hostProvider = new JMXPropertyProviderTest.TestJMXHostProvider(false); TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider(); - JMXPropertyProviderTest.TestMetricsHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricsHostProvider(); + JMXPropertyProviderTest.TestMetricHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricHostProvider(); StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider( Resource.Type.HostComponent, hostProvider, - gangliaHostProvider, + metricsHostProvider, streamProvider, PropertyHelper.getPropertyId("HostRoles", "cluster_name"), @@ -766,12 +756,11 @@ public class StackDefinedPropertyProviderTest { TestStreamProvider streamProvider = new TestStreamProvider(); JMXPropertyProviderTest.TestJMXHostProvider hostProvider = new JMXPropertyProviderTest.TestJMXHostProvider(false); TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider(); - JMXPropertyProviderTest.TestMetricsHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricsHostProvider(); + JMXPropertyProviderTest.TestMetricHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricHostProvider(); StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider( Resource.Type.HostComponent, hostProvider, - gangliaHostProvider, metricsHostProvider, streamProvider, PropertyHelper.getPropertyId("HostRoles", "cluster_name"), @@ -805,18 +794,16 @@ public class StackDefinedPropertyProviderTest { @Test public void testPopulateResources_params_category5() throws Exception { - org.apache.ambari.server.controller.ganglia.TestStreamProvider streamProvider = - new org.apache.ambari.server.controller.ganglia.TestStreamProvider("temporal_ganglia_data_yarn_queues.txt"); + org.apache.ambari.server.controller.metrics.ganglia.TestStreamProvider streamProvider = + new org.apache.ambari.server.controller.metrics.ganglia.TestStreamProvider("temporal_ganglia_data_yarn_queues.txt"); JMXPropertyProviderTest.TestJMXHostProvider jmxHostProvider = new JMXPropertyProviderTest.TestJMXHostProvider(true); TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - JMXPropertyProviderTest.TestMetricsHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricsHostProvider(); StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider( Resource.Type.HostComponent, jmxHostProvider, hostProvider, - metricsHostProvider, streamProvider, PropertyHelper.getPropertyId("HostRoles", "cluster_name"), PropertyHelper.getPropertyId("HostRoles", "host_name"), @@ -853,18 +840,16 @@ public class StackDefinedPropertyProviderTest { @Test public void testPopulateResources_ganglia_JournalNode() throws Exception { - org.apache.ambari.server.controller.ganglia.TestStreamProvider streamProvider = - new org.apache.ambari.server.controller.ganglia.TestStreamProvider("journalnode_ganglia_data.txt"); + org.apache.ambari.server.controller.metrics.ganglia.TestStreamProvider streamProvider = + new org.apache.ambari.server.controller.metrics.ganglia.TestStreamProvider("journalnode_ganglia_data.txt"); JMXPropertyProviderTest.TestJMXHostProvider jmxHostProvider = new JMXPropertyProviderTest.TestJMXHostProvider(true); TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); - JMXPropertyProviderTest.TestMetricsHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricsHostProvider(); StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider( Resource.Type.HostComponent, jmxHostProvider, hostProvider, - metricsHostProvider, streamProvider, PropertyHelper.getPropertyId("HostRoles", "cluster_name"), PropertyHelper.getPropertyId("HostRoles", "host_name"), @@ -977,18 +962,17 @@ public class StackDefinedPropertyProviderTest { "metrics/yarn/ClusterMetrics/NumRebootedNMs" }; - org.apache.ambari.server.controller.ganglia.TestStreamProvider streamProvider = - new org.apache.ambari.server.controller.ganglia.TestStreamProvider("yarn_ganglia_data.txt"); + org.apache.ambari.server.controller.metrics.ganglia.TestStreamProvider streamProvider = + new org.apache.ambari.server.controller.metrics.ganglia.TestStreamProvider("yarn_ganglia_data.txt"); JMXPropertyProviderTest.TestJMXHostProvider jmxHostProvider = new JMXPropertyProviderTest.TestJMXHostProvider(true); - JMXPropertyProviderTest.TestMetricsHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricsHostProvider(); + JMXPropertyProviderTest.TestMetricHostProvider metricsHostProvider = new JMXPropertyProviderTest.TestMetricHostProvider(); TestGangliaHostProvider hostProvider = new TestGangliaHostProvider(); StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider( Resource.Type.HostComponent, jmxHostProvider, hostProvider, - metricsHostProvider, streamProvider, PropertyHelper.getPropertyId("HostRoles", "cluster_name"), PropertyHelper.getPropertyId("HostRoles", "host_name"),