Author: tolusha
Date: 2011-03-22 05:18:55 -0400 (Tue, 22 Mar 2011)
New Revision: 4159
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupTestCase.java
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupUseCasesTest.java
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestBackupManager.java
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestRDBMSBackupManager.java
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestRdbmsWorkspaceInitializer.java
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java
Log:
EXOJCR-1081: fully rewrited tests.
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java 2011-03-22
09:17:49 UTC (rev 4158)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java 2011-03-22
09:18:55 UTC (rev 4159)
@@ -340,7 +340,9 @@
// STOP backups
for (BackupChain chain : stopedList)
+ {
stopBackup(chain);
+ }
}
catch (InterruptedException e)
{
Modified:
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupTestCase.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupTestCase.java 2011-03-22
09:17:49 UTC (rev 4158)
+++
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupTestCase.java 2011-03-22
09:18:55 UTC (rev 4159)
@@ -18,7 +18,6 @@
*/
package org.exoplatform.services.jcr.ext.backup;
-import org.exoplatform.commons.utils.PrivilegedFileHelper;
import org.exoplatform.services.jcr.config.ContainerEntry;
import org.exoplatform.services.jcr.config.QueryHandlerEntry;
import org.exoplatform.services.jcr.config.QueryHandlerParams;
@@ -37,14 +36,11 @@
import org.exoplatform.services.jcr.impl.core.SessionImpl;
import org.exoplatform.services.jcr.impl.core.SessionRegistry;
import org.exoplatform.services.jcr.impl.core.query.SystemSearchManager;
-import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
import org.exoplatform.services.jcr.impl.storage.value.fs.FileValueStorage;
+import org.exoplatform.services.jcr.impl.util.io.DirectoryHelper;
import java.io.File;
import java.io.FileFilter;
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.Statement;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -59,8 +55,6 @@
import javax.jcr.lock.LockException;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.version.VersionException;
-import javax.naming.InitialContext;
-import javax.sql.DataSource;
/**
* Created by The eXo Platform SAS Author : Peter Nedonosko
peter.nedonosko(a)exoplatform.com.ua
@@ -110,36 +104,6 @@
super.setUp();// this
backup = getBackupManager();
-
- if (backup == null)
- throw new Exception("There are no BackupManagerImpl in
configuration");
-
- for (String wsName : getReposityToBackup().getWorkspaceNames())
- {
- SessionImpl ws = (SessionImpl) getReposityToBackup().login(credentials,
wsName);
- Node wsTestRoot = ws.getRootNode().addNode("backupTest");
- ws.save();
- addContent(wsTestRoot, 1, 10, 1);
-
- if ("ws1".equals(wsName))
- {
- ws1Session = ws;
- ws1TestRoot = wsTestRoot;
- }
- }
-
- RepositoryImpl repositoryDB7 = (RepositoryImpl)
repositoryService.getRepository(repositoryNameToBackupSingleDB);
-
- for (String wsName : repositoryDB7.getWorkspaceNames())
- {
- SessionImpl sessionWS = (SessionImpl) repositoryDB7.login(credentials, wsName);
-
- Node wsTestRoot = sessionWS.getRootNode().addNode("backupTest");
- sessionWS.getRootNode().save();
- addContent(wsTestRoot, 1, 10, 1);
- sessionWS.getRootNode().save();
- }
-
}
protected abstract ExtendedBackupManager getBackupManager();
@@ -149,60 +113,7 @@
return (RepositoryImpl) repositoryService.getRepository(repositoryNameToBackup);
}
- @Override
- protected void tearDown() throws Exception
- {
- for (String wsName : getReposityToBackup().getWorkspaceNames())
- {
- try
- {
- SessionImpl ws = (SessionImpl) getReposityToBackup().login(credentials,
wsName);
- ws.getRootNode().getNode("backupTest").remove();
- ws.save();
- }
- catch (PathNotFoundException e)
- {
- //skip
- }
- }
-
- RepositoryImpl repositoryDB7 = (RepositoryImpl)
repositoryService.getRepository(repositoryNameToBackupSingleDB);
-
- for (String wsName : repositoryDB7.getWorkspaceNames())
- {
- try
- {
- SessionImpl ws = (SessionImpl) repositoryDB7.login(credentials, wsName);
- ws.getRootNode().getNode("backupTest").remove();
- ws.save();
- }
- catch (PathNotFoundException e)
- {
- //skip
- }
- }
-
- for (String wsName : getReposityToBackup().getWorkspaceNames())
- {
- if (wsName.equals(workspaceNameToRestore))
- {
- removeWorkspaceFully(getReposityToBackup().getName(),
workspaceNameToRestore);
- }
- }
-
- try
- {
-
repositoryService.getConfig().getRepositoryConfiguration(repositoryNameToRestore);
- removeRepositoryFully(repositoryNameToRestore);
- }
- catch (RepositoryConfigurationException e)
- {
- //skip
- }
-
- }
-
protected WorkspaceEntry makeWorkspaceEntry(String name, String sourceName)
{
WorkspaceEntry ws1e = (WorkspaceEntry)
ws1Session.getContainer().getComponentInstanceOfType(WorkspaceEntry.class);
@@ -479,52 +390,31 @@
repositoryService.getRepository(repositoryName).getConfiguration().getSystemWorkspaceName()
.equals(wEntry.getName());
- //close all session
+ // remove workspace
forceCloseSession(repositoryName, wEntry.getName());
-
repositoryService.getRepository(repositoryName).removeWorkspace(wEntry.getName());
- //clean database
- DataSource ds =
- (DataSource)new
InitialContext().lookup(wEntry.getContainer().getParameterValue(
- JDBCWorkspaceDataContainer.SOURCE_NAME));
- Connection conn = ds.getConnection();
+ // clean db
+ DBCleanService.cleanWorkspaceData(wEntry);
- if (conn.getMetaData().getTables(null, null, "JCR_MITEM", new
String[]{"TABLE"}).next())
- {
- Statement st = conn.createStatement();
- st.execute("DROP TABLE JCR_MVALUE");
- st.execute("DROP TABLE JCR_MREF");
- st.execute("DROP TABLE JCR_MITEM");
- conn.commit();
- st.close();
- conn.close();
- }
- else if (conn.getMetaData().getTables(null, null, "JCR_SITEM", new
String[]{"TABLE"}).next())
- {
- Statement st = conn.createStatement();
- st.execute("DROP TABLE JCR_SVALUE");
- st.execute("DROP TABLE JCR_SREF");
- st.execute("DROP TABLE JCR_SITEM");
- conn.commit();
- st.close();
- conn.close();
- }
-
+ // clean value storage
if (wEntry.getContainer().getValueStorages() != null)
{
for (ValueStorageEntry valueStorage : wEntry.getContainer().getValueStorages())
{
- removeDirectory(new
File(valueStorage.getParameterValue(FileValueStorage.PATH)));
+ DirectoryHelper.removeDirectory(new
File(valueStorage.getParameterValue(FileValueStorage.PATH)));
}
}
+ // clean index
if (wEntry.getQueryHandler() != null)
{
- removeDirectory(new
File(wEntry.getQueryHandler().getParameterValue(QueryHandlerParams.PARAM_INDEX_DIR,
null)));
+ DirectoryHelper.removeDirectory(new
File(wEntry.getQueryHandler().getParameterValue(
+ QueryHandlerParams.PARAM_INDEX_DIR, null)));
if (isSystem)
{
- removeDirectory(new
File(wEntry.getQueryHandler().getParameterValue(QueryHandlerParams.PARAM_INDEX_DIR,
+ DirectoryHelper.removeDirectory(new
File(wEntry.getQueryHandler().getParameterValue(
+ QueryHandlerParams.PARAM_INDEX_DIR,
null)
+ "_" + SystemSearchManager.INDEX_DIR_SUFFIX));
}
@@ -566,16 +456,18 @@
{
for (ValueStorageEntry valueStorage : wEntry.getContainer().getValueStorages())
{
- removeDirectory(new
File(valueStorage.getParameterValue(FileValueStorage.PATH)));
+ DirectoryHelper.removeDirectory(new
File(valueStorage.getParameterValue(FileValueStorage.PATH)));
}
}
if (wEntry.getQueryHandler() != null)
{
- removeDirectory(new
File(wEntry.getQueryHandler().getParameterValue(QueryHandlerParams.PARAM_INDEX_DIR,
null)));
+ DirectoryHelper.removeDirectory(new
File(wEntry.getQueryHandler().getParameterValue(
+ QueryHandlerParams.PARAM_INDEX_DIR, null)));
if (isSystem)
{
- removeDirectory(new
File(wEntry.getQueryHandler().getParameterValue(QueryHandlerParams.PARAM_INDEX_DIR,
+ DirectoryHelper.removeDirectory(new
File(wEntry.getQueryHandler().getParameterValue(
+ QueryHandlerParams.PARAM_INDEX_DIR,
null)
+ "_" + SystemSearchManager.INDEX_DIR_SUFFIX));
}
@@ -618,6 +510,7 @@
repositoryService.removeRepository(repositoryEntry.getName());
}
+ // clean data
for (WorkspaceEntry wEntry : workspaceList)
{
DBCleanService.cleanWorkspaceData(wEntry);
@@ -626,7 +519,7 @@
{
for (ValueStorageEntry valueStorage :
wEntry.getContainer().getValueStorages())
{
- removeDirectory(new
File(valueStorage.getParameterValue(FileValueStorage.PATH)));
+ DirectoryHelper.removeDirectory(new
File(valueStorage.getParameterValue(FileValueStorage.PATH)));
}
}
@@ -634,12 +527,12 @@
if (wEntry.getQueryHandler() != null)
{
- removeDirectory(new
File(wEntry.getQueryHandler().getParameterValue(QueryHandlerParams.PARAM_INDEX_DIR,
- null)));
+ DirectoryHelper.removeDirectory(new
File(wEntry.getQueryHandler().getParameterValue(
+ QueryHandlerParams.PARAM_INDEX_DIR, null)));
if (isSystem)
{
- removeDirectory(new
File(wEntry.getQueryHandler().getParameterValue(QueryHandlerParams.PARAM_INDEX_DIR,
- null)
+ DirectoryHelper.removeDirectory(new
File(wEntry.getQueryHandler().getParameterValue(
+ QueryHandlerParams.PARAM_INDEX_DIR, null)
+ "_" + SystemSearchManager.INDEX_DIR_SUFFIX));
}
}
@@ -669,35 +562,4 @@
return sessionRegistry.closeSessions(workspaceName);
}
-
- /**
- * Remove directory.
- *
- * @param dir
- * directory to remove
- * @throws IOException
- * if any exception occurred
- */
- private void removeDirectory(File dir) throws IOException
- {
- if (PrivilegedFileHelper.isDirectory(dir))
- {
- for (File subFile : PrivilegedFileHelper.listFiles(dir))
- {
- removeDirectory(subFile);
- }
-
- if (!PrivilegedFileHelper.delete(dir))
- {
- throw new IOException("Can't remove folder : " +
PrivilegedFileHelper.getCanonicalPath(dir));
- }
- }
- else
- {
- if (!PrivilegedFileHelper.delete(dir))
- {
- throw new IOException("Can't remove file : " +
PrivilegedFileHelper.getCanonicalPath(dir));
- }
- }
- }
}
Modified:
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupUseCasesTest.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupUseCasesTest.java 2011-03-22
09:17:49 UTC (rev 4158)
+++
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupUseCasesTest.java 2011-03-22
09:18:55 UTC (rev 4159)
@@ -22,20 +22,16 @@
import org.exoplatform.services.jcr.core.ManageableRepository;
import org.exoplatform.services.jcr.ext.backup.impl.JobRepositoryRestore;
import org.exoplatform.services.jcr.ext.backup.impl.JobWorkspaceRestore;
-import org.exoplatform.services.jcr.impl.core.RepositoryImpl;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
+import org.exoplatform.services.jcr.util.IdGenerator;
+import org.exoplatform.services.jcr.util.TesterConfigurationHelper;
-import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Map;
import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.Value;
-import javax.jcr.lock.Lock;
/**
* Created by The eXo Platform SAS.
@@ -47,631 +43,245 @@
*/
public abstract class AbstractBackupUseCasesTest extends AbstractBackupTestCase
{
+
+ private File blob;
- private static volatile long uuIndex;
+ private TesterConfigurationHelper helper = TesterConfigurationHelper.getInstance();
- protected static synchronized long getUUIndex()
+ @Override
+ public void setUp() throws Exception
{
- return uuIndex++;
+ super.setUp();
+ blob = createBLOBTempFile(300);
}
public void testFullBackupRestore() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+ addConent(repository, wsEntry.getName());
+
// backup
- File backDir = new File("target/backup/" + workspaceNameToBackup +
getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
+ backup.stopBackup(bch);
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
// restore
- RepositoryEntry re =
(RepositoryEntry)ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
- WorkspaceEntry ws1back = makeWorkspaceEntry(workspaceNameToRestore,
dataSourceToWorkspaceRestore);
+ WorkspaceEntry newWS = helper.createWorkspaceEntry(true, null);
- // BackupChainLog bchLog = new BackupChainLog(backDir, rconfig);
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ BackupChainLog bchLog = new BackupChainLog(backLog);
- backup.restore(bchLog, re.getName(), ws1back, false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- // check
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)getReposityToBackup().login(credentials,
workspaceNameToRestore);
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restore(bchLog, config.getRepository(), newWS, false);
+ checkConent(repository, newWS.getName());
}
public void testIncrementalBackupRestore() throws Exception
{
- // full backup & incremental
- File backDir = new File("target/backup/" + workspaceNameToBackup +
getUUIndex());
- backDir.mkdirs();
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+ addConent(repository, wsEntry.getName());
- BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
- config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
-
- config.setBackupDir(backDir);
-
- backup.startBackup(config);
-
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // add some changes which will be logged in incremental log
- ws1TestRoot.getNode("node_3").remove();
- ws1TestRoot.getNode("node_4").remove();
- ws1TestRoot.getNode("node_5").remove();
- ws1TestRoot.addNode("node #3").setProperty("exo:data",
"property #3");
- ws1TestRoot.addNode("node #5").setProperty("exo:extraData",
"property #5");
-
- ws1TestRoot.addNode("binary_data").setProperty("data", new
FileInputStream(createBLOBTempFile(500)));
-
- ws1TestRoot.save(); // log here via listener
-
- // stop all
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
- // restore
- RepositoryEntry re =
(RepositoryEntry)ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
- WorkspaceEntry ws1back = makeWorkspaceEntry(workspaceNameToRestore,
dataSourceToWorkspaceRestore);
-
- File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
-
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
-
- backup.restore(bchLog, repositoryNameToBackup, ws1back, false);
-
- // check
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)getReposityToBackup().login(credentials,
workspaceNameToRestore);
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
- assertFalse("Node should be removed",
ws1backTestRoot.hasNode("node_3"));
- assertFalse("Node should be removed",
ws1backTestRoot.hasNode("node_4"));
- assertFalse("Node should be removed",
ws1backTestRoot.hasNode("node_5"));
-
- assertEquals("Restored content should be same", "property
#3", ws1backTestRoot.getNode("node #3")
- .getProperty("exo:data").getString());
- assertEquals("Restored content should be same", "property
#5", ws1backTestRoot.getNode("node #5")
- .getProperty("exo:extraData").getString());
-
- assertFalse("Proeprty should be removed",
ws1backTestRoot.getNode("node #5").hasProperty("exo:data"));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
- }
-
- public void testIncrementalBackupRestore2() throws Exception
- {
- // full backup with BLOBs & incremental with BLOBs
-
- // BLOBs for full
- File tempf = createBLOBTempFile("testIncrementalBackupRestore2-", 5 *
1024); // 5M
- tempf.deleteOnExit();
- ws1TestRoot.addNode("node_101").setProperty("exo:data", new
FileInputStream(tempf));
- ws1TestRoot.addNode("node_102").setProperty("exo:extraData",
new FileInputStream(tempf));
-
- File backDir = new File("target/backup/" + workspaceNameToBackup +
getUUIndex());
+ // backup
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
+ addIncrementalConent(repository, wsEntry.getName());
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
+ backup.stopBackup(bch);
- // add some changes which will be logged in incremental log
- ws1TestRoot.addNode("node #53").setProperty("exo:extraData",
"property #53");
- ws1TestRoot.save(); // log here via listener
-
- // BLOBs for incr
- ws1TestRoot.getNode("node_1").setProperty("exo:extraData", new
FileInputStream(tempf));
- ws1TestRoot.getNode("node_5").setProperty("exo:data", new
FileInputStream(tempf));
- ws1TestRoot.addNode("node_101").setProperty("exo:data", new
FileInputStream(tempf));
- ws1TestRoot.addNode("node_102").setProperty("exo:data", new
FileInputStream(tempf));
-
- ws1TestRoot.save(); // log here via listener
-
- ws1TestRoot.getNode("node_2").setProperty("exo:data",
(Value)null); // remove property
- ws1TestRoot.getNode("node_3").setProperty("exo:data", new
ByteArrayInputStream("aaa".getBytes())); // set
- // aaa
- // bytes
- ws1TestRoot.getNode("node_4").remove(); // (*)
- ws1TestRoot.save(); // log here via listener
-
- ws1TestRoot.getNode("node_5").addMixin("mix:lockable");
- ws1TestRoot.save(); // log here via listener
- Lock n107lock = ws1TestRoot.getNode("node_5").lock(true, false);
- ws1TestRoot.getSession().move(ws1TestRoot.getNode("node #53").getPath(),
- ws1TestRoot.getNode("node_5").getPath() + "/node #53");
- ws1TestRoot.save(); // log here via listener
-
- ws1TestRoot.getNode("node_6").addMixin("mix:referenceable");
- String id6 = ws1TestRoot.getNode("node_6").getUUID();
- ws1TestRoot.save(); // log here via listener
-
- // before(*), log here via listener
- ws1TestRoot.getSession().getWorkspace()
- .move(ws1TestRoot.getNode("node_6").getPath(), ws1TestRoot.getPath() +
"/node_4"); // in place of
- // 4 removed
-
- // stop all
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
// restore
- RepositoryEntry re =
(RepositoryEntry)ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
- WorkspaceEntry ws1back = makeWorkspaceEntry(workspaceNameToRestore,
dataSourceToWorkspaceRestore);
+ WorkspaceEntry newWS = helper.createWorkspaceEntry(true, null);
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ BackupChainLog bchLog = new BackupChainLog(backLog);
- backup.restore(bchLog, repositoryNameToBackup, ws1back, false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- // check
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)getReposityToBackup().login(credentials,
workspaceNameToRestore);
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-
- assertTrue("Node should exists",
ws1backTestRoot.getNode("node_5").hasNode("node #53"));
- assertTrue("Property should exists",
ws1backTestRoot.getNode("node_5")
- .hasProperty("node #53/exo:extraData"));
-
- assertTrue("Node should exists",
ws1backTestRoot.hasNode("node_7"));
- assertTrue("Property should exists",
ws1backTestRoot.hasProperty("node_5/exo:data"));
- assertTrue("Property should exists",
ws1backTestRoot.hasProperty("node_1/exo:extraData"));
- assertTrue("Node should exists",
ws1backTestRoot.hasNode("node_102"));
-
- InputStream in =
ws1backTestRoot.getNode("node_5").getProperty("exo:data").getStream();
- try
- {
- compareStream(new FileInputStream(tempf), in);
- }
- finally
- {
- in.close();
- }
-
- in =
ws1backTestRoot.getNode("node_1").getProperty("exo:extraData").getStream();
- try
- {
- compareStream(new FileInputStream(tempf), in);
- }
- finally
- {
- in.close();
- }
-
- assertFalse("Property should be removed",
ws1backTestRoot.getNode("node_2").hasProperty("exo:data"));
-
- in =
ws1backTestRoot.getNode("node_3").getProperty("exo:data").getStream();
- try
- {
- compareStream(new ByteArrayInputStream("aaa".getBytes()), in);
- }
- finally
- {
- in.close();
- }
-
- assertTrue("Node should be mix:lockable ",
ws1backTestRoot.getNode("node_5").isNodeType("mix:lockable"));
- assertFalse("Node should be not locked ",
ws1backTestRoot.getNode("node_5").isLocked());
-
- assertEquals("Node should be mix:referenceable and UUID should be "
+ id6, id6,
- ws1backTestRoot.getNode("node_4").getUUID());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restore(bchLog, config.getRepository(), newWS, false);
+ checkConent(repository, newWS.getName());
+ checkIncrementalConent(repository, newWS.getName());
}
public void testFullBackupRestoreAsync() throws Exception
{
- SessionImpl sessionWS1 = (SessionImpl)getReposityToBackup().login(credentials,
workspaceNameToBackup);
-
sessionWS1.getRootNode().getNode("backupTest").getNode("node_5")
- .setProperty("exo:data", "Restored content should be
same");
- sessionWS1.save();
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+ addConent(repository, wsEntry.getName());
// backup
- File backDir = new File("target/backup/" + workspaceNameToBackup +
getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
+ backup.stopBackup(bch);
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
// restore
- WorkspaceEntry ws1back = makeWorkspaceEntry(workspaceNameToRestore,
dataSourceToWorkspaceRestore);
+ WorkspaceEntry newWS = helper.createWorkspaceEntry(true, null);
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ BackupChainLog bchLog = new BackupChainLog(backLog);
- backup.restore(bchLog, repositoryNameToBackup, ws1back, true);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- while (backup.getLastRestore(repositoryNameToBackup,
workspaceNameToRestore).getStateRestore() != JobWorkspaceRestore.RESTORE_SUCCESSFUL
- && backup.getLastRestore(repositoryNameToBackup,
workspaceNameToRestore).getStateRestore() != JobWorkspaceRestore.RESTORE_FAIL)
- {
- Thread.sleep(50);
- }
+ backup.restore(bchLog, config.getRepository(), newWS, true);
+ waitEndOfRestore(config.getRepository(), newWS.getName());
- if (backup.getLastRestore(repositoryNameToBackup,
workspaceNameToRestore).getStateRestore() == JobWorkspaceRestore.RESTORE_FAIL)
- throw (Exception)backup.getLastRestore(repositoryNameToBackup,
workspaceNameToRestore)
- .getRestoreException();
-
- // check
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)getReposityToBackup().login(credentials,
workspaceNameToRestore);
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same", "Restored
content should be same",
-
ws1backTestRoot.getNode("node_5").getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ assertEquals(backup.getLastRestore(config.getRepository(),
newWS.getName()).getStateRestore(),
+ JobWorkspaceRestore.RESTORE_SUCCESSFUL);
+ checkConent(repository, newWS.getName());
}
public void testAutoStopBackupFull() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+
// backup
- File backDir = new File("target/backup/" + workspaceNameToBackup +
getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
- while (bch.getFullBackupState() != BackupJob.FINISHED)
+ Thread.sleep(30000);
+ try
{
- Thread.yield();
- Thread.sleep(50);
+ assertEquals(backup.getCurrentBackups().size(), 0);
}
-
- Thread.sleep(30000);
-
- for (BackupChain chain : backup.getCurrentBackups())
- if (bch.getBackupId().equals(chain.getBackupId()))
- fail("The backup with id '" + chain.getBackupId() + "'
should not be active");
+ finally
+ {
+ backup.stopBackup(bch);
+ }
}
public void testAutoStopBackupIncr() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+
// backup
- File backDir = new File("target/backup/" + workspaceNameToBackup +
getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
- config.setBackupDir(backDir);
config.setIncrementalJobPeriod(3);
config.setIncrementalJobNumber(0);
+ config.setBackupDir(backDir);
BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
- while (bch.getFullBackupState() != BackupJob.FINISHED)
+ Thread.sleep(10000);
+ try
{
- Thread.yield();
- Thread.sleep(50);
+ assertEquals(backup.getCurrentBackups().size(), 1);
}
-
- Thread.sleep(30000);
-
- boolean isFail = true;
-
- for (BackupChain chain : backup.getCurrentBackups())
- if (bch.getBackupId().equals(chain.getBackupId()))
- isFail = false;
-
- if (isFail)
- fail("The backup with id '" + bch.getBackupId() + "'
should be active");
-
- backup.stopBackup(bch);
+ finally
+ {
+ backup.stopBackup(bch);
+ }
}
public void testAutoStopBackupIncrRepetion() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+
// backup
- File backDir = new File("target/backup/" + workspaceNameToBackup +
getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
- config.setBackupDir(backDir);
config.setIncrementalJobPeriod(4);
config.setIncrementalJobNumber(2);
+ config.setBackupDir(backDir);
- final BackupChain bch = backup.startBackup(config);
+ BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
Thread.sleep(30000);
-
- for (BackupChain chain : backup.getCurrentBackups())
- if (bch.getBackupId().equals(chain.getBackupId()))
- fail("The backup with id '" + chain.getBackupId() + "'
should not be active");
- }
-
- public void testTwoRestores() throws Exception
- {
+ try
{
- SessionImpl sessionWS1 = (SessionImpl)getReposityToBackup().login(credentials,
workspaceNameToBackup);
-
- sessionWS1.getRootNode().addNode("asdasdasda",
"nt:unstructured")
- .setProperty("data", new
FileInputStream(createBLOBTempFile(1024)));
- sessionWS1.save();
-
- // 1-st backup
- File backDir = new File("target/backup/" + workspaceNameToBackup +
getUUIndex());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
- config.setBackupDir(backDir);
-
- BackupChain bch = backup.startBackup(config);
-
- // wait till full backup will be stopped
- while (!bch.isFinished())
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // 1-st restore
- WorkspaceEntry ws1_restore_1 = makeWorkspaceEntry(workspaceNameToRestore,
dataSourceToWorkspaceRestore);
-
- File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
-
- backup.restore(bchLog, repositoryNameToBackup, ws1_restore_1, false);
-
- // check
- SessionImpl back1 = (SessionImpl)getReposityToBackup().login(credentials,
workspaceNameToRestore);
-
assertNotNull(back1.getRootNode().getNode("asdasdasda").getProperty("data"));
-
- // add date to restored workspace
- back1.getRootNode().addNode("gdfgrghfhf",
"nt:unstructured")
- .setProperty("data", new
FileInputStream(createBLOBTempFile(1024)));
- back1.save();
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ assertEquals(backup.getCurrentBackups().size(), 0);
}
-
+ finally
{
- // 2-st backup
- File backDir = new File("target/backup/" + workspaceNameToBackup +
getUUIndex());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToRestore);
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
- config.setBackupDir(backDir);
-
- BackupChain bch = backup.startBackup(config);
-
- // wait till full backup will be stopped
- while (!bch.isFinished())
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- removeWorkspaceFully(repositoryNameToBackup, workspaceNameToRestore);
-
- // 2-st restore
- WorkspaceEntry ws1_restore_2 = makeWorkspaceEntry(workspaceNameToRestore,
dataSourceToWorkspaceRestore);
-
- File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
-
- backup.restore(bchLog, repositoryNameToBackup, ws1_restore_2, false);
-
- // check
- SessionImpl back2 = (SessionImpl)getReposityToBackup().login(credentials,
workspaceNameToRestore);
-
assertNotNull(back2.getRootNode().getNode("gdfgrghfhf").getProperty("data"));
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.stopBackup(bch);
}
}
- public void testStartFullBackupWIthJobPeriod() throws Exception
- {
- // backup
- File backDir = new File("target/backup" + workspaceNameToBackup +
getUUIndex());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
- config.setBackupDir(backDir);
- config.setIncrementalJobPeriod(3600);
-
- backup.startBackup(config);
-
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
- }
-
public void testNegativeIncremetalJobPeriod() throws Exception
{
// backup
- File backDir = new File("target/backup/ws1_negative_period" +
getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository("fake");
+ config.setWorkspace("fake");
config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
config.setIncrementalJobPeriod(-1000);
-
config.setBackupDir(backDir);
try
@@ -681,22 +291,20 @@
}
catch (BackupConfigurationException e)
{
- //ok
}
}
public void testNegativeIncremetalJobNumber() throws Exception
{
// backup
- File backDir = new File("target/backup/ws1_negative_job_number" +
getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository("fake");
+ config.setWorkspace("fake");
config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
config.setIncrementalJobNumber(-5);
-
config.setBackupDir(backDir);
try
@@ -706,2067 +314,994 @@
}
catch (BackupConfigurationException e)
{
- //ok
}
}
- public void testRestoreAfterFAilureRestore() throws Exception
+ public void testRestoreAfterFailureRestore() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+ addConent(repository, wsEntry.getName());
+
// backup
- File backDir = new File("target/backup/" + workspaceNameToBackup +
getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
+ backup.stopBackup(bch);
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
// restore
- RepositoryEntry re =
(RepositoryEntry)ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
- WorkspaceEntry ws1back = makeWorkspaceEntry(workspaceNameToRestore,
dataSourceToWorkspaceRestore + "NOT_EXIST");
+ WorkspaceEntry newWS = helper.createWorkspaceEntry(true,
"NOT_EXISTED_DS");
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
+ assertTrue(backLog.exists());
- try
- {
- backup.restore(bchLog, repositoryNameToBackup, ws1back, false);
- fail("The backup can not be restored.");
- }
- catch (Exception e)
- {
- //ok
+ BackupChainLog bchLog = new BackupChainLog(backLog);
- WorkspaceEntry ws1backTwo = makeWorkspaceEntry(workspaceNameToRestore,
dataSourceToWorkspaceRestore);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- backup.restore(bchLog, repositoryNameToBackup, ws1backTwo, false);
- }
-
- // check
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)getReposityToBackup().login(credentials,
workspaceNameToRestore);
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
+ try
+ {
+ backup.restore(bchLog, config.getRepository(), newWS, false);
+ fail("Exception should be thrown");
}
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ catch (Exception e)
+ {
+ }
+
+ newWS = helper.createWorkspaceEntry(true, null);
+ backup.restore(bchLog, config.getRepository(), newWS, false);
+
+ checkConent(repository, newWS.getName());
}
public void testRepositoryFullBackupRestore() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
-
- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getState() != RepositoryBackupChain.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
backup.stopBackup(bch);
// restore
- RepositoryEntry newRepositoryEntry =
- makeRepositoryEntry(repositoryNameToRestore,
getReposityToBackup().getConfiguration(),
- dataSourceToRepositoryRestore, null);
+ RepositoryEntry newRE =
+ helper.createRepositoryEntry(true,
repository.getConfiguration().getSystemWorkspaceName(), null);
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
- backup.restore(bchLog, newRepositoryEntry, false);
- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL,
-
backup.getLastRepositoryRestore(newRepositoryEntry.getName()).getStateRestore());
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- // check
- ManageableRepository restoredRepository =
repositoryService.getRepository(repositoryNameToRestore);
-
- for (String wsName : restoredRepository.getWorkspaceNames())
- {
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)restoredRepository.login(credentials, wsName);
- Node ws1backTestRoot =
back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restore(bchLog, newRE, false);
+ checkConent(repositoryService.getRepository(newRE.getName()),
newRE.getSystemWorkspaceName());
}
public void testRepositoryFullAndIncrementalBackupRestore() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
- config.setIncrementalJobPeriod(1000);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
+ addIncrementalConent(repository,
repository.getConfiguration().getSystemWorkspaceName());
- // wait till full backup will be stopped
- while (bch.getState() !=
RepositoryBackupChain.FULL_BACKUP_FINISHED_INCREMENTAL_BACKUP_WORKING)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- //will be saved in incremental backup
- //will be saved in incremental backup
- Session wsSession = getReposityToBackup().login(credentials, "ws");
-
wsSession.getRootNode().getNode("backupTest").addNode("binary_data")
- .setProperty("data", new FileInputStream(createBLOBTempFile(500)));
- wsSession.save();
-
- // stop fullBackup
backup.stopBackup(bch);
// restore
- RepositoryEntry newRepositoryEntry =
- makeRepositoryEntry(repositoryNameToRestore,
getReposityToBackup().getConfiguration(),
- dataSourceToRepositoryRestore, null);
+ RepositoryEntry newRE =
+ helper.createRepositoryEntry(true,
repository.getConfiguration().getSystemWorkspaceName(), null);
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
- backup.restore(bchLog, newRepositoryEntry, false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- // check
- ManageableRepository restoredRepository =
repositoryService.getRepository(repositoryNameToRestore);
-
- for (String wsName : restoredRepository.getWorkspaceNames())
- {
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)restoredRepository.login(credentials, wsName);
- Node ws1backTestRoot =
back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
-
- if (wsName.equals("ws"))
- {
- assertNotNull(ws1backTestRoot.getNode("binary_data"));
-
assertNotNull(ws1backTestRoot.getNode("binary_data").getProperty("data"));
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restore(bchLog, newRE, false);
+ checkConent(repositoryService.getRepository(newRE.getName()),
newRE.getSystemWorkspaceName());
+ checkIncrementalConent(repositoryService.getRepository(newRE.getName()),
newRE.getSystemWorkspaceName());
}
public void testRepositoryFullBackupAsynchronusRestore() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
-
- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getState() != RepositoryBackupChain.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
backup.stopBackup(bch);
// restore
- RepositoryEntry newRepositoryEntry =
- makeRepositoryEntry(repositoryNameToRestore,
getReposityToBackup().getConfiguration(),
- dataSourceToRepositoryRestore, null);
+ RepositoryEntry newRE =
+ helper.createRepositoryEntry(true,
repository.getConfiguration().getSystemWorkspaceName(), null);
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
- backup.restore(bchLog, newRepositoryEntry, true);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- JobRepositoryRestore job =
backup.getLastRepositoryRestore(repositoryNameToRestore);
+ backup.restore(bchLog, newRE, true);
+ waitEndOfRestore(newRE.getName());
- while (job.getStateRestore() !=
JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL
- || job.getStateRestore() == JobRepositoryRestore.REPOSITORY_RESTORE_FAIL)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // check
- ManageableRepository restoredRepository =
repositoryService.getRepository(repositoryNameToRestore);
-
- for (String wsName : restoredRepository.getWorkspaceNames())
- {
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)restoredRepository.login(credentials, wsName);
- Node ws1backTestRoot =
back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ checkConent(repositoryService.getRepository(newRE.getName()),
newRE.getSystemWorkspaceName());
}
public void testRepositoryFullBackupAsynchronusRestoreWorkspaceMapping() throws
Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
-
- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getState() != RepositoryBackupChain.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
backup.stopBackup(bch);
// restore
- RepositoryEntry newRepositoryEntry =
- makeRepositoryEntry(repositoryNameToRestore,
getReposityToBackup().getConfiguration(),
- dataSourceToRepositoryRestore, null);
+ RepositoryEntry newRE = helper.createRepositoryEntry(true, null, null);
// create workspace mappingS
Map<String, String> workspaceMapping = new HashedMap();
- for (WorkspaceEntry we : newRepositoryEntry.getWorkspaceEntries())
- {
- workspaceMapping.put(we.getName(), we.getName() + "_mapped");
- }
+ workspaceMapping.put(repository.getConfiguration().getSystemWorkspaceName(),
newRE.getSystemWorkspaceName());
- // Change workspaeNames
- for (WorkspaceEntry we : newRepositoryEntry.getWorkspaceEntries())
- {
- if (newRepositoryEntry.getSystemWorkspaceName().equals(we.getName()))
- {
-
newRepositoryEntry.setSystemWorkspaceName(workspaceMapping.get(we.getName()));
-
newRepositoryEntry.setDefaultWorkspaceName(workspaceMapping.get(we.getName()));
- }
-
- we.setName(workspaceMapping.get(we.getName()));
- we.setUniqueName(we.getUniqueName() + workspaceMapping.get(we.getName()));
- }
-
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
- backup.restore(bchLog, newRepositoryEntry, workspaceMapping, true);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- JobRepositoryRestore job =
backup.getLastRepositoryRestore(repositoryNameToRestore);
+ backup.restore(bchLog, newRE, workspaceMapping, true);
+ waitEndOfRestore(newRE.getName());
- while (job.getStateRestore() !=
JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL
- || job.getStateRestore() == JobRepositoryRestore.REPOSITORY_RESTORE_FAIL)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // check
- ManageableRepository restoredRepository =
repositoryService.getRepository(repositoryNameToRestore);
-
- for (String wsName : restoredRepository.getWorkspaceNames())
- {
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)restoredRepository.login(credentials,
workspaceMapping.get(wsName));
- Node ws1backTestRoot =
back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ checkConent(repositoryService.getRepository(newRE.getName()),
newRE.getSystemWorkspaceName());
}
public void testAutoStopRepositoryBackupIncrRepetion() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
- config.setBackupDir(backDir);
config.setIncrementalJobPeriod(4);
config.setIncrementalJobNumber(2);
+ config.setBackupDir(backDir);
- final RepositoryBackupChain bch = backup.startBackup(config);
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
+ backup.stopBackup(bch);
- while (bch.getState() != RepositoryBackupChain.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
+ // restore
+ RepositoryEntry newRE = helper.createRepositoryEntry(true, null, null);
- Thread.sleep(30000);
+ // create workspace mappingS
+ Map<String, String> workspaceMapping = new HashedMap();
+ workspaceMapping.put(repository.getConfiguration().getSystemWorkspaceName(),
newRE.getSystemWorkspaceName());
- for (RepositoryBackupChain chain : backup.getCurrentRepositoryBackups())
- if (bch.getBackupId().equals(chain.getBackupId()))
- fail("The backup with id '" + chain.getBackupId() + "'
should not be active");
+ File backLog = new File(bch.getLogFilePath());
+ assertTrue(backLog.exists());
+
+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
+
+ backup.restore(bchLog, newRE, workspaceMapping, true);
+ waitEndOfRestore(newRE.getName());
+
+ Thread.sleep(30000);
+ assertEquals(backup.getCurrentRepositoryBackups().size(), 0);
}
public void testRepositoryRestoreFail() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
-
- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getState() != RepositoryBackupChain.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
backup.stopBackup(bch);
- Thread.sleep(5000);
-
- String repoName = repositoryNameToRestore + System.currentTimeMillis();
-
// restore
- RepositoryEntry newRepositoryEntry =
- makeRepositoryEntry(repoName, getReposityToBackup().getConfiguration(),
dataSourceToRepositoryRestore, null);
+ RepositoryEntry newRE = helper.createRepositoryEntry(true, null, null);
+ newRE.getWorkspaceEntries().get(0).getQueryHandler().setType("gg");
- //create broken system workspaceEntry
-
newRepositoryEntry.getWorkspaceEntries().get(0).getQueryHandler().setType("gg");
+ // create workspace mappingS
+ Map<String, String> workspaceMapping = new HashedMap();
+ workspaceMapping.put(repository.getConfiguration().getSystemWorkspaceName(),
newRE.getSystemWorkspaceName());
- File backLog = new File(backup.getRepositoryBackupsLogs()[0].getLogFilePath());
+ File backLog = new File(bch.getLogFilePath());
+ assertTrue(backLog.exists());
RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
+
try
{
- backup.restore(bchLog, newRepositoryEntry, false);
- fail("The backup " + backLog.getAbsolutePath() + "shoulde not
restored.");
+ backup.restore(bchLog, newRE, workspaceMapping, false);
+ fail("Exception should be thrown");
}
catch (RepositoryRestoreExeption e)
{
- // ok.
}
-
- // check
- try
- {
- ManageableRepository restoredRepository =
repositoryService.getRepository(repoName);
- fail("The repository " + repositoryNameToRestore + "shoulde not
exists.");
- }
- catch (RepositoryException e)
- {
- // ok.
- }
}
- public void testIncrementalBackupRestoreEXOJCR_737() throws Exception
- {
- // full backup with BLOBs & incremental with BLOBs
-
- // BLOBs for full
- File tempf = createBLOBTempFile("testIncrementalBackupRestore737-", 5 *
1024); // 5M
- tempf.deleteOnExit();
-
- File backDir = new File("target/backup/" + getUUIndex());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
- config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
-
- config.setBackupDir(backDir);
-
- backup.startBackup(config);
-
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // add data
-
ws1Session.getRootNode().addNode("node_101").setProperty("exo:data",
new FileInputStream(tempf));
-
ws1Session.getRootNode().addNode("node_102").setProperty("exo:extraData",
new FileInputStream(tempf));
- ws1Session.getRootNode().save(); // log here via listener
-
- // stop backup
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
- //remove data
- ws1Session.getRootNode().getNode("node_101").remove();
- ws1Session.getRootNode().getNode("node_102").remove();
- ws1Session.getRootNode().save();
-
- // restore
- WorkspaceEntry ws1back = makeWorkspaceEntry(workspaceNameToRestore,
dataSourceToWorkspaceRestore);
-
- File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
-
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
-
- backup.restore(bchLog, repositoryNameToBackup, ws1back, false);
-
- // check
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)getReposityToBackup().login(credentials,
workspaceNameToRestore);
-
- Node node_101 = back1.getRootNode().getNode("node_101");
- assertNotNull(node_101);
-
- InputStream in = node_101.getProperty("exo:data").getStream();
- try
- {
- assertEquals(tempf.length(), in.available());
- compareStream(new FileInputStream(tempf), in);
- }
- finally
- {
- in.close();
- }
-
- Node node_102 = back1.getRootNode().getNode("node_102");
- assertNotNull(node_102);
-
- in = node_102.getProperty("exo:extraData").getStream();
- try
- {
- assertEquals(tempf.length(), in.available());
- compareStream(new FileInputStream(tempf), in);
- }
- finally
- {
- in.close();
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
- }
-
public void testExistedWorkspaceRestoreMultiDB() throws Exception
{
- String repositoryNameToBackup = "db8";
- SessionImpl ws1Session =
-
(SessionImpl)repositoryService.getRepository(repositoryNameToBackup).login(credentials,
"ws1");
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+ addConent(repository, wsEntry.getName());
- ws1Session.getRootNode().addNode("TESTNODE");
- ws1Session.save();
-
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
+ backup.stopBackup(bch);
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
// restore
- RepositoryEntry re =
(RepositoryEntry)ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
- WorkspaceEntry ws1 = null;
- for (WorkspaceEntry we : re.getWorkspaceEntries())
- {
- if (ws1Session.getWorkspace().getName().equals(we.getName()))
- {
- ws1 = we;
- break;
- }
- }
-
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ BackupChainLog bchLog = new BackupChainLog(backLog);
- backup.restoreExistingWorkspace(bchLog, repositoryNameToBackup, ws1, false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- // check
- SessionImpl back1 = null;
- try
- {
- back1 =
(SessionImpl)repositoryService.getRepository("db8").login(credentials,
"ws1");
- Node ws1backTestRoot = back1.getRootNode().getNode("TESTNODE");
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
-
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restoreExistingWorkspace(bchLog, repository.getConfiguration().getName(),
repository.getConfiguration()
+ .getWorkspaceEntries().get(1), false);
+ checkConent(repository,
repository.getConfiguration().getWorkspaceEntries().get(1).getName());
}
- public void testExistedWorkspaceRestore() throws Exception
+ public void testExistedWorkspaceRestoreSingleDB() throws Exception
{
- SessionImpl ws1Session =
(SessionImpl)repositoryService.getRepository("db7").login(credentials,
"ws1");
+ // prepare
+ String dsName = helper.createDatasource();
+ ManageableRepository repository = helper.createRepository(container, false,
dsName);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
+ helper.addWorkspace(repository, wsEntry);
+ addConent(repository, wsEntry.getName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository("db7");
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
+ backup.stopBackup(bch);
- BackupChain bch = backup.findBackup("db7", workspaceNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
// restore
- RepositoryEntry re =
(RepositoryEntry)ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
- WorkspaceEntry ws1 = null;
- for (WorkspaceEntry we : re.getWorkspaceEntries())
- {
- if (ws1Session.getWorkspace().getName().equals(we.getName()))
- {
- ws1 = we;
- break;
- }
- }
-
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ BackupChainLog bchLog = new BackupChainLog(backLog);
- backup.restoreExistingWorkspace(bchLog, "db7", ws1, false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- // check
- SessionImpl back1 = null;
- try
- {
- back1 =
(SessionImpl)repositoryService.getRepository("db7").login(credentials,
"ws1");
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restoreExistingWorkspace(bchLog, repository.getConfiguration().getName(),
repository.getConfiguration()
+ .getWorkspaceEntries().get(1), false);
+ checkConent(repository,
repository.getConfiguration().getWorkspaceEntries().get(1).getName());
}
public void testExistedWorkspaceRestoreAsync() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+ addConent(repository, wsEntry.getName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
+ backup.stopBackup(bch);
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
// restore
- RepositoryEntry re =
(RepositoryEntry)ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
- WorkspaceEntry ws1 = null;
- for (WorkspaceEntry we : re.getWorkspaceEntries())
- {
- if (ws1Session.getWorkspace().getName().equals(we.getName()))
- {
- ws1 = we;
- break;
- }
- }
-
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ BackupChainLog bchLog = new BackupChainLog(backLog);
- backup.restoreExistingWorkspace(bchLog, repositoryNameToBackup, ws1, true);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- while (backup.getLastRestore(repositoryNameToBackup,
ws1.getName()).getStateRestore() != JobWorkspaceRestore.RESTORE_SUCCESSFUL
- && backup.getLastRestore(repositoryNameToBackup,
ws1.getName()).getStateRestore() != JobWorkspaceRestore.RESTORE_FAIL)
- {
- Thread.sleep(50);
- }
+ backup.restoreExistingWorkspace(bchLog, repository.getConfiguration().getName(),
repository.getConfiguration()
+ .getWorkspaceEntries().get(1), true);
+ waitEndOfRestore(repository.getConfiguration().getName(),
repository.getConfiguration().getWorkspaceEntries()
+ .get(1).getName());
- assertEquals(backup.getLastRestore(repositoryNameToBackup,
ws1.getName()).getStateRestore(),
- JobWorkspaceRestore.RESTORE_SUCCESSFUL);
+ assertEquals(
+ backup.getLastRestore(repository.getConfiguration().getName(),
+
repository.getConfiguration().getWorkspaceEntries().get(1).getName()).getStateRestore(),
+ JobWorkspaceRestore.RESTORE_SUCCESSFUL);
- // check
- SessionImpl back1 = null;
- try
- {
- back1 =
-
(SessionImpl)repositoryService.getRepository(repositoryNameToBackup).login(credentials,
- workspaceNameToBackup);
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ checkConent(repository,
repository.getConfiguration().getWorkspaceEntries().get(1).getName());
}
- public void testExistedWorkspaceRestoreAsync2() throws Exception
+ public void testExistedRepositoryRestoreMultiDB() throws Exception
{
+ // prepare
+ String dsName = helper.createDatasource();
+ ManageableRepository repository = helper.createRepository(container, true,
dsName);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
- BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ RepositoryBackupConfig config = new RepositoryBackupConfig();
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
+ backup.stopBackup(bch);
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
+ File backLog = new File(bch.getLogFilePath());
+ assertTrue(backLog.exists());
- // stop fullBackup
+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
// restore
- RepositoryEntry re =
(RepositoryEntry)ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
- WorkspaceEntry ws1 = null;
- for (WorkspaceEntry we : re.getWorkspaceEntries())
- {
- if (ws1Session.getWorkspace().getName().equals(we.getName()))
- {
- ws1 = we;
- break;
- }
- }
+ RepositoryEntry newRE =
+ helper.createRepositoryEntry(true,
repository.getConfiguration().getSystemWorkspaceName(), dsName);
+ newRE.setName(repository.getConfiguration().getName());
- File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
-
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
-
- backup.restoreExistingWorkspace(bchLog.getBackupId(), repositoryNameToBackup,
ws1, true);
-
- while (backup.getLastRestore(repositoryNameToBackup,
ws1.getName()).getStateRestore() != JobWorkspaceRestore.RESTORE_SUCCESSFUL
- && backup.getLastRestore(repositoryNameToBackup,
ws1.getName()).getStateRestore() != JobWorkspaceRestore.RESTORE_FAIL)
- {
- Thread.sleep(50);
- }
-
- assertEquals(backup.getLastRestore(repositoryNameToBackup,
ws1.getName()).getStateRestore(),
- JobWorkspaceRestore.RESTORE_SUCCESSFUL);
-
- // check
- SessionImpl back1 = null;
- try
- {
- back1 =
-
(SessionImpl)repositoryService.getRepository(repositoryNameToBackup).login(credentials,
- workspaceNameToBackup);
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restoreExistingRepository(bchLog, newRE, false);
+ checkConent(repositoryService.getRepository(newRE.getName()),
newRE.getSystemWorkspaceName());
}
- public void testExistedRepositoryRestore() throws Exception
+ public void testExistedRepositoryRestoreSingelDB() throws Exception
{
+ // prepare
+ String dsName = helper.createDatasource();
+ ManageableRepository repository = helper.createRepository(container, false,
dsName);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
-
- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getState() != RepositoryBackupChain.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
backup.stopBackup(bch);
- // restore
- RepositoryEntry re =
- makeRepositoryEntry(repositoryNameToBackup,
getReposityToBackup().getConfiguration(), null, null);
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
- backup.restoreExistingRepository(bchLog, re, false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL,
backup.getLastRepositoryRestore(repositoryNameToBackup)
- .getStateRestore());
+ // restore
+ RepositoryEntry newRE =
+ helper.createRepositoryEntry(false,
repository.getConfiguration().getSystemWorkspaceName(), dsName);
+ newRE.setName(repository.getConfiguration().getName());
- // check
- ManageableRepository restoredRepository =
repositoryService.getRepository(repositoryNameToBackup);
-
- for (String wsName : restoredRepository.getWorkspaceNames())
- {
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)restoredRepository.login(credentials, wsName);
- Node ws1backTestRoot =
back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restoreExistingRepository(bchLog, newRE, false);
+ checkConent(repositoryService.getRepository(newRE.getName()),
newRE.getSystemWorkspaceName());
}
- public void testExistedRepositoryRestoreSingelDB() throws Exception
+ public void testExistedRepositoryRestoreAsync() throws Exception
{
- RepositoryImpl repositoryDB7 =
(RepositoryImpl)repositoryService.getRepository(repositoryNameToBackupSingleDB);
- SessionImpl sessionWS = (SessionImpl)repositoryDB7.login(credentials,
workspaceNameToBackup);
+ // prepare
+ String dsName = helper.createDatasource();
+ ManageableRepository repository = helper.createRepository(container, false,
dsName);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackupSingleDB);
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
-
- RepositoryBackupChain bch =
backup.findRepositoryBackup(repositoryNameToBackupSingleDB);
-
- // wait till full backup will be stopped
- while (bch.getState() != RepositoryBackupChain.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
backup.stopBackup(bch);
- // restore
- RepositoryEntry baseRE =
-
(RepositoryEntry)sessionWS.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
- RepositoryEntry re = makeRepositoryEntry(baseRE.getName(), baseRE, null, null);
-
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
- backup.restoreExistingRepository(bchLog, re, false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL,
backup.getLastRepositoryRestore(re.getName())
- .getStateRestore());
+ // restore
+ RepositoryEntry newRE =
+ helper.createRepositoryEntry(false,
repository.getConfiguration().getSystemWorkspaceName(), dsName);
+ newRE.setName(repository.getConfiguration().getName());
- // check
- ManageableRepository restoredRepository =
repositoryService.getRepository(repositoryNameToBackupSingleDB);
+ backup.restoreExistingRepository(bchLog, newRE, true);
- for (String wsName : restoredRepository.getWorkspaceNames())
- {
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)restoredRepository.login(credentials, wsName);
- Node ws1backTestRoot =
back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ waitEndOfRestore(repository.getConfiguration().getName());
+
+ assertEquals(JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL,
+
backup.getLastRepositoryRestore(repository.getConfiguration().getName()).getStateRestore());
+
+ checkConent(repositoryService.getRepository(newRE.getName()),
newRE.getSystemWorkspaceName());
}
- public void testExistedRepositoryRestoreAsync() throws Exception
+
+ public void testExistedWorkspaceRestoreWithConfig() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+ addConent(repository, wsEntry.getName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
- RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
+ BackupConfig config = new BackupConfig();
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
-
- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getState() != RepositoryBackupChain.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
+ BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
backup.stopBackup(bch);
// restore
- RepositoryEntry re =
- makeRepositoryEntry(repositoryNameToBackup,
getReposityToBackup().getConfiguration(), null, null);
-
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ BackupChainLog bchLog = new BackupChainLog(backLog);
- backup.restoreExistingRepository(bchLog, re, true);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- JobRepositoryRestore job =
backup.getLastRepositoryRestore(repositoryNameToBackup);
-
- while (job.getStateRestore() !=
JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL
- && job.getStateRestore() !=
JobRepositoryRestore.REPOSITORY_RESTORE_FAIL)
- {
- Thread.sleep(50);
- }
-
- assertEquals(JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL,
- backup.getLastRepositoryRestore(repositoryNameToBackup).getStateRestore());
-
- // check
- ManageableRepository restoredRepository =
repositoryService.getRepository(repositoryNameToBackup);
-
- for (String wsName : restoredRepository.getWorkspaceNames())
- {
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)restoredRepository.login(credentials, wsName);
- Node ws1backTestRoot =
back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restoreExistingWorkspace(bchLog.getBackupId(), false);
+ checkConent(repository,
repository.getConfiguration().getWorkspaceEntries().get(1).getName());
}
- public void testExistedRepositoryRestoreAsync2() throws Exception
+ public void testExistedRepositoryRestoreWithConfig() throws Exception
{
+ // prepare
+ String dsName = helper.createDatasource();
+ ManageableRepository repository = helper.createRepository(container, true,
dsName);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
+
// backup
- File backDir = new File("target/backup");
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
-
- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getState() != RepositoryBackupChain.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
backup.stopBackup(bch);
- // restore
- RepositoryEntry re =
- makeRepositoryEntry(repositoryNameToBackup,
getReposityToBackup().getConfiguration(), null, null);
-
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
- backup.restoreExistingRepository(bchLog.getBackupId(), re, true);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- JobRepositoryRestore job =
backup.getLastRepositoryRestore(repositoryNameToBackup);
+ // restore
+ RepositoryEntry newRE =
+ helper.createRepositoryEntry(true,
repository.getConfiguration().getSystemWorkspaceName(), dsName);
+ newRE.setName(repository.getConfiguration().getName());
- while (job.getStateRestore() !=
JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL
- && job.getStateRestore() !=
JobRepositoryRestore.REPOSITORY_RESTORE_FAIL)
- {
- Thread.sleep(50);
- }
-
- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL,
backup.getLastRepositoryRestore(repositoryNameToBackup)
- .getStateRestore());
-
- // check
- ManageableRepository restoredRepository =
repositoryService.getRepository(repositoryNameToBackup);
-
- for (String wsName : restoredRepository.getWorkspaceNames())
- {
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)restoredRepository.login(credentials, wsName);
- Node ws1backTestRoot =
back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restoreExistingRepository(bchLog.getBackupId(), false);
+ checkConent(repositoryService.getRepository(newRE.getName()),
newRE.getSystemWorkspaceName());
}
- public void testExistedWorkspaceRestoreSingelDB() throws Exception
+ public void testWorkspaceRestoreWithConfig() throws Exception
{
- RepositoryImpl repositoryDB7 =
(RepositoryImpl)repositoryService.getRepository(repositoryNameToBackupSingleDB);
- SessionImpl sessionWS = (SessionImpl)repositoryDB7.login(credentials,
workspaceNameToBackup);
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+ addConent(repository, wsEntry.getName());
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackupSingleDB);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
+ backup.stopBackup(bch);
- BackupChain bch = backup.findBackup(repositoryNameToBackupSingleDB,
workspaceNameToBackup);
+ removeWorkspaceFully(repository.getConfiguration().getName(), wsEntry.getName());
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
// restore
- RepositoryEntry re =
(RepositoryEntry)sessionWS.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
- WorkspaceEntry ws1 = null;
- for (WorkspaceEntry we : re.getWorkspaceEntries())
- {
- if (sessionWS.getWorkspace().getName().equals(we.getName()))
- {
- ws1 = we;
- break;
- }
- }
-
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ BackupChainLog bchLog = new BackupChainLog(backLog);
- backup.restoreExistingWorkspace(bchLog, repositoryNameToBackupSingleDB, ws1,
false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- // check
- SessionImpl back1 = null;
- try
- {
- repositoryDB7 =
(RepositoryImpl)repositoryService.getRepository(repositoryNameToBackupSingleDB);
- back1 = (SessionImpl)repositoryDB7.login(credentials,
workspaceNameToBackup);
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restoreWorkspace(bchLog.getBackupId(), false);
+ checkConent(repository,
repository.getConfiguration().getWorkspaceEntries().get(1).getName());
}
- public void testExistedWorkspaceRestoreWithConfig() throws Exception
+ public void testRepositoryRestoreWithConfig() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
- BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ RepositoryBackupConfig config = new RepositoryBackupConfig();
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
+ backup.stopBackup(bch);
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
+ // restore
+ removeRepositoryFully(repository.getConfiguration().getName());
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
- super.tearDown();
-
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
- backup.restoreExistingWorkspace(bchLog.getBackupId(), false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- // check
- SessionImpl back1 = null;
- try
- {
- back1 =
-
(SessionImpl)repositoryService.getRepository(repositoryNameToBackup).login(credentials,
- workspaceNameToBackup);
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restoreRepository(bchLog.getBackupId(), false);
+
+ checkConent(repositoryService.getRepository(config.getRepository()),
+
repositoryService.getRepository(config.getRepository()).getConfiguration().getSystemWorkspaceName());
}
- public void testExistedRepositoryRestoreWithConfig() throws Exception
+ public void testRepositoryRestoreWithNullConfig() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
-
- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getState() != RepositoryBackupChain.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
backup.stopBackup(bch);
- // check
- super.tearDown();
+ // restore
+ removeRepositoryFully(repository.getConfiguration().getName());
- // restore
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
- backup.restoreExistingRepository(bchLog.getBackupId(), false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL,
backup.getLastRepositoryRestore(repositoryNameToBackup)
- .getStateRestore());
-
- // check
- ManageableRepository restoredRepository =
repositoryService.getRepository(repositoryNameToBackup);
-
- for (String wsName : restoredRepository.getWorkspaceNames())
- {
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)restoredRepository.login(credentials, wsName);
- Node ws1backTestRoot =
back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restore(bchLog, null, false);
+ checkConent(repositoryService.getRepository(config.getRepository()),
+
repositoryService.getRepository(config.getRepository()).getConfiguration().getSystemWorkspaceName());
}
-
- public void testWorkspaceRestoreWithConfig() throws Exception
+
+ public void testWorkspaceRestoreWithNullConfig() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+ addConent(repository, wsEntry.getName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
+ backup.stopBackup(bch);
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
+ removeWorkspaceFully(repository.getConfiguration().getName(), wsEntry.getName());
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
- //TODO
- // super.tearDown();
- removeWorkspaceFullySingleDB(repositoryNameToBackup, workspaceNameToBackup);
-
+ // restore
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ BackupChainLog bchLog = new BackupChainLog(backLog);
- backup.restoreWorkspace(bchLog.getBackupId(), false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- // check
- SessionImpl back1 = null;
- try
- {
- back1 =
(SessionImpl)repositoryService.getRepository(repositoryNameToBackup).login(credentials,
"ws1");
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
+ try
+ {
+ backup.restore(bchLog, repository.getConfiguration().getName() +
"not_exists", null, false);
+ fail("Exception should be thrown");
}
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ catch (Exception e)
+ {
+ }
+
+ backup.restore(bchLog, repository.getConfiguration().getName(), null, false);
+ checkConent(repository,
repository.getConfiguration().getWorkspaceEntries().get(1).getName());
}
- public void testRepositoryRestoreWithConfig() throws Exception
+ public void testExistedWorkspaceRestoreWithConfigBackupSetDir() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+ addConent(repository, wsEntry.getName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
- RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
+ BackupConfig config = new BackupConfig();
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
-
- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getState() != RepositoryBackupChain.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
+ BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
backup.stopBackup(bch);
- //TODO
- super.tearDown();
- removeRepositoryFully(repositoryNameToBackup);
-
- // restore
+ // restore
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ BackupChainLog bchLog = new BackupChainLog(backLog);
- backup.restoreRepository(bchLog.getBackupId(), false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL,
backup.getLastRepositoryRestore(repositoryNameToBackup)
- .getStateRestore());
-
- // check
- ManageableRepository restoredRepository =
repositoryService.getRepository(repositoryNameToBackup);
-
- for (String wsName : restoredRepository.getWorkspaceNames())
- {
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)restoredRepository.login(credentials, wsName);
- Node ws1backTestRoot =
back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restoreExistingWorkspace(bchLog.getBackupConfig().getBackupDir(), false);
+ checkConent(repository,
repository.getConfiguration().getWorkspaceEntries().get(1).getName());
}
-
- public void testRepositoryRestoreWithNullConfig() throws Exception
+
+ public void testExistedRepositoryRestoreWithConfigBackupSetDir() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
+
// backup
- File backDir = new File((File.createTempFile("12123",
"123")).getParent() + File.separator + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
-
- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getState() != RepositoryBackupChain.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
backup.stopBackup(bch);
- //TODO
- super.tearDown();
- removeRepositoryFully(repositoryNameToBackup);
-
- // restore
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
- backup.restore(bchLog, null, false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL,
backup.getLastRepositoryRestore(repositoryNameToBackup)
- .getStateRestore());
-
- // check
- ManageableRepository restoredRepository =
repositoryService.getRepository(repositoryNameToBackup);
-
- for (String wsName : restoredRepository.getWorkspaceNames())
- {
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)restoredRepository.login(credentials, wsName);
- Node ws1backTestRoot =
back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restoreExistingRepository(bchLog.getBackupConfig().getBackupDir(), false);
+ checkConent(repositoryService.getRepository(config.getRepository()),
+
repositoryService.getRepository(config.getRepository()).getConfiguration().getSystemWorkspaceName());
}
- public void testWorkspaceRestoreWithNullConfig() throws Exception
+ public void testWorkspaceRestoreWithConfigBackupSetDir() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
+ helper.addWorkspace(repository, wsEntry);
+ addConent(repository, wsEntry.getName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ config.setRepository(repository.getConfiguration().getName());
+ config.setWorkspace(wsEntry.getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ BackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
+ backup.stopBackup(bch);
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
-
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
- //TODO
- removeWorkspaceFullySingleDB(repositoryNameToBackup, workspaceNameToBackup);
-
+ removeWorkspaceFully(repository.getConfiguration().getName(), wsEntry.getName());
+
+ // restore
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ BackupChainLog bchLog = new BackupChainLog(backLog);
- try
- {
- backup.restore(bchLog, repositoryNameToBackup + "not_exists", null,
false);
- fail("Should be throw exception WorkspaceRestoreException");
- }
- catch (WorkspaceRestoreException e)
- {
- //ok
- }
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- backup.restore(bchLog, repositoryNameToBackup, null, false);
-
- // check
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)getReposityToBackup().login(credentials,
workspaceNameToBackup);
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restoreWorkspace(bchLog.getBackupConfig().getBackupDir(), false);
+ checkConent(repository,
repository.getConfiguration().getWorkspaceEntries().get(1).getName());
}
- public void testExistedWorkspaceRestoreWithConfigBackupSetDir() throws Exception
+ public void testRepositoryRestoreWithConfigBackupSetDir() throws Exception
{
+ // prepare
+ ManageableRepository repository = helper.createRepository(container, true, null);
+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
+
// backup
- File backDir = new File("target/backup/" + getUUIndex());
+ File backDir = new File("target/backup/" + IdGenerator.generate());
backDir.mkdirs();
- BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
+ RepositoryBackupConfig config = new RepositoryBackupConfig();
+ config.setRepository(repository.getConfiguration().getName());
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
config.setBackupDir(backDir);
- backup.startBackup(config);
+ RepositoryBackupChain bch = backup.startBackup(config);
+ waitEndOfBackup(bch);
+ backup.stopBackup(bch);
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
+ // restore
+ removeRepositoryFully(repository.getConfiguration().getName());
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-
- // stop fullBackup
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
- super.tearDown();
-
File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
- {
- BackupChainLog bchLog = new BackupChainLog(backLog);
+ assertTrue(backLog.exists());
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
- backup.restoreExistingWorkspace(bchLog.getBackupConfig().getBackupDir(),
false);
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
- // check
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)getReposityToBackup().login(credentials,
workspaceNameToBackup);
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ backup.restoreRepository(bchLog.getBackupConfig().getBackupDir(), false);
+ checkConent(repositoryService.getRepository(config.getRepository()),
+
repositoryService.getRepository(config.getRepository()).getConfiguration().getSystemWorkspaceName());
}
- public void testExistedRepositoryRestoreWithConfigBackupSetDir() throws Exception
+ public void waitEndOfBackup(BackupChain bch) throws Exception
{
- // backup
- File backDir = new File("target/backup/" + getUUIndex());
- backDir.mkdirs();
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
- config.setBackupDir(backDir);
-
- backup.startBackup(config);
-
- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getState() != RepositoryBackupChain.FINISHED)
+ while (bch.getFullBackupState() != BackupChain.FINISHED)
{
Thread.yield();
Thread.sleep(50);
}
+ }
- // stop fullBackup
- backup.stopBackup(bch);
-
- // check
- super.tearDown();
-
- // restore
- File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
+ public void waitEndOfBackup(RepositoryBackupChain bch) throws Exception
+ {
+ while (bch.getState() != RepositoryBackupChain.FINISHED
+ && bch.getState() !=
RepositoryBackupChain.FULL_BACKUP_FINISHED_INCREMENTAL_BACKUP_WORKING)
{
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
-
- backup.restoreExistingRepository(bchLog.getBackupConfig().getBackupDir(),
false);
-
- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL,
backup.getLastRepositoryRestore(repositoryNameToBackup)
- .getStateRestore());
-
- // check
- ManageableRepository restoredRepository =
repositoryService.getRepository(repositoryNameToBackup);
-
- for (String wsName : restoredRepository.getWorkspaceNames())
- {
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)restoredRepository.login(credentials, wsName);
- Node ws1backTestRoot =
back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
+ Thread.yield();
+ Thread.sleep(50);
}
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
}
- public void testWorkspaceRestoreWithConfigBackupSetDir() throws Exception
+
+ public void waitEndOfRestore(String repositoryName) throws Exception
{
- // backup
- File backDir = new File((File.createTempFile("12123",
"123")).getParent() + File.separator + getUUIndex());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setWorkspace(workspaceNameToBackup);
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-
- config.setBackupDir(backDir);
-
- backup.startBackup(config);
-
- BackupChain bch = backup.findBackup(repositoryNameToBackup,
workspaceNameToBackup);
-
- // wait till full backup will be stopped
- while (bch.getFullBackupState() != BackupJob.FINISHED)
+ while (backup.getLastRepositoryRestore(repositoryName).getStateRestore() !=
JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL
+ && backup.getLastRepositoryRestore(repositoryName).getStateRestore() !=
JobRepositoryRestore.REPOSITORY_RESTORE_FAIL)
{
- Thread.yield();
Thread.sleep(50);
}
+ }
- // stop fullBackup
-
- if (bch != null)
- backup.stopBackup(bch);
- else
- fail("Can't get fullBackup chain");
-
- //TODO
- removeWorkspaceFullySingleDB(repositoryNameToBackup, workspaceNameToBackup);
-
- File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
+ public void waitEndOfRestore(String repositoryName, String workspaceName) throws
Exception
+ {
+ while (backup.getLastRestore(repositoryName, workspaceName).getStateRestore() !=
JobWorkspaceRestore.RESTORE_SUCCESSFUL
+ && backup.getLastRestore(repositoryName,
workspaceName).getStateRestore() != JobWorkspaceRestore.RESTORE_FAIL)
{
- BackupChainLog bchLog = new BackupChainLog(backLog);
-
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
-
- backup.restoreWorkspace(bchLog.getBackupConfig().getBackupDir(), false);
-
- // check
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)getReposityToBackup().login(credentials,
"ws1");
- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
+ Thread.sleep(50);
}
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
}
- public void testRepositoryRestoreWithConfigBackupSetDir() throws Exception
+ public void addIncrementalConent(ManageableRepository repository, String wsName)
throws Exception
{
- // backup
- File backDir = new File((File.createTempFile("12123",
"123")).getParent() + File.separator + getUUIndex());
- backDir.mkdirs();
+ SessionImpl session = (SessionImpl)repository.login(credentials, wsName);
+ Node rootNode = session.getRootNode().addNode("testIncremental");
- RepositoryBackupConfig config = new RepositoryBackupConfig();
- config.setRepository(repositoryNameToBackup);
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
+ // add some changes which will be logged in incremental log
+ rootNode.addNode("node1").setProperty("prop1",
"value1");
+ rootNode.addNode("node2").setProperty("prop2", new
FileInputStream(blob));
+ rootNode.addNode("node3").addMixin("mix:lockable");
+ session.save();
+ }
- config.setBackupDir(backDir);
+ public void addConent(ManageableRepository repository, String wsName) throws
Exception
+ {
+ SessionImpl session = (SessionImpl)repository.login(credentials, wsName);
+ Node rootNode = session.getRootNode().addNode("test");
- backup.startBackup(config);
+ // add some changes which will be logged in incremental log
+ rootNode.addNode("node1").setProperty("prop1",
"value1");
+ rootNode.addNode("node2").setProperty("prop2", new
FileInputStream(blob));
+ rootNode.addNode("node3").addMixin("mix:lockable");
+ session.save();
+ }
- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
+ public void checkConent(ManageableRepository repository, String wsName) throws
Exception
+ {
+ SessionImpl session = (SessionImpl)repository.login(credentials, wsName);
- // wait till full backup will be stopped
- while (bch.getState() != RepositoryBackupChain.FINISHED)
+ Node rootNode = session.getRootNode().getNode("test");
+
assertEquals(rootNode.getNode("node1").getProperty("prop1").getString(),
"value1");
+
+ InputStream in =
rootNode.getNode("node2").getProperty("prop2").getStream();
+ try
{
- Thread.yield();
- Thread.sleep(50);
+ compareStream(new FileInputStream(blob), in);
}
-
- // stop fullBackup
-
- backup.stopBackup(bch);
-
- //TODO
- super.tearDown();
- removeRepositoryFully(repositoryNameToBackup);
-
- // restore
- File backLog = new File(bch.getLogFilePath());
- if (backLog.exists())
+ finally
{
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
+ in.close();
+ }
+ }
- assertNotNull(bchLog.getStartedTime());
- assertNotNull(bchLog.getFinishedTime());
+ public void checkIncrementalConent(ManageableRepository repository, String wsName)
throws Exception
+ {
+ SessionImpl session = (SessionImpl)repository.login(credentials, wsName);
- backup.restoreRepository(bchLog.getBackupConfig().getBackupDir(), false);
+ Node rootNode = session.getRootNode().getNode("testIncremental");
+
assertEquals(rootNode.getNode("node1").getProperty("prop1").getString(),
"value1");
- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL,
backup.getLastRepositoryRestore(repositoryNameToBackup)
- .getStateRestore());
-
- // check
- ManageableRepository restoredRepository =
repositoryService.getRepository(repositoryNameToBackup);
-
- for (String wsName : restoredRepository.getWorkspaceNames())
- {
- SessionImpl back1 = null;
- try
- {
- back1 = (SessionImpl)restoredRepository.login(credentials, wsName);
- Node ws1backTestRoot =
back1.getRootNode().getNode("backupTest");
- assertEquals("Restored content should be same",
"property-5", ws1backTestRoot.getNode("node_5")
- .getProperty("exo:data").getString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- finally
- {
- if (back1 != null)
- back1.logout();
- }
- }
+ InputStream in =
rootNode.getNode("node2").getProperty("prop2").getStream();
+ try
+ {
+ compareStream(new FileInputStream(blob), in);
}
- else
- fail("There are no backup files in " + backDir.getAbsolutePath());
+ finally
+ {
+ in.close();
+ }
}
}
Modified:
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestBackupManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestBackupManager.java 2011-03-22
09:17:49 UTC (rev 4158)
+++
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestBackupManager.java 2011-03-22
09:18:55 UTC (rev 4159)
@@ -35,22 +35,29 @@
extends AbstractBackupUseCasesTest
{
+ private BackupManagerImpl backup;
+
+ @Override
protected ExtendedBackupManager getBackupManager()
{
- InitParams initParams = new InitParams();
- PropertiesParam pps = new PropertiesParam();
- pps.setProperty(BackupManagerImpl.FULL_BACKUP_TYPE,
-
"org.exoplatform.services.jcr.ext.backup.impl.fs.FullBackupJob");
- pps.setProperty(BackupManagerImpl.INCREMENTAL_BACKUP_TYPE,
-
"org.exoplatform.services.jcr.ext.backup.impl.fs.IncrementalBackupJob");
- pps.setProperty(BackupManagerImpl.BACKUP_DIR,
"target/backup_testBackupManager");
- pps.setProperty(BackupManagerImpl.DEFAULT_INCREMENTAL_JOB_PERIOD,
"3600");
+ if (backup == null)
+ {
- initParams.put(BackupManagerImpl.BACKUP_PROPERTIES, pps);
+ InitParams initParams = new InitParams();
+ PropertiesParam pps = new PropertiesParam();
+ pps.setProperty(BackupManagerImpl.FULL_BACKUP_TYPE,
+ "org.exoplatform.services.jcr.ext.backup.impl.fs.FullBackupJob");
+ pps.setProperty(BackupManagerImpl.INCREMENTAL_BACKUP_TYPE,
+
"org.exoplatform.services.jcr.ext.backup.impl.fs.IncrementalBackupJob");
+ pps.setProperty(BackupManagerImpl.BACKUP_DIR,
"target/backup_testBackupManager");
+ pps.setProperty(BackupManagerImpl.DEFAULT_INCREMENTAL_JOB_PERIOD,
"3600");
- BackupManagerImpl backupManagerImpl = new BackupManagerImpl(initParams,
repositoryService);
- backupManagerImpl.start();
+ initParams.put(BackupManagerImpl.BACKUP_PROPERTIES, pps);
- return backupManagerImpl;
+ backup = new BackupManagerImpl(initParams, repositoryService);
+ backup.start();
+ }
+
+ return backup;
}
}
Modified:
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestRDBMSBackupManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestRDBMSBackupManager.java 2011-03-22
09:17:49 UTC (rev 4158)
+++
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestRDBMSBackupManager.java 2011-03-22
09:18:55 UTC (rev 4159)
@@ -31,24 +31,29 @@
public class TestRDBMSBackupManager extends AbstractBackupUseCasesTest
{
+ private BackupManagerImpl backup;
+
@Override
protected ExtendedBackupManager getBackupManager()
{
- InitParams initParams = new InitParams();
- PropertiesParam pps = new PropertiesParam();
- pps.setProperty(BackupManagerImpl.FULL_BACKUP_TYPE,
-
"org.exoplatform.services.jcr.ext.backup.impl.rdbms.FullBackupJob");
- pps.setProperty(BackupManagerImpl.INCREMENTAL_BACKUP_TYPE,
-
"org.exoplatform.services.jcr.ext.backup.impl.fs.IncrementalBackupJob");
- pps.setProperty(BackupManagerImpl.BACKUP_DIR,
"target/backup_testRDBMSBackupManager");
- pps.setProperty(BackupManagerImpl.DEFAULT_INCREMENTAL_JOB_PERIOD,
"3600");
+ if (backup == null)
+ {
+ InitParams initParams = new InitParams();
+ PropertiesParam pps = new PropertiesParam();
+ pps.setProperty(BackupManagerImpl.FULL_BACKUP_TYPE,
+
"org.exoplatform.services.jcr.ext.backup.impl.rdbms.FullBackupJob");
+ pps.setProperty(BackupManagerImpl.INCREMENTAL_BACKUP_TYPE,
+
"org.exoplatform.services.jcr.ext.backup.impl.fs.IncrementalBackupJob");
+ pps.setProperty(BackupManagerImpl.BACKUP_DIR,
"target/backup_testRDBMSBackupManager");
+ pps.setProperty(BackupManagerImpl.DEFAULT_INCREMENTAL_JOB_PERIOD,
"3600");
- initParams.put(BackupManagerImpl.BACKUP_PROPERTIES, pps);
+ initParams.put(BackupManagerImpl.BACKUP_PROPERTIES, pps);
- BackupManagerImpl backupManagerImpl = new BackupManagerImpl(initParams,
repositoryService);
- backupManagerImpl.start();
+ backup = new BackupManagerImpl(initParams, repositoryService);
+ backup.start();
+ }
- return backupManagerImpl;
+ return backup;
}
}
Modified:
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestRdbmsWorkspaceInitializer.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestRdbmsWorkspaceInitializer.java 2011-03-22
09:17:49 UTC (rev 4158)
+++
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestRdbmsWorkspaceInitializer.java 2011-03-22
09:18:55 UTC (rev 4159)
@@ -28,7 +28,6 @@
import org.exoplatform.services.jcr.impl.core.query.SystemSearchManager;
import org.exoplatform.services.jcr.impl.core.value.ValueFactoryImpl;
import org.exoplatform.services.jcr.impl.util.io.FileCleanerHolder;
-import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.jcr.util.TesterConfigurationHelper;
import java.io.File;
@@ -43,7 +42,7 @@
*/
public class TestRdbmsWorkspaceInitializer extends BaseRDBMSBackupTest
{
- TesterConfigurationHelper helper = TesterConfigurationHelper.getInstence();
+ TesterConfigurationHelper helper = TesterConfigurationHelper.getInstance();
public void testRDBMSInitializerRestoreTablesMultiDB() throws Exception
{
@@ -65,55 +64,43 @@
{
if (workspaceEntry.getName().equals("ws1"))
{
- String newValueStoragePath = "target/temp/values/" +
IdGenerator.generate();
- String newIndexPath = "target/temp/index/" +
IdGenerator.generate();
-
- String dsName = helper.getNewDataSource("");
-
- // set the initializer
+ String dsName = helper.createDatasource();
WorkspaceEntry newEntry =
- helper.getNewWs("ws" + System.currentTimeMillis(), true, dsName,
newValueStoragePath, newIndexPath,
- workspaceEntry.getContainer(),
workspaceEntry.getContainer().getValueStorages());
+ helper.createWorkspaceEntry(true, dsName,
+
helper.getValueStorageIds(workspaceEntry.getContainer().getValueStorages()));
- WorkspaceInitializerEntry wiEntry = new WorkspaceInitializerEntry();
- wiEntry.setType(RdbmsWorkspaceInitializer.class.getCanonicalName());
-
List<SimpleParameterEntry> wieParams = new
ArrayList<SimpleParameterEntry>();
wieParams.add(new
SimpleParameterEntry(SysViewWorkspaceInitializer.RESTORE_PATH_PARAMETER, new File(url
.getFile()).getParent()));
+ WorkspaceInitializerEntry wiEntry = new WorkspaceInitializerEntry();
+ wiEntry.setType(RdbmsWorkspaceInitializer.class.getCanonicalName());
wiEntry.setParameters(wieParams);
-
newEntry.setInitializer(wiEntry);
- repositoryService.getRepository("db1").configWorkspace(newEntry);
-
repositoryService.getRepository("db1").createWorkspace(newEntry.getName());
+ // restore
+ helper.addWorkspace(repositoryService.getRepository("db1"),
newEntry);
- dsName = helper.getNewDataSource("");
-
- newValueStoragePath = "target/temp/values/" +
IdGenerator.generate();
- newIndexPath = "target/temp/index/" + IdGenerator.generate();
-
- // set the initializer
+ dsName = helper.createDatasource();
newEntry =
- helper.getNewWs("ws" + System.currentTimeMillis(), true, dsName,
newValueStoragePath, newIndexPath,
- workspaceEntry.getContainer(),
- workspaceEntry.getContainer().getValueStorages());
+ helper.createWorkspaceEntry(true, dsName,
+
helper.getValueStorageIds(workspaceEntry.getContainer().getValueStorages()));
- wiEntry = new WorkspaceInitializerEntry();
- wiEntry.setType(RdbmsWorkspaceInitializer.class.getCanonicalName());
-
wieParams = new ArrayList<SimpleParameterEntry>();
wieParams.add(new
SimpleParameterEntry(SysViewWorkspaceInitializer.RESTORE_PATH_PARAMETER, new File(url
.getFile()).getParent()));
+ wiEntry = new WorkspaceInitializerEntry();
+ wiEntry.setType(RdbmsWorkspaceInitializer.class.getCanonicalName());
wiEntry.setParameters(wieParams);
-
newEntry.setInitializer(wiEntry);
- repositoryService.getRepository("db1").configWorkspace(newEntry);
-
repositoryService.getRepository("db1").createWorkspace(newEntry.getName());
+ // restore
+ helper.addWorkspace(repositoryService.getRepository("db1"),
newEntry);
+ String newIndexPath =
newEntry.getQueryHandler().getParameterValue("index-dir");
+ String newValueStoragePath =
newEntry.getContainer().getValueStorages().get(0).getParameterValue("path");
+
assertFalse(new File(newValueStoragePath).exists());
assertTrue(new File(newIndexPath).list().length > 0);
assertFalse(new File(newIndexPath + "_" +
SystemSearchManager.INDEX_DIR_SUFFIX).exists());
@@ -143,25 +130,18 @@
{
if (workspaceEntry.getName().equals("ws1"))
{
- String newValueStoragePath = "target/temp/values/" +
IdGenerator.generate();
- String newIndexPath = "target/temp/index/" +
IdGenerator.generate();
-
- String dsName = helper.getNewDataSource("");
-
- // set the initializer
+ String dsName = helper.createDatasource();
WorkspaceEntry newEntry =
- helper.getNewWs("ws" + System.currentTimeMillis(), true, dsName,
newValueStoragePath, newIndexPath,
- workspaceEntry.getContainer(),
workspaceEntry.getContainer().getValueStorages());
+ helper.createWorkspaceEntry(true, dsName,
+
helper.getValueStorageIds(workspaceEntry.getContainer().getValueStorages()));
- WorkspaceInitializerEntry wiEntry = new WorkspaceInitializerEntry();
- wiEntry.setType(RdbmsWorkspaceInitializer.class.getCanonicalName());
-
List<SimpleParameterEntry> wieParams = new
ArrayList<SimpleParameterEntry>();
wieParams.add(new
SimpleParameterEntry(SysViewWorkspaceInitializer.RESTORE_PATH_PARAMETER, new File(url
.getFile()).getParent()));
+ WorkspaceInitializerEntry wiEntry = new WorkspaceInitializerEntry();
+ wiEntry.setType(RdbmsWorkspaceInitializer.class.getCanonicalName());
wiEntry.setParameters(wieParams);
-
newEntry.setInitializer(wiEntry);
TesterRdbmsWorkspaceInitializer initializer =
@@ -169,33 +149,27 @@
cacheableDataManager, null, null, null, (ValueFactoryImpl)valueFactory,
null, repositoryService, new FileCleanerHolder());
// restore single -> multi
- repositoryService.getRepository("db1").configWorkspace(newEntry);
-
repositoryService.getRepository("db1").createWorkspace(newEntry.getName());
+ helper.addWorkspace(repositoryService.getRepository("db1"),
newEntry);
- dsName = helper.getNewDataSource("");
-
- newValueStoragePath = "target/temp/values/" +
IdGenerator.generate();
- newIndexPath = "target/temp/index/" + IdGenerator.generate();
-
- // set the initializer
+ dsName = helper.createDatasource();
newEntry =
- helper.getNewWs("ws" + System.currentTimeMillis(), true, dsName,
newValueStoragePath, newIndexPath,
- workspaceEntry.getContainer(),
workspaceEntry.getContainer().getValueStorages());
+ helper.createWorkspaceEntry(true, dsName,
+
helper.getValueStorageIds(workspaceEntry.getContainer().getValueStorages()));
- wiEntry = new WorkspaceInitializerEntry();
- wiEntry.setType(RdbmsWorkspaceInitializer.class.getCanonicalName());
-
wieParams = new ArrayList<SimpleParameterEntry>();
wieParams.add(new
SimpleParameterEntry(SysViewWorkspaceInitializer.RESTORE_PATH_PARAMETER, new File(url
.getFile()).getParent()));
+ wiEntry = new WorkspaceInitializerEntry();
+ wiEntry.setType(RdbmsWorkspaceInitializer.class.getCanonicalName());
wiEntry.setParameters(wieParams);
-
newEntry.setInitializer(wiEntry);
- repositoryService.getRepository("db1").configWorkspace(newEntry);
-
repositoryService.getRepository("db1").createWorkspace(newEntry.getName());
+ helper.addWorkspace(repositoryService.getRepository("db1"),
newEntry);
+ String newIndexPath =
newEntry.getQueryHandler().getParameterValue("index-dir");
+ String newValueStoragePath =
newEntry.getContainer().getValueStorages().get(0).getParameterValue("path");
+
assertFalse(new File(newValueStoragePath).exists());
assertTrue(new File(newIndexPath).list().length > 0);
assertFalse(new File(newIndexPath + "_" +
SystemSearchManager.INDEX_DIR_SUFFIX).exists());
Modified:
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java 2011-03-22
09:17:49 UTC (rev 4158)
+++
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java 2011-03-22
09:18:55 UTC (rev 4159)
@@ -23,23 +23,17 @@
import org.exoplatform.services.jcr.RepositoryService;
import org.exoplatform.services.jcr.config.CacheEntry;
import org.exoplatform.services.jcr.config.ContainerEntry;
-import org.exoplatform.services.jcr.config.LockManagerEntry;
-import org.exoplatform.services.jcr.config.LockPersisterEntry;
import org.exoplatform.services.jcr.config.QueryHandlerEntry;
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
+import org.exoplatform.services.jcr.config.RepositoryEntry;
import org.exoplatform.services.jcr.config.SimpleParameterEntry;
import org.exoplatform.services.jcr.config.ValueStorageEntry;
import org.exoplatform.services.jcr.config.ValueStorageFilterEntry;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
-import org.exoplatform.services.jcr.impl.core.RepositoryImpl;
-import org.exoplatform.services.jcr.impl.storage.jdbc.DialectDetecter;
-import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
+import org.exoplatform.services.jcr.core.ManageableRepository;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
@@ -59,96 +53,116 @@
{
private static Log log =
ExoLogger.getLogger("exo.jcr.component.core.ConfigurationHelper");
- private static TesterConfigurationHelper instence;
+ private static TesterConfigurationHelper instance;
private TesterConfigurationHelper()
{
System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.exoplatform.services.naming.SimpleContextFactory");
}
- public void createWorkspace(WorkspaceEntry workspaceEntry, ExoContainer container)
+ /**
+ * Add new workspace to repository.
+ */
+ public void addWorkspace(ManageableRepository repository, WorkspaceEntry
workspaceEntry)
throws RepositoryConfigurationException, RepositoryException
{
- RepositoryService service =
(RepositoryService)container.getComponentInstanceOfType(RepositoryService.class);
- RepositoryImpl defRep;
-
- defRep = (RepositoryImpl)service.getDefaultRepository();
- defRep.configWorkspace(workspaceEntry);
- defRep.createWorkspace(workspaceEntry.getName());
-
+ repository.configWorkspace(workspaceEntry);
+ repository.createWorkspace(workspaceEntry.getName());
}
- public String getNewDataSource(String type) throws Exception
+ /**
+ * Create new datasource.
+ *
+ * @return datasource name
+ */
+ public String createDatasource() throws Exception
{
+ String dsName = IdGenerator.generate();
- String newDS = IdGenerator.generate();
Properties properties = new Properties();
-
properties.setProperty("driverClassName",
"org.hsqldb.jdbcDriver");
- String newurl = "jdbc:hsqldb:file:target/temp/data/" + newDS;
-
- log.info("New url " + newurl);
-
- properties.setProperty("url", newurl);
+ properties.setProperty("url",
"jdbc:hsqldb:file:target/temp/data/" + dsName);
properties.setProperty("username", "sa");
properties.setProperty("password", "");
- DataSource bds = BasicDataSourceFactory.createDataSource(properties);
- if (!newurl.contains("hsqldb"))
- {
- createDatabase(bds, newDS);
- }
- new InitialContext().bind(newDS, bds);
- return newDS;
+ DataSource ds = BasicDataSourceFactory.createDataSource(properties);
+ new InitialContext().bind(dsName, ds);
+
+ return dsName;
+
}
- public WorkspaceEntry getNewWs(String wsName, boolean isMultiDb, String dsName, String
vsPath, String indexDir,
- ContainerEntry entry, List<ValueStorageEntry> valueStorage) throws Exception
+ public ManageableRepository createRepository(ExoContainer container, boolean
isMultiDb, String dsName)
+ throws Exception
{
+ RepositoryService service =
(RepositoryService)container.getComponentInstanceOfType(RepositoryService.class);
+ RepositoryEntry repoEntry = createRepositoryEntry(isMultiDb, null, dsName);
+ service.createRepository(repoEntry);
- String dbDialect = null;
- if (dsName != null)
- {
- DataSource ds = (DataSource)new InitialContext().lookup(dsName);
- if (ds != null)
- {
- Connection jdbcConn = null;
+ return service.getRepository(repoEntry.getName());
+ }
- jdbcConn = ds.getConnection();
- dbDialect = DialectDetecter.detect(jdbcConn.getMetaData());
+ /**
+ * Create workspace entry.
+ */
+ public RepositoryEntry createRepositoryEntry(boolean isMultiDb, String systemWSName,
String dsName) throws Exception
+ {
+ // create system workspace entry
+ List<String> ids = new ArrayList<String>();
+ ids.add("id");
+ WorkspaceEntry wsEntry = createWorkspaceEntry(isMultiDb, dsName, ids);
- }
+ if (systemWSName != null)
+ {
+ wsEntry.setName(systemWSName);
}
+ RepositoryEntry repository = new RepositoryEntry();
+ repository.setSystemWorkspaceName(wsEntry.getName());
+ repository.setDefaultWorkspaceName(wsEntry.getName());
+ repository.setName("repo-" + IdGenerator.generate());
+ repository.setSessionTimeOut(3600000);
+
repository.setAuthenticationPolicy("org.exoplatform.services.jcr.impl.core.access.JAASAuthenticator");
+ repository.setSecurityDomain("exo-domain");
+ repository.addWorkspace(wsEntry);
+
+ return repository;
+ }
+
+ /**
+ * Create workspace entry.
+ */
+ public WorkspaceEntry createWorkspaceEntry(boolean isMultiDb, String dsName) throws
Exception
+ {
+ List<String> ids = new ArrayList<String>();
+ ids.add("id");
+
+ return createWorkspaceEntry(isMultiDb, dsName, ids);
+ }
+
+ /**
+ * Create workspace entry.
+ */
+ public WorkspaceEntry createWorkspaceEntry(boolean isMultiDb, String dsName,
List<String> valueStorageIds)
+ throws Exception
+ {
if (dsName == null)
{
- dsName = getNewDataSource("");
+ dsName = createDatasource();
}
- List params = new ArrayList();
+ String id = IdGenerator.generate();
+ String wsName = "ws-" + id;
+ // container entry
+ List params = new ArrayList();
params.add(new SimpleParameterEntry("source-name", dsName));
- params.add(new SimpleParameterEntry("db-type", "generic"));
params.add(new SimpleParameterEntry("multi-db", isMultiDb ?
"true" : "false"));
- params.add(new SimpleParameterEntry("update-storage",
"true"));
params.add(new SimpleParameterEntry("max-buffer-size",
"204800"));
+ params.add(new SimpleParameterEntry("dialect", "auto"));
+ params.add(new SimpleParameterEntry("swap-directory",
"target/temp/swap/" + wsName));
- if (dbDialect != null)
- {
- params.add(new SimpleParameterEntry(JDBCWorkspaceDataContainer.DB_DIALECT,
dbDialect));
- }
- else if (entry.getParameterValue(JDBCWorkspaceDataContainer.DB_DIALECT) != null)
- {
- params.add(new SimpleParameterEntry(JDBCWorkspaceDataContainer.DB_DIALECT,
entry
- .getParameterValue(JDBCWorkspaceDataContainer.DB_DIALECT)));
- }
-
- String oldSwap = entry.getParameterValue("swap-directory");
- String newSwap = oldSwap.substring(0, oldSwap.lastIndexOf('/')) +
'/' + wsName;
-
- params.add(new SimpleParameterEntry("swap-directory", newSwap));
-
ContainerEntry containerEntry =
new
ContainerEntry("org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer",
(ArrayList)params);
@@ -156,9 +170,9 @@
// value storage
ArrayList list = new ArrayList();
- if (valueStorage != null)
+ if (valueStorageIds != null)
{
- for (ValueStorageEntry oldValueStorageEntry : valueStorage)
+ for (String vsId : valueStorageIds)
{
ArrayList<ValueStorageFilterEntry> vsparams = new
ArrayList<ValueStorageFilterEntry>();
ValueStorageFilterEntry filterEntry = new ValueStorageFilterEntry();
@@ -169,14 +183,13 @@
new
ValueStorageEntry("org.exoplatform.services.jcr.impl.storage.value.fs.SimpleFileValueStorage",
vsparams);
ArrayList<SimpleParameterEntry> spe = new
ArrayList<SimpleParameterEntry>();
- spe.add(new SimpleParameterEntry("path", vsPath));
- valueStorageEntry.setId(oldValueStorageEntry.getId());
+ spe.add(new SimpleParameterEntry("path",
"target/temp/values/" + wsName + "-" + vsId));
+ valueStorageEntry.setId(vsId);
valueStorageEntry.setParameters(spe);
valueStorageEntry.setFilters(vsparams);
// containerEntry.setValueStorages();
containerEntry.setParameters(params);
-
list.add(valueStorageEntry);
}
}
@@ -184,164 +197,49 @@
containerEntry.setValueStorages(list);
// Indexer
- ArrayList qParams = new ArrayList();
- qParams.add(new SimpleParameterEntry("index-dir", indexDir));
+ params = new ArrayList();
+ params.add(new SimpleParameterEntry("index-dir",
"target/temp/index/" + wsName));
QueryHandlerEntry qEntry =
- new
QueryHandlerEntry("org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex",
qParams);
-
- WorkspaceEntry workspaceEntry =
- new WorkspaceEntry(wsName != null ? wsName : IdGenerator.generate(),
"nt:unstructured");
- workspaceEntry.setContainer(containerEntry);
-
+ new
QueryHandlerEntry("org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex",
params);
+
+ // Cache
ArrayList cacheParams = new ArrayList();
-
cacheParams.add(new SimpleParameterEntry("maxSize", "2000"));
cacheParams.add(new SimpleParameterEntry("liveTime", "20m"));
CacheEntry cacheEntry = new CacheEntry(cacheParams);
cacheEntry.setType("org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl");
+ WorkspaceEntry workspaceEntry = new WorkspaceEntry();
+ workspaceEntry.setContainer(containerEntry);
workspaceEntry.setCache(cacheEntry);
-
workspaceEntry.setQueryHandler(qEntry);
+ workspaceEntry.setName(wsName);
+ workspaceEntry.setUniqueName(wsName);
- LockManagerEntry lockManagerEntry = new LockManagerEntry();
- lockManagerEntry.setTimeout(900000);
- LockPersisterEntry persisterEntry = new LockPersisterEntry();
-
persisterEntry.setType("org.exoplatform.services.jcr.impl.core.lock.FileSystemLockPersister");
- ArrayList lpParams = new ArrayList();
- lpParams.add(new SimpleParameterEntry("path",
"../temp/lock"));
- persisterEntry.setParameters(lpParams);
- lockManagerEntry.setPersister(persisterEntry);
- workspaceEntry.setLockManager(lockManagerEntry);
-
- // workspaceEntry
return workspaceEntry;
}
- // public WorkspaceEntry getNewWsOnDataSource(String wsName, boolean isMultiDb,
String dsName, String vsPath,
- // ContainerEntry entry) throws Exception
- // {
- //
- // String dbDialect = null;
- // if (dsName != null)
- // {
- // DataSource ds = (DataSource)new InitialContext().lookup(dsName);
- // if (ds != null)
- // {
- // Connection jdbcConn = null;
- //
- // jdbcConn = ds.getConnection();
- // dbDialect = DialectDetecter.detect(jdbcConn.getMetaData());
- // }
- // }
- //
- // List params = new ArrayList();
- //
- // if (isMultiDb && dsName == null)
- // {
- // dsName = getNewDataSource("");
- // }
- //
- // params.add(new SimpleParameterEntry("sourceName", dsName));
- // params.add(new SimpleParameterEntry("db-type",
"generic"));
- // params.add(new SimpleParameterEntry("multi-db", isMultiDb ?
"true" : "false"));
- // params.add(new SimpleParameterEntry("update-storage",
"true"));
- // params.add(new SimpleParameterEntry("max-buffer-size",
"204800"));
- //
- // if (dbDialect != null)
- // {
- // params.add(new SimpleParameterEntry(JDBCWorkspaceDataContainer.DB_DIALECT,
dbDialect));
- // }
- // else if (entry.getParameterValue(JDBCWorkspaceDataContainer.DB_DIALECT) !=
null)
- // {
- // params.add(new SimpleParameterEntry(JDBCWorkspaceDataContainer.DB_DIALECT,
entry
- // .getParameterValue(JDBCWorkspaceDataContainer.DB_DIALECT)));
- // }
- //
- // String oldSwap = entry.getParameterValue("swap-directory");
- // String newSwap = oldSwap.substring(0, oldSwap.lastIndexOf('/')) +
'/' + wsName;
- //
- // params.add(new SimpleParameterEntry("swap-directory", newSwap));
- //
- // ContainerEntry containerEntry =
- // new
ContainerEntry("org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer",
- // (ArrayList)params);
- // containerEntry.setParameters(params);
- //
- // if (vsPath != null)
- // {
- //
- // ArrayList<ValueStorageFilterEntry> vsparams = new
ArrayList<ValueStorageFilterEntry>();
- // ValueStorageFilterEntry filterEntry = new ValueStorageFilterEntry();
- // filterEntry.setPropertyType("Binary");
- // vsparams.add(filterEntry);
- //
- // ValueStorageEntry valueStorageEntry =
- // new
ValueStorageEntry("org.exoplatform.services.jcr.impl.storage.value.fs.SimpleFileValueStorage",
vsparams);
- // ArrayList<SimpleParameterEntry> spe = new
ArrayList<SimpleParameterEntry>();
- // spe.add(new SimpleParameterEntry("path", vsPath));
- // valueStorageEntry.setId(IdGenerator.generate());
- // valueStorageEntry.setParameters(spe);
- // valueStorageEntry.setFilters(vsparams);
- //
- // // containerEntry.setValueStorages();
- // containerEntry.setParameters(params);
- // ArrayList list = new ArrayList(1);
- // list.add(valueStorageEntry);
- //
- // containerEntry.setValueStorages(list);
- //
- // }
- //
- // // Indexer
- // ArrayList qParams = new ArrayList();
- // qParams.add(new SimpleParameterEntry("indexDir",
"../temp/index/" + IdGenerator.generate()));
- // QueryHandlerEntry qEntry =
- // new
QueryHandlerEntry("org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex",
qParams);
- //
- // WorkspaceEntry workspaceEntry =
- // new WorkspaceEntry(wsName != null ? wsName : IdGenerator.generate(),
"nt:unstructured");
- // workspaceEntry.setContainer(containerEntry);
- //
- // ArrayList cacheParams = new ArrayList();
- //
- // cacheParams.add(new SimpleParameterEntry("maxSize",
"2000"));
- // cacheParams.add(new SimpleParameterEntry("liveTime",
"20m"));
- // CacheEntry cacheEntry = new CacheEntry(cacheParams);
- //
cacheEntry.setType("org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl");
- //
- // workspaceEntry.setCache(cacheEntry);
- //
- // workspaceEntry.setQueryHandler(qEntry);
- //
- // LockManagerEntry lockManagerEntry = new LockManagerEntry();
- // lockManagerEntry.setTimeout(900000);
- // LockPersisterEntry persisterEntry = new LockPersisterEntry();
- //
persisterEntry.setType("org.exoplatform.services.jcr.impl.core.lock.FileSystemLockPersister");
- // ArrayList lpParams = new ArrayList();
- // lpParams.add(new SimpleParameterEntry("path",
"../temp/lock"));
- // persisterEntry.setParameters(lpParams);
- // lockManagerEntry.setPersister(persisterEntry);
- // workspaceEntry.setLockManager(lockManagerEntry);
- //
- // // workspaceEntry
- // return workspaceEntry;
- // }
-
- private void createDatabase(DataSource ds, String dbName) throws SQLException
+ public List<String> getValueStorageIds(ArrayList<ValueStorageEntry>
entries)
{
- Connection connection = ds.getConnection();
- PreparedStatement st = connection.prepareStatement("create database " +
dbName);
- st.executeQuery();
+ List<String> ids = new ArrayList<String>();
+ if (entries != null)
+ {
+ for (ValueStorageEntry entry : entries)
+ {
+ ids.add(entry.getId());
+ }
+ }
+
+ return ids;
}
- public static TesterConfigurationHelper getInstence()
+ public static TesterConfigurationHelper getInstance()
{
- if (instence == null)
+ if (instance == null)
{
- instence = new TesterConfigurationHelper();
+ instance = new TesterConfigurationHelper();
}
- return instence;
+ return instance;
}
}