/*
* Copyright (c) 2001 - 2012 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
package org.geoserver.bkprst.test;
import java.util.UUID;
import org.geoserver.bkprst.BrManager;
import org.geoserver.bkprst.TaskNotFoundException;
import org.geoserver.bkprst.UnallowedOperationException;
import org.geoserver.catalog.rest.CatalogRESTTestSupport;
import org.geoserver.test.GeoServerAbstractTestSupport;
/**
* Test the BR tool task manager
*
* @author Luca Morandini lmorandini@ieee.org
*/
public class BrManagerTest extends CatalogRESTTestSupport {
private BrManager br;
public static int TASKDURATION = 5000;
public void setUpInternal() {
this.br = (BrManager) GeoServerAbstractTestSupport.applicationContext.getBean("brmanager");
}
public void testUUIDRestore() throws Exception {
String backupDir=Utils.prepareBackupDir(this);
UUID id = this.br.addRestoreTask(backupDir);
assertNotNull(id);
}
public void testUUIDBackup() throws Exception {
String backupDir=Utils.prepareBackupDir(this);
UUID id = this.br.addBackupTask(backupDir, false, false, false);
assertNotNull(id);
}
public void testStopBackup1() throws Exception {
String backupDir=Utils.prepareBackupDir(this);
UUID id = this.br.addBackupTask(backupDir, false, false, false);
try {
this.br.stopBackupTask(id);
} catch (UnallowedOperationException e) {
assertTrue(false);
return;
} catch (TaskNotFoundException e) {
assertTrue(false);
return;
}
assertTrue(true);
}
public void testStopBackup2() throws Exception {
String backupDir=Utils.prepareBackupDir(this);
this.br.addBackupTask(backupDir, false, false, false);
try {
this.br.stopBackupTask(UUID.randomUUID());
} catch (UnallowedOperationException e) {
assertTrue(false);
return;
} catch (TaskNotFoundException e) {
assertTrue(true);
return;
}
assertTrue(false);
}
public void testStopRestore() throws Exception {
String backupDir=Utils.prepareBackupDir(this);
UUID id = this.br.addRestoreTask(backupDir);
try {
this.br.stopBackupTask(id);
} catch (UnallowedOperationException e) {
assertTrue(true);
return;
} catch (TaskNotFoundException e) {
assertTrue(false);
return;
}
assertTrue(false);
}
public void testCleanup() throws Exception {
String backupDir=Utils.prepareBackupDir(this);
this.br.addTask(new MockRestoreTask(br.generateId(), backupDir, br.getWriteLocker()));
this.br.addTask(new MockBackupTask(br.generateId(), backupDir, br.getWriteLocker()));
this.br.addTask(new MockRestoreTask(br.generateId(), backupDir, br.getWriteLocker()));
assertEquals(3, this.br.getAllTasks().size());
try {
// NOTE: 60000 depends on the task retention time value set in the Spring configuration
Thread.sleep((BrManagerTest.TASKDURATION + 1000) * 4 + 60000);
} catch (InterruptedException e) {
assertTrue(false);
}
this.br.cleanupTasks();
assertEquals(0, this.br.getAllTasks().size());
}
}