From 8b191d2d7792d0565fe01162c71de366a1fe5534 Mon Sep 17 00:00:00 2001 From: vkovtun <viktor.kovtun@id.ethz.ch> Date: Fri, 28 Jul 2023 18:59:12 +0200 Subject: [PATCH] SSDM-13839: Created a test for the create operation in lib-transactional-file-system. --- .../operation/CreateOperationExecutor.java | 7 +- .../AbstractTransactionConnectionTest.java | 5 ++ .../CreateTransactionOperationTest.java | 76 +++++++++++++++++++ 3 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/operation/CreateTransactionOperationTest.java diff --git a/lib-transactional-file-system/src/main/java/ch/ethz/sis/afs/manager/operation/CreateOperationExecutor.java b/lib-transactional-file-system/src/main/java/ch/ethz/sis/afs/manager/operation/CreateOperationExecutor.java index 76c03ee1887..1d690946d29 100644 --- a/lib-transactional-file-system/src/main/java/ch/ethz/sis/afs/manager/operation/CreateOperationExecutor.java +++ b/lib-transactional-file-system/src/main/java/ch/ethz/sis/afs/manager/operation/CreateOperationExecutor.java @@ -38,11 +38,13 @@ public class CreateOperationExecutor implements OperationExecutor<CreateOperatio private static final CreateOperationExecutor INSTANCE; - static { + static + { INSTANCE = new CreateOperationExecutor(); } - private CreateOperationExecutor() { + private CreateOperationExecutor() + { } public static CreateOperationExecutor getInstance() { @@ -53,7 +55,6 @@ public class CreateOperationExecutor implements OperationExecutor<CreateOperatio // Operation // - @Override public boolean prepare(final @NonNull Transaction transaction, final CreateOperation operation) throws Exception { // Check that file/directory does not exist diff --git a/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/AbstractTransactionConnectionTest.java b/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/AbstractTransactionConnectionTest.java index c0bd1714f14..52a01dc714a 100644 --- a/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/AbstractTransactionConnectionTest.java +++ b/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/AbstractTransactionConnectionTest.java @@ -160,4 +160,9 @@ public abstract class AbstractTransactionConnectionTest extends AbstractTest { public boolean move(String source, String target) throws Exception { return transaction.move(source, target); } + + public boolean create(final String source, final boolean directory) throws Exception { + return transaction.create(source, directory); + } + } diff --git a/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/operation/CreateTransactionOperationTest.java b/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/operation/CreateTransactionOperationTest.java new file mode 100644 index 00000000000..69e8e7cda6c --- /dev/null +++ b/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/operation/CreateTransactionOperationTest.java @@ -0,0 +1,76 @@ +/* + * Copyright ETH 2023 Zürich, Scientific IT Services + * + * 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 ch.ethz.sis.afs.manager.operation; + +import static ch.ethz.sis.shared.io.IOUtils.getPath; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +import ch.ethz.sis.afs.api.dto.File; +import ch.ethz.sis.shared.io.IOUtils; + +public class CreateTransactionOperationTest extends AbstractTransactionOperationTest +{ + + public static final String DIR_C = "C"; + + public static final String FILE_C = "C.txt"; + + public static final String DIR_C_PATH = IOUtils.PATH_SEPARATOR + getPath(DIR_C); + + public static final String FILE_C_PATH = IOUtils.PATH_SEPARATOR + getPath(DIR_C, FILE_C); + + @Override + public void operation() throws Exception { + create(FILE_C_PATH, false); + } + + @Test + public void operation_createFile_succeed() throws Exception { + begin(); + final String realPathC = OperationExecutor.getRealPath(getTransaction(), FILE_C_PATH); + create(FILE_C_PATH, false); + assertEquals(1, getTransaction().getOperations().size()); + assertFalse(IOUtils.exists(realPathC)); + prepare(); + commit(); + assertTrue(IOUtils.exists(realPathC)); + + final File file = IOUtils.getFile(realPathC); + assertFalse(file.getDirectory()); + } + + @Test + public void operation_createDirectory_succeed() throws Exception { + begin(); + final String realPathC = OperationExecutor.getRealPath(getTransaction(), DIR_C_PATH); + create(DIR_C_PATH, true); + assertEquals(1, getTransaction().getOperations().size()); + assertFalse(IOUtils.exists(realPathC)); + prepare(); + commit(); + assertTrue(IOUtils.exists(realPathC)); + + final File file = IOUtils.getFile(realPathC); + assertTrue(file.getDirectory()); + } + +} -- GitLab