You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by ka...@apache.org on 2014/07/11 21:57:59 UTC
[04/17] [HELIX-395] Remove old Helix alert/stat modules
http://git-wip-us.apache.org/repos/asf/helix/blob/38b43965/helix-core/src/test/java/org/apache/helix/healthcheck/TestSimpleAlert.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/healthcheck/TestSimpleAlert.java b/helix-core/src/test/java/org/apache/helix/healthcheck/TestSimpleAlert.java
deleted file mode 100644
index 44937fe..0000000
--- a/helix-core/src/test/java/org/apache/helix/healthcheck/TestSimpleAlert.java
+++ /dev/null
@@ -1,200 +0,0 @@
-package org.apache.helix.healthcheck;
-
-/*
- * 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 java.util.Date;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.helix.HelixDataAccessor;
-import org.apache.helix.HelixManager;
-import org.apache.helix.NotificationContext;
-import org.apache.helix.PropertyKey.Builder;
-import org.apache.helix.TestHelper;
-import org.apache.helix.ZNRecord;
-import org.apache.helix.alerts.AlertValueAndStatus;
-import org.apache.helix.api.State;
-import org.apache.helix.healthcheck.ParticipantHealthReportCollectorImpl;
-import org.apache.helix.integration.ZkIntegrationTestBase;
-import org.apache.helix.integration.manager.ClusterControllerManager;
-import org.apache.helix.integration.manager.MockParticipantManager;
-import org.apache.helix.manager.zk.ZKHelixDataAccessor;
-import org.apache.helix.manager.zk.ZkBaseDataAccessor;
-import org.apache.helix.mock.participant.MockEspressoHealthReportProvider;
-import org.apache.helix.mock.participant.MockTransition;
-import org.apache.helix.model.Message;
-import org.apache.helix.tools.ClusterSetup;
-import org.apache.helix.tools.ClusterStateVerifier;
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class TestSimpleAlert extends ZkIntegrationTestBase {
- protected ClusterSetup _setupTool = null;
- protected final String _alertStr =
- "EXP(decay(1.0)(localhost_12918.RestQueryStats@DBName=TestDB0.latency))CMP(GREATER)CON(10)";
- protected final String _alertStatusStr = _alertStr; // +" : (*)";
- protected final String _dbName = "TestDB0";
-
- @BeforeClass()
- public void beforeClass() throws Exception {
- _setupTool = new ClusterSetup(_gZkClient);
- }
-
- @AfterClass
- public void afterClass() {
- }
-
- public class SimpleAlertTransition extends MockTransition {
- int _alertValue;
-
- public SimpleAlertTransition(int value) {
- _alertValue = value;
- }
-
- @Override
- public void doTransition(Message message, NotificationContext context) {
- HelixManager manager = context.getManager();
- HelixDataAccessor accessor = manager.getHelixDataAccessor();
- State fromState = message.getTypedFromState();
- State toState = message.getTypedToState();
- String instance = message.getTgtName();
-
- if (fromState.toString().equalsIgnoreCase("SLAVE")
- && toState.toString().equalsIgnoreCase("MASTER")) {
-
- // add a stat and report to ZK
- // perhaps should keep reporter per instance...
- ParticipantHealthReportCollectorImpl reporter =
- new ParticipantHealthReportCollectorImpl(manager, instance);
- MockEspressoHealthReportProvider provider = new MockEspressoHealthReportProvider();
- reporter.addHealthReportProvider(provider);
- String statName = "latency";
- provider.setStat(_dbName, statName, "" + (0.1 + _alertValue));
- reporter.transmitHealthReports();
-
- /*
- * for (int i = 0; i < 5; i++)
- * {
- * accessor.setProperty(PropertyType.HEALTHREPORT,
- * new ZNRecord("mockAlerts" + i),
- * instance,
- * "mockAlerts");
- * try
- * {
- * Thread.sleep(1000);
- * }
- * catch (InterruptedException e)
- * {
- * // TODO Auto-generated catch block
- * e.printStackTrace();
- * }
- * }
- */
- }
- }
-
- }
-
- @Test()
- public void testSimpleAlert() throws Exception {
- String clusterName = getShortClassName();
- MockParticipantManager[] participants = new MockParticipantManager[5];
-
- System.out.println("START TestSimpleAlert at " + new Date(System.currentTimeMillis()));
-
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant start port
- "localhost", // participant name prefix
- "TestDB", // resource name prefix
- 1, // resources
- 10, // partitions per resource
- 5, // number of nodes //change back to 5!!!
- 3, // replicas //change back to 3!!!
- "MasterSlave", true); // do rebalance
-
- // enableHealthCheck(clusterName);
-
- ClusterControllerManager controller =
- new ClusterControllerManager(ZK_ADDR, clusterName, "controller_0");
- controller.syncStart();
- controller.startTimerTasks();
-
- _setupTool.getClusterManagementTool().addAlert(clusterName, _alertStr);
- // start participants
- for (int i = 0; i < 5; i++) // !!!change back to 5
- {
- String instanceName = "localhost_" + (12918 + i);
-
- participants[i] = new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
- participants[i].setTransition(new SimpleAlertTransition(15));
- participants[i].syncStart();
- }
-
- boolean result =
- ClusterStateVerifier.verifyByPolling(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(
- ZK_ADDR, clusterName));
- Assert.assertTrue(result);
-
- // HealthAggregationTask is supposed to run by a timer every 30s
- // To make sure HealthAggregationTask is run, we invoke it explicitly for this test
- // new HealthStatsAggregator(cmResult._manager).aggregate();
- new HealthStatsAggregator(controller).aggregate();
- // sleep for a few seconds to give stats stage time to trigger
- Thread.sleep(3000);
-
- // other verifications go here
- ZKHelixDataAccessor accessor =
- new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
- Builder keyBuilder = accessor.keyBuilder();
- // for (int i = 0; i < 1; i++) //change 1 back to 5
- // {
- // String instance = "localhost_" + (12918 + i);
- String instance = "localhost_12918";
- ZNRecord record = accessor.getProperty(keyBuilder.alertStatus()).getRecord();
- Map<String, Map<String, String>> recMap = record.getMapFields();
- Set<String> keySet = recMap.keySet();
- Map<String, String> alertStatusMap = recMap.get(_alertStatusStr);
- String val = alertStatusMap.get(AlertValueAndStatus.VALUE_NAME);
- boolean fired = Boolean.parseBoolean(alertStatusMap.get(AlertValueAndStatus.FIRED_NAME));
- Assert.assertEquals(Double.parseDouble(val), Double.parseDouble("15.1"));
- Assert.assertTrue(fired);
-
- // Verify Alert history from ZK
- ZNRecord alertHistory = accessor.getProperty(keyBuilder.alertHistory()).getRecord();
-
- String deltakey = (String) (alertHistory.getMapFields().keySet().toArray()[0]);
- Map<String, String> delta = alertHistory.getMapField(deltakey);
- Assert.assertTrue(delta.size() == 1);
- Assert
- .assertTrue(delta
- .get(
- "EXP(decay(1.0)(localhost_12918.RestQueryStats@DBName#TestDB0.latency))CMP(GREATER)CON(10)--(%)")
- .equals("ON"));
- // }
-
- // clean up
- controller.syncStop();
- for (int i = 0; i < 5; i++) {
- participants[i].syncStop();
- }
- System.out.println("END TestSimpleAlert at " + new Date(System.currentTimeMillis()));
- }
-}
http://git-wip-us.apache.org/repos/asf/helix/blob/38b43965/helix-core/src/test/java/org/apache/helix/healthcheck/TestSimpleWildcardAlert.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/healthcheck/TestSimpleWildcardAlert.java b/helix-core/src/test/java/org/apache/helix/healthcheck/TestSimpleWildcardAlert.java
deleted file mode 100644
index 99c0608..0000000
--- a/helix-core/src/test/java/org/apache/helix/healthcheck/TestSimpleWildcardAlert.java
+++ /dev/null
@@ -1,246 +0,0 @@
-package org.apache.helix.healthcheck;
-
-/*
- * 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 java.util.Date;
-import java.util.Map;
-
-import org.apache.helix.HelixDataAccessor;
-import org.apache.helix.HelixManager;
-import org.apache.helix.NotificationContext;
-import org.apache.helix.PropertyKey.Builder;
-import org.apache.helix.TestHelper;
-import org.apache.helix.ZNRecord;
-import org.apache.helix.alerts.AlertValueAndStatus;
-import org.apache.helix.api.State;
-import org.apache.helix.healthcheck.ParticipantHealthReportCollectorImpl;
-import org.apache.helix.integration.ZkIntegrationTestBase;
-import org.apache.helix.integration.manager.ClusterControllerManager;
-import org.apache.helix.integration.manager.MockParticipantManager;
-import org.apache.helix.manager.zk.ZKHelixDataAccessor;
-import org.apache.helix.manager.zk.ZkBaseDataAccessor;
-import org.apache.helix.mock.participant.MockEspressoHealthReportProvider;
-import org.apache.helix.mock.participant.MockTransition;
-import org.apache.helix.model.Message;
-import org.apache.helix.tools.ClusterSetup;
-import org.apache.helix.tools.ClusterStateVerifier;
-import org.apache.log4j.Logger;
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class TestSimpleWildcardAlert extends ZkIntegrationTestBase {
- private static Logger LOG = Logger.getLogger(TestSimpleWildcardAlert.class);
-
- protected ClusterSetup _setupTool = null;
- protected final String _alertStr =
- "EXP(decay(1.0)(localhost_12918.RestQueryStats@DBName=TestDB0.latency))CMP(GREATER)CON(10)";
- protected final String _alertStatusStr = _alertStr; // +" : (*)";
- protected final String _dbName = "TestDB0";
-
- @BeforeClass()
- public void beforeClass() throws Exception {
-
- _setupTool = new ClusterSetup(_gZkClient);
- }
-
- @AfterClass
- public void afterClass() {
- }
-
- public class SimpleAlertTransition extends MockTransition {
- int _alertValue;
-
- public SimpleAlertTransition(int value) {
- _alertValue = value;
- }
-
- @Override
- public void doTransition(Message message, NotificationContext context) {
- HelixManager manager = context.getManager();
- HelixDataAccessor accessor = manager.getHelixDataAccessor();
- State fromState = message.getTypedFromState();
- State toState = message.getTypedToState();
- String instance = message.getTgtName();
-
- if (fromState.toString().equalsIgnoreCase("SLAVE")
- && toState.toString().equalsIgnoreCase("MASTER")) {
-
- // add a stat and report to ZK
- // perhaps should keep reporter per instance...
- ParticipantHealthReportCollectorImpl reporter =
- new ParticipantHealthReportCollectorImpl(manager, instance);
- MockEspressoHealthReportProvider provider = new MockEspressoHealthReportProvider();
- reporter.addHealthReportProvider(provider);
- String statName = "latency";
- provider.setStat(_dbName, statName, "" + (0.1 + _alertValue));
- reporter.transmitHealthReports();
-
- /*
- * for (int i = 0; i < 5; i++)
- * {
- * accessor.setProperty(PropertyType.HEALTHREPORT,
- * new ZNRecord("mockAlerts" + i),
- * instance,
- * "mockAlerts");
- * try
- * {
- * Thread.sleep(1000);
- * }
- * catch (InterruptedException e)
- * {
- * // TODO Auto-generated catch block
- * e.printStackTrace();
- * }
- * }
- */
- }
- }
-
- }
-
- @Test()
- public void testSimpleWildcardAlert() throws Exception {
- String clusterName = getShortClassName();
- MockParticipantManager[] participants = new MockParticipantManager[5];
-
- System.out.println("START testSimpleWildcardAlert at " + new Date(System.currentTimeMillis()));
-
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12944, // participant start port
- "localhost", // participant name prefix
- "TestDB", // resource name prefix
- 1, // resources
- 10, // partitions per resource
- 5, // number of nodes //change back to 5!!!
- 3, // replicas //change back to 3!!!
- "MasterSlave", true); // do rebalance
-
- // enableHealthCheck(clusterName);
-
- ClusterControllerManager controller =
- new ClusterControllerManager(ZK_ADDR, clusterName, "controller_0");
- controller.syncStart();
- controller.stopTimerTasks();
-
- String alertwildcard =
- "EXP(decay(1.0)(localhost*.RestQueryStats@DBName=TestDB0.latency))CMP(GREATER)CON(10)";
-
- _setupTool.getClusterManagementTool().addAlert(clusterName, alertwildcard);
- // start participants
- for (int i = 0; i < 5; i++) // !!!change back to 5
- {
- String instanceName = "localhost_" + (12944 + i);
-
- participants[i] = new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
- participants[i].setTransition(new SimpleAlertTransition(i * 5));
- participants[i].syncStart();
- }
-
- boolean result =
- ClusterStateVerifier.verifyByPolling(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(
- ZK_ADDR, clusterName));
- Assert.assertTrue(result);
-
- Thread.sleep(1000);
- // HealthAggregationTask is supposed to run by a timer every 30s
- // To make sure HealthAggregationTask is run, we invoke it explicitly for this test
- new HealthStatsAggregator(controller).aggregate();
- // sleep for a few seconds to give stats stage time to trigger
- Thread.sleep(1000);
-
- // other verifications go here
- ZKHelixDataAccessor accessor =
- new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
- Builder keyBuilder = accessor.keyBuilder();
- ZNRecord record = accessor.getProperty(keyBuilder.alertStatus()).getRecord();
- Map<String, Map<String, String>> recMap = record.getMapFields();
- for (int i = 0; i < 2; i++) {
- String alertString = "(localhost_" + (12944 + i) + ".RestQueryStats@DBName=TestDB0.latency)";
- Map<String, String> alertStatusMap = recMap.get(alertwildcard + " : " + alertString);
- String val = alertStatusMap.get(AlertValueAndStatus.VALUE_NAME);
- boolean fired = Boolean.parseBoolean(alertStatusMap.get(AlertValueAndStatus.FIRED_NAME));
- Assert.assertEquals(Double.parseDouble(val), (double) i * 5 + 0.1);
- Assert.assertFalse(fired);
- }
- for (int i = 2; i < 5; i++) {
- String alertString = "(localhost_" + (12944 + i) + ".RestQueryStats@DBName=TestDB0.latency)";
- Map<String, String> alertStatusMap = recMap.get(alertwildcard + " : " + alertString);
- String val = alertStatusMap.get(AlertValueAndStatus.VALUE_NAME);
- boolean fired = Boolean.parseBoolean(alertStatusMap.get(AlertValueAndStatus.FIRED_NAME));
- Assert.assertEquals(Double.parseDouble(val), (double) i * 5 + 0.1);
- Assert.assertTrue(fired);
- }
- ZNRecord alertHistory = accessor.getProperty(keyBuilder.alertHistory()).getRecord();
-
- String deltakey = (String) (alertHistory.getMapFields().keySet().toArray()[0]);
- Map<String, String> delta = alertHistory.getMapField(deltakey);
- Assert.assertEquals(delta.size(), 3);
- for (int i = 2; i < 5; i++) {
- String alertString =
- "(localhost_" + (12944 + i) + ".RestQueryStats@DBName#TestDB0.latency)GREATER(10)";
- Assert.assertTrue(delta.get(alertString).equals("ON"));
- }
-
- // Drop and add another alert
- _setupTool.getClusterManagementTool().dropAlert(clusterName, alertwildcard);
- alertwildcard =
- "EXP(decay(1.0)(localhost*.RestQueryStats@DBName=TestDB0.latency))CMP(GREATER)CON(15)";
- _setupTool.getClusterManagementTool().addAlert(clusterName, alertwildcard);
- new HealthStatsAggregator(controller).aggregate();
- Thread.sleep(1000);
-
- record = accessor.getProperty(keyBuilder.alertStatus()).getRecord();
- recMap = record.getMapFields();
- for (int i = 0; i < 3; i++) {
- String alertString = "(localhost_" + (12944 + i) + ".RestQueryStats@DBName=TestDB0.latency)";
- Map<String, String> alertStatusMap = recMap.get(alertwildcard + " : " + alertString);
- String val = alertStatusMap.get(AlertValueAndStatus.VALUE_NAME);
- boolean fired = Boolean.parseBoolean(alertStatusMap.get(AlertValueAndStatus.FIRED_NAME));
- Assert.assertEquals(Double.parseDouble(val), (double) i * 5 + 0.1);
- Assert.assertFalse(fired);
- }
- for (int i = 3; i < 5; i++) {
- String alertString = "(localhost_" + (12944 + i) + ".RestQueryStats@DBName=TestDB0.latency)";
- Map<String, String> alertStatusMap = recMap.get(alertwildcard + " : " + alertString);
- String val = alertStatusMap.get(AlertValueAndStatus.VALUE_NAME);
- boolean fired = Boolean.parseBoolean(alertStatusMap.get(AlertValueAndStatus.FIRED_NAME));
- Assert.assertEquals(Double.parseDouble(val), (double) i * 5 + 0.1);
- Assert.assertTrue(fired);
- }
- alertHistory = accessor.getProperty(keyBuilder.alertHistory()).getRecord();
-
- deltakey = (String) (alertHistory.getMapFields().keySet().toArray()[1]);
- delta = alertHistory.getMapField(deltakey);
- Assert.assertTrue(delta.size() == 2);
- for (int i = 3; i < 5; i++) {
- String alertString =
- "(localhost_" + (12944 + i) + ".RestQueryStats@DBName#TestDB0.latency)GREATER(15)";
- Assert.assertTrue(delta.get(alertString).equals("ON"));
- }
-
- // clean up
- controller.syncStop();
- for (int i = 0; i < 5; i++) {
- participants[i].syncStop();
- }
- System.out.println("END testSimpleWildcardAlert at " + new Date(System.currentTimeMillis()));
- }
-}
http://git-wip-us.apache.org/repos/asf/helix/blob/38b43965/helix-core/src/test/java/org/apache/helix/healthcheck/TestStalenessAlert.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/healthcheck/TestStalenessAlert.java b/helix-core/src/test/java/org/apache/helix/healthcheck/TestStalenessAlert.java
deleted file mode 100644
index 3227a65..0000000
--- a/helix-core/src/test/java/org/apache/helix/healthcheck/TestStalenessAlert.java
+++ /dev/null
@@ -1,180 +0,0 @@
-package org.apache.helix.healthcheck;
-
-/*
- * 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 java.util.Date;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.helix.HelixDataAccessor;
-import org.apache.helix.HelixManager;
-import org.apache.helix.NotificationContext;
-import org.apache.helix.PropertyKey.Builder;
-import org.apache.helix.TestHelper;
-import org.apache.helix.ZNRecord;
-import org.apache.helix.alerts.AlertValueAndStatus;
-import org.apache.helix.api.State;
-import org.apache.helix.healthcheck.ParticipantHealthReportCollectorImpl;
-import org.apache.helix.integration.ZkIntegrationTestBase;
-import org.apache.helix.integration.manager.ClusterControllerManager;
-import org.apache.helix.integration.manager.MockParticipantManager;
-import org.apache.helix.manager.zk.ZKHelixDataAccessor;
-import org.apache.helix.manager.zk.ZkBaseDataAccessor;
-import org.apache.helix.mock.participant.MockEspressoHealthReportProvider;
-import org.apache.helix.mock.participant.MockTransition;
-import org.apache.helix.model.Message;
-import org.apache.helix.tools.ClusterSetup;
-import org.apache.helix.tools.ClusterStateVerifier;
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class TestStalenessAlert extends ZkIntegrationTestBase {
- protected ClusterSetup _setupTool = null;
- protected final String _alertStr = "EXP(decay(1)(localhost_*.reportingage))CMP(GREATER)CON(600)";
- protected final String _alertStatusStr = _alertStr + " : (localhost_12918.reportingage)";
- protected final String _dbName = "TestDB0";
-
- @BeforeClass()
- public void beforeClass() throws Exception {
-
- _setupTool = new ClusterSetup(_gZkClient);
- }
-
- @AfterClass
- public void afterClass() {
- }
-
- public class StalenessAlertTransition extends MockTransition {
- @Override
- public void doTransition(Message message, NotificationContext context) {
- HelixManager manager = context.getManager();
- HelixDataAccessor accessor = manager.getHelixDataAccessor();
- State fromState = message.getTypedFromState();
- State toState = message.getTypedToState();
- String instance = message.getTgtName();
-
- if (fromState.toString().equalsIgnoreCase("SLAVE")
- && toState.toString().equalsIgnoreCase("MASTER")) {
-
- // add a stat and report to ZK
- // perhaps should keep reporter per instance...
- ParticipantHealthReportCollectorImpl reporter =
- new ParticipantHealthReportCollectorImpl(manager, instance);
- MockEspressoHealthReportProvider provider = new MockEspressoHealthReportProvider();
- reporter.addHealthReportProvider(provider);
- String statName = "latency";
- provider.setStat(_dbName, statName, "15");
- reporter.transmitHealthReports();
-
- /*
- * for (int i = 0; i < 5; i++)
- * {
- * accessor.setProperty(PropertyType.HEALTHREPORT,
- * new ZNRecord("mockAlerts" + i),
- * instance,
- * "mockAlerts");
- * try
- * {
- * Thread.sleep(1000);
- * }
- * catch (InterruptedException e)
- * {
- * // TODO Auto-generated catch block
- * e.printStackTrace();
- * }
- * }
- */
- }
- }
-
- }
-
- @Test()
- public void testStalenessAlert() throws Exception {
- String clusterName = getShortClassName();
- MockParticipantManager[] participants = new MockParticipantManager[5];
-
- System.out.println("START TestStalenessAlert at " + new Date(System.currentTimeMillis()));
-
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant start port
- "localhost", // participant name prefix
- "TestDB", // resource name prefix
- 1, // resources
- 10, // partitions per resource
- 5, // number of nodes //change back to 5!!!
- 3, // replicas //change back to 3!!!
- "MasterSlave", true); // do rebalance
- // enableHealthCheck(clusterName);
-
- _setupTool.getClusterManagementTool().addAlert(clusterName, _alertStr);
-
- ClusterControllerManager controller =
- new ClusterControllerManager(ZK_ADDR, clusterName, "controller_0");
- controller.syncStart();
-
- // start participants
- for (int i = 0; i < 5; i++) // !!!change back to 5
- {
- String instanceName = "localhost_" + (12918 + i);
-
- participants[i] = new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
- participants[i].setTransition(new StalenessAlertTransition());
- participants[i].syncStart();
- }
-
- boolean result =
- ClusterStateVerifier.verifyByPolling(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(
- ZK_ADDR, clusterName));
- Assert.assertTrue(result);
-
- // HealthAggregationTask is supposed to run by a timer every 30s
- // To make sure HealthAggregationTask is run, we invoke it explicitly for this test
- new HealthStatsAggregator(controller).aggregate();
- // sleep for a few seconds to give stats stage time to trigger
- Thread.sleep(3000);
-
- // other verifications go here
- ZKHelixDataAccessor accessor =
- new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
- Builder keyBuilder = accessor.keyBuilder();
- // for (int i = 0; i < 1; i++) //change 1 back to 5
- // {
- // String instance = "localhost_" + (12918 + i);
- // String instance = "localhost_12918";
- ZNRecord record = accessor.getProperty(keyBuilder.alertStatus()).getRecord();
- Map<String, Map<String, String>> recMap = record.getMapFields();
- Set<String> keySet = recMap.keySet();
- Map<String, String> alertStatusMap = recMap.get(_alertStatusStr);
- String val = alertStatusMap.get(AlertValueAndStatus.VALUE_NAME);
- boolean fired = Boolean.parseBoolean(alertStatusMap.get(AlertValueAndStatus.FIRED_NAME));
- // Assert.assertEquals(Double.parseDouble(val), Double.parseDouble("75.0"));
- // Assert.assertFalse(fired);
- // }
-
- // clean up
- controller.syncStop();
- for (int i = 0; i < 5; i++) {
- participants[i].syncStop();
- }
- System.out.println("END TestStalenessAlert at " + new Date(System.currentTimeMillis()));
- }
-}
http://git-wip-us.apache.org/repos/asf/helix/blob/38b43965/helix-core/src/test/java/org/apache/helix/healthcheck/TestWildcardAlert.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/healthcheck/TestWildcardAlert.java b/helix-core/src/test/java/org/apache/helix/healthcheck/TestWildcardAlert.java
deleted file mode 100644
index 9677fcf..0000000
--- a/helix-core/src/test/java/org/apache/helix/healthcheck/TestWildcardAlert.java
+++ /dev/null
@@ -1,296 +0,0 @@
-package org.apache.helix.healthcheck;
-
-/*
- * 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 java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-import javax.management.AttributeNotFoundException;
-import javax.management.InstanceNotFoundException;
-import javax.management.IntrospectionException;
-import javax.management.MBeanAttributeInfo;
-import javax.management.MBeanException;
-import javax.management.MBeanInfo;
-import javax.management.MBeanServerConnection;
-import javax.management.MBeanServerNotification;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-import javax.management.ReflectionException;
-
-import org.apache.helix.HelixDataAccessor;
-import org.apache.helix.HelixManager;
-import org.apache.helix.NotificationContext;
-import org.apache.helix.PropertyKey.Builder;
-import org.apache.helix.TestHelper;
-import org.apache.helix.ZNRecord;
-import org.apache.helix.alerts.AlertValueAndStatus;
-import org.apache.helix.api.State;
-import org.apache.helix.healthcheck.ParticipantHealthReportCollectorImpl;
-import org.apache.helix.integration.ZkIntegrationTestBase;
-import org.apache.helix.integration.manager.ClusterControllerManager;
-import org.apache.helix.integration.manager.MockParticipantManager;
-import org.apache.helix.manager.zk.ZKHelixDataAccessor;
-import org.apache.helix.manager.zk.ZkBaseDataAccessor;
-import org.apache.helix.mock.participant.MockEspressoHealthReportProvider;
-import org.apache.helix.mock.participant.MockTransition;
-import org.apache.helix.model.Message;
-import org.apache.helix.monitoring.mbeans.ClusterAlertMBeanCollection;
-import org.apache.helix.monitoring.mbeans.ClusterMBeanObserver;
-import org.apache.helix.tools.ClusterSetup;
-import org.apache.helix.tools.ClusterStateVerifier;
-import org.apache.log4j.Logger;
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class TestWildcardAlert extends ZkIntegrationTestBase {
- public static class TestClusterMBeanObserver extends ClusterMBeanObserver {
- public Map<String, Map<String, Object>> _beanValueMap =
- new ConcurrentHashMap<String, Map<String, Object>>();
-
- public TestClusterMBeanObserver(String domain) throws InstanceNotFoundException, IOException,
- MalformedObjectNameException, NullPointerException {
- super(domain);
- }
-
- @Override
- public void onMBeanRegistered(MBeanServerConnection server,
- MBeanServerNotification mbsNotification) {
- try {
- MBeanInfo info = _server.getMBeanInfo(mbsNotification.getMBeanName());
- MBeanAttributeInfo[] infos = info.getAttributes();
- _beanValueMap.put(mbsNotification.getMBeanName().toString(),
- new ConcurrentHashMap<String, Object>());
- for (MBeanAttributeInfo infoItem : infos) {
- Object val = _server.getAttribute(mbsNotification.getMBeanName(), infoItem.getName());
- System.out.println(" " + infoItem.getName() + " : "
- + _server.getAttribute(mbsNotification.getMBeanName(), infoItem.getName())
- + " type : " + infoItem.getType());
- _beanValueMap.get(mbsNotification.getMBeanName().toString()).put(infoItem.getName(), val);
- }
- } catch (Exception e) {
- _logger.error("Error getting bean info, domain=" + _domain, e);
- }
- }
-
- @Override
- public void onMBeanUnRegistered(MBeanServerConnection server,
- MBeanServerNotification mbsNotification) {
- _beanValueMap.remove(mbsNotification.getMBeanName().toString());
- }
-
- public void refresh() throws MalformedObjectNameException, NullPointerException,
- InstanceNotFoundException, IntrospectionException, ReflectionException, IOException,
- AttributeNotFoundException, MBeanException {
- for (String beanName : _beanValueMap.keySet()) {
- ObjectName objName = new ObjectName(beanName);
- MBeanInfo info = _server.getMBeanInfo(objName);
- MBeanAttributeInfo[] infos = info.getAttributes();
- _beanValueMap.put(objName.toString(), new HashMap<String, Object>());
- for (MBeanAttributeInfo infoItem : infos) {
- Object val = _server.getAttribute(objName, infoItem.getName());
- System.out
- .println(" " + infoItem.getName() + " : "
- + _server.getAttribute(objName, infoItem.getName()) + " type : "
- + infoItem.getType());
- _beanValueMap.get(objName.toString()).put(infoItem.getName(), val);
- }
- }
- }
-
- }
-
- private static final Logger _logger = Logger.getLogger(TestWildcardAlert.class);
- protected ClusterSetup _setupTool = null;
- protected final String _alertStr =
- "EXP(decay(1)(localhost_*.RestQueryStats@DBName=TestDB0.latency)|EXPAND|SUMEACH)CMP(GREATER)CON(10)";
- protected final String _alertStatusStr = _alertStr; // +" : (*)";
- protected final String _dbName = "TestDB0";
-
- @BeforeClass()
- public void beforeClass() throws Exception {
-
- _setupTool = new ClusterSetup(_gZkClient);
- }
-
- @AfterClass
- public void afterClass() {
- }
-
- public class WildcardAlertTransition extends MockTransition {
- @Override
- public void doTransition(Message message, NotificationContext context) {
- HelixManager manager = context.getManager();
- HelixDataAccessor accessor = manager.getHelixDataAccessor();
- State fromState = message.getTypedFromState();
- State toState = message.getTypedToState();
- String instance = message.getTgtName();
-
- if (fromState.toString().equalsIgnoreCase("SLAVE")
- && toState.toString().equalsIgnoreCase("MASTER")) {
- // add a stat and report to ZK
- // perhaps should keep reporter per instance...
- ParticipantHealthReportCollectorImpl reporter =
- new ParticipantHealthReportCollectorImpl(manager, instance);
- MockEspressoHealthReportProvider provider = new MockEspressoHealthReportProvider();
- reporter.addHealthReportProvider(provider);
- String statName = "latency";
- // using constant as timestamp so that when each partition does this transition,
- // they do not advance timestamp, and no stats double-counted
- String timestamp = "12345";
- provider.setStat(_dbName, statName, "15", timestamp);
-
- // sleep for random time and see about errors.
- /*
- * Random r = new Random();
- * int x = r.nextInt(30000);
- * try {
- * Thread.sleep(x);
- * } catch (InterruptedException e) {
- * // TODO Auto-generated catch block
- * e.printStackTrace();
- * }
- */
-
- reporter.transmitHealthReports();
-
- /*
- * for (int i = 0; i < 5; i++)
- * {
- * accessor.setProperty(PropertyType.HEALTHREPORT,
- * new ZNRecord("mockAlerts" + i),
- * instance,
- * "mockAlerts");
- * try
- * {
- * Thread.sleep(1000);
- * }
- * catch (InterruptedException e)
- * {
- * // TODO Auto-generated catch block
- * e.printStackTrace();
- * }
- * }
- */
- }
- }
-
- }
-
- @Test()
- public void testWildcardAlert() throws Exception {
- String clusterName = getShortClassName();
- MockParticipantManager[] participants = new MockParticipantManager[5];
-
- System.out.println("START TestWildcardAlert at " + new Date(System.currentTimeMillis()));
-
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant start
- // port
- "localhost", // participant name prefix
- "TestDB", // resource name prefix
- 1, // resources
- 10, // partitions per resource
- 5, // number of nodes //change back to 5!!!
- 3, // replicas //change back to 3!!!
- "MasterSlave", true); // do rebalance
-
- // enableHealthCheck(clusterName);
-
- _setupTool.getClusterManagementTool().addAlert(clusterName, _alertStr);
- // _setupTool.getClusterManagementTool().addAlert(clusterName, _alertStr2);
-
- ClusterControllerManager controller =
- new ClusterControllerManager(ZK_ADDR, clusterName, "controller_0");
- controller.syncStart();
- // start participants
- for (int i = 0; i < 5; i++) // !!!change back to 5
- {
- String instanceName = "localhost_" + (12918 + i);
-
- participants[i] = new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
- participants[i].setTransition(new WildcardAlertTransition());
- participants[i].syncStart();
- }
-
- TestClusterMBeanObserver jmxMBeanObserver =
- new TestClusterMBeanObserver(ClusterAlertMBeanCollection.DOMAIN_ALERT);
-
- boolean result =
- ClusterStateVerifier.verifyByPolling(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(
- ZK_ADDR, clusterName));
- Assert.assertTrue(result);
- Thread.sleep(3000);
- // HealthAggregationTask is supposed to run by a timer every 30s
- // To make sure HealthAggregationTask is run, we invoke it explicitly for this test
- new HealthStatsAggregator(controller).aggregate();
-
- // sleep for a few seconds to give stats stage time to trigger and for bean to trigger
- Thread.sleep(3000);
-
- ZKHelixDataAccessor accessor =
- new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
- Builder keyBuilder = accessor.keyBuilder();
-
- // for (int i = 0; i < 1; i++) //change 1 back to 5
- // {
- // String instance = "localhost_" + (12918 + i);
- // String instance = "localhost_12918";
- ZNRecord record = accessor.getProperty(keyBuilder.alertStatus()).getRecord();
- Map<String, Map<String, String>> recMap = record.getMapFields();
- Set<String> keySet = recMap.keySet();
- Map<String, String> alertStatusMap = recMap.get(_alertStatusStr);
- String val = alertStatusMap.get(AlertValueAndStatus.VALUE_NAME);
- boolean fired = Boolean.parseBoolean(alertStatusMap.get(AlertValueAndStatus.FIRED_NAME));
- Assert.assertEquals(Double.parseDouble(val), Double.parseDouble("75.0"));
- Assert.assertTrue(fired);
-
- // Make sure that the jmxObserver has received all the jmx bean value that is corresponding
- // to the alerts.
- jmxMBeanObserver.refresh();
- Assert.assertTrue(jmxMBeanObserver._beanValueMap.size() >= 1);
-
- String beanName =
- "HelixAlerts:alert=EXP(decay(1)(localhost_%.RestQueryStats@DBName#TestDB0.latency)|EXPAND|SUMEACH)CMP(GREATER)CON(10)--(%)";
- Assert.assertTrue(jmxMBeanObserver._beanValueMap.containsKey(beanName));
-
- Map<String, Object> beanValueMap = jmxMBeanObserver._beanValueMap.get(beanName);
- Assert.assertEquals(beanValueMap.size(), 4);
- Assert.assertEquals((beanValueMap.get("AlertFired")), new Integer(1));
- Assert.assertEquals((beanValueMap.get("AlertValue")), new Double(75.0));
- Assert
- .assertEquals(
- (String) (beanValueMap.get("SensorName")),
- "EXP(decay(1)(localhost_%.RestQueryStats@DBName#TestDB0.latency)|EXPAND|SUMEACH)CMP(GREATER)CON(10)--(%)");
- // }
-
- // clean up
- controller.syncStop();
- for (int i = 0; i < 5; i++) {
- participants[i].syncStop();
- }
-
- System.out.println("END TestWildcardAlert at " + new Date(System.currentTimeMillis()));
- }
-}
http://git-wip-us.apache.org/repos/asf/helix/blob/38b43965/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkClusterManager.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkClusterManager.java b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkClusterManager.java
index 83dc986..bcab38e 100644
--- a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkClusterManager.java
+++ b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkClusterManager.java
@@ -106,7 +106,6 @@ public class TestZkClusterManager extends ZkUnitTestBase {
AssertJUnit.assertEquals("node_1", record.getId());
controller.getMessagingService();
- controller.getHealthReportCollector();
controller.getClusterManagmentTool();
controller.handleNewSession();
@@ -247,8 +246,6 @@ public class TestZkClusterManager extends ZkUnitTestBase {
AssertJUnit.assertTrue(admin.isConnected());
HelixAdmin adminTool = admin.getClusterManagmentTool();
- // ConfigScope scope = new ConfigScopeBuilder().forCluster(clusterName)
- // .forResource("testResource").forPartition("testPartition").build();
HelixConfigScope scope =
new HelixConfigScopeBuilder(ConfigScopeProperty.PARTITION).forCluster(clusterName)
.forResource("testResource").forPartition("testPartition").build();
http://git-wip-us.apache.org/repos/asf/helix/blob/38b43965/helix-core/src/test/java/org/apache/helix/mock/participant/MockEspressoHealthReportProvider.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/mock/participant/MockEspressoHealthReportProvider.java b/helix-core/src/test/java/org/apache/helix/mock/participant/MockEspressoHealthReportProvider.java
deleted file mode 100644
index 84ba081..0000000
--- a/helix-core/src/test/java/org/apache/helix/mock/participant/MockEspressoHealthReportProvider.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package org.apache.helix.mock.participant;
-
-/*
- * 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 java.util.HashMap;
-import java.util.Map;
-
-import org.apache.helix.alerts.StatsHolder;
-import org.apache.helix.healthcheck.HealthReportProvider;
-
-public class MockEspressoHealthReportProvider extends HealthReportProvider {
-
- private final String _reportName = "RestQueryStats";
- private HashMap<String, Map<String, String>> _statMap;
- private final String DB_NAME = "DBName";
-
- public MockEspressoHealthReportProvider() {
- super();
- _statMap = new HashMap<String, Map<String, String>>();
- }
-
- public String buildMapKey(String dbName) {
- return _reportName + "@" + DB_NAME + "=" + dbName;
- }
-
- public void setStat(String dbName, String statName, String statVal) {
- String currTime = String.valueOf(System.currentTimeMillis());
- setStat(dbName, statName, statVal, currTime);
- }
-
- /*
- * This version takes a fixed timestamp to ease with testing
- */
- public void setStat(String dbName, String statName, String statVal, String timestamp) {
- String key = buildMapKey(dbName);
- Map<String, String> dbStatMap = _statMap.get(key);
- if (dbStatMap == null) {
- dbStatMap = new HashMap<String, String>();
- _statMap.put(key, dbStatMap);
- }
- dbStatMap.put(statName, statVal);
- dbStatMap.put(StatsHolder.TIMESTAMP_NAME, timestamp);
- }
-
- @Override
- public Map<String, String> getRecentHealthReport() {
- return null;
- }
-
- @Override
- public Map<String, Map<String, String>> getRecentPartitionHealthReport() {
- return _statMap;
- }
-
- @Override
- public void resetStats() {
- _statMap.clear();
- }
-
- public String getReportName() {
- return _reportName;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/helix/blob/38b43965/helix-core/src/test/java/org/apache/helix/mock/participant/MockHealthReportParticipant.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/mock/participant/MockHealthReportParticipant.java b/helix-core/src/test/java/org/apache/helix/mock/participant/MockHealthReportParticipant.java
deleted file mode 100644
index 31811bb..0000000
--- a/helix-core/src/test/java/org/apache/helix/mock/participant/MockHealthReportParticipant.java
+++ /dev/null
@@ -1,248 +0,0 @@
-package org.apache.helix.mock.participant;
-
-/*
- * 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 java.util.HashMap;
-import java.util.Map;
-import java.util.Random;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.GnuParser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.ParseException;
-import org.apache.helix.HelixManager;
-import org.apache.helix.healthcheck.HealthReportProvider;
-import org.apache.helix.integration.manager.MockParticipantManager;
-import org.apache.log4j.Logger;
-
-public class MockHealthReportParticipant {
- private static final Logger LOG = Logger.getLogger(MockHealthReportParticipant.class);
- public static final String zkServer = "zkSvr";
- public static final String cluster = "cluster";
- public static final String host = "host";
- public static final String port = "port";
- public static final String help = "help";
-
- static class MockHealthReportProvider extends HealthReportProvider {
- private final String _reportName = "MockRestQueryStats";
- private final Map<String, Map<String, String>> _mockHealthReport;
-
- public MockHealthReportProvider() {
- _mockHealthReport = new HashMap<String, Map<String, String>>();
-
- Map<String, String> reportMap = new HashMap<String, String>();
- _mockHealthReport.put("MockRestQueryStats@DBName=BizProfile", reportMap);
-
- reportMap.put("MeanMysqlLatency", "2.132700625");
- reportMap.put("95PercentileLatencyLucene", "108.40825525");
- reportMap.put("99PercentileLatencyMysql", "9.369827");
- reportMap.put("99PercentileLatencyServer", "167.714208");
- reportMap.put("95PercentileLatencyMysqlPool", "8.03621375");
- reportMap.put("95PercentileLatencyServer", "164.68374265");
- reportMap.put("MinLuceneLatency", "1.765908");
- reportMap.put("MaxServerLatency", "167.714208");
- reportMap.put("MeanLuceneLatency", "16.107599458333336");
- reportMap.put("CollectorName", "RestQueryStats");
- reportMap.put("MeanLucenePoolLatency", "8.120545333333332");
- reportMap.put("99PercentileLatencyLucenePool", "65.930564");
- reportMap.put("MinServerLatency", "0.425272");
- reportMap.put("IndexStoreMismatchCount", "0");
- reportMap.put("ErrorCount", "0");
- reportMap.put("MeanMysqlPoolLatency", "1.0704102916666667");
- reportMap.put("MinLucenePoolLatency", "0.008189");
- reportMap.put("MinMysqlLatency", "0.709691");
- reportMap.put("MaxMysqlPoolLatency", "8.606973");
- reportMap.put("99PercentileLatencyMysqlPool", "8.606973");
- reportMap.put("MinMysqlPoolLatency", "0.091883");
- reportMap.put("MaxLucenePoolLatency", "65.930564");
- reportMap.put("99PercentileLatencyLucene", "111.78799");
- reportMap.put("MaxMysqlLatency", "9.369827");
- reportMap.put("TimeStamp", "1332895048143");
- reportMap.put("MeanConcurrencyLevel", "1.9");
- reportMap.put("95PercentileLatencyMysql", "8.96594875");
- reportMap.put("QueryStartCount", "0");
- reportMap.put("95PercentileLatencyLucenePool", "63.518656500000006");
- reportMap.put("MeanServerLatency", "39.5451532");
- reportMap.put("MaxLuceneLatency", "111.78799");
- reportMap.put("QuerySuccessCount", "0");
- }
-
- @Override
- public Map<String, String> getRecentHealthReport() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void resetStats() {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public Map<String, Map<String, String>> getRecentPartitionHealthReport() {
- // tweak: randomly change the last digit
- for (String key1 : _mockHealthReport.keySet()) {
- Map<String, String> reportMap = _mockHealthReport.get(key1);
- for (String key2 : reportMap.keySet()) {
- String value = reportMap.get(key2);
- String lastDigit = "" + new Random().nextInt(10);
- value = value.substring(0, value.length() - 1) + lastDigit;
- reportMap.put(key2, value);
- }
- }
-
- return _mockHealthReport;
- }
-
- @Override
- public String getReportName() {
- return _reportName;
- }
- }
-
- static class MockHealthReportJob implements MockJobIntf {
-
- @Override
- public void doPreConnectJob(HelixManager manager) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void doPostConnectJob(HelixManager manager) {
- // TODO Auto-generated method stub
- manager.getHealthReportCollector().addHealthReportProvider(new MockHealthReportProvider());
-
- // // set property store path for perf test
- // final String setPath = "/TEST_PERF/set";
- // final String updatePath = "/TEST_PERF/update";
- // manager.getHelixPropertyStore().create(setPath, new ZNRecord(setPath),
- // BaseDataAccessor.Option.PERSISTENT);
- // manager.getHelixPropertyStore().set(updatePath, new ZNRecord(updatePath),
- // BaseDataAccessor.Option.PERSISTENT);
- }
-
- }
-
- // hack OptionBuilder is not thread safe
- @SuppressWarnings("static-access")
- synchronized private static Options constructCommandLineOptions() {
- Option helpOption =
- OptionBuilder.withLongOpt(help).withDescription("Prints command-line options info")
- .create();
-
- Option clusterOption =
- OptionBuilder.withLongOpt(cluster).withDescription("Provide cluster name").create();
- clusterOption.setArgs(1);
- clusterOption.setRequired(true);
- clusterOption.setArgName("Cluster name (Required)");
-
- Option hostOption =
- OptionBuilder.withLongOpt(host).withDescription("Provide host name").create();
- hostOption.setArgs(1);
- hostOption.setRequired(true);
- hostOption.setArgName("Host name (Required)");
-
- Option portOption =
- OptionBuilder.withLongOpt(port).withDescription("Provide host port").create();
- portOption.setArgs(1);
- portOption.setRequired(true);
- portOption.setArgName("Host port (Required)");
-
- Option zkServerOption =
- OptionBuilder.withLongOpt(zkServer).withDescription("Provide zookeeper address").create();
- zkServerOption.setArgs(1);
- zkServerOption.setRequired(true);
- zkServerOption.setArgName("Zookeeper server address(Required)");
-
- Options options = new Options();
- options.addOption(helpOption);
- options.addOption(clusterOption);
- options.addOption(hostOption);
- options.addOption(portOption);
- options.addOption(zkServerOption);
-
- return options;
- }
-
- public static void printUsage(Options cliOptions) {
- HelpFormatter helpFormatter = new HelpFormatter();
- helpFormatter.printHelp("java " + MockHealthReportParticipant.class.getName(), cliOptions);
- }
-
- public static CommandLine processCommandLineArgs(String[] cliArgs) throws Exception {
- CommandLineParser cliParser = new GnuParser();
- Options cliOptions = constructCommandLineOptions();
-
- try {
-
- return cliParser.parse(cliOptions, cliArgs);
- } catch (ParseException pe) {
- System.err.println("CommandLineClient: failed to parse command-line options: "
- + pe.toString());
- printUsage(cliOptions);
- System.exit(1);
- }
- return null;
- }
-
- // NOT working for kill -9, working for kill -2/-15
- static class MockHealthReportParticipantShutdownHook extends Thread {
- final MockParticipantManager _participant;
-
- MockHealthReportParticipantShutdownHook(MockParticipantManager participant) {
- _participant = participant;
- }
-
- @Override
- public void run() {
- LOG.info("MockHealthReportParticipantShutdownHook invoked");
- _participant.syncStop();
- }
- }
-
- public static void main(String[] args) throws Exception {
- CommandLine cmd = processCommandLineArgs(args);
- String zkConnectStr = cmd.getOptionValue(zkServer);
- String clusterName = cmd.getOptionValue(cluster);
- String hostStr = cmd.getOptionValue(host);
- String portStr = cmd.getOptionValue(port);
-
- String instanceName = hostStr + "_" + portStr;
-
- MockParticipantManager participant =
- new MockParticipantManager(zkConnectStr, clusterName, instanceName);
- // participant.setTransition(new StoreAccessDiffNodeTransition());
- // participant.setTransition(new StoreAccessOneNodeTransition()));
- // new MockHealthReportJob());
- Runtime.getRuntime().addShutdownHook(new MockHealthReportParticipantShutdownHook(participant));
-
- // Espresso_driver.py will consume this
- System.out
- .println("MockHealthReportParticipant process started, instanceName: " + instanceName);
-
- participant.run();
- }
-}
http://git-wip-us.apache.org/repos/asf/helix/blob/38b43965/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestClusterAlertItemMBeanCollection.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestClusterAlertItemMBeanCollection.java b/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestClusterAlertItemMBeanCollection.java
deleted file mode 100644
index bb4f46d..0000000
--- a/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestClusterAlertItemMBeanCollection.java
+++ /dev/null
@@ -1,289 +0,0 @@
-package org.apache.helix.monitoring.mbeans;
-
-/*
- * 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 java.io.IOException;
-import java.io.StringReader;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.management.AttributeNotFoundException;
-import javax.management.InstanceNotFoundException;
-import javax.management.IntrospectionException;
-import javax.management.MBeanException;
-import javax.management.MalformedObjectNameException;
-import javax.management.ReflectionException;
-
-import org.apache.helix.alerts.AlertValueAndStatus;
-import org.apache.helix.alerts.Tuple;
-import org.apache.helix.healthcheck.TestWildcardAlert.TestClusterMBeanObserver;
-import org.apache.log4j.Logger;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class TestClusterAlertItemMBeanCollection {
- private static final Logger _logger = Logger.getLogger(TestClusterAlertItemMBeanCollection.class);
-
- @Test
- public void TestAlertReportingHistory() throws InstanceNotFoundException,
- MalformedObjectNameException, NullPointerException, IOException, IntrospectionException,
- AttributeNotFoundException, ReflectionException, MBeanException {
- ClusterAlertMBeanCollection beanCollection = new ClusterAlertMBeanCollection();
-
- String clusterName = "TestCluster";
- String originAlert1 =
- "EXP(decay(1.0)(esv4-app7*.RestQueryStats@DBName=BizProfile.MinServerLatency))CMP(GREATER)CON(10)";
- Map<String, AlertValueAndStatus> alertResultMap1 = new HashMap<String, AlertValueAndStatus>();
- int nAlerts1 = 5;
-
- String originAlert2 =
- "EXP(decay(1.0)(esv4-app9*.RestQueryStats@DBName=BizProfile.MaxServerLatency))CMP(GREATER)CON(10)";
- Map<String, AlertValueAndStatus> alertResultMap2 = new HashMap<String, AlertValueAndStatus>();
- int nAlerts2 = 3;
-
- TestClusterMBeanObserver jmxMBeanObserver =
- new TestClusterMBeanObserver(ClusterAlertMBeanCollection.DOMAIN_ALERT);
-
- for (int i = 0; i < nAlerts1; i++) {
- String alertName =
- "esv4-app7" + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName=BizProfile.MinServerLatency";
- Tuple<String> value = new Tuple<String>();
- value.add("22" + i);
- AlertValueAndStatus valueAndStatus = new AlertValueAndStatus(value, true);
- alertResultMap1.put(alertName, valueAndStatus);
- }
-
- for (int i = 0; i < nAlerts2; i++) {
- String alertName =
- "esv4-app9" + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName=BizProfile.MaxServerLatency";
- Tuple<String> value = new Tuple<String>();
- value.add("22" + i);
- AlertValueAndStatus valueAndStatus = new AlertValueAndStatus(value, true);
- alertResultMap1.put(alertName, valueAndStatus);
- }
-
- beanCollection.setAlerts(originAlert1, alertResultMap1, clusterName);
- beanCollection.setAlerts(originAlert2, alertResultMap2, clusterName);
-
- beanCollection.refreshAlertDelta(clusterName);
- String summaryKey = ClusterAlertMBeanCollection.ALERT_SUMMARY + "_" + clusterName;
- jmxMBeanObserver.refresh();
-
- // Get the history list
- String beanName = "HelixAlerts:alert=" + summaryKey;
- Map<String, Object> beanValueMap = jmxMBeanObserver._beanValueMap.get(beanName);
- String history1 = (String) (beanValueMap.get("AlertFiredHistory"));
-
- StringReader sr = new StringReader(history1);
- ObjectMapper mapper = new ObjectMapper();
-
- // check the history
-
- Map<String, String> delta = beanCollection.getRecentAlertDelta();
- Assert.assertEquals(delta.size(), nAlerts1 + nAlerts2);
- for (int i = 0; i < nAlerts1; i++) {
- String alertBeanName =
- "(esv4-app7"
- + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName#BizProfile.MinServerLatency)GREATER(10)";
- Assert.assertTrue(delta.get(alertBeanName).equals("ON"));
- }
-
- for (int i = 0; i < nAlerts2; i++) {
- String alertBeanName =
- "(esv4-app9"
- + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName#BizProfile.MaxServerLatency)GREATER(10)";
- Assert.assertTrue(delta.get(alertBeanName).equals("ON"));
- }
-
- alertResultMap1 = new HashMap<String, AlertValueAndStatus>();
- for (int i = 0; i < 3; i++) {
- String alertName =
- "esv4-app7" + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName=BizProfile.MinServerLatency";
- Tuple<String> value = new Tuple<String>();
- value.add("22" + i);
- AlertValueAndStatus valueAndStatus = new AlertValueAndStatus(value, true);
- alertResultMap1.put(alertName, valueAndStatus);
- }
-
- for (int i = 3; i < 5; i++) {
- String alertName =
- "esv4-app7" + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName=BizProfile.MinServerLatency";
- Tuple<String> value = new Tuple<String>();
- value.add("22" + i);
- AlertValueAndStatus valueAndStatus = new AlertValueAndStatus(value, false);
- alertResultMap1.put(alertName, valueAndStatus);
- }
-
- for (int i = 7; i < 9; i++) {
- String alertName =
- "esv4-app7" + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName=BizProfile.MinServerLatency";
- Tuple<String> value = new Tuple<String>();
- value.add("22" + i);
- AlertValueAndStatus valueAndStatus = new AlertValueAndStatus(value, true);
- alertResultMap1.put(alertName, valueAndStatus);
- }
-
- for (int i = 0; i < 2; i++) {
- String alertName =
- "esv4-app9" + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName=BizProfile.MaxServerLatency";
- Tuple<String> value = new Tuple<String>();
- value.add("22" + i);
- AlertValueAndStatus valueAndStatus = new AlertValueAndStatus(value, false);
- alertResultMap1.put(alertName, valueAndStatus);
- }
-
- for (int i = 2; i < 3; i++) {
- String alertName =
- "esv4-app9" + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName=BizProfile.MaxServerLatency";
- Tuple<String> value = new Tuple<String>();
- value.add("22" + i);
- AlertValueAndStatus valueAndStatus = new AlertValueAndStatus(value, true);
- alertResultMap1.put(alertName, valueAndStatus);
- }
- for (int i = 7; i < 9; i++) {
- String alertName =
- "esv4-app9" + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName=BizProfile.MaxServerLatency";
- Tuple<String> value = new Tuple<String>();
- value.add("22" + i);
- AlertValueAndStatus valueAndStatus = new AlertValueAndStatus(value, true);
- alertResultMap1.put(alertName, valueAndStatus);
- }
-
- beanCollection.setAlerts(originAlert1, alertResultMap1, clusterName);
- beanCollection.refreshAlertDelta(clusterName);
- jmxMBeanObserver.refresh();
-
- beanValueMap = jmxMBeanObserver._beanValueMap.get(beanName);
- history1 = (String) (beanValueMap.get("AlertFiredHistory"));
-
- sr = new StringReader(history1);
- mapper = new ObjectMapper();
-
- // check the history
- delta = beanCollection.getRecentAlertDelta();
- Assert.assertEquals(delta.size(), 8);
- for (int i = 3; i < 5; i++) {
- String alertBeanName =
- "(esv4-app7"
- + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName#BizProfile.MinServerLatency)GREATER(10)";
- Assert.assertTrue(delta.get(alertBeanName).equals("OFF"));
- }
- for (int i = 7; i < 9; i++) {
- String alertBeanName =
- "(esv4-app7"
- + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName#BizProfile.MinServerLatency)GREATER(10)";
- Assert.assertTrue(delta.get(alertBeanName).equals("ON"));
- }
-
- for (int i = 0; i < 2; i++) {
- String alertBeanName =
- "(esv4-app9"
- + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName#BizProfile.MaxServerLatency)GREATER(10)";
- Assert.assertTrue(delta.get(alertBeanName).equals("OFF"));
- }
- for (int i = 7; i < 9; i++) {
- String alertBeanName =
- "(esv4-app9"
- + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName#BizProfile.MaxServerLatency)GREATER(10)";
- Assert.assertTrue(delta.get(alertBeanName).equals("ON"));
- }
- }
-
- @Test
- public void TestAlertRefresh() throws InstanceNotFoundException, MalformedObjectNameException,
- NullPointerException, IOException, IntrospectionException, AttributeNotFoundException,
- ReflectionException, MBeanException, InterruptedException {
- ClusterAlertMBeanCollection beanCollection = new ClusterAlertMBeanCollection();
-
- String clusterName = "TestCluster";
- String originAlert1 =
- "EXP(decay(1.0)(esv4-app7*.RestQueryStats@DBName=BizProfile.MinServerLatency))CMP(GREATER)CON(10)";
- Map<String, AlertValueAndStatus> alertResultMap1 = new HashMap<String, AlertValueAndStatus>();
- int nAlerts1 = 5;
-
- String originAlert2 =
- "EXP(decay(1.0)(esv4-app9*.RestQueryStats@DBName=BizProfile.MaxServerLatency))CMP(GREATER)CON(10)";
- Map<String, AlertValueAndStatus> alertResultMap2 = new HashMap<String, AlertValueAndStatus>();
- int nAlerts2 = 3;
-
- TestClusterMBeanObserver jmxMBeanObserver =
- new TestClusterMBeanObserver(ClusterAlertMBeanCollection.DOMAIN_ALERT);
-
- for (int i = 0; i < nAlerts1; i++) {
- String alertName =
- "esv4-app7" + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName=BizProfile.MinServerLatency";
- Tuple<String> value = new Tuple<String>();
- value.add("22" + i);
- AlertValueAndStatus valueAndStatus = new AlertValueAndStatus(value, true);
- alertResultMap1.put(alertName, valueAndStatus);
- }
-
- for (int i = 0; i < nAlerts2; i++) {
- String alertName =
- "esv4-app9" + i
- + ".stg.linkedin.com_12918.RestQueryStats@DBName=BizProfile.MaxServerLatency";
- Tuple<String> value = new Tuple<String>();
- value.add("22" + i);
- AlertValueAndStatus valueAndStatus = new AlertValueAndStatus(value, true);
- alertResultMap2.put(alertName, valueAndStatus);
- }
-
- beanCollection.setAlerts(originAlert1, alertResultMap1, clusterName);
- beanCollection.setAlerts(originAlert2, alertResultMap2, clusterName);
-
- beanCollection.refreshAlertDelta(clusterName);
- String summaryKey = ClusterAlertMBeanCollection.ALERT_SUMMARY + "_" + clusterName;
- jmxMBeanObserver.refresh();
-
- Assert.assertEquals(jmxMBeanObserver._beanValueMap.size(), nAlerts2 + nAlerts1 + 1);
-
- Thread.sleep(300);
-
- beanCollection.setAlerts(originAlert1, alertResultMap1, clusterName);
- beanCollection.checkMBeanFreshness(200);
-
- for (int i = 0; i < 20; i++) {
- Thread.sleep(500);
-
- jmxMBeanObserver.refresh();
-
- if (jmxMBeanObserver._beanValueMap.size() == nAlerts1 + 1) {
- break;
- }
- }
- Assert.assertEquals(jmxMBeanObserver._beanValueMap.size(), nAlerts1 + 1);
- }
-}
http://git-wip-us.apache.org/repos/asf/helix/blob/38b43965/helix-core/src/test/java/org/apache/helix/participant/MockZKHelixManager.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/participant/MockZKHelixManager.java b/helix-core/src/test/java/org/apache/helix/participant/MockZKHelixManager.java
index 7d252c5..11cdd34 100644
--- a/helix-core/src/test/java/org/apache/helix/participant/MockZKHelixManager.java
+++ b/helix-core/src/test/java/org/apache/helix/participant/MockZKHelixManager.java
@@ -27,7 +27,6 @@ import org.apache.helix.ConfigChangeListener;
import org.apache.helix.ControllerChangeListener;
import org.apache.helix.CurrentStateChangeListener;
import org.apache.helix.ExternalViewChangeListener;
-import org.apache.helix.HealthStateChangeListener;
import org.apache.helix.HelixAdmin;
import org.apache.helix.HelixDataAccessor;
import org.apache.helix.HelixManager;
@@ -42,7 +41,6 @@ import org.apache.helix.PreConnectCallback;
import org.apache.helix.PropertyKey;
import org.apache.helix.ScopedConfigChangeListener;
import org.apache.helix.ZNRecord;
-import org.apache.helix.healthcheck.ParticipantHealthReportCollector;
import org.apache.helix.manager.zk.ZKHelixDataAccessor;
import org.apache.helix.manager.zk.ZkBaseDataAccessor;
import org.apache.helix.manager.zk.ZkClient;
@@ -170,24 +168,11 @@ public class MockZKHelixManager implements HelixManager {
}
@Override
- public ParticipantHealthReportCollector getHealthReportCollector() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
public InstanceType getInstanceType() {
return _type;
}
@Override
- public void addHealthStateChangeListener(HealthStateChangeListener listener, String instanceName)
- throws Exception {
- // TODO Auto-generated method stub
-
- }
-
- @Override
public String getVersion() {
// TODO Auto-generated method stub
return UUID.randomUUID().toString();