From d95bb31d89300a8bb0dc5413983feffc80a124ef Mon Sep 17 00:00:00 2001 From: vkovtun <vkovtun@ethz.ch> Date: Wed, 27 Sep 2023 14:05:51 +0200 Subject: [PATCH] BIS-753: Added a test for the data store server to read a binary file. Changed maxReadSizeInBytes for the DSS to 1MiB instead of 1KiB. --- .../server-data-store-config.properties | 2 +- .../afsserver/client/BaseApiClientTest.java | 58 ++++++++++++++---- .../ch/ethz/sis/afsserver/client/test.png | Bin 0 -> 19951 bytes .../resources/test-server-config.properties | 2 +- .../test-server-with-auth-config.properties | 2 +- 5 files changed, 50 insertions(+), 14 deletions(-) create mode 100644 server-data-store/src/test/resources/ch/ethz/sis/afsserver/client/test.png diff --git a/server-data-store/src/main/resources/server-data-store-config.properties b/server-data-store/src/main/resources/server-data-store-config.properties index 5717f55f1a5..cf70d73c76e 100755 --- a/server-data-store/src/main/resources/server-data-store-config.properties +++ b/server-data-store/src/main/resources/server-data-store-config.properties @@ -12,7 +12,7 @@ httpServerUri=/data-store-server httpServerPort=8085 httpMaxContentLength=1024 -maxReadSizeInBytes=1024 +maxReadSizeInBytes=1048576 authenticationInfoProviderClass=ch.ethz.sis.afsserver.worker.providers.impl.DummyAuthenticationInfoProvider authorizationInfoProviderClass=ch.ethz.sis.afsserver.worker.providers.impl.DummyAuthorizationInfoProvider poolSize=50 diff --git a/server-data-store/src/test/java/ch/ethz/sis/afsserver/client/BaseApiClientTest.java b/server-data-store/src/test/java/ch/ethz/sis/afsserver/client/BaseApiClientTest.java index c7e0c6b0122..a7e53cc5f47 100644 --- a/server-data-store/src/test/java/ch/ethz/sis/afsserver/client/BaseApiClientTest.java +++ b/server-data-store/src/test/java/ch/ethz/sis/afsserver/client/BaseApiClientTest.java @@ -17,23 +17,34 @@ package ch.ethz.sis.afsserver.client; -import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.CoreMatchers.containsString; -import static org.junit.Assert.*; - +import static org.hamcrest.MatcherAssert.assertThat; +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.FileInputStream; import java.io.IOException; import java.net.URI; +import java.net.URL; import java.nio.file.Path; import java.util.List; +import java.util.Set; import java.util.UUID; -import ch.ethz.sis.afsapi.dto.File; -import ch.ethz.sis.shared.io.IOUtils; -import org.junit.*; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; import ch.ethz.sis.afs.manager.TransactionConnection; +import ch.ethz.sis.afsapi.dto.File; import ch.ethz.sis.afsclient.client.AfsClient; import ch.ethz.sis.afsserver.server.Server; +import ch.ethz.sis.shared.io.IOUtils; public abstract class BaseApiClientTest { @@ -53,8 +64,14 @@ public abstract class BaseApiClientTest protected static final String FILE_B = "B.txt"; + protected static final String FILE_BINARY = "test.png"; + protected static String owner = UUID.randomUUID().toString(); + protected int binarySize = -1; + + protected byte[] binaryData = null; + protected String testDataRoot; @AfterClass @@ -66,12 +83,22 @@ public abstract class BaseApiClientTest @Before public void setUp() throws Exception { - testDataRoot = IOUtils.getPath(storageRoot, owner.toString()); + testDataRoot = IOUtils.getPath(storageRoot, owner); IOUtils.createDirectories(testDataRoot); String testDataFile = IOUtils.getPath(testDataRoot, FILE_A); IOUtils.createFile(testDataFile); IOUtils.write(testDataFile, 0, DATA); + final String binaryTestDataFile = IOUtils.getPath(testDataRoot, FILE_BINARY); + final URL resource = getClass().getClassLoader().getResource("ch/ethz/sis/afsserver/client/test.png"); + final java.io.File file = new java.io.File(resource.toURI()); + this.binarySize = (int) file.length(); + IOUtils.copy(resource.getPath(), binaryTestDataFile); + + try (final FileInputStream fis = new FileInputStream(file)) { + binaryData = fis.readAllBytes(); + } + afsClient = new AfsClient( new URI("http", null, "localhost", httpServerPort, httpServerPath, null, null)); } @@ -140,7 +167,7 @@ public abstract class BaseApiClientTest login(); List<File> list = afsClient.list(owner, "", Boolean.TRUE); - assertEquals(1, list.size()); + assertEquals(2, list.size()); assertEquals(FILE_A, list.get(0).getName()); } @@ -153,6 +180,15 @@ public abstract class BaseApiClientTest assertArrayEquals(DATA, bytes); } + @Test + public void read_binaryFile() throws Exception + { + login(); + + byte[] bytes = afsClient.read(owner, FILE_BINARY, 0L, binarySize); + assertArrayEquals(binaryData, bytes); + } + @Test public void resumeRead_getsDataFromTemporaryFile() throws Exception { @@ -229,7 +265,7 @@ public abstract class BaseApiClientTest assertTrue(deleted); List<ch.ethz.sis.afs.api.dto.File> list = IOUtils.list(testDataRoot, true); - assertEquals(0, list.size()); + assertEquals(1, list.size()); } @Test @@ -253,8 +289,8 @@ public abstract class BaseApiClientTest assertTrue(result); List<ch.ethz.sis.afs.api.dto.File> list = IOUtils.list(testDataRoot, true); - assertEquals(1, list.size()); - assertEquals(FILE_B, list.get(0).getName()); + assertEquals(2, list.size()); + assertEquals(Set.of(FILE_B, FILE_BINARY), Set.of(list.get(0).getName(), list.get(1).getName())); byte[] testDataFile = IOUtils.readFully(IOUtils.getPath(testDataRoot, FILE_B)); assertArrayEquals(DATA, testDataFile); diff --git a/server-data-store/src/test/resources/ch/ethz/sis/afsserver/client/test.png b/server-data-store/src/test/resources/ch/ethz/sis/afsserver/client/test.png new file mode 100644 index 0000000000000000000000000000000000000000..110674996771a7fd361b6364fe94472304556403 GIT binary patch literal 19951 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 literal 0 HcmV?d00001 diff --git a/server-data-store/src/test/resources/test-server-config.properties b/server-data-store/src/test/resources/test-server-config.properties index 430d16f423d..ae2c6d30812 100644 --- a/server-data-store/src/test/resources/test-server-config.properties +++ b/server-data-store/src/test/resources/test-server-config.properties @@ -29,7 +29,7 @@ httpServerPort=8085 httpServerUri=/fileserver httpMaxContentLength=1024 -maxReadSizeInBytes=1024 +maxReadSizeInBytes=1048576 authenticationInfoProviderClass=ch.ethz.sis.afsserver.worker.providers.impl.DummyAuthenticationInfoProvider authorizationInfoProviderClass=ch.ethz.sis.afsserver.worker.providers.impl.DummyAuthorizationInfoProvider poolSize=50 diff --git a/server-data-store/src/test/resources/test-server-with-auth-config.properties b/server-data-store/src/test/resources/test-server-with-auth-config.properties index cd2e462ccfc..1ee88621d70 100644 --- a/server-data-store/src/test/resources/test-server-with-auth-config.properties +++ b/server-data-store/src/test/resources/test-server-with-auth-config.properties @@ -29,7 +29,7 @@ httpServerPort=8085 httpServerUri=/fileserver httpMaxContentLength=1024 -maxReadSizeInBytes=1024 +maxReadSizeInBytes=1048576 authenticationInfoProviderClass=ch.ethz.sis.afsserver.worker.providers.impl.OpenBISAuthenticationInfoProvider authorizationInfoProviderClass=ch.ethz.sis.afsserver.worker.providers.impl.OpenBISAuthorizationInfoProvider poolSize=50 -- GitLab