/**
* Copyright (c) 2015 SUSE LLC
*
* This software is licensed to you under the GNU General Public License,
* version 2 (GPLv2). There is NO WARRANTY for this software, express or
* implied, including the implied warranties of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
* along with this software; if not, see
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
*
* Red Hat trademarks are not licensed under GPLv2. No permission is
* granted to use or replicate Red Hat trademarks that are incorporated
* in this software or its documentation.
*/
package com.redhat.rhn.taskomatic.task.test;
import com.redhat.rhn.common.db.datasource.ModeFactory;
import com.redhat.rhn.common.db.datasource.WriteMode;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.server.test.ServerFactoryTest;
import com.redhat.rhn.domain.task.Task;
import com.redhat.rhn.taskomatic.task.TaskConstants;
import com.redhat.rhn.taskomatic.task.errata.ErrataCacheDriver;
import com.redhat.rhn.testing.BaseTestCaseWithUser;
import org.apache.log4j.Logger;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Map;
/**
* Tests for ErrataCacheDriver class.
*/
public class ErrataCacheDriverTest extends BaseTestCaseWithUser {
/**
* Test the consolidation of tasks in getCandidates().
*
* @throws Exception in case of a problem
*/
public void testGetCandidates() throws Exception {
Server server = ServerFactoryTest.createTestServer(user);
insertErrataCacheTask(server);
insertErrataCacheTask(server);
insertErrataCacheTask(server);
insertErrataCacheTask(server);
// Get the candidates and verify
ErrataCacheDriver driver = new ErrataCacheDriver();
driver.setLogger(Logger.getLogger(ErrataCacheDriverTest.class));
int candidateCount = 0;
for (Task task : driver.getCandidates()) {
if (task.getData().equals(server.getId())) {
candidateCount++;
}
}
assertEquals(1, candidateCount);
}
/**
* Insert an errata cache task for a given server.
*
* @param server the server
*/
private void insertErrataCacheTask(Server server) {
WriteMode mode = ModeFactory.getWriteMode(TaskConstants.MODE_NAME,
"insert_into_task_queue");
Map<String, Object> params = new HashMap<String, Object>();
params.put("org_id", server.getOrg().getId());
params.put("task_name", "update_server_errata_cache");
params.put("task_data", server.getId());
params.put("earliest", new Timestamp(System.currentTimeMillis()));
mode.executeUpdate(params);
}
}