Newer
Older
/*
* This file is part of vospace-file-service
* Copyright (C) 2021 Istituto Nazionale di Astrofisica
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package it.inaf.ia2.transfer.persistence;
import it.inaf.ia2.transfer.persistence.model.FileInfo;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import javax.sql.DataSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
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})
@TestPropertySource(locations = "classpath:test.properties")
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
public void testGetBranchFileInfo() {
List<FileInfo> fi = dao.getBranchFileInfos("/test100", "pippo");
assertEquals(3, fi.size());
List<FileInfo> fi2 = dao.getBranchFileInfos("/test100/test1001.txt", "pippo");
assertEquals(1, fi2.size());
@Test
public void testSetBranchLocationId() {
dao.setBranchLocationId("/test100", "pippo", 3);
List<FileInfo> fi = dao.getBranchFileInfos("/test100", "pippo");
assertEquals(3, fi.size());
@Test
public void testGetFileInfo() {
Optional<FileInfo> optFileInfo = dao.getFileInfo("/test1/file1.txt");
assertTrue(optFileInfo.isPresent());
FileInfo fileInfo = optFileInfo.get();
Nicola Fulvio Calabria
committed
assertEquals("/home/username1/retrieve/file1.txt", fileInfo.getOsPath());
Sonia Zorba
committed
@Test
public void testGetUnexistingFile() {
assertTrue(dao.getFileInfo("/doesnt/exist").isEmpty());
}
@Test
public void testGetArchiveFileInfos() {
List<FileInfo> fileInfos = dao.getArchiveFileInfos(Arrays.asList("/public/file1", "/public/file2", "/public/subdir1"));
Sonia Zorba
committed
assertEquals(6, fileInfos.size());
assertEquals("/home/vospace/upload/user1/file1", fileInfos.get(0).getOsPath());
assertEquals("/home/vospace/upload/user1/file2", fileInfos.get(1).getOsPath());
assertTrue(fileInfos.get(2).isDirectory());
assertEquals("/home/username1/retrieve/subdir1/file3", fileInfos.get(3).getOsPath());
assertEquals("/home/username1/retrieve/subdir1/file4", fileInfos.get(4).getOsPath());
Sonia Zorba
committed
assertEquals("portal-file", fileInfos.get(5).getVirtualName());
}
@Test
public void testGetRemainingQuota() {
assertEquals(600000l, dao.getRemainingQuota("/test_quota"));
assertEquals(200000l, dao.getRemainingQuota("/test_quota/subdir"));
}
@Test
public void testGetNoQuota() {
assertNull(dao.getRemainingQuota("/"));
}
@Test
public void testSetBusy() {
FileInfo fileInfo = dao.getFileInfo("/public/file1").get();
assertNull(fileInfo.getJobId());
dao.setBusy(fileInfo.getVirtualPath(), "pippo1");
assertEquals("pippo1", dao.getFileInfo("/public/file1").get().getJobId());
dao.setBusy(fileInfo.getVirtualPath(), null);
assertNull(dao.getFileInfo("/public/file1").get().getJobId());
}
@Test
public void testReleaseNodesByJobId() {
List<FileInfo> fi = dao.getBranchFileInfos("/test100", "pippo");
assertEquals(3, fi.size());
dao.releaseBusyNodesByJobId("pippo");
fi = dao.getBranchFileInfos("/test100", "pippo");
assertEquals(0, fi.size());
}
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
@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());
}