/** * 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.dao; import java.sql.SQLException; import java.util.Collection; 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.orm.GuiceJpaInitializer; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; import org.apache.ambari.server.orm.OrmTestHelper; import org.apache.ambari.server.orm.entities.TopologyHostGroupEntity; import org.apache.ambari.server.orm.entities.TopologyHostInfoEntity; import org.apache.ambari.server.orm.entities.TopologyRequestEntity; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.google.inject.Guice; import com.google.inject.Injector; import junit.framework.Assert; public class TopologyRequestDAOTest { private Injector injector; private TopologyRequestDAO requestDAO; OrmTestHelper helper; Long clusterId; @Before public void setup() throws Exception { injector = Guice.createInjector(new InMemoryDefaultTestModule()); injector.getInstance(GuiceJpaInitializer.class); requestDAO = injector.getInstance(TopologyRequestDAO.class); helper = injector.getInstance(OrmTestHelper.class); clusterId = helper.createCluster(); } @After public void teardown() throws AmbariException, SQLException { H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector); } private void create() { TopologyRequestEntity requestEntity = new TopologyRequestEntity(); requestEntity.setAction("a1"); requestEntity.setBlueprintName("bp1"); requestEntity.setClusterAttributes("attributes"); requestEntity.setClusterProperties("properties"); requestEntity.setClusterId(clusterId); requestEntity.setDescription("description"); TopologyHostGroupEntity hostGroupEntity = new TopologyHostGroupEntity(); hostGroupEntity.setName("hg1"); hostGroupEntity.setGroupAttributes("hg-attributes"); hostGroupEntity.setGroupProperties("hg-properties"); hostGroupEntity.setTopologyRequestEntity(requestEntity); requestEntity.setTopologyHostGroupEntities(Collections.singletonList(hostGroupEntity)); TopologyHostInfoEntity hostInfoEntity = new TopologyHostInfoEntity(); hostInfoEntity.setTopologyHostGroupEntity(hostGroupEntity); hostGroupEntity.setTopologyHostInfoEntities(Collections.singletonList(hostInfoEntity)); hostInfoEntity.setFqdn("fqdn"); hostInfoEntity.setHostCount(12); hostInfoEntity.setPredicate("predicate"); requestDAO.create(requestEntity); } private void testRequestEntity(List<TopologyRequestEntity> requestEntities) { Assert.assertEquals(1, requestEntities.size()); TopologyRequestEntity requestEntity = requestEntities.iterator().next(); Assert.assertEquals("a1", requestEntity.getAction()); Assert.assertEquals("bp1", requestEntity.getBlueprintName()); Assert.assertEquals("attributes", requestEntity.getClusterAttributes()); Assert.assertEquals("properties", requestEntity.getClusterProperties()); Assert.assertEquals("description", requestEntity.getDescription()); Collection<TopologyHostGroupEntity> hostGroupEntities = requestEntity.getTopologyHostGroupEntities(); Assert.assertEquals(1, hostGroupEntities.size()); TopologyHostGroupEntity hostGroupEntity = hostGroupEntities.iterator().next(); Assert.assertEquals("hg1", hostGroupEntity.getName()); Assert.assertEquals("hg-attributes", hostGroupEntity.getGroupAttributes()); Assert.assertEquals("hg-properties", hostGroupEntity.getGroupProperties()); Assert.assertEquals(requestEntity.getId(), hostGroupEntity.getRequestId()); Collection<TopologyHostInfoEntity> infoEntities = hostGroupEntity.getTopologyHostInfoEntities(); Assert.assertEquals(1, infoEntities.size()); TopologyHostInfoEntity infoEntity = infoEntities.iterator().next(); Assert.assertEquals("hg1", hostGroupEntity.getName()); Assert.assertEquals(hostGroupEntity.getId(), infoEntity.getGroupId()); Assert.assertEquals("fqdn", infoEntity.getFqdn()); Assert.assertEquals(12, infoEntity.getHostCount().intValue()); Assert.assertEquals("predicate", infoEntity.getPredicate()); } @Test public void testAndFindAll() throws Exception { create(); testRequestEntity(requestDAO.findAll()); } @Test public void testFindByClusterId() throws Exception { create(); testRequestEntity(requestDAO.findByClusterId(clusterId)); } @Test public void testRemoveAll() throws Exception { // Given create(); // When requestDAO.removeAll(clusterId); // Then List<TopologyRequestEntity> requestEntities = requestDAO.findByClusterId(clusterId); Assert.assertEquals("All topology request entities associated with cluster should be removed !", 0, requestEntities.size()); } }