/modeshape-jcr/src/test/java/org/modeshape/jcr/RepositoryBackupTest.java
https://github.com/kbachl/modeshape · Java · 127 lines · 94 code · 14 blank · 19 comment · 2 complexity · 4d5d91f4f79df9b7f4d52b3aad1cb89d MD5 · raw file
- /*
- * ModeShape (http://www.modeshape.org)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.modeshape.jcr;
- import static org.hamcrest.core.Is.is;
- import static org.junit.Assert.assertThat;
- import java.io.File;
- import java.util.concurrent.CountDownLatch;
- import java.util.concurrent.TimeUnit;
- import java.util.concurrent.atomic.AtomicReference;
- import javax.jcr.RepositoryException;
- import org.junit.After;
- import org.junit.AfterClass;
- import org.junit.Before;
- import org.junit.BeforeClass;
- import org.junit.Ignore;
- import org.junit.Test;
- import org.modeshape.common.statistic.Stopwatch;
- import org.modeshape.common.util.FileUtil;
- import org.modeshape.jcr.api.Problems;
- public class RepositoryBackupTest extends MultiUseAbstractTest {
- @BeforeClass
- public static void beforeAll() throws Exception {
- startRepository();
- // Initialize the repository data
- initializeContent(session);
- }
- @AfterClass
- public static final void afterAll() throws Exception {
- stopRepository();
- }
- protected static void initializeContent( JcrSession session ) throws Exception {
- int breadth = 10;
- int depth = 3;
- int properties = 7;
- boolean print = true;
- createSubgraph(session, "/", depth, breadth, properties, false, new Stopwatch(), print ? System.out : null, null);
- // session.save();
- }
- private File testDirectory;
- @Before
- public void setUp() throws Exception {
- testDirectory = new File("target/backupArea/backupTests");
- FileUtil.delete(testDirectory);
- }
- @After
- public void tearDown() throws Exception {
- try {
- // We want to be able to see the result of each test in 'target' directory, so don't do this ...
- // FileUtil.delete(testDirectory);
- } finally {
- testDirectory = null;
- }
- }
- @Test
- public void shouldPerformOneBackup() throws Exception {
- Stopwatch sw = new Stopwatch();
- sw.start();
- Problems problems = session().getWorkspace().getRepositoryManager().backupRepository(testDirectory);
- sw.stop();
- assertThat(problems.hasProblems(), is(false));
- printMessage("Time to perform backup: " + sw.getMaximumDuration());
- }
- @Test
- public void shouldPerformMultipleBackups() throws Exception {
- for (int i = 0; i != 3; ++i) {
- File file = new File(testDirectory, "test" + i);
- Stopwatch sw = new Stopwatch();
- sw.start();
- Problems problems = session().getWorkspace().getRepositoryManager().backupRepository(file);
- sw.stop();
- assertThat(problems.hasProblems(), is(false));
- printMessage("Time to perform backup: " + sw.getMaximumDuration());
- }
- }
- @Ignore
- @Test
- public void shouldPerformOneBackupWhileChangesAreMade() throws Exception {
- JcrSession session = session();
- session.getRootNode().addNode("extras");
- final File testDirectory = this.testDirectory;
- final Stopwatch sw = new Stopwatch();
- final CountDownLatch latch = new CountDownLatch(1);
- final AtomicReference<Problems> problems = new AtomicReference<Problems>();
- new Thread(() -> {
- sw.start();
- try {
- Problems backupProblems = session().getWorkspace().getRepositoryManager().backupRepository(testDirectory);
- problems.set(backupProblems);
- } catch (RepositoryException e) {
- throw new RuntimeException(e);
- }
- sw.stop();
- latch.countDown();
- }).start();
- createSubgraph(session, "/extras", 1, 2, 2, false, new Stopwatch(), print ? System.out : null, null);
- latch.await(10, TimeUnit.SECONDS);
- assertThat(problems.get().hasProblems(), is(false));
- printMessage("Time to perform backup: " + sw.getTotalDuration());
- }
- }