@Test
public void testUpdateHiveConfig() throws Exception {

  EasyMockSupport easyMockSupport = new EasyMockSupport();
  final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(AmbariManagementController.class);
  final Clusters mockClusters = easyMockSupport.createStrictMock(Clusters.class);
  final Cluster mockClusterExpected = easyMockSupport.createNiceMock(Cluster.class);
  final Map<String, String> propertiesHiveSite = new HashMap<String, String>() {{
    put("hive.server2.logging.operation.log.location", "${system:java.io.tmpdir}/${system:user.name}/operation_logs");
  }};
  final Map<String, String> propertiesHiveSiteExpected = new HashMap<String, String>() {{
    put("hive.server2.logging.operation.log.location", "/tmp/hive/operation_logs");
  }};
  final Map<String, String> propertiesHiveEnv = new HashMap<String, String>() {{
    put("content", "test content");
  }};
  final Config hiveSiteConf = easyMockSupport.createNiceMock(Config.class);
  final Config hiveEnvConf = easyMockSupport.createNiceMock(Config.class);
  final Injector mockInjector = Guice.createInjector(new AbstractModule() {
    @Override
    protected void configure() {
      bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
      bind(Clusters.class).toInstance(mockClusters);
      bind(EntityManager.class).toInstance(entityManager);
      bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
      bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
    }
  });
  expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).once();
  expect(mockClusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{
    put("normal", mockClusterExpected);
  }}).atLeastOnce();
  expect(mockClusterExpected.getDesiredConfigByType("hive-site")).andReturn(hiveSiteConf).atLeastOnce();
  expect(mockClusterExpected.getDesiredConfigByType("hive-env")).andReturn(hiveEnvConf).atLeastOnce();
  expect(hiveSiteConf.getProperties()).andReturn(propertiesHiveSite).once();
  expect(hiveEnvConf.getProperties()).andReturn(propertiesHiveEnv).once();
  UpgradeCatalog220 upgradeCatalog220 = createMockBuilder(UpgradeCatalog220.class)
          .withConstructor(Injector.class)
          .withArgs(mockInjector)
          .addMockedMethod("updateConfigurationPropertiesForCluster", Cluster.class, String.class,
                  Map.class, boolean.class, boolean.class)
          .createMock();
  upgradeCatalog220.updateConfigurationPropertiesForCluster(mockClusterExpected,
          "hive-site", propertiesHiveSiteExpected, true, false);
  expectLastCall().once();
  upgradeCatalog220.updateConfigurationPropertiesForCluster(mockClusterExpected,
          "hive-env", propertiesHiveEnv, true, true);
  expectLastCall().once();
  easyMockSupport.replayAll();
  replay(upgradeCatalog220);
  upgradeCatalog220.updateHiveConfig();
  easyMockSupport.verifyAll();
}