/*
* RHQ Management Platform
* Copyright (C) 2005-2008 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2, as
* published by the Free Software Foundation, and/or the GNU Lesser
* General Public License, version 2.1, also as published by the Free
* Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License and the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License
* and the GNU Lesser General Public License along with this program;
* if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.rhq.core.domain.content.test;
import java.util.List;
import org.testng.annotations.Test;
import org.rhq.core.domain.content.Architecture;
import org.rhq.core.domain.content.ContentSource;
import org.rhq.core.domain.content.ContentSourceSyncResults;
import org.rhq.core.domain.content.ContentSourceType;
import org.rhq.core.domain.content.ContentSyncStatus;
import org.rhq.core.domain.content.Package;
import org.rhq.core.domain.content.PackageType;
import org.rhq.core.domain.content.PackageVersion;
import org.rhq.core.domain.content.Repo;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.test.AbstractEJB3Test;
@Test(groups = "integration.ejb3")
public class ContentSourceSyncResultsTest extends AbstractEJB3Test {
public void testInsert() throws Exception {
getTransactionManager().begin();
try {
ResourceType rt = new ResourceType("testCSSRResourceType", "testPlugin", ResourceCategory.PLATFORM, null);
Resource resource = new Resource("testCSSRResource", "testCSSRResource", rt);
resource.setUuid("uuid");
Architecture arch = new Architecture("testCSSRInsertArch");
PackageType pt = new PackageType("testCSSRInsertPT", resource.getResourceType());
Package pkg = new Package("testCSSRInsertPackage", pt);
PackageVersion pv = new PackageVersion(pkg, "version", arch);
ContentSourceType cst = new ContentSourceType("testCSSRContentSourceType");
ContentSource cs = new ContentSource("testCSSRContentSource", cst);
ContentSourceSyncResults results = new ContentSourceSyncResults(cs);
Repo repo = new Repo("testCSSRRepo");
repo.addContentSource(cs);
em.persist(rt);
em.persist(resource);
em.persist(arch);
em.persist(pt);
em.persist(pkg);
em.persist(pv);
em.persist(cst);
em.persist(cs);
em.persist(repo);
em.persist(results);
cs.addSyncResult(results);
em.flush();
cs = em.find(ContentSource.class, cs.getId());
assert cs != null;
List<ContentSourceSyncResults> syncResults = cs.getSyncResults();
assert syncResults != null;
assert syncResults.size() == 1;
results = syncResults.get(0);
assert results.getContentSource().equals(cs);
assert results.getStatus() == ContentSyncStatus.INPROGRESS;
assert results.getResults() == null;
assert results.getEndTime() == null;
assert results.getStartTime() <= System.currentTimeMillis();
results.setEndTime(System.currentTimeMillis());
results.setStatus(ContentSyncStatus.FAILURE);
results.setResults("dummy failure");
results = em.merge(results);
// add another (make sure the start time is long enough to pass the time check below
Thread.sleep(100);
results = new ContentSourceSyncResults(cs);
em.persist(results);
cs.addSyncResult(results);
em.flush();
cs = em.find(ContentSource.class, cs.getId());
assert cs != null;
syncResults = cs.getSyncResults();
assert syncResults != null;
assert syncResults.size() == 2;
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
getTransactionManager().rollback();
}
}
}