/*
* RHQ Management Platform
* Copyright (C) 2009 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.enterprise.server.scheduler.jobs;
import java.util.HashSet;
import java.util.Set;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.testng.annotations.Test;
import org.rhq.core.domain.content.Repo;
import org.rhq.enterprise.server.test.AbstractEJB3Test;
/**
* @author Jason Dobies
*/
public class RepoSyncJobTest extends AbstractEJB3Test {
private static final boolean ENABLED = true;
@Override
protected void beforeMethod() throws Exception {
prepareScheduler();
prepareForTestAgents();
}
@Override
protected void afterMethod() throws Exception {
unprepareForTestAgents();
unprepareScheduler();
}
@Test(enabled = ENABLED)
public void createJobDataMap() throws Exception {
// Setup
String repoName = "testRepo";
Repo repo = new Repo(repoName);
JobDataMap existingMap = new JobDataMap();
JobDetail detail = new JobDetail();
detail.setJobDataMap(existingMap);
// Test
JobDataMap nullDetailsMap = RepoSyncJob.createJobDataMap(null, repo);
JobDataMap existingDetailsMap = RepoSyncJob.createJobDataMap(detail, repo);
// Verify
assert nullDetailsMap.getString(RepoSyncJob.KEY_REPO_NAME).equals(repoName);
assert existingDetailsMap.getString(RepoSyncJob.KEY_REPO_NAME).equals(repoName);
assert existingDetailsMap == existingMap;
}
@Test(enabled = ENABLED)
public void createJobName() throws Exception {
// Setup
Repo repo = new Repo("testRepo");
// Test
Set<String> jobNames = new HashSet<String>(1);
jobNames.add(RepoSyncJob.createJobName(repo));
jobNames.add(RepoSyncJob.createJobName(repo));
jobNames.add(RepoSyncJob.createJobName(repo));
jobNames.add(RepoSyncJob.createJobName(repo));
jobNames.add(RepoSyncJob.createJobName(repo));
// Verify
assert jobNames.size() == 1 : "Number of jobs found: " + jobNames.size();
}
@Test(enabled = ENABLED)
public void createUniqueJobName() throws Exception {
// Setup
Repo repo = new Repo("testRepo");
// Test
Set<String> jobNames = new HashSet<String>(1);
jobNames.add(RepoSyncJob.createUniqueJobName(repo));
Thread.sleep(100); // Need a quick pause to allow for uniqueness
jobNames.add(RepoSyncJob.createUniqueJobName(repo));
Thread.sleep(100);
jobNames.add(RepoSyncJob.createUniqueJobName(repo));
Thread.sleep(100);
jobNames.add(RepoSyncJob.createUniqueJobName(repo));
Thread.sleep(100);
jobNames.add(RepoSyncJob.createUniqueJobName(repo));
// Verify
assert jobNames.size() == 5 : "Number of jobs found: " + jobNames.size();
}
}