You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2021/06/11 09:04:24 UTC
[jackrabbit-filevault] branch master updated: cleanup IT to only
create file copies if necessary
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git
The following commit(s) were added to refs/heads/master by this push:
new e02261b cleanup IT to only create file copies if necessary
e02261b is described below
commit e02261b108aa4dd65fdd386b1b892d8eb8685c12
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Fri Jun 11 11:04:14 2021 +0200
cleanup IT to only create file copies if necessary
---
.../packaging/integration/ArchiveExtractionIT.java | 2 +-
.../vault/packaging/integration/ImportIT.java | 24 ++++----
.../packaging/integration/IntegrationTestBase.java | 68 +++++++++++++---------
.../packaging/integration/PackageRegistryIT.java | 14 ++---
.../registry/impl/FSPackageRegistryIT.java | 32 +++++-----
5 files changed, 71 insertions(+), 69 deletions(-)
diff --git a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ArchiveExtractionIT.java b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ArchiveExtractionIT.java
index 2f5d318..62e81d2 100644
--- a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ArchiveExtractionIT.java
+++ b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ArchiveExtractionIT.java
@@ -63,7 +63,7 @@ public class ArchiveExtractionIT extends IntegrationTestBase {
}
@Override
- public Archive getFileArchive(String name) {
+ public Archive getFileArchive(String name) throws IOException {
if (streamBufferSize > 0) {
try {
return super.getStreamArchive(name, streamBufferSize);
diff --git a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportIT.java b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportIT.java
index b4bd284..60e922a 100644
--- a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportIT.java
+++ b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportIT.java
@@ -65,7 +65,7 @@ public class ImportIT extends IntegrationTestBase {
@Test
public void testImport() throws IOException, RepositoryException, ConfigurationException {
- ZipArchive archive = new ZipArchive(getTempFile("/test-packages/tmp.zip"));
+ ZipArchive archive = new ZipArchive(getFile("/test-packages/tmp.zip"));
archive.open(true);
Node rootNode = admin.getRootNode();
ImportOptions opts = getDefaultOptions();
@@ -77,7 +77,7 @@ public class ImportIT extends IntegrationTestBase {
@Test
public void testReimportLess() throws IOException, RepositoryException, ConfigurationException {
- ZipArchive archive = new ZipArchive(getTempFile("/test-packages/tmp.zip"));
+ ZipArchive archive = new ZipArchive(getFile("/test-packages/tmp.zip"));
archive.open(true);
Node rootNode = admin.getRootNode();
ImportOptions opts = getDefaultOptions();
@@ -86,7 +86,7 @@ public class ImportIT extends IntegrationTestBase {
assertNodeExists("/tmp/foo/bar/tobi");
- ZipArchive archive2 = new ZipArchive(getTempFile("/test-packages/tmp_less.zip"));
+ ZipArchive archive2 = new ZipArchive(getFile("/test-packages/tmp_less.zip"));
archive2.open(true);
importer.run(archive2, rootNode);
@@ -95,7 +95,7 @@ public class ImportIT extends IntegrationTestBase {
@Test
public void testFilteredImport() throws IOException, RepositoryException, ConfigurationException {
- ZipArchive archive = new ZipArchive(getTempFile("/test-packages/filtered_package.zip"));
+ ZipArchive archive = new ZipArchive(getFile("/test-packages/filtered_package.zip"));
archive.open(true);
Node rootNode = admin.getRootNode();
ImportOptions opts = getDefaultOptions();
@@ -112,7 +112,7 @@ public class ImportIT extends IntegrationTestBase {
@Test
public void testUnFilteredImport() throws IOException, RepositoryException, ConfigurationException {
- ZipArchive archive = new ZipArchive(getTempFile("/test-packages/unfiltered_package.zip"));
+ ZipArchive archive = new ZipArchive(getFile("/test-packages/unfiltered_package.zip"));
archive.open(true);
Node rootNode = admin.getRootNode();
ImportOptions opts = getDefaultOptions();
@@ -129,7 +129,7 @@ public class ImportIT extends IntegrationTestBase {
@Test
public void testRelativeImport() throws IOException, RepositoryException, ConfigurationException {
- ZipArchive archive = new ZipArchive(getTempFile("/test-packages/tmp.zip"));
+ ZipArchive archive = new ZipArchive(getFile("/test-packages/tmp.zip"));
admin.getRootNode().addNode(TEST_ROOT.substring(1, TEST_ROOT.length()));
admin.save();
@@ -155,7 +155,7 @@ public class ImportIT extends IntegrationTestBase {
*/
@Test
public void testRelativeEmptyImport() throws IOException, RepositoryException, ConfigurationException {
- ZipArchive archive = new ZipArchive(getTempFile("/test-packages/empty_testnode.zip"));
+ ZipArchive archive = new ZipArchive(getFile("/test-packages/empty_testnode.zip"));
admin.getRootNode().addNode(TEST_ROOT.substring(1, TEST_ROOT.length()));
admin.save();
@@ -200,7 +200,7 @@ public class ImportIT extends IntegrationTestBase {
@Test
public void testConcurrentModificationHandling() throws IOException, RepositoryException, PackageException, ConfigurationException {
- ZipArchive archive = new ZipArchive(getTempFile("/test-packages/tags.zip"));
+ ZipArchive archive = new ZipArchive(getFile("/test-packages/tags.zip"));
archive.open(true);
Node rootNode = admin.getRootNode();
ImportOptions opts = getDefaultOptions();
@@ -220,7 +220,7 @@ public class ImportIT extends IntegrationTestBase {
@Test
public void testSNSImport() throws IOException, RepositoryException, ConfigurationException {
- ZipArchive archive = new ZipArchive(getTempFile("/test-packages/test_sns.zip"));
+ ZipArchive archive = new ZipArchive(getFile("/test-packages/test_sns.zip"));
archive.open(true);
Node rootNode = admin.getRootNode();
ImportOptions opts = getDefaultOptions();
@@ -248,7 +248,7 @@ public class ImportIT extends IntegrationTestBase {
@Test
public void testSubArchiveExtract() throws IOException, RepositoryException, ConfigurationException {
- ZipArchive archive = new ZipArchive(getTempFile("/test-packages/tmp_with_thumbnail.zip"));
+ ZipArchive archive = new ZipArchive(getFile("/test-packages/tmp_with_thumbnail.zip"));
archive.open(true);
Node rootNode = admin.getRootNode();
Node tmpNode = rootNode.addNode("tmp");
@@ -299,7 +299,7 @@ public class ImportIT extends IntegrationTestBase {
// Import with a session associated to the test user
Session session = repository.login(new SimpleCredentials(userId, userPwd.toCharArray()));
- ZipArchive archive = new ZipArchive(getTempFile("/test-packages/tmp.zip"));
+ ZipArchive archive = new ZipArchive(getFile("/test-packages/tmp.zip"));
archive.open(true);
ImportOptions opts = getDefaultOptions();
Importer importer = new Importer(opts);
@@ -333,7 +333,7 @@ public class ImportIT extends IntegrationTestBase {
// Import with a session associated to the test user
Session session = repository.login(new SimpleCredentials(userId, userPwd.toCharArray()));
- ZipArchive archive = new ZipArchive(getTempFile("/test-packages/tmp_foo.zip"));
+ ZipArchive archive = new ZipArchive(getFile("/test-packages/tmp_foo.zip"));
archive.open(true);
ImportOptions opts = getDefaultOptions();
Importer importer = new Importer(opts);
diff --git a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java
index 64e4fac..17e2804 100644
--- a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java
+++ b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java
@@ -17,11 +17,21 @@
package org.apache.jackrabbit.vault.packaging.integration;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -30,6 +40,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Properties;
import java.util.Set;
import java.util.jar.JarFile;
@@ -49,7 +60,6 @@ import javax.jcr.security.AccessControlPolicyIterator;
import javax.jcr.security.Privilege;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.api.JackrabbitSession;
import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
@@ -83,6 +93,7 @@ import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
import org.apache.jackrabbit.oak.spi.security.user.action.AccessControlAction;
import org.apache.jackrabbit.oak.spi.xml.ImportBehavior;
import org.apache.jackrabbit.oak.spi.xml.ProtectedItemImporter;
+import org.apache.jackrabbit.util.Text;
import org.apache.jackrabbit.vault.fs.api.ProgressTrackerListener;
import org.apache.jackrabbit.vault.fs.io.Archive;
import org.apache.jackrabbit.vault.fs.io.FileArchive;
@@ -98,7 +109,6 @@ import org.apache.jackrabbit.vault.packaging.impl.ActivityLog;
import org.apache.jackrabbit.vault.packaging.impl.JcrPackageManagerImpl;
import org.apache.jackrabbit.vault.packaging.impl.ZipVaultPackage;
import org.apache.jackrabbit.vault.packaging.registry.impl.JcrPackageRegistry;
-import org.apache.jackrabbit.util.Text;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
@@ -108,13 +118,6 @@ import org.junit.rules.TemporaryFolder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
/**
* {@code IntegrationTestBase}...
*/
@@ -334,26 +337,35 @@ public class IntegrationTestBase {
}
public InputStream getStream(String name) {
- InputStream in;
- in = getClass().getResourceAsStream(name);
- return in;
+ return Objects.requireNonNull(getClass().getResourceAsStream(name), "Could not find class resource with name '" + name + "'");
}
- public File getTempFile(String name) throws IOException {
- InputStream in = getStream(name);
-
- File tmpFile = tempFolder.newFile();
- FileOutputStream out = FileUtils.openOutputStream(tmpFile);
- IOUtils.copy(in, out);
- in.close();
- out.close();
- return tmpFile;
+ /**
+ *
+ * @param name
+ * @return either a new tmp file (deleted automatically at the end of the unit test) or the original file name if not encapsulated in a JAR
+ * @throws IOException
+ */
+ public File getFile(String name) throws IOException {
+ URI uri;
+ try {
+ uri = Objects.requireNonNull(getClass().getResource(name), "Could not find class resource with name '" + name + "'").toURI();
+ } catch (URISyntaxException e) {
+ throw new IOException("Could not convert class resource URL to URI", e);
+ }
+ if (uri.isOpaque()) { // non hierarchical URIs (for resources in a JAR) can not use classical file operations
+ File tmpFile = tempFolder.newFile();
+ try (InputStream in = getStream(name)) {
+ Files.copy(in, tmpFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
+ }
+ return tmpFile;
+ } else {
+ return new File(uri);
+ }
}
- public Archive getFileArchive(String name) {
- final URL packageURL = getClass().getResource(name);
- final String filename = packageURL.getFile();
- final File file = new File(filename);
+ public Archive getFileArchive(String name) throws IOException {
+ final File file = getFile(name);
if (file.isDirectory()) {
return new FileArchive(file);
} else {
@@ -362,9 +374,7 @@ public class IntegrationTestBase {
}
public Archive getStreamArchive(String name, int size) throws IOException {
- final URL packageURL = getClass().getResource(name);
- final String filename = packageURL.getFile();
- final File file = new File(filename);
+ final File file = getFile(name);
if (file.isDirectory()) {
throw new IllegalArgumentException("Can't create stream archive from directory");
} else {
diff --git a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/PackageRegistryIT.java b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/PackageRegistryIT.java
index b41efcc..b4e1a24 100644
--- a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/PackageRegistryIT.java
+++ b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/PackageRegistryIT.java
@@ -111,7 +111,7 @@ public class PackageRegistryIT extends IntegrationTestBase {
*/
@Test
public void testRegisterFileTwiceFails() throws IOException, PackageException {
- File file = getTempFile("/test-packages/tmp.zip");
+ File file = getFile("/test-packages/tmp.zip");
PackageId id = registry.register(file, false);
assertEquals("package id", TMP_PACKAGE_ID, id);
assertTrue("file should still exist", file.exists());
@@ -127,8 +127,6 @@ public class PackageRegistryIT extends IntegrationTestBase {
} catch (PackageExistsException e) {
// expected
assertEquals("colliding pid must be correct", id, e.getId());
- } finally {
- file.delete();
}
}
@@ -137,7 +135,7 @@ public class PackageRegistryIT extends IntegrationTestBase {
*/
@Test
public void testRegisterTempFileTwiceFails() throws IOException, PackageException {
- File file = getTempFile("/test-packages/tmp.zip");
+ File file = getFile("/test-packages/tmp.zip");
PackageId id = registry.register(file, false);
assertEquals("package id", TMP_PACKAGE_ID, id);
@@ -146,7 +144,7 @@ public class PackageRegistryIT extends IntegrationTestBase {
assertFalse("Package is not installed", pkg.isInstalled());
}
- file = getTempFile("/test-packages/tmp.zip");
+ file = getFile("/test-packages/tmp.zip");
try {
registry.register(file, false);
fail("registering the package twice should fail");
@@ -161,12 +159,11 @@ public class PackageRegistryIT extends IntegrationTestBase {
*/
@Test
public void testRegisterFileTwiceSucceeds() throws IOException, PackageException {
- File file = getTempFile("/test-packages/tmp.zip");
+ File file = getFile("/test-packages/tmp.zip");
PackageId id = registry.register(file, false);
assertEquals("package id", TMP_PACKAGE_ID, id);
assertTrue("file should still exist", file.exists());
registry.register(file, true);
- file.delete();
}
/**
@@ -307,10 +304,9 @@ public class PackageRegistryIT extends IntegrationTestBase {
@Test
public void testAlternativeRoot() throws IOException, PackageException, RepositoryException {
JcrPackageRegistry reg = new JcrPackageRegistry(admin, "/var/packages" , "/etc/packages");
- File file = getTempFile("/test-packages/tmp.zip");
+ File file = getFile("/test-packages/tmp.zip");
PackageId id = reg.register(file, false);
assertEquals("package id", TMP_PACKAGE_ID, id);
- file.delete();
assertNodeExists("/var/packages/my_packages/tmp.zip");
}
diff --git a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistryIT.java b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistryIT.java
index 100eb2f..03f8689 100644
--- a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistryIT.java
+++ b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSPackageRegistryIT.java
@@ -163,7 +163,7 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
*/
@Test
public void testRegisterFileTwiceFails() throws IOException, PackageException {
- File file = getTempFile("/test-packages/tmp.zip");
+ File file = getFile("/test-packages/tmp.zip");
PackageId id = registry.register(file, false);
assertEquals("package id", TMP_PACKAGE_ID, id);
assertTrue("file should still exist", file.exists());
@@ -179,8 +179,6 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
} catch (PackageExistsException e) {
// expected
assertEquals("colliding pid must be correct", id, e.getId());
- } finally {
- file.delete();
}
}
@@ -189,7 +187,7 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
*/
@Test
public void testRegisterTempFileTwiceFails() throws IOException, PackageException {
- File file = getTempFile("/test-packages/tmp.zip");
+ File file = getFile("/test-packages/tmp.zip");
PackageId id = registry.register(file, false);
assertEquals("package id", TMP_PACKAGE_ID, id);
@@ -198,7 +196,7 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
assertFalse("Package is not installed", pkg.isInstalled());
}
- file = getTempFile("/test-packages/tmp.zip");
+ file = getFile("/test-packages/tmp.zip");
try {
registry.register(file, false);
fail("registering the package twice should fail");
@@ -213,12 +211,11 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
*/
@Test
public void testRegisterFileTwiceSucceeds() throws IOException, PackageException {
- File file = getTempFile("/test-packages/tmp.zip");
+ File file = getFile("/test-packages/tmp.zip");
PackageId id = registry.register(file, false);
assertEquals("package id", TMP_PACKAGE_ID, id);
assertTrue("file should still exist", file.exists());
registry.register(file, true);
- file.delete();
// make sure package is still accessible after original has been deleted
try (RegisteredPackage registeredPackage = registry.open(id)) {
try (VaultPackage pack = registeredPackage.getPackage()) {
@@ -232,7 +229,7 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
*/
@Test
public void testRegisterExternalFileTwiceFails() throws IOException, PackageException {
- File file = getTempFile("/test-packages/tmp.zip");
+ File file = getFile("/test-packages/tmp.zip");
PackageId id = registry.registerExternal(file, false);
assertEquals("package id", TMP_PACKAGE_ID, id);
@@ -241,7 +238,7 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
assertFalse("Package is not installed", pkg.isInstalled());
}
- file = getTempFile("/test-packages/tmp.zip");
+ file = getFile("/test-packages/tmp.zip");
try {
registry.registerExternal(file, false);
fail("registering the package twice should fail");
@@ -257,7 +254,7 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
@SuppressWarnings("deprecation")
@Test
public void testRegisterExternalFileTwiceFailsLoadedRegistry() throws IOException, PackageException {
- File file = getTempFile("/test-packages/tmp.zip");
+ File file = getFile("/test-packages/tmp.zip");
PackageId id = registry.registerExternal(file, false);
assertEquals("package id", TMP_PACKAGE_ID, id);
@@ -284,12 +281,11 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
*/
@Test
public void testRegisterExternalFileTwiceSucceeds() throws IOException, PackageException {
- File file = getTempFile("/test-packages/tmp.zip");
+ File file = getFile("/test-packages/tmp.zip");
PackageId id = registry.registerExternal(file, false);
assertEquals("package id", TMP_PACKAGE_ID, id);
assertTrue("file should still exist", file.exists());
registry.registerExternal(file, true);
- file.delete();
}
/**
@@ -297,7 +293,7 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
*/
@Test
public void testRegisterExternalWithSubPackages() throws IOException, PackageException {
- File file = getTempFile("/test-packages/subtest.zip");
+ File file = getFile("/test-packages/subtest.zip");
registry.registerExternal(file, false);
assertTrue(registry.contains(PACKAGE_ID_SUB_A));
@@ -310,7 +306,7 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
*/
@Test
public void testInstallExternalWithSubPackages() throws IOException, PackageException {
- File file = getTempFile("/test-packages/subtest.zip");
+ File file = getFile("/test-packages/subtest.zip");
PackageId parentPkg = registry.registerExternal(file, false);
ExecutionPlanBuilder builder = registry.createExecutionPlan();
@@ -333,7 +329,7 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
@Test
public void testInstallExternalUnScoped() throws IOException, PackageException, RepositoryException, org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException {
- File file = getTempFile("/test-packages/mixed_package.zip");
+ File file = getFile("/test-packages/mixed_package.zip");
cleanPaths(APPLICATION_PATHS);
cleanPaths(CONTENT_PATHS);
@@ -353,7 +349,7 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
@Test
public void testInstallExternalContentScoped() throws IOException, PackageException, RepositoryException, org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException {
- File file = getTempFile("/test-packages/mixed_package.zip");
+ File file = getFile("/test-packages/mixed_package.zip");
cleanPaths(APPLICATION_PATHS);
cleanPaths(CONTENT_PATHS);
@@ -378,7 +374,7 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
@Test
public void testInstallExternalApplicationScoped() throws IOException, PackageException, RepositoryException, org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException {
- File file = getTempFile("/test-packages/mixed_package.zip");
+ File file = getFile("/test-packages/mixed_package.zip");
cleanPaths(APPLICATION_PATHS);
cleanPaths(CONTENT_PATHS);
@@ -686,7 +682,7 @@ public class FSPackageRegistryIT extends IntegrationTestBase {
@Test
public void testMetadataPersistance() throws IOException, PackageException {
- File file = getTempFile("/test-packages/package_1.0.zip");
+ File file = getFile("/test-packages/package_1.0.zip");
PackageId pkg = registry.register(file, false);
// check metadata
assertEquals(FSPackageStatus.REGISTERED, registry.getInstallState(pkg).getStatus());