modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java | 245 ++++------ modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncRepoTest.java | 88 +-- 2 files changed, 169 insertions(+), 164 deletions(-)
New commits: commit 074e2280ca2bc67573544f5ef024b8614fa0e21c Author: John Sanda jsanda@redhat.com Date: Tue Mar 30 15:32:58 2010 -0400
Fixing compile error after merge
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java index 84ee6af..ba117a8 100644 --- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java +++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java @@ -213,8 +213,7 @@ public class ContentProviderManagerSyncContentProviderTest extends AbstractEJB3T // Test // -------------------------------------------- // TestContentProviderManager providerManager = new TestContentProviderManager(); - boolean tested = pluginService.getContentProviderManager().testConnection(syncSource.getId()); - assert tested; + pluginService.getContentProviderManager().testConnection(syncSource.getId());
boolean completed = pluginService.getContentProviderManager().synchronizeContentProvider(syncSource.getId()); assert completed;
commit fa098e272e17d2331d7c62f5ffb332e61857f70e Merge: 3fdf529... 0b250a4... Author: John Sanda jsanda@redhat.com Date: Tue Mar 30 15:30:39 2010 -0400
Merge branch 'bugfixes' of ssh://git.fedorahosted.org/git/rhq/rhq into bugfixes
Conflicts: modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java
diff --cc modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java index d7d2404,567f8f5..84ee6af --- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java +++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java @@@ -179,133 -178,134 +179,133 @@@ public class ContentProviderManagerSync @SuppressWarnings("unchecked") public void synchronizeContentSource() throws Exception {
- // Setup - // -------------------------------------------- - RepoManagerLocal repoManager = LookupUtil.getRepoManagerLocal(); - SubjectManagerLocal subjectManager = LookupUtil.getSubjectManager(); - Subject overlord = subjectManager.getOverlord(); - - // -> Add an already imported repo to the system so it already exists when the report introduces it - Repo existingImportedRepo = new Repo(TestContentProvider.EXISTING_IMPORTED_REPO_NAME); - existingImportedRepo.setCandidate(false); - existingImportedRepo.addContentSource(syncSource); - repoManager.createRepo(overlord, existingImportedRepo); - - // -> Add an already imported repo that wasn't introduced from the report; a user created repo - Repo customImportedRepo = new Repo(CUSTOM_IMPORTED_REPO_NAME); - customImportedRepo.setCandidate(false); - customImportedRepo.addContentSource(syncSource); - repoManager.createRepo(overlord, customImportedRepo); - - // -> Simulate a candidate repo from a previous import that will be in this report as well - Repo existingCandidateRepo = new Repo(TestContentProvider.EXISTING_CANDIDATE_REPO_NAME); - existingCandidateRepo.setCandidate(true); - existingCandidateRepo.addContentSource(syncSource); - repoManager.createRepo(overlord, existingCandidateRepo); - - // -> Simulate a candidate repo from a previous import that will *NOT* be in this report - Repo previousRepo = new Repo(PREVIOUS_CANDIDATE_REPO_NAME); - previousRepo.setCandidate(true); - previousRepo.addContentSource(syncSource); - repoManager.createRepo(overlord, previousRepo); + try { + getTransactionManager().begin(); + + // Setup + // -------------------------------------------- + RepoManagerLocal repoManager = LookupUtil.getRepoManagerLocal(); + SubjectManagerLocal subjectManager = LookupUtil.getSubjectManager(); + Subject overlord = subjectManager.getOverlord(); + + // -> Add an already imported repo to the system so it already exists when the report introduces it + Repo existingImportedRepo = new Repo(TestContentProvider.EXISTING_IMPORTED_REPO_NAME); + existingImportedRepo.setCandidate(false); + repoManager.createRepo(overlord, existingImportedRepo); + + // -> Add an already imported repo that wasn't introduced from the report; a user created repo + Repo customImportedRepo = new Repo(CUSTOM_IMPORTED_REPO_NAME); + customImportedRepo.setCandidate(false); + customImportedRepo.addContentSource(syncSource); + repoManager.createRepo(overlord, customImportedRepo); + + // -> Simulate a candidate repo from a previous import that will be in this report as well + Repo existingCandidateRepo = new Repo(TestContentProvider.EXISTING_CANDIDATE_REPO_NAME); + existingCandidateRepo.setCandidate(true); + repoManager.createRepo(overlord, existingCandidateRepo); + + // -> Simulate a candidate repo from a previous import that will *NOT* be in this report + Repo previousRepo = new Repo(PREVIOUS_CANDIDATE_REPO_NAME); + previousRepo.setCandidate(true); + previousRepo.addContentSource(syncSource); + repoManager.createRepo(overlord, previousRepo);
- // Test - // -------------------------------------------- - // TestContentProviderManager providerManager = new TestContentProviderManager(); - boolean tested = pluginService.getContentProviderManager().testConnection(syncSource.getId()); - assert tested; + // Test + // -------------------------------------------- + // TestContentProviderManager providerManager = new TestContentProviderManager(); - boolean tested = false; - try { - pluginService.getContentProviderManager().testConnection(syncSource.getId()); - tested = true; - } catch (Exception e) { - System.err.println("testConnection() failed: " + e); - e.printStackTrace(); ++ boolean tested = pluginService.getContentProviderManager().testConnection(syncSource.getId()); ++ assert tested; + + boolean completed = pluginService.getContentProviderManager().synchronizeContentProvider(syncSource.getId()); + assert completed; + + // Verify RepoGroups + RepoGroup repoGroup = repoManager.getRepoGroupByName("testRepoGroup"); + assert repoGroup != null; + repoGroupsToDelete.add(repoGroup.getId()); + + // Verify Repos + // -------------------------------------------- + List<Repo> retrievedRepos; + + // -> Simple Repo + retrievedRepos = repoManager.getRepoByName("testRepo1"); + assert retrievedRepos.size() == 1; + assert retrievedRepos.get(0).isCandidate(); + reposToDelete.add(retrievedRepos.get(0).getId()); + + // -> Repo in a group + retrievedRepos = repoManager.getRepoByName("testRepo2"); + assert retrievedRepos.size() == 1; + assert retrievedRepos.get(0).isCandidate(); + reposToDelete.add(retrievedRepos.get(0).getId()); + + Repo repoInGroup = retrievedRepos.get(0); + + RepoCriteria findWithRepoGroup = new RepoCriteria(); + findWithRepoGroup.fetchRepoRepoGroups(true); + findWithRepoGroup.addFilterId(repoInGroup.getId()); + + PageList<Repo> repoPageList = repoManager.findReposByCriteria(overlord, findWithRepoGroup); + repoInGroup = repoPageList.get(0); + + Set<RepoRepoGroup> repoGroups = repoInGroup.getRepoRepoGroups(); + assert repoGroups.size() == 1; + + RepoRepoGroup repoRepoGroup = repoGroups.iterator().next(); + assert repoRepoGroup.getRepoRepoGroupPK().getRepoGroup().getName().equals("testRepoGroup"); + assert repoRepoGroup.getRepoRepoGroupPK().getRepo().getName().equals("testRepo2"); + + // -> Repo with a parent + retrievedRepos = repoManager.getRepoByName("testRepo3"); + assert retrievedRepos.size() == 1; + assert retrievedRepos.get(0).isCandidate(); + reposToDelete.add(retrievedRepos.get(0).getId()); + relatedRepoId = retrievedRepos.get(0).getId(); + + retrievedRepos = repoManager.getRepoByName("testRepo4"); + assert retrievedRepos.size() == 1; + assert retrievedRepos.get(0).isCandidate(); + reposToDelete.add(retrievedRepos.get(0).getId()); + repoId = retrievedRepos.get(0).getId(); + + RepoCriteria findWithRelationships = new RepoCriteria(); + findWithRelationships.addFilterName("testRepo4"); + findWithRelationships.fetchRepoRepoRelationships(true); + PageList<Repo> childRepoList = repoManager.findReposByCriteria(overlord, findWithRelationships); + assert childRepoList.size() == 1; + + Repo childRepo = childRepoList.get(0); + Set<RepoRepoRelationship> childRepoRepoRelationship = childRepo.getRepoRepoRelationships(); + assert childRepoRepoRelationship.size() == 1; + + // -> Repo that was already imported in the system (make sure there is still only one) + retrievedRepos = repoManager.getRepoByName(TestContentProvider.EXISTING_IMPORTED_REPO_NAME); + assert retrievedRepos.size() == 1; + reposToDelete.add(retrievedRepos.get(0).getId()); + + // -> Repo that was imported but not in the report (i.e. a user created repo) + retrievedRepos = repoManager.getRepoByName(CUSTOM_IMPORTED_REPO_NAME); + assert retrievedRepos.size() == 1; + reposToDelete.add(retrievedRepos.get(0).getId()); + + // -> Repo that was already a candidate in the system (make sure it's not added again) + retrievedRepos = repoManager.getRepoByName(TestContentProvider.EXISTING_CANDIDATE_REPO_NAME); + assert retrievedRepos.size() == 1; + reposToDelete.add(retrievedRepos.get(0).getId()); + + // -> Make sure a repo that was previously a candidate of this content provider but did not + // come back in the latest sync is removed + retrievedRepos = repoManager.getRepoByName(PREVIOUS_CANDIDATE_REPO_NAME); + assert retrievedRepos.size() == 0; + + // -> Non-existent repo + retrievedRepos = repoManager.getRepoByName("testRepoFoo"); + assert retrievedRepos.size() == 0; + + getTransactionManager().commit(); + } catch(Throwable t) { + getTransactionManager().rollback(); } - assert tested : "testConnection()"; - - boolean completed = pluginService.getContentProviderManager().synchronizeContentProvider(syncSource.getId()); - assert completed; - - // Verify RepoGroups - RepoGroup repoGroup = repoManager.getRepoGroupByName("testRepoGroup"); - assert repoGroup != null; - repoGroupsToDelete.add(repoGroup.getId()); - - // Verify Repos - // -------------------------------------------- - List<Repo> retrievedRepos; - - // -> Simple Repo - retrievedRepos = repoManager.getRepoByName("testRepo1"); - assert retrievedRepos.size() == 1; - assert retrievedRepos.get(0).isCandidate(); - reposToDelete.add(retrievedRepos.get(0).getId()); - - // -> Repo in a group - retrievedRepos = repoManager.getRepoByName("testRepo2"); - assert retrievedRepos.size() == 1; - assert retrievedRepos.get(0).isCandidate(); - reposToDelete.add(retrievedRepos.get(0).getId()); - - Repo repoInGroup = retrievedRepos.get(0); - - RepoCriteria findWithRepoGroup = new RepoCriteria(); - findWithRepoGroup.fetchRepoRepoGroups(true); - findWithRepoGroup.addFilterId(repoInGroup.getId()); - - PageList<Repo> repoPageList = repoManager.findReposByCriteria(overlord, findWithRepoGroup); - repoInGroup = repoPageList.get(0); - - Set<RepoRepoGroup> repoGroups = repoInGroup.getRepoRepoGroups(); - assert repoGroups.size() == 1; - - RepoRepoGroup repoRepoGroup = repoGroups.iterator().next(); - assert repoRepoGroup.getRepoRepoGroupPK().getRepoGroup().getName().equals("testRepoGroup"); - assert repoRepoGroup.getRepoRepoGroupPK().getRepo().getName().equals("testRepo2"); - - // -> Repo with a parent - retrievedRepos = repoManager.getRepoByName("testRepo3"); - assert retrievedRepos.size() == 1; - assert retrievedRepos.get(0).isCandidate(); - reposToDelete.add(retrievedRepos.get(0).getId()); - relatedRepoId = retrievedRepos.get(0).getId(); - - retrievedRepos = repoManager.getRepoByName("testRepo4"); - assert retrievedRepos.size() == 1; - assert retrievedRepos.get(0).isCandidate(); - reposToDelete.add(retrievedRepos.get(0).getId()); - repoId = retrievedRepos.get(0).getId(); - - RepoCriteria findWithRelationships = new RepoCriteria(); - findWithRelationships.addFilterName("testRepo4"); - findWithRelationships.fetchRepoRepoRelationships(true); - PageList<Repo> childRepoList = repoManager.findReposByCriteria(overlord, findWithRelationships); - assert childRepoList.size() == 1; - - Repo childRepo = childRepoList.get(0); - Set<RepoRepoRelationship> childRepoRepoRelationship = childRepo.getRepoRepoRelationships(); - assert childRepoRepoRelationship.size() == 1; - - // -> Repo that was already imported in the system (make sure there is still only one) - retrievedRepos = repoManager.getRepoByName(TestContentProvider.EXISTING_IMPORTED_REPO_NAME); - assert retrievedRepos.size() == 1; - reposToDelete.add(retrievedRepos.get(0).getId()); - - // -> Repo that was imported but not in the report (i.e. a user created repo) - retrievedRepos = repoManager.getRepoByName(CUSTOM_IMPORTED_REPO_NAME); - assert retrievedRepos.size() == 1; - reposToDelete.add(retrievedRepos.get(0).getId()); - - // -> Repo that was already a candidate in the system (make sure it's not added again) - retrievedRepos = repoManager.getRepoByName(TestContentProvider.EXISTING_CANDIDATE_REPO_NAME); - assert retrievedRepos.size() == 1; - reposToDelete.add(retrievedRepos.get(0).getId()); - - // -> Make sure a repo that was previously a candidate of this content provider but did not - // come back in the latest sync is removed - retrievedRepos = repoManager.getRepoByName(PREVIOUS_CANDIDATE_REPO_NAME); - assert retrievedRepos.size() == 0; - - // -> Non-existent repo - retrievedRepos = repoManager.getRepoByName("testRepoFoo"); - assert retrievedRepos.size() == 0; } }
commit 3fdf529d3be1128b6b3b623f70cc72ef906d3beb Author: John Sanda jsanda@redhat.com Date: Tue Mar 30 15:20:56 2010 -0400
Fixing test failures and trying to make transaction a bit more robust
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java index c3bec3a..d7d2404 100644 --- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java +++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java @@ -27,6 +27,7 @@ import java.util.List; import java.util.Set;
import javax.persistence.EntityManager; +import javax.transaction.Transaction; import javax.transaction.TransactionManager;
import org.testng.annotations.AfterMethod; @@ -178,127 +179,133 @@ public class ContentProviderManagerSyncContentProviderTest extends AbstractEJB3T @SuppressWarnings("unchecked") public void synchronizeContentSource() throws Exception {
- // Setup - // -------------------------------------------- - RepoManagerLocal repoManager = LookupUtil.getRepoManagerLocal(); - SubjectManagerLocal subjectManager = LookupUtil.getSubjectManager(); - Subject overlord = subjectManager.getOverlord(); - - // -> Add an already imported repo to the system so it already exists when the report introduces it - Repo existingImportedRepo = new Repo(TestContentProvider.EXISTING_IMPORTED_REPO_NAME); - existingImportedRepo.setCandidate(false); - existingImportedRepo.addContentSource(syncSource); - repoManager.createRepo(overlord, existingImportedRepo); - - // -> Add an already imported repo that wasn't introduced from the report; a user created repo - Repo customImportedRepo = new Repo(CUSTOM_IMPORTED_REPO_NAME); - customImportedRepo.setCandidate(false); - customImportedRepo.addContentSource(syncSource); - repoManager.createRepo(overlord, customImportedRepo); - - // -> Simulate a candidate repo from a previous import that will be in this report as well - Repo existingCandidateRepo = new Repo(TestContentProvider.EXISTING_CANDIDATE_REPO_NAME); - existingCandidateRepo.setCandidate(true); - existingCandidateRepo.addContentSource(syncSource); - repoManager.createRepo(overlord, existingCandidateRepo); - - // -> Simulate a candidate repo from a previous import that will *NOT* be in this report - Repo previousRepo = new Repo(PREVIOUS_CANDIDATE_REPO_NAME); - previousRepo.setCandidate(true); - previousRepo.addContentSource(syncSource); - repoManager.createRepo(overlord, previousRepo); - - // Test - // -------------------------------------------- - // TestContentProviderManager providerManager = new TestContentProviderManager(); - boolean tested = pluginService.getContentProviderManager().testConnection(syncSource.getId()); - assert tested; - - boolean completed = pluginService.getContentProviderManager().synchronizeContentProvider(syncSource.getId()); - assert completed; - - // Verify RepoGroups - RepoGroup repoGroup = repoManager.getRepoGroupByName("testRepoGroup"); - assert repoGroup != null; - repoGroupsToDelete.add(repoGroup.getId()); - - // Verify Repos - // -------------------------------------------- - List<Repo> retrievedRepos; - - // -> Simple Repo - retrievedRepos = repoManager.getRepoByName("testRepo1"); - assert retrievedRepos.size() == 1; - assert retrievedRepos.get(0).isCandidate(); - reposToDelete.add(retrievedRepos.get(0).getId()); - - // -> Repo in a group - retrievedRepos = repoManager.getRepoByName("testRepo2"); - assert retrievedRepos.size() == 1; - assert retrievedRepos.get(0).isCandidate(); - reposToDelete.add(retrievedRepos.get(0).getId()); - - Repo repoInGroup = retrievedRepos.get(0); - - RepoCriteria findWithRepoGroup = new RepoCriteria(); - findWithRepoGroup.fetchRepoRepoGroups(true); - findWithRepoGroup.addFilterId(repoInGroup.getId()); - - PageList<Repo> repoPageList = repoManager.findReposByCriteria(overlord, findWithRepoGroup); - repoInGroup = repoPageList.get(0); - - Set<RepoRepoGroup> repoGroups = repoInGroup.getRepoRepoGroups(); - assert repoGroups.size() == 1; - - RepoRepoGroup repoRepoGroup = repoGroups.iterator().next(); - assert repoRepoGroup.getRepoRepoGroupPK().getRepoGroup().getName().equals("testRepoGroup"); - assert repoRepoGroup.getRepoRepoGroupPK().getRepo().getName().equals("testRepo2"); - - // -> Repo with a parent - retrievedRepos = repoManager.getRepoByName("testRepo3"); - assert retrievedRepos.size() == 1; - assert retrievedRepos.get(0).isCandidate(); - reposToDelete.add(retrievedRepos.get(0).getId()); - relatedRepoId = retrievedRepos.get(0).getId(); - - retrievedRepos = repoManager.getRepoByName("testRepo4"); - assert retrievedRepos.size() == 1; - assert retrievedRepos.get(0).isCandidate(); - reposToDelete.add(retrievedRepos.get(0).getId()); - repoId = retrievedRepos.get(0).getId(); - - RepoCriteria findWithRelationships = new RepoCriteria(); - findWithRelationships.addFilterName("testRepo4"); - findWithRelationships.fetchRepoRepoRelationships(true); - PageList<Repo> childRepoList = repoManager.findReposByCriteria(overlord, findWithRelationships); - assert childRepoList.size() == 1; - - Repo childRepo = childRepoList.get(0); - Set<RepoRepoRelationship> childRepoRepoRelationship = childRepo.getRepoRepoRelationships(); - assert childRepoRepoRelationship.size() == 1; - - // -> Repo that was already imported in the system (make sure there is still only one) - retrievedRepos = repoManager.getRepoByName(TestContentProvider.EXISTING_IMPORTED_REPO_NAME); - assert retrievedRepos.size() == 1; - reposToDelete.add(retrievedRepos.get(0).getId()); - - // -> Repo that was imported but not in the report (i.e. a user created repo) - retrievedRepos = repoManager.getRepoByName(CUSTOM_IMPORTED_REPO_NAME); - assert retrievedRepos.size() == 1; - reposToDelete.add(retrievedRepos.get(0).getId()); - - // -> Repo that was already a candidate in the system (make sure it's not added again) - retrievedRepos = repoManager.getRepoByName(TestContentProvider.EXISTING_CANDIDATE_REPO_NAME); - assert retrievedRepos.size() == 1; - reposToDelete.add(retrievedRepos.get(0).getId()); - - // -> Make sure a repo that was previously a candidate of this content provider but did not - // come back in the latest sync is removed - retrievedRepos = repoManager.getRepoByName(PREVIOUS_CANDIDATE_REPO_NAME); - assert retrievedRepos.size() == 0; - - // -> Non-existent repo - retrievedRepos = repoManager.getRepoByName("testRepoFoo"); - assert retrievedRepos.size() == 0; + try { + getTransactionManager().begin(); + + // Setup + // -------------------------------------------- + RepoManagerLocal repoManager = LookupUtil.getRepoManagerLocal(); + SubjectManagerLocal subjectManager = LookupUtil.getSubjectManager(); + Subject overlord = subjectManager.getOverlord(); + + // -> Add an already imported repo to the system so it already exists when the report introduces it + Repo existingImportedRepo = new Repo(TestContentProvider.EXISTING_IMPORTED_REPO_NAME); + existingImportedRepo.setCandidate(false); + repoManager.createRepo(overlord, existingImportedRepo); + + // -> Add an already imported repo that wasn't introduced from the report; a user created repo + Repo customImportedRepo = new Repo(CUSTOM_IMPORTED_REPO_NAME); + customImportedRepo.setCandidate(false); + customImportedRepo.addContentSource(syncSource); + repoManager.createRepo(overlord, customImportedRepo); + + // -> Simulate a candidate repo from a previous import that will be in this report as well + Repo existingCandidateRepo = new Repo(TestContentProvider.EXISTING_CANDIDATE_REPO_NAME); + existingCandidateRepo.setCandidate(true); + repoManager.createRepo(overlord, existingCandidateRepo); + + // -> Simulate a candidate repo from a previous import that will *NOT* be in this report + Repo previousRepo = new Repo(PREVIOUS_CANDIDATE_REPO_NAME); + previousRepo.setCandidate(true); + previousRepo.addContentSource(syncSource); + repoManager.createRepo(overlord, previousRepo); + + // Test + // -------------------------------------------- + // TestContentProviderManager providerManager = new TestContentProviderManager(); + boolean tested = pluginService.getContentProviderManager().testConnection(syncSource.getId()); + assert tested; + + boolean completed = pluginService.getContentProviderManager().synchronizeContentProvider(syncSource.getId()); + assert completed; + + // Verify RepoGroups + RepoGroup repoGroup = repoManager.getRepoGroupByName("testRepoGroup"); + assert repoGroup != null; + repoGroupsToDelete.add(repoGroup.getId()); + + // Verify Repos + // -------------------------------------------- + List<Repo> retrievedRepos; + + // -> Simple Repo + retrievedRepos = repoManager.getRepoByName("testRepo1"); + assert retrievedRepos.size() == 1; + assert retrievedRepos.get(0).isCandidate(); + reposToDelete.add(retrievedRepos.get(0).getId()); + + // -> Repo in a group + retrievedRepos = repoManager.getRepoByName("testRepo2"); + assert retrievedRepos.size() == 1; + assert retrievedRepos.get(0).isCandidate(); + reposToDelete.add(retrievedRepos.get(0).getId()); + + Repo repoInGroup = retrievedRepos.get(0); + + RepoCriteria findWithRepoGroup = new RepoCriteria(); + findWithRepoGroup.fetchRepoRepoGroups(true); + findWithRepoGroup.addFilterId(repoInGroup.getId()); + + PageList<Repo> repoPageList = repoManager.findReposByCriteria(overlord, findWithRepoGroup); + repoInGroup = repoPageList.get(0); + + Set<RepoRepoGroup> repoGroups = repoInGroup.getRepoRepoGroups(); + assert repoGroups.size() == 1; + + RepoRepoGroup repoRepoGroup = repoGroups.iterator().next(); + assert repoRepoGroup.getRepoRepoGroupPK().getRepoGroup().getName().equals("testRepoGroup"); + assert repoRepoGroup.getRepoRepoGroupPK().getRepo().getName().equals("testRepo2"); + + // -> Repo with a parent + retrievedRepos = repoManager.getRepoByName("testRepo3"); + assert retrievedRepos.size() == 1; + assert retrievedRepos.get(0).isCandidate(); + reposToDelete.add(retrievedRepos.get(0).getId()); + relatedRepoId = retrievedRepos.get(0).getId(); + + retrievedRepos = repoManager.getRepoByName("testRepo4"); + assert retrievedRepos.size() == 1; + assert retrievedRepos.get(0).isCandidate(); + reposToDelete.add(retrievedRepos.get(0).getId()); + repoId = retrievedRepos.get(0).getId(); + + RepoCriteria findWithRelationships = new RepoCriteria(); + findWithRelationships.addFilterName("testRepo4"); + findWithRelationships.fetchRepoRepoRelationships(true); + PageList<Repo> childRepoList = repoManager.findReposByCriteria(overlord, findWithRelationships); + assert childRepoList.size() == 1; + + Repo childRepo = childRepoList.get(0); + Set<RepoRepoRelationship> childRepoRepoRelationship = childRepo.getRepoRepoRelationships(); + assert childRepoRepoRelationship.size() == 1; + + // -> Repo that was already imported in the system (make sure there is still only one) + retrievedRepos = repoManager.getRepoByName(TestContentProvider.EXISTING_IMPORTED_REPO_NAME); + assert retrievedRepos.size() == 1; + reposToDelete.add(retrievedRepos.get(0).getId()); + + // -> Repo that was imported but not in the report (i.e. a user created repo) + retrievedRepos = repoManager.getRepoByName(CUSTOM_IMPORTED_REPO_NAME); + assert retrievedRepos.size() == 1; + reposToDelete.add(retrievedRepos.get(0).getId()); + + // -> Repo that was already a candidate in the system (make sure it's not added again) + retrievedRepos = repoManager.getRepoByName(TestContentProvider.EXISTING_CANDIDATE_REPO_NAME); + assert retrievedRepos.size() == 1; + reposToDelete.add(retrievedRepos.get(0).getId()); + + // -> Make sure a repo that was previously a candidate of this content provider but did not + // come back in the latest sync is removed + retrievedRepos = repoManager.getRepoByName(PREVIOUS_CANDIDATE_REPO_NAME); + assert retrievedRepos.size() == 0; + + // -> Non-existent repo + retrievedRepos = repoManager.getRepoByName("testRepoFoo"); + assert retrievedRepos.size() == 0; + + getTransactionManager().commit(); + } catch(Throwable t) { + getTransactionManager().rollback(); + } } } diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncRepoTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncRepoTest.java index 0846f77..6afe318 100644 --- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncRepoTest.java +++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncRepoTest.java @@ -83,49 +83,55 @@ public class ContentProviderManagerSyncRepoTest extends AbstractEJB3Test { pluginService = new TestContentServerPluginService(this);
TransactionManager tx = getTransactionManager(); - tx.begin(); - EntityManager entityManager = getEntityManager(); - - ContentSourceManagerLocal contentManager = LookupUtil.getContentSourceManager(); - RepoManagerLocal repoManager = LookupUtil.getRepoManagerLocal(); - SubjectManagerLocal subjectManager = LookupUtil.getSubjectManager(); - Subject overlord = subjectManager.getOverlord(); - - // Create a sample content source type that will be used in this test - contentSourceType = new ContentSourceType("testType"); - entityManager.persist(contentSourceType); - entityManager.flush(); - - // A repo sync will query all providers for that repo, so add multiple providers - ContentSource cs1 = new ContentSource("contentSource1", contentSourceType); - cs1.setDownloadMode(DownloadMode.DATABASE); - ContentSource cs2 = new ContentSource("contentSource2", contentSourceType); - cs2.setDownloadMode(DownloadMode.DATABASE); - - cs1 = contentManager.simpleCreateContentSource(overlord, cs1); - cs2 = contentManager.simpleCreateContentSource(overlord, cs2); - - pluginService.associateContentProvider(cs1, contentProvider1); - pluginService.associateContentProvider(cs2, contentProvider2); - - repoContentSources.add(cs1); - repoContentSources.add(cs2); - - // Create the package type packages will be created against - resourceType = new ResourceType(TestContentProvider.RESOURCE_TYPE_NAME, - TestContentProvider.RESOURCE_TYPE_PLUGIN_NAME, ResourceCategory.PLATFORM, null); - entityManager.persist(resourceType); - - packageType = new PackageType(TestContentProvider.PACKAGE_TYPE_NAME, resourceType); - entityManager.persist(packageType); - - // Create the repo to be syncced - Repo repo = new Repo(TestContentProvider.REPO_WITH_PACKAGES); - repo.addContentSource(cs1); + try { + tx.begin(); + EntityManager entityManager = getEntityManager(); + + ContentSourceManagerLocal contentManager = LookupUtil.getContentSourceManager(); + RepoManagerLocal repoManager = LookupUtil.getRepoManagerLocal(); + SubjectManagerLocal subjectManager = LookupUtil.getSubjectManager(); + Subject overlord = subjectManager.getOverlord(); + + // Create a sample content source type that will be used in this test + contentSourceType = new ContentSourceType("testType"); + entityManager.persist(contentSourceType); + entityManager.flush(); + + // A repo sync will query all providers for that repo, so add multiple providers + ContentSource cs1 = new ContentSource("contentSource1", contentSourceType); + cs1.setDownloadMode(DownloadMode.DATABASE); + ContentSource cs2 = new ContentSource("contentSource2", contentSourceType); + cs2.setDownloadMode(DownloadMode.DATABASE); + + cs1 = contentManager.simpleCreateContentSource(overlord, cs1); + cs2 = contentManager.simpleCreateContentSource(overlord, cs2); + + pluginService.associateContentProvider(cs1, contentProvider1); + pluginService.associateContentProvider(cs2, contentProvider2); + + repoContentSources.add(cs1); + repoContentSources.add(cs2); + + // Create the package type packages will be created against + resourceType = new ResourceType(TestContentProvider.RESOURCE_TYPE_NAME, + TestContentProvider.RESOURCE_TYPE_PLUGIN_NAME, ResourceCategory.PLATFORM, null); + entityManager.persist(resourceType); + + packageType = new PackageType(TestContentProvider.PACKAGE_TYPE_NAME, resourceType); + entityManager.persist(packageType); + + // Create the repo to be syncced + Repo repo = new Repo(TestContentProvider.REPO_WITH_PACKAGES); + repo.addContentSource(cs1); // repo.addContentSource(cs2); Disabled until we implement a second test content provider to return new stuff - repoToSync = repoManager.createRepo(overlord, repo); + repoToSync = repoManager.createRepo(overlord, repo);
- tx.commit(); + tx.commit(); + } catch (Throwable t) { + tx.rollback(); + // rethrow because if we swallow the exception then tests proceed to execute when they probably should not + throw new RuntimeException(t); + } }
@AfterMethod
rhq-commits@lists.fedorahosted.org