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 2017/02/03 14:53:16 UTC

[12/50] [abbrv] ambari git commit: AMBARI-19799. Optimize DB initialization for Ambari Server Unit Tests. (mpapirkovskyy)

AMBARI-19799. Optimize DB initialization for Ambari Server Unit Tests. (mpapirkovskyy)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3a7906c8
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3a7906c8
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3a7906c8

Branch: refs/heads/branch-dev-patch-upgrade
Commit: 3a7906c84737511475e718a0da50397b31ef7b52
Parents: 727a318
Author: Myroslav Papirkovskyi <mp...@hortonworks.com>
Authored: Tue Jan 31 17:54:23 2017 +0200
Committer: Myroslav Papirkovskyi <mp...@hortonworks.com>
Committed: Wed Feb 1 16:44:47 2017 +0200

----------------------------------------------------------------------
 .gitignore                                      |   1 +
 ambari-project/pom.xml                          |   2 +-
 ambari-server/pom.xml                           |  12 +-
 .../ambari/server/agent/HeartBeatHandler.java   |   4 +
 .../server/configuration/Configuration.java     |  40 +++-
 .../server/controller/ControllerModule.java     |   5 +-
 .../apache/ambari/server/orm/DBAccessor.java    |   1 +
 .../ambari/server/orm/DBAccessorImpl.java       |   5 +
 .../server/orm/entities/UpgradeEntity.java      |   2 +-
 .../server/orm/helpers/dbms/H2Helper.java       |  74 +++++++
 .../src/main/resources/META-INF/persistence.xml |  12 +-
 .../apache/ambari/annotations/LockAreaTest.java |   7 +-
 .../TransactionalLockInterceptorTest.java       |   7 +-
 .../apache/ambari/server/H2DatabaseCleaner.java | 124 +++++++++++
 .../ambari/server/StateRecoveryManagerTest.java |   6 +-
 .../ExecutionCommandWrapperTest.java            |   8 +
 .../ambari/server/actionmanager/StageTest.java  |  11 +-
 .../actionmanager/TestActionDBAccessorImpl.java |   8 +-
 .../server/actionmanager/TestActionManager.java |   9 +-
 .../actionmanager/TestActionScheduler.java      |   7 +-
 .../TestActionSchedulerThreading.java           |   8 +-
 .../ambari/server/actionmanager/TestStage.java  |   9 +
 .../server/agent/HeartbeatProcessorTest.java    |  10 +-
 .../server/agent/TestHeartbeatHandler.java      |   5 +-
 .../server/agent/TestHeartbeatMonitor.java      |   7 +-
 .../server/api/query/JpaSortBuilderTest.java    |   7 +
 .../server/api/services/AmbariMetaInfoTest.java |  12 +-
 .../api/services/PersistKeyValueImplTest.java   |   4 +-
 .../server/api/services/PersistServiceTest.java |   4 +-
 .../configuration/RecoveryConfigHelperTest.java |   4 +-
 .../AmbariCustomCommandExecutionHelperTest.java |   7 +-
 .../AmbariManagementControllerTest.java         |   7 +-
 .../server/controller/AmbariServerTest.java     |   5 +-
 .../BackgroundCustomCommandExecutionTest.java   |   7 +-
 ...hYarnCapacitySchedulerReleaseConfigTest.java |   7 +-
 .../RootServiceResponseFactoryTest.java         |   9 +
 .../internal/ActionResourceProviderTest.java    |   7 +-
 .../internal/AlertResourceProviderTest.java     |   4 +-
 .../internal/CalculatedStatusTest.java          |   8 +
 ...ClusterStackVersionResourceProviderTest.java | 214 ++++++++++---------
 ...leRepositoryVersionResourceProviderTest.java |   8 +-
 .../internal/ComponentResourceProviderTest.java |   2 +
 .../HostStackVersionResourceProviderTest.java   |   8 +-
 .../internal/JMXHostProviderTest.java           |   8 +-
 .../RepositoryVersionResourceProviderTest.java  |   8 +-
 .../StackArtifactResourceProviderTest.java      |   8 +-
 .../StackDefinedPropertyProviderTest.java       |   4 +-
 .../UpgradeResourceProviderHDP22Test.java       |   8 +-
 .../internal/UpgradeResourceProviderTest.java   |   9 +-
 .../UpgradeSummaryResourceProviderTest.java     |  10 +-
 .../internal/UserResourceProviderDBTest.java    |   7 +-
 .../VersionDefinitionResourceProviderTest.java  |   4 +-
 .../LogSearchDataRetrievalServiceTest.java      |   1 -
 .../RestMetricsPropertyProviderTest.java        |   9 +
 .../utilities/DatabaseCheckerTest.java          |   6 +-
 .../GeneralServiceCalculatedStateTest.java      |  10 +-
 .../apache/ambari/server/events/EventsTest.java |   6 +-
 .../HostVersionOutOfSyncListenerTest.java       |   7 +-
 .../metadata/AgentAlertDefinitionsTest.java     |  11 +
 .../server/metadata/RoleCommandOrderTest.java   |   7 +-
 .../ambari/server/metadata/RoleGraphTest.java   |   7 +-
 .../ambari/server/orm/DBAccessorImplTest.java   |  20 +-
 .../ambari/server/orm/JdbcPropertyTest.java     |   4 +-
 .../apache/ambari/server/orm/OrmTestHelper.java |  12 +-
 .../apache/ambari/server/orm/TestOrmImpl.java   |   8 +-
 .../server/orm/dao/AlertDefinitionDAOTest.java  |   6 +-
 .../server/orm/dao/AlertDispatchDAOTest.java    |   6 +-
 .../ambari/server/orm/dao/AlertsDAOTest.java    |   8 +-
 .../server/orm/dao/ClusterVersionDAOTest.java   |  12 +-
 .../server/orm/dao/ConfigGroupDAOTest.java      |  19 +-
 .../ambari/server/orm/dao/CrudDAOTest.java      |  11 +-
 .../orm/dao/HostConfigMappingDAOTest.java       |   7 +-
 .../server/orm/dao/HostRoleCommandDAOTest.java  |   9 +-
 .../server/orm/dao/HostVersionDAOTest.java      |  11 +-
 .../orm/dao/RepositoryVersionDAOTest.java       |   7 +-
 .../ambari/server/orm/dao/RequestDAOTest.java   |   7 +-
 .../server/orm/dao/RequestScheduleDAOTest.java  |   7 +-
 .../server/orm/dao/ServiceConfigDAOTest.java    |  64 ++++--
 .../ambari/server/orm/dao/SettingDAOTest.java   |   7 +
 .../ambari/server/orm/dao/StageDAOTest.java     |  10 +-
 .../orm/dao/TopologyLogicalRequestDAOTest.java  |   7 +-
 .../server/orm/dao/TopologyRequestDAOTest.java  |   7 +-
 .../ambari/server/orm/dao/UpgradeDAOTest.java   |   9 +-
 .../ambari/server/orm/dao/WidgetDAOTest.java    |   8 +-
 .../server/orm/dao/WidgetLayoutDAOTest.java     |   8 +-
 .../scheduler/ExecutionScheduleManagerTest.java |   4 +-
 .../server/security/AmbariLdapUtilsTest.java    |   1 -
 .../AmbariBasicAuthenticationFilterTest.java    |   6 +-
 ...uthenticationProviderForDNWithSpaceTest.java |   4 +-
 .../AmbariLdapAuthenticationProviderTest.java   |   4 +-
 .../AmbariLocalUserProviderTest.java            |   7 +
 .../AmbariPamAuthenticationProviderTest.java    |   4 +-
 .../security/authorization/TestUsers.java       |   7 +-
 .../security/ldap/LdapPerformanceTest.java      |   8 +
 .../serveraction/ServerActionExecutorTest.java  |  11 +-
 .../kerberos/KerberosServerActionTest.java      |   2 +-
 .../AutoSkipFailedSummaryActionTest.java        |   6 +-
 .../ComponentVersionCheckActionTest.java        |   6 +-
 .../upgrades/ConfigureActionTest.java           |   6 +-
 .../upgrades/UpgradeActionTest.java             |   6 +-
 .../server/stageplanner/TestStagePlanner.java   |   7 +-
 .../ambari/server/state/ConfigGroupTest.java    |  17 +-
 .../ambari/server/state/ConfigHelperTest.java   |   7 +-
 .../server/state/ConfigMergeHelperTest.java     |   8 +-
 .../server/state/RequestExecutionTest.java      |   4 +-
 .../server/state/ServiceComponentTest.java      |   7 +-
 .../apache/ambari/server/state/ServiceTest.java |   7 +-
 .../ambari/server/state/UpgradeHelperTest.java  |   9 +-
 .../alerts/AggregateAlertListenerTest.java      |   6 +-
 .../state/alerts/AlertEventPublisherTest.java   |  22 +-
 .../state/alerts/AlertReceivedListenerTest.java |  10 +-
 .../alerts/AlertStateChangedEventTest.java      |   4 +-
 .../state/alerts/InitialAlertEventTest.java     |   6 +-
 .../state/cluster/AlertDataManagerTest.java     |  10 +-
 .../state/cluster/ClusterDeadlockTest.java      |   7 +-
 .../server/state/cluster/ClusterImplTest.java   |  11 +-
 .../server/state/cluster/ClusterTest.java       |  15 +-
 .../state/cluster/ClustersDeadlockTest.java     |   7 +-
 .../server/state/cluster/ClustersTest.java      |   7 +-
 .../ConcurrentServiceConfigVersionTest.java     |   7 +-
 ...omponentHostConcurrentWriteDeadlockTest.java |   7 +-
 .../ambari/server/state/host/HostTest.java      |   9 +-
 .../services/RetryUpgradeActionServiceTest.java |   8 +
 .../state/stack/ConfigUpgradePackTest.java      |   8 +-
 .../state/stack/ConfigUpgradeValidityTest.java  |   8 +-
 .../ambari/server/state/stack/OSFamilyTest.java |  12 +-
 .../server/state/stack/UpgradePackTest.java     |   8 +-
 .../svccomphost/ServiceComponentHostTest.java   |   7 +-
 .../server/upgrade/StackUpgradeUtilTest.java    |   4 +-
 .../server/upgrade/UpgradeCatalog200Test.java   |   6 +-
 .../server/upgrade/UpgradeCatalog210Test.java   |   6 +-
 .../server/upgrade/UpgradeCatalog2121Test.java  |   8 +-
 .../server/upgrade/UpgradeCatalog212Test.java   |   7 +-
 .../server/upgrade/UpgradeCatalog220Test.java   |   6 +-
 .../server/upgrade/UpgradeCatalog240Test.java   |   8 +-
 .../server/upgrade/UpgradeCatalog242Test.java   |   6 +-
 .../server/upgrade/UpgradeCatalogTest.java      |   6 +-
 pom.xml                                         |   2 +
 138 files changed, 1029 insertions(+), 469 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 43edfd9..a40e61a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,3 +25,4 @@ ambari-metrics/ambari-metrics-host-monitoring/src/main/python/psutil/build/
 rebel.xml
 rebel-remote.xml
 out
