/* * 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.rest.test; import java.io.File; import org.apache.commons.io.FileUtils; import org.restlet.data.Status; import com.mockrunner.mock.web.MockHttpServletResponse; public class TransactionTest extends BaseBackupRestoreTest { public void testBackupDelete() throws Exception { String backupDir=Utils.prepareBackupDir(this); MockHttpServletResponse response = postAsServletResponse("/rest/bkprst/backup", "<task>" + "<path>" + backupDir + "</path>" + "<includedata>false</includedata>" + "<includegwc>false</includegwc>" + "<includelog>false</includelog>" + "</task>"); String outputStreamContent = response.getOutputStreamContent(); assertEquals(Status.SUCCESS_CREATED.getCode(),response.getStatusCode()); assertEquals(Status.SUCCESS_OK.getCode(),response.getErrorCode()); assertTrue(outputStreamContent.contains("<id>")); final String taskID=Utils.parseTaskID(outputStreamContent); // Deletes ongoing backup task response= this.deleteAsServletResponse("/rest/bkprst/backup/" + taskID); assertEquals(Status.SUCCESS_OK.getCode(),response.getStatusCode()); assertEquals(Status.SUCCESS_OK.getCode(),response.getErrorCode()); waitForTaskCompletion(taskID); // Checks the backup dir has been deleted assertFalse((new File(backupDir)).exists()); // Checks non numeric ID response= this.deleteAsServletResponse("/rest/bkprst/backup/" + taskID + "xxx"); assertEquals(Status.SERVER_ERROR_INTERNAL.getCode(),response.getStatusCode()); assertEquals(Status.SUCCESS_OK.getCode(),response.getErrorCode()); // Checks non-existing taskID response= this.deleteAsServletResponse("/rest/bkprst/backup/" + taskID + "123"); assertEquals(Status.CLIENT_ERROR_NOT_FOUND.getCode(),response.getStatusCode()); assertEquals(Status.SUCCESS_OK.getCode(),response.getErrorCode()); } public void testRestoreDelete() throws Exception { // start a backup String backupDir=Utils.prepareBackupDir(this); final int numFilesOriginal = Utils.getNumFiles(this.dataRoot.root()); // start a backup and wait for completion MockHttpServletResponse response = postAsServletResponse("/rest/bkprst/backup", "<task>" + "<path>" + backupDir + "</path>" + "<includedata>false</includedata>" + "<includegwc>false</includegwc>" + "<includelog>false</includelog>" + "</task>"); assertEquals(Status.SUCCESS_CREATED.getCode(),response.getStatusCode()); assertEquals(Status.SUCCESS_OK.getCode(),response.getErrorCode()); String outputStreamContent = response.getOutputStreamContent(); String taskID=Utils.parseTaskID(outputStreamContent); assertNotNull(taskID); waitForTaskCompletion(taskID); // Checks the data dir has the same number of files than before restore assertEquals(numFilesOriginal-3+1, Utils.getNumFiles(new File(backupDir)));//backup.xml // Starts restore task and then stop it response = postAsServletResponse("/rest/bkprst/restore", "<task>" + "<path>" + backupDir + "</path>" + "</task>"); assertEquals(Status.SUCCESS_CREATED.getCode(),response.getStatusCode()); assertEquals(Status.SUCCESS_OK.getCode(),response.getErrorCode()); outputStreamContent = response.getOutputStreamContent(); taskID=Utils.parseTaskID(outputStreamContent); assertNotNull(taskID); // Deletes ongoing restore task response= this.deleteAsServletResponse("/rest/bkprst/restore/" + taskID); assertEquals(Status.SUCCESS_OK.getCode(),response.getStatusCode()); assertEquals(Status.SUCCESS_OK.getCode(),response.getErrorCode()); // Checks status of deleted task response= this.getAsServletResponse("/rest/bkprst/" +taskID); if(Status.SUCCESS_OK.getCode()==response.getStatusCode()){ assertEquals(Status.SUCCESS_OK.getCode(),response.getStatusCode()); assertEquals(Status.SUCCESS_OK.getCode(),response.getErrorCode()); outputStreamContent = response.getOutputStreamContent(); waitForTaskStatus(taskID,"STOPPED"); } else { assertEquals(Status.CLIENT_ERROR_NOT_FOUND.getCode(),response.getStatusCode()); assertEquals(Status.SUCCESS_OK.getCode(),response.getErrorCode()); } // Checks non numeric ID response= this.deleteAsServletResponse("/rest/bkprst/restore/" + taskID + "xxx"); assertEquals(Status.SERVER_ERROR_INTERNAL.getCode(),response.getStatusCode()); assertEquals(Status.SUCCESS_OK.getCode(),response.getErrorCode()); // Checks non-existing ID response= this.deleteAsServletResponse("/rest/bkprst/restore/" + taskID + "123"); assertEquals(Status.CLIENT_ERROR_NOT_FOUND.getCode(),response.getStatusCode()); assertEquals(Status.SUCCESS_OK.getCode(),response.getErrorCode()); // clean up FileUtils.deleteDirectory(new File(backupDir)); } }