From 5bd13b153e41afba9dbac9ac70f60a3d801a2583 Mon Sep 17 00:00:00 2001 From: Sonia Zorba <sonia.zorba@inaf.it> Date: Thu, 24 Jun 2021 10:59:25 +0200 Subject: [PATCH] Added jobId to FileInfo; Added missing tests --- .../ia2/transfer/persistence/FileDAO.java | 10 ++-- .../transfer/persistence/model/FileInfo.java | 9 ++++ .../ia2/transfer/persistence/FileDAOTest.java | 49 +++++++++++++++++++ 3 files changed, 65 insertions(+), 3 deletions(-) diff --git a/src/main/java/it/inaf/ia2/transfer/persistence/FileDAO.java b/src/main/java/it/inaf/ia2/transfer/persistence/FileDAO.java index a2227d5..37ff240 100644 --- a/src/main/java/it/inaf/ia2/transfer/persistence/FileDAO.java +++ b/src/main/java/it/inaf/ia2/transfer/persistence/FileDAO.java @@ -45,7 +45,7 @@ public class FileDAO { String sql = "SELECT n.node_id, is_public, group_read, group_write, creator_id, async_trans,\n" + "content_type, content_encoding, content_length, content_md5, name, n.location_id,\n" + "accept_views, provide_views, l.location_type, n.path <> n.relative_path AS virtual_parent,\n" - + "(SELECT user_name FROM users WHERE user_id = creator_id) AS username,\n" + + "(SELECT user_name FROM users WHERE user_id = creator_id) AS username, n.job_id,\n" + "base_path, get_os_path(n.node_id) AS os_path, ? AS vos_path, false AS is_directory\n" + "FROM node n\n" + "JOIN location l ON (n.location_id IS NOT NULL AND n.location_id = l.location_id) OR (n.location_id IS NULL AND l.location_id = ?)\n" @@ -168,7 +168,7 @@ public class FileDAO { + "n.accept_views, n.provide_views, l.location_type, n.path <> n.relative_path AS virtual_parent,\n" + "(SELECT user_name FROM users WHERE user_id = n.creator_id) AS username,\n" + "base_path, get_os_path(n.node_id) AS os_path, get_vos_path(n.node_id) AS vos_path,\n" - + "n.type = 'container' AS is_directory, n.name, n.location_id\n" + + "n.type = 'container' AS is_directory, n.name, n.location_id, n.job_id\n" + "FROM node n\n" + "JOIN node p ON p.path @> n.path\n" + "LEFT JOIN location l ON l.location_id = n.location_id\n" @@ -206,10 +206,14 @@ public class FileDAO { fi.setVirtualPath(rs.getString("vos_path")); fi.setVirtualName(rs.getString("name")); fi.setContentEncoding(rs.getString("content_encoding")); - fi.setContentLength(rs.getLong("content_length")); + long contentLength = rs.getLong("content_length"); + if (!rs.wasNull()) { + fi.setContentLength(contentLength); + } fi.setContentMd5(rs.getString("content_md5")); fi.setContentType(rs.getString("content_type")); fi.setDirectory(rs.getBoolean("is_directory")); + fi.setJobId(rs.getString("job_id")); int locationId = rs.getInt("location_id"); if (!rs.wasNull()) { fi.setLocationId(locationId); diff --git a/src/main/java/it/inaf/ia2/transfer/persistence/model/FileInfo.java b/src/main/java/it/inaf/ia2/transfer/persistence/model/FileInfo.java index d9a0e69..f634999 100644 --- a/src/main/java/it/inaf/ia2/transfer/persistence/model/FileInfo.java +++ b/src/main/java/it/inaf/ia2/transfer/persistence/model/FileInfo.java @@ -27,6 +27,7 @@ public class FileInfo { private Long contentLength; private String contentMd5; private Integer locationId; + private String jobId; public int getNodeId() { return nodeId; @@ -171,4 +172,12 @@ public class FileInfo { public void setLocationId(Integer locationId) { this.locationId = locationId; } + + public String getJobId() { + return jobId; + } + + public void setJobId(String jobId) { + this.jobId = jobId; + } } diff --git a/src/test/java/it/inaf/ia2/transfer/persistence/FileDAOTest.java b/src/test/java/it/inaf/ia2/transfer/persistence/FileDAOTest.java index 7b8dcc0..4a37a32 100644 --- a/src/test/java/it/inaf/ia2/transfer/persistence/FileDAOTest.java +++ b/src/test/java/it/inaf/ia2/transfer/persistence/FileDAOTest.java @@ -17,9 +17,11 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.test.util.ReflectionTestUtils; @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = {DataSourceConfig.class}) @@ -29,11 +31,15 @@ public class FileDAOTest { @Autowired private DataSource dataSource; + @Value("${upload_location_id}") + private int uploadLocationId; + private FileDAO dao; @BeforeEach public void init() { dao = new FileDAO(dataSource); + ReflectionTestUtils.setField(dao, "uploadLocationId", uploadLocationId); } @Test @@ -80,4 +86,47 @@ public class FileDAOTest { assertNull(dao.getRemainingQuota("/")); } + + @Test + public void testSetBusy() { + + FileInfo fileInfo = dao.getFileInfo("/public/file1").get(); + assertNull(fileInfo.getJobId()); + + dao.setBusy(fileInfo.getNodeId(), "pippo1"); + assertEquals("pippo1", dao.getFileInfo("/public/file1").get().getJobId()); + + dao.setBusy(fileInfo.getNodeId(), null); + assertNull(dao.getFileInfo("/public/file1").get().getJobId()); + } + + @Test + public void testSetOsName() { + + FileInfo fileInfo = dao.getFileInfo("/public/file1").get(); + assertTrue(fileInfo.getOsPath().endsWith("/file1")); + + dao.setOsName(fileInfo.getNodeId(), "file1-renamed"); + fileInfo = dao.getFileInfo("/public/file1").get(); + assertTrue(fileInfo.getOsPath().endsWith("/file1-renamed")); + } + + @Test + public void testUpdateFileAttributes() { + + FileInfo fileInfo = dao.getFileInfo("/public/file1").get(); + + assertNull(fileInfo.getContentLength()); + assertNull(fileInfo.getContentType()); + assertNull(fileInfo.getContentEncoding()); + assertNull(fileInfo.getContentMd5()); + + dao.updateFileAttributes(fileInfo.getNodeId(), "text/plain", "UTF-8", 50000l, "<md5>"); + + fileInfo = dao.getFileInfo("/public/file1").get(); + assertEquals(50000l, fileInfo.getContentLength()); + assertEquals("text/plain", fileInfo.getContentType()); + assertEquals("UTF-8", fileInfo.getContentEncoding()); + assertEquals("<md5>", fileInfo.getContentMd5()); + } } -- GitLab