+createDDL.jdbc

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-project/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-project/pom.xml b/ambari-project/pom.xml
index 0eab275..6e8ef0e 100644
--- a/ambari-project/pom.xml
+++ b/ambari-project/pom.xml
@@ -553,7 +553,7 @@
           <redirectTestOutputToFile>true</redirectTestOutputToFile>
           <forkedProcessTimeoutInSeconds>900</forkedProcessTimeoutInSeconds>
           <reuseForks>false</reuseForks>
-          <forkCount>1C</forkCount>
+          <forkCount>1</forkCount>
         </configuration>
       </plugin>
       <plugin>

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-server/pom.xml b/ambari-server/pom.xml
index 90c6b61..a9518e1 100644
--- a/ambari-server/pom.xml
+++ b/ambari-server/pom.xml
@@ -272,7 +272,6 @@
         <configuration>
           <excludes>
             <exclude>pass.txt</exclude>
-            <exclude>derby.log</exclude>
             <exclude>src/test/resources/version</exclude>
             <exclude>src/test/resources/users.ldif</exclude>
             <exclude>src/test/resources/gsInstaller-hosts.txt</exclude>
@@ -1066,14 +1065,9 @@
       <version>3.0</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.derby</groupId>
-      <artifactId>derby</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.derby</groupId>
-      <artifactId>derbytools</artifactId>
-      <version>10.11.1.1</version>
-      <scope>test</scope>
+      <groupId>com.h2database</groupId>
+      <artifactId>h2</artifactId>
+      <version>1.4.193</version>
     </dependency>
     <dependency>
       <groupId>org.springframework.security</groupId>

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
index b7d7476..7c833f6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
@@ -664,4 +664,8 @@ public class HeartBeatHandler {
     }
   }
 
