From 2e063f7732d955d67f045918241f722007d85deb Mon Sep 17 00:00:00 2001 From: Balazs Bence Sari <> Date: Wed, 7 Mar 2018 09:19:55 +0100 Subject: [PATCH] AMBARI-22614 fix OrmTestHelper to support mpacks in unit tests (benyoka) --- .../ambari/server/orm/OrmTestHelper.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java index 9756bda6252..fbc041d62ad 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java @@ -49,6 +49,7 @@ import org.apache.ambari.server.orm.dao.HostDAO; import org.apache.ambari.server.orm.dao.HostRoleCommandDAO; import org.apache.ambari.server.orm.dao.HostVersionDAO; +import org.apache.ambari.server.orm.dao.MpackDAO; import org.apache.ambari.server.orm.dao.RepositoryVersionDAO; import org.apache.ambari.server.orm.dao.RequestDAO; import org.apache.ambari.server.orm.dao.ResourceTypeDAO; @@ -65,6 +66,7 @@ import org.apache.ambari.server.orm.entities.HostRoleCommandEntity; import org.apache.ambari.server.orm.entities.HostStateEntity; import org.apache.ambari.server.orm.entities.HostVersionEntity; +import org.apache.ambari.server.orm.entities.MpackEntity; import org.apache.ambari.server.orm.entities.PrincipalEntity; import org.apache.ambari.server.orm.entities.PrincipalTypeEntity; import org.apache.ambari.server.orm.entities.RepoDefinitionEntity; @@ -144,6 +146,9 @@ public class OrmTestHelper { @Inject private StackDAO stackDAO; + @Inject + MpackDAO mpackDAO; + private static final StackId HDP_206 = new StackId("HDP", "2.0.6"); public static final StackId STACK_ID = new StackId("HDP", "2.2.0"); public static final String CLUSTER_NAME = "test_cluster1"; @@ -326,14 +331,33 @@ public void createStageCommands() { hostDAO.merge(host2); } + @Transactional + public MpackEntity createMpack(StackId stackId) throws AmbariException { + List mpackEntities = + mpackDAO.findByNameVersion(stackId.getStackName(), stackId.getStackVersion()); + MpackEntity mpackEntity = !mpackEntities.isEmpty() ? mpackEntities.get(0) : null; + if (mpackEntities.isEmpty()) { + mpackEntity = new MpackEntity(); + mpackEntity.setMpackName(stackId.getStackName()); + mpackEntity.setMpackVersion(stackId.getStackVersion()); + mpackEntity.setMpackUri("http://mpacks.org/" + stackId.toString() + ".json"); + mpackDAO.create(mpackEntity); + } + return mpackEntity; + } + @Transactional public StackEntity createStack(StackId stackId) throws AmbariException { StackEntity stackEntity = stackDAO.find(stackId.getStackName(), stackId.getStackVersion()); - if (null == stackEntity) { stackEntity = new StackEntity(); stackEntity.setStackName(stackId.getStackName()); stackEntity.setStackVersion(stackId.getStackVersion()); + List mpackEntities = + mpackDAO.findByNameVersion(stackId.getStackName(), stackId.getStackVersion()); + if (!mpackEntities.isEmpty()) { + stackEntity.setMpackId(mpackEntities.get(0).getId()); + } stackDAO.create(stackEntity); } @@ -669,6 +693,7 @@ public RepositoryVersionEntity getOrCreateRepositoryVersion(StackId stackId, String version) { StackEntity stackEntity = null; try { + createMpack(stackId); // creating mpack before stack makes sure stack will be linked to mpack stackEntity = createStack(stackId); } catch (Exception e) { LOG.error("Expected successful repository", e); @@ -695,9 +720,9 @@ public RepositoryVersionEntity getOrCreateRepositoryVersion(StackId stackId, repoOsEntity.setAmbariManaged(true); repoOsEntity.addRepoDefinition(repoDefinitionEntity1); repoOsEntity.addRepoDefinition(repoDefinitionEntity2); + repoOsEntity.setMpackEntity(createMpack(stackId)); operatingSystems.add(repoOsEntity); - repositoryVersion = repositoryVersionDAO.create(stackEntity, version, String.valueOf(System.currentTimeMillis()) + uniqueCounter.incrementAndGet(), operatingSystems);