/**
* 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.TopologyHostRequestEntity;
import org.apache.ambari.server.orm.entities.TopologyHostTaskEntity;
import org.apache.ambari.server.orm.entities.TopologyLogicalRequestEntity;
import org.apache.ambari.server.orm.entities.TopologyLogicalTaskEntity;
import org.apache.ambari.server.orm.entities.TopologyRequestEntity;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import com.google.inject.Guice;
import com.google.inject.Injector;
import junit.framework.Assert;
public class TopologyLogicalRequestDAOTest {
private Injector injector;
private TopologyRequestDAO requestDAO;
private TopologyLogicalRequestDAO logicalRequestDAO;
private TopologyHostGroupDAO hostGroupDAO;
OrmTestHelper helper;
Long clusterId;
@Before
public void setup() throws Exception {
injector = Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
requestDAO = injector.getInstance(TopologyRequestDAO.class);
logicalRequestDAO = injector.getInstance(TopologyLogicalRequestDAO.class);
hostGroupDAO = injector.getInstance(TopologyHostGroupDAO.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");
requestDAO.create(requestEntity);
List<TopologyRequestEntity> requestEntities = requestDAO.findAll();
Assert.assertEquals(1, requestEntities.size());
requestEntity = requestEntities.iterator().next();
TopologyHostGroupEntity hostGroupEntity = new TopologyHostGroupEntity();
hostGroupEntity.setName("hg1");
hostGroupEntity.setGroupProperties("test");
hostGroupEntity.setGroupAttributes("test");
hostGroupEntity.setTopologyRequestEntity(requestEntity);
TopologyHostInfoEntity hostInfoEntity = new TopologyHostInfoEntity();
hostInfoEntity.setHostCount(1);
hostInfoEntity.setPredicate("test");
hostInfoEntity.setFqdn("fqdn");
hostInfoEntity.setTopologyHostGroupEntity(hostGroupEntity);
hostGroupDAO.create(hostGroupEntity);
List<TopologyHostGroupEntity> hostGroupEntities = hostGroupDAO.findAll();
Assert.assertEquals(1, hostGroupEntities.size());
hostGroupEntity = hostGroupEntities.iterator().next();
TopologyLogicalRequestEntity logicalRequestEntity = new TopologyLogicalRequestEntity();
logicalRequestEntity.setId(1L);
logicalRequestEntity.setDescription("description");
logicalRequestEntity.setTopologyRequestEntity(requestEntity);
logicalRequestEntity.setTopologyRequestId(requestEntity.getId());
TopologyHostRequestEntity hostRequestEntity = new TopologyHostRequestEntity();
hostGroupEntity.setId(1L);
hostRequestEntity.setHostName("h1");
hostRequestEntity.setStageId(1L);
hostRequestEntity.setTopologyLogicalRequestEntity(logicalRequestEntity);
hostRequestEntity.setTopologyHostGroupEntity(hostGroupEntity);
TopologyHostTaskEntity hostTaskEntity = new TopologyHostTaskEntity();
hostTaskEntity.setType("type");
hostTaskEntity.setTopologyHostRequestEntity(hostRequestEntity);
TopologyLogicalTaskEntity logicalTaskEntity = new TopologyLogicalTaskEntity();
logicalTaskEntity.setComponentName("NAMENODE");
logicalTaskEntity.setHostRoleCommandEntity(null);
logicalTaskEntity.setTopologyHostTaskEntity(hostTaskEntity);
hostGroupEntity.setTopologyHostRequestEntities(Collections.singletonList(hostRequestEntity));
hostRequestEntity.setTopologyHostTaskEntities(Collections.singletonList(hostTaskEntity));
hostRequestEntity.setTopologyHostGroupEntity(hostGroupEntity);
hostTaskEntity.setTopologyLogicalTaskEntities(Collections.singletonList(logicalTaskEntity));
logicalRequestEntity.setTopologyHostRequestEntities(Collections.singletonList(hostRequestEntity));
logicalRequestDAO.create(logicalRequestEntity);
}
@Test
@Ignore
public void testFindAll() throws Exception {
create();
List<TopologyLogicalRequestEntity> logicalRequestEntities = logicalRequestDAO.findAll();
Assert.assertEquals(1, logicalRequestEntities.size());
TopologyLogicalRequestEntity logicalRequestEntity = logicalRequestEntities.iterator().next();
Assert.assertNotNull(logicalRequestEntity.getTopologyRequestId());
Assert.assertEquals(Long.valueOf(1), logicalRequestEntity.getId());
Assert.assertEquals("description", logicalRequestEntity.getDescription());
Assert.assertNotNull(logicalRequestEntity.getTopologyRequestEntity());
Collection<TopologyHostRequestEntity> hostRequestEntities = logicalRequestEntity.getTopologyHostRequestEntities();
Assert.assertEquals(1, hostRequestEntities.size());
TopologyHostRequestEntity hostRequestEntity = hostRequestEntities.iterator().next();
Assert.assertNotNull(hostRequestEntity.getTopologyHostGroupEntity());
Assert.assertEquals(hostRequestEntity.getTopologyHostGroupEntity().getId(), hostRequestEntity.getHostGroupId());
Collection<TopologyHostTaskEntity> taskEntities = hostRequestEntity.getTopologyHostTaskEntities();
Assert.assertEquals(1, taskEntities.size());
TopologyHostTaskEntity taskEntity = taskEntities.iterator().next();
Assert.assertNotNull(taskEntity.getTopologyHostRequestEntity());
Assert.assertNotNull(taskEntity.getTopologyLogicalTaskEntities());
Assert.assertEquals(1, taskEntity.getTopologyLogicalTaskEntities().size());
Assert.assertNotNull(taskEntity.getTopologyLogicalTaskEntities().iterator().next().getTopologyHostTaskEntity());
}
}