You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2014/07/22 16:53:17 UTC
git commit: AMBARI-6561. Alerts: DAO Date Restrictions & JPA Sequence
Generation (Jonathan Hurley via ncole)
Repository: ambari
Updated Branches:
refs/heads/trunk fe7f25b54 -> b90771744
AMBARI-6561. Alerts: DAO Date Restrictions & JPA Sequence Generation (Jonathan Hurley via ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b9077174
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b9077174
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b9077174
Branch: refs/heads/trunk
Commit: b90771744a5c2ba0b2aa47ca0e3edab59b174820
Parents: fe7f25b
Author: Nate Cole <nc...@hortonworks.com>
Authored: Tue Jul 22 10:52:56 2014 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Tue Jul 22 10:52:56 2014 -0400
----------------------------------------------------------------------
.../apache/ambari/server/orm/dao/AlertsDAO.java | 90 ++++++++++++++
.../orm/entities/AlertDefinitionEntity.java | 4 +-
.../server/orm/entities/AlertGroupEntity.java | 4 +-
.../server/orm/entities/AlertHistoryEntity.java | 20 ++-
.../server/orm/entities/AlertNoticeEntity.java | 4 +-
.../server/orm/entities/AlertTargetEntity.java | 4 +-
.../server/upgrade/UpgradeCatalog170.java | 31 ++++-
.../resources/Ambari-DDL-Postgres-CREATE.sql | 12 +-
.../Ambari-DDL-Postgres-EMBEDDED-CREATE.sql | 14 ++-
.../ambari/server/orm/dao/AlertsDAOTest.java | 124 ++++++++++++++++---
.../server/upgrade/UpgradeCatalog170Test.java | 3 +
11 files changed, 279 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9077174/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/AlertsDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/AlertsDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/AlertsDAO.java
index f9f1f45..a1257a2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/AlertsDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/AlertsDAO.java
@@ -17,6 +17,8 @@
*/
package org.apache.ambari.server.orm.dao;
+import java.util.Collections;
+import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
@@ -25,6 +27,7 @@ import javax.persistence.TypedQuery;
import org.apache.ambari.server.orm.RequiresSession;
import org.apache.ambari.server.orm.entities.AlertCurrentEntity;
import org.apache.ambari.server.orm.entities.AlertHistoryEntity;
+import org.apache.ambari.server.state.AlertState;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -78,6 +81,8 @@ public class AlertsDAO {
/**
* Gets all alerts stored in the database for the given cluster.
*
+ * @param clusterId
+ * the ID of the cluster.
* @return all alerts in the specified cluster or an empty list if none exist
* (never {@code null}).
*/
@@ -92,6 +97,91 @@ public class AlertsDAO {
}
/**
+ * Gets all alerts stored in the database for the given cluster that have one
+ * of the specified alert states.
+ *
+ * @param clusterId
+ * the ID of the cluster.
+ * @param alertStates
+ * the states to match for the retrieved alerts (not {@code null}).
+ * @return the alerts matching the specified states and cluster, or an empty
+ * list if none.
+ */
+ public List<AlertHistoryEntity> findAll(long clusterId,
+ List<AlertState> alertStates) {
+ if (null == alertStates || alertStates.size() == 0) {
+ return Collections.emptyList();
+ }
+
+ TypedQuery<AlertHistoryEntity> query = entityManagerProvider.get().createNamedQuery(
+ "AlertHistoryEntity.findAllInClusterWithState",
+ AlertHistoryEntity.class);
+
+ query.setParameter("clusterId", clusterId);
+ query.setParameter("alertStates", alertStates);
+
+ return daoUtils.selectList(query);
+ }
+
+ /**
+ * Gets all alerts stored in the database for the given cluster and that fall
+ * withing the specified date range. Dates are expected to be in milliseconds
+ * since the epoch, normalized to UTC time.
+ *
+ * @param clusterId
+ * the ID of the cluster.
+ * @param startDate
+ * the date that the earliest entry must occur after, normalized to
+ * UTC, or {@code null} for all entries that occur before the given
+ * end date.
+ * @param endDate
+ * the date that the latest entry must occur before, normalized to
+ * UTC, or {@code null} for all entries that occur after the given
+ * start date.
+ * @return the alerts matching the specified date range.
+ */
+ public List<AlertHistoryEntity> findAll(long clusterId, Date startDate,
+ Date endDate) {
+ if (null == startDate && null == endDate)
+ return Collections.emptyList();
+
+ TypedQuery<AlertHistoryEntity> query = null;
+
+ if (null != startDate && null != endDate) {
+ if (startDate.after(endDate)) {
+ return Collections.emptyList();
+ }
+
+ query = entityManagerProvider.get().createNamedQuery(
+ "AlertHistoryEntity.findAllInClusterBetweenDates",
+ AlertHistoryEntity.class);
+
+ query.setParameter("clusterId", clusterId);
+ query.setParameter("startDate", startDate.getTime());
+ query.setParameter("endDate", endDate.getTime());
+ } else if (null != startDate) {
+ query = entityManagerProvider.get().createNamedQuery(
+ "AlertHistoryEntity.findAllInClusterAfterDate",
+ AlertHistoryEntity.class);
+
+ query.setParameter("clusterId", clusterId);
+ query.setParameter("afterDate", startDate.getTime());
+ } else if (null != endDate) {
+ query = entityManagerProvider.get().createNamedQuery(
+ "AlertHistoryEntity.findAllInClusterBeforeDate",
+ AlertHistoryEntity.class);
+
+ query.setParameter("clusterId", clusterId);
+ query.setParameter("beforeDate", endDate.getTime());
+ }
+
+ if (null == query)
+ return Collections.emptyList();
+
+ return daoUtils.selectList(query);
+ }
+
+ /**
* Gets the current alerts.
*
* @return the current alerts or an empty list if none exist (never
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9077174/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertDefinitionEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertDefinitionEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertDefinitionEntity.java
index da36c0c..9c2d5a2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertDefinitionEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertDefinitionEntity.java
@@ -28,6 +28,7 @@ import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
+import javax.persistence.TableGenerator;
import javax.persistence.UniqueConstraint;
/**
@@ -38,6 +39,7 @@ import javax.persistence.UniqueConstraint;
@Entity
@Table(name = "alert_definition", uniqueConstraints = @UniqueConstraint(columnNames = {
"cluster_id", "definition_name" }))
+@TableGenerator(name = "alert_definition_id_generator", table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "value", pkColumnValue = "alert_definition_id_seq", initialValue = 0, allocationSize = 1)
@NamedQueries({
@NamedQuery(name = "AlertDefinitionEntity.findAll", query = "SELECT alertDefinition FROM AlertDefinitionEntity alertDefinition"),
@NamedQuery(name = "AlertDefinitionEntity.findAllInCluster", query = "SELECT alertDefinition FROM AlertDefinitionEntity alertDefinition WHERE alertDefinition.clusterId = :clusterId"),
@@ -45,7 +47,7 @@ import javax.persistence.UniqueConstraint;
public class AlertDefinitionEntity {
@Id
- @GeneratedValue(strategy = GenerationType.TABLE)
+ @GeneratedValue(strategy = GenerationType.TABLE, generator = "alert_definition_id_generator")
@Column(name = "definition_id", nullable = false, updatable = false)
private Long definitionId;
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9077174/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertGroupEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertGroupEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertGroupEntity.java
index a88d1ac..6e67214 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertGroupEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertGroupEntity.java
@@ -30,6 +30,7 @@ import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
+import javax.persistence.TableGenerator;
import javax.persistence.UniqueConstraint;
/**
@@ -40,6 +41,7 @@ import javax.persistence.UniqueConstraint;
@Entity
@Table(name = "alert_group", uniqueConstraints = @UniqueConstraint(columnNames = {
"cluster_id", "group_name" }))
+@TableGenerator(name = "alert_group_id_generator", table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "value", pkColumnValue = "alert_group_id_seq", initialValue = 0, allocationSize = 1)
@NamedQueries({
@NamedQuery(name = "AlertGroupEntity.findAll", query = "SELECT alertGroup FROM AlertGroupEntity alertGroup"),
@NamedQuery(name = "AlertGroupEntity.findAllInCluster", query = "SELECT alertGroup FROM AlertGroupEntity alertGroup WHERE alertGroup.clusterId = :clusterId"),
@@ -48,7 +50,7 @@ import javax.persistence.UniqueConstraint;
public class AlertGroupEntity {
@Id
- @GeneratedValue(strategy = GenerationType.TABLE)
+ @GeneratedValue(strategy = GenerationType.TABLE, generator = "alert_group_id_generator")
@Column(name = "group_id", nullable = false, updatable = false)
private Long groupId;
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9077174/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertHistoryEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertHistoryEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertHistoryEntity.java
index 6533340..4b0d39c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertHistoryEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertHistoryEntity.java
@@ -30,6 +30,7 @@ import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
+import javax.persistence.TableGenerator;
import org.apache.ambari.server.state.AlertState;
@@ -42,13 +43,18 @@ import org.apache.ambari.server.state.AlertState;
*/
@Entity
@Table(name = "alert_history")
+@TableGenerator(name = "alert_history_id_generator", table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "value", pkColumnValue = "alert_history_id_seq", initialValue = 0, allocationSize = 1)
@NamedQueries({
@NamedQuery(name = "AlertHistoryEntity.findAll", query = "SELECT alertHistory FROM AlertHistoryEntity alertHistory"),
- @NamedQuery(name = "AlertHistoryEntity.findAllInCluster", query = "SELECT alertHistory FROM AlertHistoryEntity alertHistory WHERE alertHistory.clusterId = :clusterId") })
+ @NamedQuery(name = "AlertHistoryEntity.findAllInCluster", query = "SELECT alertHistory FROM AlertHistoryEntity alertHistory WHERE alertHistory.clusterId = :clusterId"),
+ @NamedQuery(name = "AlertHistoryEntity.findAllInClusterWithState", query = "SELECT alertHistory FROM AlertHistoryEntity alertHistory WHERE alertHistory.clusterId = :clusterId AND alertHistory.alertState IN :alertStates"),
+ @NamedQuery(name = "AlertHistoryEntity.findAllInClusterBetweenDates", query = "SELECT alertHistory FROM AlertHistoryEntity alertHistory WHERE alertHistory.clusterId = :clusterId AND alertHistory.alertTimestamp BETWEEN :startDate AND :endDate"),
+ @NamedQuery(name = "AlertHistoryEntity.findAllInClusterBeforeDate", query = "SELECT alertHistory FROM AlertHistoryEntity alertHistory WHERE alertHistory.clusterId = :clusterId AND alertHistory.alertTimestamp <= :beforeDate"),
+ @NamedQuery(name = "AlertHistoryEntity.findAllInClusterAfterDate", query = "SELECT alertHistory FROM AlertHistoryEntity alertHistory WHERE alertHistory.clusterId = :clusterId AND alertHistory.alertTimestamp >= :afterDate") })
public class AlertHistoryEntity {
@Id
- @GeneratedValue(strategy = GenerationType.TABLE)
+ @GeneratedValue(strategy = GenerationType.TABLE, generator = "alert_history_id_generator")
@Column(name = "alert_id", nullable = false, updatable = false)
private Long alertId;
@@ -87,10 +93,10 @@ public class AlertHistoryEntity {
private AlertCurrentEntity alertCurrent;
/**
- * Bi-directional many-to-one association to {@link AlertDefinitionEntity}
+ * Unidirectional many-to-one association to {@link AlertDefinitionEntity}
*/
@ManyToOne
- @JoinColumn(name = "alert_definition_id", nullable = false)
+ @JoinColumn(name = "definition_id", nullable = false)
private AlertDefinitionEntity alertDefinition;
/**
@@ -197,7 +203,8 @@ public class AlertHistoryEntity {
}
/**
- * Gets the time that the alert instace was received.
+ * Gets the time that the alert instace was received. This will be the value,
+ * in milliseconds, since the UNIX/Java epoch, represented in UTC time.
*
* @return the time of the alert instance (never {@code null}).
*/
@@ -206,7 +213,8 @@ public class AlertHistoryEntity {
}
/**
- * Sets the time that the alert instace was received.
+ * Sets the time that the alert instace was received. This should be the
+ * value, in milliseconds, since the UNIX/Java epoch, represented in UTC time.
*
* @param alertTimestamp
* the time of the alert instance (not {@code null}).
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9077174/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertNoticeEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertNoticeEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertNoticeEntity.java
index ce64ae2..9fe1c88 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertNoticeEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertNoticeEntity.java
@@ -28,6 +28,7 @@ import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
+import javax.persistence.TableGenerator;
import org.apache.ambari.server.state.NotificationState;
@@ -40,11 +41,12 @@ import org.apache.ambari.server.state.NotificationState;
*/
@Entity
@Table(name = "alert_notice")
+@TableGenerator(name = "alert_notice_id_generator", table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "value", pkColumnValue = "alert_notice_id_seq", initialValue = 0, allocationSize = 1)
@NamedQuery(name = "AlertNoticeEntity.findAll", query = "SELECT alertNotice FROM AlertNoticeEntity alertNotice")
public class AlertNoticeEntity {
@Id
- @GeneratedValue(strategy = GenerationType.TABLE)
+ @GeneratedValue(strategy = GenerationType.TABLE, generator = "alert_notice_id_generator")
@Column(name = "notification_id", nullable = false, updatable = false)
private Long notificationId;
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9077174/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertTargetEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertTargetEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertTargetEntity.java
index 227931e..3cd444e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertTargetEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/AlertTargetEntity.java
@@ -30,6 +30,7 @@ import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
+import javax.persistence.TableGenerator;
/**
* The {@link AlertTargetEntity} class represents audience that will receive
@@ -37,13 +38,14 @@ import javax.persistence.Table;
*/
@Entity
@Table(name = "alert_target")
+@TableGenerator(name = "alert_target_id_generator", table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "value", pkColumnValue = "alert_target_id_seq", initialValue = 0, allocationSize = 1)
@NamedQueries({
@NamedQuery(name = "AlertTargetEntity.findAll", query = "SELECT alertTarget FROM AlertTargetEntity alertTarget"),
@NamedQuery(name = "AlertTargetEntity.findByName", query = "SELECT alertTarget FROM AlertTargetEntity alertTarget WHERE alertTarget.targetName = :targetName"), })
public class AlertTargetEntity {
@Id
- @GeneratedValue(strategy = GenerationType.TABLE)
+ @GeneratedValue(strategy = GenerationType.TABLE, generator = "alert_target_id_generator")
@Column(name = "target_id", nullable = false, updatable = false)
private Long targetId;
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9077174/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
index 684d46c..24645ba 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.orm.DBAccessor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -64,6 +65,7 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
@Override
protected void executeDDLUpdates() throws AmbariException, SQLException {
+ // !!! TODO: alerting DDL upgrade
List<DBAccessor.DBColumnInfo> columns;
@@ -162,7 +164,32 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
@Override
protected void executeDMLUpdates() throws AmbariException, SQLException {
- // TODO : create admin principals for existing users and groups.
- // TODO : create admin resources for existing clusters and view instances
+ // !!! TODO: create admin principals for existing users and groups.
+ // !!! TODO: create admin resources for existing clusters and view instances
+ // !!! TODO: alerting DML updates (sequences)
+
+ String dbType = getDbType();
+
+ // add new sequences for view entity
+ String valueColumnName = "\"value\"";
+ if (Configuration.ORACLE_DB_NAME.equals(dbType)
+ || Configuration.MYSQL_DB_NAME.equals(dbType)) {
+ valueColumnName = "value";
+ }
+
+ dbAccessor.executeQuery("INSERT INTO ambari_sequences(sequence_name, "
+ + valueColumnName + ") " + "VALUES('alert_definition_id_seq', 0)", true);
+
+ dbAccessor.executeQuery("INSERT INTO ambari_sequences(sequence_name, "
+ + valueColumnName + ") " + "VALUES('alert_group_id_seq', 0)", true);
+
+ dbAccessor.executeQuery("INSERT INTO ambari_sequences(sequence_name, "
+ + valueColumnName + ") " + "VALUES('alert_target_id_seq', 0)", true);
+
+ dbAccessor.executeQuery("INSERT INTO ambari_sequences(sequence_name, "
+ + valueColumnName + ") " + "VALUES('alert_history_id_seq', 0)", true);
+
+ dbAccessor.executeQuery("INSERT INTO ambari_sequences(sequence_name, "
+ + valueColumnName + ") " + "VALUES('alert_notice_id_seq', 0)", true);
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9077174/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
index 8875de7..d44c8e3 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
@@ -287,7 +287,17 @@ BEGIN;
union all
select 'permission_id_seq', 5
union all
- select 'privilege_id_seq', 1;
+ select 'privilege_id_seq', 1
+ union all
+ select 'alert_definition_id_seq', 0
+ union all
+ select 'alert_group_id_seq', 0
+ union all
+ select 'alert_target_id_seq', 0
+ union all
+ select 'alert_history_id_seq', 0
+ union all
+ select 'alert_notice_id_seq', 0;
INSERT INTO adminresourcetype (resource_type_id, resource_type_name)
SELECT 1, 'AMBARI'
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9077174/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
index dafda33..723058b 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
@@ -360,8 +360,18 @@ INSERT INTO ambari.ambari_sequences (sequence_name, "value")
union all
select 'permission_id_seq', 5
union all
- select 'privilege_id_seq', 1;
-
+ select 'privilege_id_seq', 1
+ union all
+ select 'alert_definition_id_seq', 0
+ union all
+ select 'alert_group_id_seq', 0
+ union all
+ select 'alert_target_id_seq', 0
+ union all
+ select 'alert_history_id_seq', 0
+ union all
+ select 'alert_notice_id_seq', 0;
+
INSERT INTO ambari.adminresourcetype (resource_type_id, resource_type_name)
SELECT 1, 'AMBARI'
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9077174/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOTest.java
index f2adcaa..2bc2b7f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertsDAOTest.java
@@ -18,8 +18,15 @@
package org.apache.ambari.server.orm.dao;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
import java.util.Date;
import java.util.List;
+import java.util.TimeZone;
import java.util.UUID;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
@@ -31,7 +38,6 @@ import org.apache.ambari.server.orm.entities.AlertHistoryEntity;
import org.apache.ambari.server.state.AlertState;
import org.apache.ambari.server.state.MaintenanceState;
import org.junit.AfterClass;
-import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -47,6 +53,8 @@ public class AlertsDAOTest {
static Long clusterId;
static Injector injector;
+ static Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+
AlertsDAO dao;
@BeforeClass
@@ -73,12 +81,15 @@ public class AlertsDAOTest {
}
List<AlertDefinitionEntity> definitions = alertDefinitionDAO.findAll();
- Assert.assertNotNull(definitions);
- Assert.assertEquals(5, definitions.size());
+ assertNotNull(definitions);
+ assertEquals(5, definitions.size());
+
+ // create 10 historical alerts for each definition, 8 OK and 2 CRIT
+ calendar.clear();
+ calendar.set(2014, Calendar.JANUARY, 1);
- // create 5 historical alerts for each definition
for (AlertDefinitionEntity definition : definitions) {
- for (int i = 0; i < 5; i++) {
+ for (int i = 0; i < 10; i++) {
AlertHistoryEntity history = new AlertHistoryEntity();
history.setServiceName(definition.getServiceName());
history.setClusterId(clusterId);
@@ -86,8 +97,18 @@ public class AlertsDAOTest {
history.setAlertLabel(definition.getDefinitionName() + " " + i);
history.setAlertState(AlertState.OK);
history.setAlertText(definition.getDefinitionName() + " " + i);
- history.setAlertTimestamp(new Date().getTime());
+ history.setAlertTimestamp(calendar.getTimeInMillis());
+
+ // increase the days for each
+ calendar.add(Calendar.DATE, 1);
+
alertDAO.create(history);
+
+ if (i == 0 || i == 1) {
+ history.setAlertId(null);
+ history.setAlertState(AlertState.CRITICAL);
+ alertDAO.create(history);
+ }
}
}
@@ -101,7 +122,7 @@ public class AlertsDAOTest {
}
}
- Assert.assertNotNull(history);
+ assertNotNull(history);
AlertCurrentEntity current = new AlertCurrentEntity();
current.setAlertId(history.getAlertId());
@@ -137,8 +158,8 @@ public class AlertsDAOTest {
@Test
public void testFindAll() {
List<AlertHistoryEntity> alerts = dao.findAll(clusterId);
- Assert.assertNotNull(alerts);
- Assert.assertEquals(25, alerts.size());
+ assertNotNull(alerts);
+ assertEquals(60, alerts.size());
}
/**
@@ -147,8 +168,8 @@ public class AlertsDAOTest {
@Test
public void testFindAllCurrent() {
List<AlertCurrentEntity> currentAlerts = dao.findCurrent();
- Assert.assertNotNull(currentAlerts);
- Assert.assertEquals(5, currentAlerts.size());
+ assertNotNull(currentAlerts);
+ assertEquals(5, currentAlerts.size());
}
/**
@@ -160,17 +181,88 @@ public class AlertsDAOTest {
AlertCurrentEntity current = currentAlerts.get(0);
AlertHistoryEntity history = current.getAlertHistory();
- Assert.assertNotNull(history);
+ assertNotNull(history);
currentAlerts = dao.findCurrentByService(clusterId,
history.getServiceName());
- Assert.assertNotNull(currentAlerts);
- Assert.assertEquals(1, currentAlerts.size());
+ assertNotNull(currentAlerts);
+ assertEquals(1, currentAlerts.size());
currentAlerts = dao.findCurrentByService(clusterId, "foo");
- Assert.assertNotNull(currentAlerts);
- Assert.assertEquals(0, currentAlerts.size());
+ assertNotNull(currentAlerts);
+ assertEquals(0, currentAlerts.size());
+ }
+
+ /**
+ *
+ */
+ @Test
+ public void testFindByState() {
+ List<AlertState> allStates = new ArrayList<AlertState>();
+ allStates.add(AlertState.OK);
+ allStates.add(AlertState.WARNING);
+ allStates.add(AlertState.CRITICAL);
+
+ List<AlertHistoryEntity> history = dao.findAll(clusterId, allStates);
+ assertNotNull(history);
+ assertEquals(60, history.size());
+
+ history = dao.findAll(clusterId, Collections.singletonList(AlertState.OK));
+ assertNotNull(history);
+ assertEquals(50, history.size());
+
+ history = dao.findAll(clusterId,
+ Collections.singletonList(AlertState.CRITICAL));
+ assertNotNull(history);
+ assertEquals(10, history.size());
+
+ history = dao.findAll(clusterId,
+ Collections.singletonList(AlertState.WARNING));
+ assertNotNull(history);
+ assertEquals(0, history.size());
+ }
+
+ /**
+ *
+ */
+ @Test
+ public void testFindByDate() {
+ calendar.clear();
+ calendar.set(2014, Calendar.JANUARY, 1);
+
+ // on or after 1/1/2014
+ List<AlertHistoryEntity> history = dao.findAll(clusterId,
+ calendar.getTime(), null);
+
+ assertNotNull(history);
+ assertEquals(60, history.size());
+
+ // on or before 1/1/2014
+ history = dao.findAll(clusterId, null, calendar.getTime());
+ assertNotNull(history);
+ assertEquals(2, history.size());
+
+ // between 1/5 and 1/10
+ calendar.set(2014, Calendar.JANUARY, 5);
+ Date startDate = calendar.getTime();
+
+ calendar.set(2014, Calendar.JANUARY, 10);
+ Date endDate = calendar.getTime();
+
+ history = dao.findAll(clusterId, startDate, endDate);
+ assertNotNull(history);
+ assertEquals(6, history.size());
+
+ // after 3/1
+ calendar.set(2014, Calendar.MARCH, 5);
+ history = dao.findAll(clusterId, calendar.getTime(), null);
+ assertNotNull(history);
+ assertEquals(0, history.size());
+
+ history = dao.findAll(clusterId, endDate, startDate);
+ assertNotNull(history);
+ assertEquals(0, history.size());
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b9077174/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
index dfda132..ad5fb76 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
@@ -85,10 +85,13 @@ public class UpgradeCatalog170Test {
assertClusterConfigColumns(clusterConfigAttributesColumnCapture);
assertViewColumns(maskColumnCapture);
assertViewParameterColumns(maskedColumnCapture);
+
+ // !!! TODO: alerting DDL upgrade
}
@Test
public void testExecuteDMLUpdates() throws Exception {
+ // !!! TODO: alerting DML updates (sequences)
}