+  public void stop() {
+    heartbeatMonitor.shutdown();
+    heartbeatProcessor.stopAsync();
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
index 0c51576..5020790 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
@@ -237,17 +237,36 @@ public class Configuration {
   public static final String DEFAULT_DERBY_SCHEMA = "ambari";
 
   /**
-   * The JDBC URL to use when creating a {@link DatabaseType#DERBY} database for
+   * The schema to use when creating a {@link DatabaseType#H2} database for
+   * unit tests.
+   */
+  public static final String DEFAULT_H2_SCHEMA = "ambari";
+
+  /**
+   * The JDBC URL to use when creating a {@link DatabaseType#H2} database for
    * unit tests.
    */
   public static final String JDBC_IN_MEMORY_URL = String.format(
-      "jdbc:derby:memory:myDB/%s;create=true", DEFAULT_DERBY_SCHEMA);
+      "jdbc:h2:mem:%1$s;ALIAS_COLUMN_NAME=TRUE;INIT=CREATE SCHEMA IF NOT EXISTS %1$s\\;SET SCHEMA %1$s;",
+      DEFAULT_DERBY_SCHEMA);
+
+  /**
+   * The H2 driver to use when creating a {@link DatabaseType#H2} database
+   * for unit tests.
+   */
+  public static final String JDBC_IN_MEMORY_DRIVER = "org.h2.Driver";
 
   /**
-   * The Derby driver to use when creating a {@link DatabaseType#DERBY} database
+   * The H2 default user driver to use when creating a {@link DatabaseType#H2} database
    * for unit tests.
    */
-  public static final String JDBC_IN_MEMORY_DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
+  public static final String JDBC_IN_MEMORY_USER = "sa";
+
+  /**
+   * The H2 default password to use when creating a {@link DatabaseType#H2} database
+   * for unit tests.
+   */
+  public static final String JDBC_IN_MEMORY_PASSWORD = "";
 
   /**
    * The JSSE property which governs the location of the keystore file
@@ -2673,7 +2692,8 @@ public class Configuration {
     MYSQL("mysql"),
     DERBY("derby"),
     SQL_SERVER("sqlserver"),
-    SQL_ANYWHERE("sqlanywhere");
+    SQL_ANYWHERE("sqlanywhere"),
+    H2("h2");
 
     private static final Map<String, DatabaseType> m_mappedTypes =
       new HashMap<String, Configuration.DatabaseType>(5);
@@ -3824,10 +3844,16 @@ public class Configuration {
   }
 
   public String getDatabaseUser() {
+    if (getPersistenceType() == PersistenceType.IN_MEMORY) {
+      return JDBC_IN_MEMORY_USER;
+    }
     return getProperty(SERVER_JDBC_USER_NAME);
   }
 
   public String getDatabasePassword() {
+    if (getPersistenceType() == PersistenceType.IN_MEMORY) {
+      return JDBC_IN_MEMORY_PASSWORD;
+    }
     String passwdProp = properties.getProperty(SERVER_JDBC_USER_PASSWD.getKey());
     String dbpasswd = null;
     boolean isPasswordAlias = false;
@@ -4819,6 +4845,8 @@ public class Configuration {
       databaseType = DatabaseType.SQL_SERVER;
     } else if (dbUrl.contains(DatabaseType.SQL_ANYWHERE.getName())) {
       databaseType = DatabaseType.SQL_ANYWHERE;
+    } else if (dbUrl.contains(DatabaseType.H2.getName())) {
+      databaseType = DatabaseType.H2;
     } else {
       throw new RuntimeException(
         "The database type could be not determined from the JDBC URL "
@@ -4845,6 +4873,8 @@ public class Configuration {
       databaseSchema = getDatabaseUser();
     } else if (databaseType.equals(DatabaseType.DERBY)) {
       databaseSchema = DEFAULT_DERBY_SCHEMA;
+    } else if (databaseType.equals(DatabaseType.H2)) {
+      databaseSchema = DEFAULT_H2_SCHEMA;
     } else {
       databaseSchema = null;
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
index b7c9e85..b634a62 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
@@ -226,7 +226,10 @@ public class ControllerModule extends AbstractModule {
       case IN_MEMORY:
         properties.setProperty(JDBC_URL, Configuration.JDBC_IN_MEMORY_URL);
         properties.setProperty(JDBC_DRIVER, Configuration.JDBC_IN_MEMORY_DRIVER);
-        properties.setProperty(DDL_GENERATION, DROP_AND_CREATE);
+        properties.setProperty(JDBC_USER, Configuration.JDBC_IN_MEMORY_USER);
+        properties.setProperty(JDBC_PASSWORD, Configuration.JDBC_IN_MEMORY_PASSWORD);
+        properties.setProperty(DDL_GENERATION, CREATE_ONLY);
+        properties.setProperty(DDL_GENERATION_MODE, DDL_BOTH_GENERATION);
         properties.setProperty(THROW_EXCEPTIONS, "true");
         break;
       case REMOTE:

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java
index b8a760f..5d9eb6c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java
@@ -623,6 +623,7 @@ public interface DBAccessor {
     MYSQL,
     POSTGRES,
     DERBY,
+    H2,
     UNKNOWN
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
index c645d6d..1c0ab30 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
@@ -43,6 +43,7 @@ import org.apache.ambari.server.orm.helpers.ScriptRunner;
 import org.apache.ambari.server.orm.helpers.dbms.DbmsHelper;
 import org.apache.ambari.server.orm.helpers.dbms.DerbyHelper;
 import org.apache.ambari.server.orm.helpers.dbms.GenericDbmsHelper;
+import org.apache.ambari.server.orm.helpers.dbms.H2Helper;
 import org.apache.ambari.server.orm.helpers.dbms.MySqlHelper;
 import org.apache.ambari.server.orm.helpers.dbms.OracleHelper;
 import org.apache.ambari.server.orm.helpers.dbms.PostgresHelper;
@@ -55,6 +56,7 @@ import org.eclipse.persistence.logging.AbstractSessionLog;
 import org.eclipse.persistence.logging.SessionLogEntry;
 import org.eclipse.persistence.platform.database.DatabasePlatform;
 import org.eclipse.persistence.platform.database.DerbyPlatform;
+import org.eclipse.persistence.platform.database.H2Platform;
 import org.eclipse.persistence.platform.database.MySQLPlatform;
 import org.eclipse.persistence.platform.database.OraclePlatform;
 import org.eclipse.persistence.platform.database.PostgreSQLPlatform;
@@ -130,6 +132,9 @@ public class DBAccessorImpl implements DBAccessor {
     } else if (databasePlatform instanceof DerbyPlatform) {
       dbType = DbType.DERBY;
       return new DerbyHelper(databasePlatform);
+    } else if (databasePlatform instanceof H2Platform) {
+      dbType = DbType.H2;
+      return new H2Helper(databasePlatform);
     } else {
       dbType = DbType.UNKNOWN;
       return new GenericDbmsHelper(databasePlatform);

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java
index 2c5cbfb..7421ca1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java
@@ -54,7 +54,7 @@ import org.apache.ambari.server.state.stack.upgrade.UpgradeType;
   @NamedQuery(name = "UpgradeEntity.findUpgrade",
       query = "SELECT u FROM UpgradeEntity u WHERE u.upgradeId = :upgradeId"),
   @NamedQuery(name = "UpgradeEntity.findLatestForClusterInDirection",
-      query = "SELECT u FROM UpgradeEntity u JOIN RequestEntity r ON u.requestId = r.requestId WHERE u.clusterId = :clusterId AND u.direction = :direction ORDER BY r.startTime DESC"),
+      query = "SELECT u FROM UpgradeEntity u JOIN RequestEntity r ON u.requestId = r.requestId WHERE u.clusterId = :clusterId AND u.direction = :direction ORDER BY r.startTime DESC, u.upgradeId DESC"),
   @NamedQuery(name = "UpgradeEntity.findLatestForCluster",
       query = "SELECT u FROM UpgradeEntity u JOIN RequestEntity r ON u.requestId = r.requestId WHERE u.clusterId = :clusterId ORDER BY r.startTime DESC"),
 })

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/H2Helper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/H2Helper.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/H2Helper.java
new file mode 100644
index 0000000..e6cb8ab
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/H2Helper.java
@@ -0,0 +1,74 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.orm.helpers.dbms;
+
+import org.apache.ambari.server.orm.DBAccessor;
+import org.eclipse.persistence.platform.database.DatabasePlatform;
+
+public class H2Helper extends GenericDbmsHelper {
+  public H2Helper(DatabasePlatform databasePlatform) {
+    super(databasePlatform);
+  }
+
+  @Override
+  public boolean supportsColumnTypeChange() {
+    return false; //type change is dramatically limited to varchar length increase only, almost useless
+  }
+
+  //+
+  @Override
+  public String getRenameColumnStatement(String tableName, String oldName, DBAccessor.DBColumnInfo columnInfo) {
+    StringBuilder builder = new StringBuilder();
+
+    builder.append("ALTER TABLE ").append(tableName).append(" ALTER COLUMN ").append(oldName);
+    builder.append(" RENAME TO ").append(columnInfo.getName());
+
+    return builder.toString();
+  }
+
+  @Override
+  public StringBuilder writeColumnModifyString(StringBuilder builder, DBAccessor.DBColumnInfo columnInfo) {
+    builder.append(" ALTER COLUMN ").append(columnInfo.getName())
+      .append(" SET DATA TYPE ");
+    writeColumnType(builder, columnInfo);
+
+    return builder;
+  }
+
+  //+
+  @Override
+  public StringBuilder writeSetNullableString(StringBuilder builder,
+      String tableName, DBAccessor.DBColumnInfo columnInfo, boolean nullable) {
+    builder.append(" ALTER COLUMN ").append(columnInfo.getName()).append(" SET");
+    String nullStatement = nullable ? " NULL" : " NOT NULL";
+    builder.append(nullStatement);
+    return builder;
+  }
+
+  @Override
+  public String writeGetTableConstraints(String databaseName, String tableName){
+    StringBuilder statement = new StringBuilder()
+      .append("SELECT")
+        .append(" C.CONSTRAINTNAME AS CONSTRAINT_NAME,")
+        .append(" C.TYPE AS CONSTRAINT_TYPE")
+      .append(" FROM SYS.SYSCONSTRAINTS AS C, SYS.SYSTABLES AS T")
+      .append(" WHERE C.TABLEID = T.TABLEID AND T.TABLENAME = '").append(tableName).append("'");
+    return statement.toString();
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/META-INF/persistence.xml b/ambari-server/src/main/resources/META-INF/persistence.xml
index 0375650..3aa7689 100644
--- a/ambari-server/src/main/resources/META-INF/persistence.xml
+++ b/ambari-server/src/main/resources/META-INF/persistence.xml
@@ -106,8 +106,8 @@
       <property name="eclipselink.connection-pool.sequence" value="true" />
       <property name="eclipselink.weaving" value="static" />
       <property name="eclipselink.session.customizer" value="org.apache.ambari.server.orm.EclipseLinkSessionCustomizer"/>
-      <property name="eclipselink.logging.logger" value="org.apache.ambari.server.logging.EclipseLinkLogger"/>
-      <property name="eclipselink.logging.level" value="INFO"/>
+      <!--<property name="eclipselink.logging.logger" value="org.apache.ambari.server.logging.EclipseLinkLogger"/>-->
+      <!--<property name="eclipselink.logging.level" value="INFO"/>-->
     </properties>
   </persistence-unit>
 
@@ -119,8 +119,8 @@
       <property name="eclipselink.cache.size.default" value="10000" />
       <property name="eclipselink.jdbc.batch-writing" value="JDBC"/>
       <property name="eclipselink.weaving" value="static" />
-      <property name="eclipselink.logging.logger" value="org.apache.ambari.server.logging.EclipseLinkLogger"/>
-      <property name="eclipselink.logging.level" value="INFO"/>
+      <!--<property name="eclipselink.logging.logger" value="org.apache.ambari.server.logging.EclipseLinkLogger"/>-->
+      <!--<property name="eclipselink.logging.level" value="INFO"/>-->
     </properties>
   </persistence-unit>
   <persistence-unit name="ambari-view-migration" transaction-type="RESOURCE_LOCAL">
@@ -130,8 +130,8 @@
       <property name="eclipselink.cache.size.default" value="10000" />
       <property name="eclipselink.jdbc.batch-writing" value="JDBC"/>
       <property name="eclipselink.weaving" value="static" />
-      <property name="eclipselink.logging.logger" value="org.apache.ambari.server.logging.EclipseLinkLogger"/>
-      <property name="eclipselink.logging.level" value="INFO"/>
+      <!--<property name="eclipselink.logging.logger" value="org.apache.ambari.server.logging.EclipseLinkLogger"/>-->
+      <!--<property name="eclipselink.logging.level" value="INFO"/>-->
     </properties>
   </persistence-unit>
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/annotations/LockAreaTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/annotations/LockAreaTest.java b/ambari-server/src/test/java/org/apache/ambari/annotations/LockAreaTest.java
index 2208ce4..fc5e81a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/annotations/LockAreaTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/annotations/LockAreaTest.java
@@ -17,6 +17,7 @@
  */
 package org.apache.ambari.annotations;
 
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.EnumSet;
 import java.util.List;
@@ -26,6 +27,7 @@ import java.util.concurrent.locks.ReadWriteLock;
 
 import org.apache.ambari.annotations.TransactionalLock.LockArea;
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.TransactionalLocks;
@@ -35,7 +37,6 @@ import org.junit.Test;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 
 import junit.framework.Assert;
 
@@ -53,8 +54,8 @@ public class LockAreaTest {
   }
 
   @After
-  public void teardown() throws AmbariException {
-    m_injector.getInstance(PersistService.class).stop();
+  public void teardown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(m_injector);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/annotations/TransactionalLockInterceptorTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/annotations/TransactionalLockInterceptorTest.java b/ambari-server/src/test/java/org/apache/ambari/annotations/TransactionalLockInterceptorTest.java
index 7d7f47b..dcd1546 100644
--- a/ambari-server/src/test/java/org/apache/ambari/annotations/TransactionalLockInterceptorTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/annotations/TransactionalLockInterceptorTest.java
@@ -17,6 +17,7 @@
  */
 package org.apache.ambari.annotations;
 
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
@@ -24,6 +25,7 @@ import java.util.concurrent.locks.ReadWriteLock;
 import org.apache.ambari.annotations.TransactionalLock.LockArea;
 import org.apache.ambari.annotations.TransactionalLock.LockType;
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.TransactionalLocks;
@@ -38,7 +40,6 @@ import com.google.inject.Binder;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 import com.google.inject.Module;
-import com.google.inject.persist.PersistService;
 import com.google.inject.persist.Transactional;
 import com.google.inject.util.Modules;
 
@@ -58,8 +59,8 @@ public class TransactionalLockInterceptorTest {
   }
 
   @After
-  public void teardown() throws AmbariException {
-    m_injector.getInstance(PersistService.class).stop();
+  public void teardown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(m_injector);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/H2DatabaseCleaner.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/H2DatabaseCleaner.java b/ambari-server/src/test/java/org/apache/ambari/server/H2DatabaseCleaner.java
new file mode 100644
index 0000000..91477eb
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/H2DatabaseCleaner.java
@@ -0,0 +1,124 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server;
+
+import static org.eclipse.persistence.config.PersistenceUnitProperties.DEFAULT_CREATE_JDBC_FILE_NAME;
+
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import javax.persistence.metamodel.EntityType;
+
+import org.apache.ambari.server.configuration.Configuration;
+import org.apache.ambari.server.orm.DBAccessorImpl;
+import org.apache.commons.collections.CollectionUtils;
+
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
+
+public class H2DatabaseCleaner {
+  private static final String SEQ_INSERT_PREFIX = "INSERT INTO ambari_sequences";
+  private static List<String> seqInsertStatements;
+
+  public static void clearDatabaseAndStopPersistenceService(Injector injector) throws AmbariException, SQLException {
+    clearDatabase(injector.getProvider(EntityManager.class).get());
+    injector.getInstance(PersistService.class).stop();
+  }
+
+  public static void clearDatabase(EntityManager entityManager) throws AmbariException, SQLException {
+    clearDatabase(entityManager, Configuration.JDBC_IN_MEMORY_URL,
+      Configuration.JDBC_IN_MEMORY_USER, Configuration.JDBC_IN_MEMORY_PASSWORD);
+  }
+
+  private static List<String> collectSequenceInserts() {
+    try {
+      ArrayList<String> statementList = new ArrayList<>();
+      for (String s : Files.readAllLines(Paths.get(DEFAULT_CREATE_JDBC_FILE_NAME), Charset.defaultCharset())) {
+        if (s.startsWith(SEQ_INSERT_PREFIX)) {
+          statementList.add(s);
+        }
+      }
+      return statementList;
+    } catch (IOException e) {
+      return Collections.emptyList();
+    }
+  }
+
+  //TODO all tests this method is used in should be modified to remove hardcoded IDs
+  public static void resetSequences(Injector injector) {
+    DBAccessorImpl dbAccessor = injector.getInstance(DBAccessorImpl.class);
+    try {
+      if (dbAccessor.tableExists("ambari_sequences")) {
+        if (seqInsertStatements == null) {
+          seqInsertStatements = collectSequenceInserts();
+        }
+        if (!CollectionUtils.isEmpty(seqInsertStatements)) {
+          dbAccessor.truncateTable("ambari_sequences");
+
+          for (String insert : seqInsertStatements) {
+            dbAccessor.executeUpdate(insert);
+          }
+        }
+
+      }
+    } catch (SQLException ignored) {
+    }
+  }
+
+  public static void clearDatabase(EntityManager entityManager, String dbURL, String dbUser, String dbPass) throws SQLException {
+    Connection connection = DriverManager.getConnection(dbURL, dbUser, dbPass);
+    Statement s = connection.createStatement();
+
+    try {
+      // Disable FK
+      s.execute("SET REFERENTIAL_INTEGRITY FALSE");
+
+      entityManager.getTransaction().begin();
+      // Truncate tables for all entities
+      for (EntityType<?> entity : entityManager.getMetamodel().getEntities()) {
+        Query query = entityManager.createQuery("DELETE FROM " + entity.getName() + " em");
+        query.executeUpdate();
+//        final String tableName = entity.getBindableJavaType().getAnnotation(Table.class).name();
+//        s.executeUpdate("TRUNCATE TABLE " + tableName);
+      }
+
+      entityManager.getTransaction().commit();
+
+      // Enable FK
+      s.execute("SET REFERENTIAL_INTEGRITY TRUE");
+
+      //reset shared cache
+      entityManager.getEntityManagerFactory().getCache().evictAll();
+    } finally {
+      s.close();
+      connection.close();
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/StateRecoveryManagerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/StateRecoveryManagerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/StateRecoveryManagerTest.java
index a413ce3..c5be8f4 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/StateRecoveryManagerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/StateRecoveryManagerTest.java
@@ -26,6 +26,7 @@ import static org.easymock.EasyMock.replay;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 
+import java.sql.SQLException;
 import java.util.ArrayList;
 
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
@@ -46,7 +47,6 @@ import org.junit.Test;
 import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 import com.google.inject.util.Modules;
 
 public class StateRecoveryManagerTest {
@@ -67,8 +67,8 @@ public class StateRecoveryManagerTest {
   }
 
   @After
-  public void teardown() {
-    injector.getInstance(PersistService.class).stop();
+  public void teardown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapperTest.java
index 62ce93b..893c3fb 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapperTest.java
@@ -19,6 +19,7 @@
 package org.apache.ambari.server.actionmanager;
 
 
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -28,6 +29,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.agent.AgentCommand.AgentCommandType;
@@ -42,6 +44,7 @@ import org.apache.ambari.server.state.StackId;
 import org.apache.ambari.server.state.svccomphost.ServiceComponentHostStartEvent;
 import org.apache.ambari.server.utils.StageUtils;
 import org.codehaus.jettison.json.JSONException;
+import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -262,4 +265,9 @@ public class ExecutionCommandWrapperTest {
     Assert.assertEquals(SERVICE_SITE_VAL5, mergedConfig.get(SERVICE_SITE_NAME5));
     Assert.assertEquals(SERVICE_SITE_VAL6_H, mergedConfig.get(SERVICE_SITE_NAME6));
   }
+
+  @AfterClass
+  public static void tearDown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/StageTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/StageTest.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/StageTest.java
index 331f4fb..89627f7 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/StageTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/StageTest.java
@@ -20,9 +20,12 @@ package org.apache.ambari.server.actionmanager;
 
 import static org.junit.Assert.assertEquals;
 
+import java.sql.SQLException;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
@@ -31,6 +34,7 @@ import org.apache.ambari.server.serveraction.ServerAction;
 import org.apache.ambari.server.serveraction.upgrades.ConfigureAction;
 import org.apache.ambari.server.state.svccomphost.ServiceComponentHostServerActionEvent;
 import org.apache.ambari.server.utils.StageUtils;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -79,4 +83,9 @@ public class StageTest {
 
     assertEquals("user1", actionUserName);
   }
-}
\ No newline at end of file
+
+  @After
+  public void tearDown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
index 1ca777d..177ac70 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -30,6 +31,7 @@ import javax.persistence.EntityManager;
 import javax.persistence.NamedQuery;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.agent.CommandReport;
@@ -63,7 +65,6 @@ import com.google.inject.Guice;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
 import com.google.inject.Singleton;
-import com.google.inject.persist.PersistService;
 import com.google.inject.util.Modules;
 
 import junit.framework.Assert;
@@ -103,6 +104,7 @@ public class TestActionDBAccessorImpl {
     injector  = Guice.createInjector(Modules.override(defaultTestModule)
       .with(new TestActionDBAccessorModule()));
 
+    H2DatabaseCleaner.resetSequences(injector);
     injector.getInstance(GuiceJpaInitializer.class);
 
     // initialize AmbariMetaInfo so that the stacks are populated into the DB
@@ -124,8 +126,8 @@ public class TestActionDBAccessorImpl {
   }
 
   @After
-  public void tearDown() throws AmbariException {
-    injector.getInstance(PersistService.class).stop();
+  public void tearDown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
index da54789..d5f2475 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
@@ -27,11 +27,13 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertSame;
 
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.agent.ActionQueue;
@@ -53,7 +55,6 @@ import org.junit.Test;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 import com.google.inject.persist.UnitOfWork;
 
 import junit.framework.Assert;
@@ -73,7 +74,9 @@ public class TestActionManager {
   @Before
   public void setup() throws AmbariException {
     injector = Guice.createInjector(new InMemoryDefaultTestModule());
+    H2DatabaseCleaner.resetSequences(injector);
     injector.getInstance(GuiceJpaInitializer.class);
+
     clusters = injector.getInstance(Clusters.class);
     stageFactory = injector.getInstance(StageFactory.class);
 
@@ -86,8 +89,8 @@ public class TestActionManager {
   }
 
   @After
-  public void teardown() throws AmbariException {
-    injector.getInstance(PersistService.class).stop();
+  public void tearDown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
index 6cc511e..ade625a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
@@ -41,6 +41,7 @@ import static org.mockito.Mockito.when;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -57,6 +58,7 @@ import java.util.concurrent.TimeUnit;
 import javax.persistence.EntityManager;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.ServiceComponentHostNotFoundException;
@@ -114,7 +116,6 @@ import com.google.inject.Guice;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
 import com.google.inject.Provider;
-import com.google.inject.persist.PersistService;
 import com.google.inject.persist.UnitOfWork;
 
 import junit.framework.Assert;
@@ -161,8 +162,8 @@ public class TestActionScheduler {
   }
 
   @After
-  public void teardown() {
-    injector.getInstance(PersistService.class).stop();
+  public void teardown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionSchedulerThreading.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionSchedulerThreading.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionSchedulerThreading.java
index 246c8b3..217f95e 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionSchedulerThreading.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionSchedulerThreading.java
@@ -20,6 +20,7 @@ package org.apache.ambari.server.actionmanager;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
+import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
@@ -27,6 +28,8 @@ import java.util.concurrent.Semaphore;
 
 import javax.persistence.EntityManager;
 
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.events.publishers.JPAEventPublisher;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
@@ -46,7 +49,6 @@ import com.google.common.collect.Sets;
 import com.google.inject.Guice;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 import com.google.inject.persist.UnitOfWork;
 
 import junit.framework.Assert;
@@ -78,8 +80,8 @@ public class TestActionSchedulerThreading {
    * Cleanup test methods.
    */
   @After
-  public void teardown() {
-    injector.getInstance(PersistService.class).stop();
+  public void tearDown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestStage.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestStage.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestStage.java
index 1047a73..c388d08 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestStage.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestStage.java
@@ -19,15 +19,19 @@ package org.apache.ambari.server.actionmanager;
 
 import static org.junit.Assert.assertEquals;
 
+import java.sql.SQLException;
 import java.util.Map;
 import java.util.TreeMap;
 
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.agent.ExecutionCommand;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.utils.StageUtils;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -75,4 +79,9 @@ public class TestStage {
     assertEquals("My Context", stage.getRequestContext());
     assertEquals(CLUSTER_HOST_INFO, stage.getClusterHostInfo());
   }
+
+  @After
+  public void tearDown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java
index 4a5cb06..4a888f0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java
@@ -36,6 +36,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -43,6 +44,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.actionmanager.ActionDBAccessor;
@@ -92,7 +94,6 @@ import com.google.gson.JsonObject;
 import com.google.inject.Guice;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 import com.google.inject.persist.UnitOfWork;
 
 import junit.framework.Assert;
@@ -143,14 +144,15 @@ public class HeartbeatProcessorTest {
 
   @Before
   public void setup() throws Exception {
+    H2DatabaseCleaner.resetSequences(injector);
     injector.getInstance(GuiceJpaInitializer.class);
     injector.injectMembers(this);
     EasyMock.replay(injector.getInstance(AuditLogger.class));
   }
 
   @After
-  public void teardown() throws AmbariException {
-    injector.getInstance(PersistService.class).stop();
+  public void teardown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   @Test
@@ -1364,4 +1366,4 @@ public class HeartbeatProcessorTest {
 
 
 
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
index e7588c7..ba03ae1 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
@@ -57,6 +57,7 @@ import java.util.Map;
 import javax.xml.bind.JAXBException;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.actionmanager.ActionDBAccessor;
@@ -107,7 +108,6 @@ import org.slf4j.LoggerFactory;
 import com.google.inject.Guice;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 
 import junit.framework.Assert;
 
@@ -161,7 +161,7 @@ public class TestHeartbeatHandler {
 
   @After
   public void teardown() throws Exception {
-    injector.getInstance(PersistService.class).stop();
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
     EasyMock.reset(auditLogger);
   }
 
@@ -444,6 +444,7 @@ public class TestHeartbeatHandler {
 
     HeartBeatResponse hbr = handler.handleHeartBeat(hb);
     assertNull(hbr.getRecoveryConfig());
+    handler.stop();
   }
 
   //

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
index 4d129a9..1b9c28b 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.atLeast;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 
+import java.sql.SQLException;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -33,6 +34,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.actionmanager.ActionManager;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
@@ -65,7 +67,6 @@ import org.slf4j.LoggerFactory;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 
 public class TestHeartbeatMonitor {
 
@@ -92,8 +93,8 @@ public class TestHeartbeatMonitor {
   }
 
   @After
-  public void teardown() {
-    injector.getInstance(PersistService.class).stop();
+  public void teardown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   private void setOsFamily(Host host, String osFamily, String osVersion) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/api/query/JpaSortBuilderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/query/JpaSortBuilderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/query/JpaSortBuilderTest.java
index b9bfc50..adbcd32 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/query/JpaSortBuilderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/query/JpaSortBuilderTest.java
@@ -27,6 +27,7 @@ import javax.persistence.criteria.Order;
 import javax.persistence.criteria.Root;
 import javax.persistence.metamodel.SingularAttribute;
 
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.controller.internal.AlertHistoryResourceProvider;
 import org.apache.ambari.server.controller.internal.SortRequestImpl;
 import org.apache.ambari.server.controller.spi.Predicate;
@@ -38,6 +39,7 @@ import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.entities.AlertHistoryEntity;
 import org.apache.ambari.server.orm.entities.AlertHistoryEntity_;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -60,6 +62,11 @@ public class JpaSortBuilderTest {
     m_injector.injectMembers(this);
   }
 
+  @After
+  public void teardown() throws Exception {
+    H2DatabaseCleaner.clearDatabase(m_injector.getProvider(EntityManager.class).get());
+  }
+
   /**
    * Tests that adding a sort does not create another {@link Root} in the
    * {@link CriteriaQuery}. A duplicate root will cause a cartesian product

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
index d93953c..d3ccf33 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
@@ -46,6 +46,7 @@ import java.util.UUID;
 import javax.persistence.EntityManager;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.StackAccessException;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.controller.spi.Resource;
@@ -92,6 +93,7 @@ import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
 import org.easymock.Capture;
 import org.easymock.EasyMock;
+import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
@@ -131,7 +133,7 @@ public class AmbariMetaInfoTest {
   private static final int PROPERTIES_CNT = 62;
   private static final int OS_CNT = 4;
 
-  private static AmbariMetaInfo metaInfo = null;
+  private static TestAmbariMetaInfo metaInfo = null;
   private final static Logger LOG =
       LoggerFactory.getLogger(AmbariMetaInfoTest.class);
   private static final String FILE_NAME = "hbase-site.xml";
@@ -157,6 +159,11 @@ public class AmbariMetaInfoTest {
     metaInfo = createAmbariMetaInfo(stacks, version);
   }
 
+  @AfterClass
+  public static void tearDown() throws Exception {
+    H2DatabaseCleaner.clearDatabase(metaInfo.injector.getProvider(EntityManager.class).get());
+  }
+
   public class MockModule extends AbstractModule {
     @Override
     protected void configure() {
@@ -2141,11 +2148,12 @@ public class AmbariMetaInfoTest {
     AlertDefinitionDAO alertDefinitionDAO;
     AlertDefinitionFactory alertDefinitionFactory;
     OsFamily osFamily;
+    Injector injector;
 
     public TestAmbariMetaInfo(Configuration configuration) throws Exception {
       super(configuration);
 
-      Injector injector = Guice.createInjector(Modules.override(
+      injector = Guice.createInjector(Modules.override(
           new InMemoryDefaultTestModule()).with(new MockModule()));
 
       injector.getInstance(GuiceJpaInitializer.class);

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistKeyValueImplTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistKeyValueImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistKeyValueImplTest.java
index 63f269d..d6815fd 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistKeyValueImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistKeyValueImplTest.java
@@ -20,6 +20,7 @@ package org.apache.ambari.server.api.services;
 
 import java.util.Map;
 
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.junit.After;
@@ -29,7 +30,6 @@ import org.junit.Test;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 
 
 public class PersistKeyValueImplTest extends Assert {
@@ -46,7 +46,7 @@ public class PersistKeyValueImplTest extends Assert {
 
   @After
   public void tearDown() throws Exception {
-    injector.getInstance(PersistService.class).stop();
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistServiceTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistServiceTest.java
index 7576501..57ccdb9 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistServiceTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/PersistServiceTest.java
@@ -21,6 +21,7 @@ package org.apache.ambari.server.api.services;
 import java.io.IOException;
 import java.util.Map;
 
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.RandomPortJerseyTest;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
@@ -35,7 +36,6 @@ import org.junit.Test;
 import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 import com.sun.jersey.api.client.Client;
 import com.sun.jersey.api.client.UniformInterfaceException;
 import com.sun.jersey.api.client.WebResource;
@@ -80,7 +80,7 @@ public class PersistServiceTest extends RandomPortJerseyTest {
   @After
   public void tearDown() throws Exception {
     super.tearDown();
-    injector.getInstance(PersistService.class).stop();
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/configuration/RecoveryConfigHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/configuration/RecoveryConfigHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/configuration/RecoveryConfigHelperTest.java
index 6640837..3a93fbf 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/configuration/RecoveryConfigHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/configuration/RecoveryConfigHelperTest.java
@@ -32,6 +32,7 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.agent.HeartbeatTestHelper;
 import org.apache.ambari.server.agent.RecoveryConfig;
 import org.apache.ambari.server.agent.RecoveryConfigHelper;
@@ -52,7 +53,6 @@ import com.google.common.eventbus.EventBus;
 import com.google.inject.Guice;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 
 /**
  * Test RecoveryConfigHelper class
@@ -87,7 +87,7 @@ public class RecoveryConfigHelperTest {
 
   @After
   public void teardown() throws Exception {
-    injector.getInstance(PersistService.class).stop();
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
index 8c87f0f..0f5a388 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
@@ -17,6 +17,7 @@
  */
 package org.apache.ambari.server.controller;
 
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -27,6 +28,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.actionmanager.ActionManager;
@@ -73,7 +75,6 @@ import org.springframework.security.core.context.SecurityContextHolder;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 
 import junit.framework.Assert;
 
@@ -137,9 +138,9 @@ public class AmbariCustomCommandExecutionHelperTest {
   }
 
   @After
-  public void teardown() {
+  public void teardown() throws AmbariException, SQLException {
     SecurityContextHolder.getContext().setAuthentication(null);
-    injector.getInstance(PersistService.class).stop();
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
index 6e2190b..af67f05 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
@@ -58,6 +58,7 @@ import javax.persistence.EntityManager;
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.ClusterNotFoundException;
 import org.apache.ambari.server.DuplicateResourceException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.HostNotFoundException;
 import org.apache.ambari.server.ObjectNotFoundException;
 import org.apache.ambari.server.ParentObjectNotFoundException;
@@ -171,7 +172,6 @@ import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 
 import junit.framework.Assert;
 
@@ -241,6 +241,7 @@ public class AmbariManagementControllerTest {
     InMemoryDefaultTestModule module = new InMemoryDefaultTestModule();
     backingProperties = module.getProperties();
     injector = Guice.createInjector(module);
+    H2DatabaseCleaner.resetSequences(injector);
     injector.getInstance(GuiceJpaInitializer.class);
     ambariMetaInfo = injector.getInstance(AmbariMetaInfo.class);
     ambariMetaInfo.init();
@@ -257,7 +258,7 @@ public class AmbariManagementControllerTest {
 
   @Before
   public void setup() throws Exception {
-    entityManager = injector.getInstance(EntityManager.class);
+    entityManager = injector.getProvider(EntityManager.class).get();
     actionDB = injector.getInstance(ActionDBAccessor.class);
     serviceFactory = injector.getInstance(ServiceFactory.class);
     serviceComponentFactory = injector.getInstance(
@@ -284,7 +285,7 @@ public class AmbariManagementControllerTest {
 
   @AfterClass
   public static void afterClass() throws Exception {
-    injector.getInstance(PersistService.class).stop();
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   private static String getUniqueName() {

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
index ff5d1bf..85c47fc 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
@@ -31,6 +31,7 @@ import java.net.InetAddress;
 import java.net.PasswordAuthentication;
 import java.sql.Connection;
 import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.EnumSet;
@@ -41,6 +42,7 @@ import javax.servlet.DispatcherType;
 import javax.servlet.SessionCookieConfig;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.checks.DatabaseConsistencyCheckHelper;
 import org.apache.ambari.server.configuration.Configuration;
@@ -81,7 +83,8 @@ public class AmbariServerTest {
   }
 
   @After
-  public void teardown() throws AmbariException {
+  public void teardown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java
index 58f597f..30816a5 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java
@@ -19,6 +19,7 @@ package org.apache.ambari.server.controller;
 
 import static org.mockito.Matchers.any;
 
+import java.sql.SQLException;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -27,6 +28,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.actionmanager.ActionManager;
 import org.apache.ambari.server.actionmanager.ExecutionCommandWrapper;
 import org.apache.ambari.server.actionmanager.Request;
@@ -61,7 +63,6 @@ import org.springframework.security.core.context.SecurityContextHolder;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 
 import junit.framework.Assert;
 
@@ -112,8 +113,8 @@ public class BackgroundCustomCommandExecutionTest {
     SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
   }
   @After
-  public void teardown() {
-    injector.getInstance(PersistService.class).stop();
+  public void teardown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
     SecurityContextHolder.getContext().setAuthentication(null);
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java
index a54fb98..0b4c81d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/RefreshYarnCapacitySchedulerReleaseConfigTest.java
@@ -18,6 +18,7 @@
 
 package org.apache.ambari.server.controller;
 
+import java.sql.SQLException;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -25,6 +26,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.controller.internal.ComponentResourceProviderTest;
 import org.apache.ambari.server.controller.internal.ServiceResourceProviderTest;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
@@ -48,7 +50,6 @@ import org.springframework.security.core.context.SecurityContextHolder;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 
 import junit.framework.Assert;
 
@@ -76,8 +77,8 @@ public class RefreshYarnCapacitySchedulerReleaseConfigTest {
   }
 
   @After
-  public void teardown() {
-    injector.getInstance(PersistService.class).stop();
+  public void teardown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
 
     // Clear the authenticated user
     SecurityContextHolder.getContext().setAuthentication(null);

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java
index 9fc51bd..e9b4aa7 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java
@@ -21,14 +21,18 @@ package org.apache.ambari.server.controller;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertTrue;
 
+import java.sql.SQLException;
 import java.util.Collections;
 import java.util.Set;
 
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.ObjectNotFoundException;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.controller.RootServiceResponseFactory.Components;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -52,6 +56,11 @@ public class RootServiceResponseFactoryTest {
     injector.injectMembers(this);
   }
 
+  @After
+  public void teardown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
+  }
+
   @Test
   public void testGetRootServices() throws Exception {
     // Request a null service name

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActionResourceProviderTest.java
index e29c047..061f06a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActionResourceProviderTest.java
@@ -24,12 +24,14 @@ import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
 
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.actionmanager.ActionType;
 import org.apache.ambari.server.actionmanager.TargetHostType;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
@@ -52,7 +54,6 @@ import org.junit.Test;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 
 public class ActionResourceProviderTest {
 
@@ -84,8 +85,8 @@ public class ActionResourceProviderTest {
   }
 
   @After
-  public void teardown() {
-    injector.getInstance(PersistService.class).stop();
+  public void teardown() throws AmbariException, SQLException {
+    H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertResourceProviderTest.java
index 9f6591c..4b2bb7a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AlertResourceProviderTest.java
@@ -735,8 +735,8 @@ public class AlertResourceProviderTest {
 
       expect(configuration.getDatabaseUrl()).andReturn(JDBC_IN_MEMORY_URL).anyTimes();
       expect(configuration.getDatabaseDriver()).andReturn(JDBC_IN_MEMORY_DRIVER).anyTimes();
-      expect(configuration.getDatabaseUser()).andReturn("test").anyTimes();
-      expect(configuration.getDatabasePassword()).andReturn("test").anyTimes();
+      expect(configuration.getDatabaseUser()).andReturn("sa").anyTimes();
+      expect(configuration.getDatabasePassword()).andReturn("").anyTimes();
       expect(configuration.getAlertEventPublisherPoolSize()).andReturn(Integer.valueOf(Configuration.ALERTS_EXECUTION_SCHEDULER_THREADS.getDefaultValue())).anyTimes();
       expect(configuration.getMasterKeyLocation()).andReturn(new File("/test")).anyTimes();
       expect(configuration.getTemporaryKeyStoreRetentionMinutes()).andReturn(2l).anyTimes();

http://git-wip-us.apache.org/repos/asf/ambari/blob/3a7906c8/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CalculatedStatusTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CalculatedStatusTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CalculatedStatusTest.java
index a96f395..cd2f99e 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CalculatedStatusTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CalculatedStatusTest.java
@@ -34,6 +34,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import javax.persistence.EntityManager;
+
+import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.actionmanager.ExecutionCommandWrapperFactory;
@@ -46,6 +49,7 @@ import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.dao.HostRoleCommandStatusSummaryDTO;
 import org.apache.ambari.server.orm.entities.HostRoleCommandEntity;
 import org.apache.ambari.server.orm.entities.StageEntity;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -82,6 +86,10 @@ public class CalculatedStatusTest {
     s_field.setAccessible(true);
   }
 
+  @After
+  public void after() throws Exception {
+    H2DatabaseCleaner.clearDatabase(m_injector.getProvider(EntityManager.class).get());
+  }
 
   @Test
   public void testGetStatus() throws Exception {