use of com.epam.pipeline.entity.datastorage.DataStorageFile in project cloud-pipeline by epam.
the class NFSStorageProviderTest method testMoveDeleteFile.
@Test
public void testMoveDeleteFile() {
NFSDataStorage dataStorage = new NFSDataStorage(0L, "testStorage", TEST_PATH + 3 + ":/test");
nfsProvider.createStorage(dataStorage);
String testFileName = "testFile.txt";
String testFolderName = "testFolder";
String testFolder2Name = "testFolder2";
nfsProvider.createFile(dataStorage, testFileName, "testContent".getBytes());
nfsProvider.createFolder(dataStorage, testFolderName);
nfsProvider.createFolder(dataStorage, testFolder2Name);
File dataStorageRoot = new File(testMountPoint, TEST_PATH + 3 + "/test");
String newFilePath = testFolderName + "/" + testFileName;
DataStorageFile file = nfsProvider.moveFile(dataStorage, testFileName, newFilePath);
Assert.assertEquals(newFilePath, file.getPath());
File oldFileLocation = new File(dataStorageRoot, testFileName);
File newFileLocation = new File(dataStorageRoot, newFilePath);
Assert.assertTrue(newFileLocation.exists());
Assert.assertFalse(oldFileLocation.exists());
String newFolder2Path = testFolderName + "/" + testFolder2Name;
DataStorageFolder folder = nfsProvider.moveFolder(dataStorage, testFolder2Name, newFolder2Path);
Assert.assertEquals(newFolder2Path, folder.getPath());
File oldFolderLocation = new File(dataStorageRoot, testFolder2Name);
File newFolderLocation = new File(dataStorageRoot, newFolder2Path);
Assert.assertTrue(newFolderLocation.exists());
Assert.assertFalse(oldFolderLocation.exists());
nfsProvider.deleteFile(dataStorage, newFilePath, null, true);
Assert.assertFalse(newFileLocation.exists());
nfsProvider.deleteFolder(dataStorage, newFolder2Path, true);
Assert.assertFalse(newFolderLocation.exists());
}
use of com.epam.pipeline.entity.datastorage.DataStorageFile in project cloud-pipeline by epam.
the class NFSStorageProviderTest method testCreateFileFolderAndList.
@Test
public void testCreateFileFolderAndList() {
NFSDataStorage dataStorage = new NFSDataStorage(0L, TEST_STORAGE_NAME, TEST_PATH + 2 + ":/test");
nfsProvider.createStorage(dataStorage);
String testFileName = "testFile.txt";
nfsProvider.createFile(dataStorage, testFileName, "testContent".getBytes());
File dataStorageRoot = new File(testMountPoint, TEST_PATH + 2 + "/test");
File testFile = new File(dataStorageRoot, testFileName);
Assert.assertTrue(testFile.exists());
String testFolderName = "testFolder";
nfsProvider.createFolder(dataStorage, testFolderName);
File testFolder = new File(dataStorageRoot, testFolderName);
Assert.assertTrue(testFolder.exists());
DataStorageListing listing = nfsProvider.getItems(dataStorage, null, false, DEFAULT_PAGE_SIZE, null);
Assert.assertFalse(listing.getResults().isEmpty());
Optional<AbstractDataStorageItem> loadedFile = listing.getResults().stream().filter(i -> i.getType() == DataStorageItemType.File).findFirst();
Assert.assertTrue(loadedFile.isPresent());
Assert.assertEquals(testFileName, loadedFile.get().getName());
Assert.assertEquals(testFileName, loadedFile.get().getPath());
Assert.assertNotNull(((DataStorageFile) loadedFile.get()).getChanged());
Optional<AbstractDataStorageItem> loadedFolder = listing.getResults().stream().filter(i -> i.getType() == DataStorageItemType.Folder).findFirst();
Assert.assertTrue(loadedFolder.isPresent());
Assert.assertEquals(testFolderName, loadedFolder.get().getName());
Assert.assertEquals(testFolderName + "/", loadedFolder.get().getPath());
Assert.assertNull(listing.getNextPageMarker());
listing = nfsProvider.getItems(dataStorage, null, false, 1, null);
Assert.assertEquals("2", listing.getNextPageMarker());
listing = nfsProvider.getItems(dataStorage, null, false, 1, listing.getNextPageMarker());
Assert.assertNull(listing.getNextPageMarker());
Assert.assertFalse(listing.getResults().isEmpty());
}
use of com.epam.pipeline.entity.datastorage.DataStorageFile in project cloud-pipeline by epam.
the class AttachmentFileManagerTest method setUp.
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
attachmentFileManager = new AttachmentFileManager(dataStorageManager, preferenceManager, attachmentManager, messageHelper, authManager);
Preference systemDataStorage = SystemPreferences.DATA_STORAGE_SYSTEM_DATA_STORAGE_NAME.toPreference();
systemDataStorage.setName(TEST_SYSTEM_DATA_STORAGE);
when(preferenceManager.getPreference(SystemPreferences.DATA_STORAGE_SYSTEM_DATA_STORAGE_NAME)).thenReturn(TEST_SYSTEM_DATA_STORAGE);
when(dataStorageManager.loadByNameOrId(TEST_SYSTEM_DATA_STORAGE)).thenReturn(testSystemDataStorage);
when(dataStorageManager.createDataStorageFile(Mockito.eq(1L), Mockito.anyString(), Mockito.anyString(), Mockito.any(InputStream.class))).then((Answer<DataStorageFile>) invocation -> {
String path = invocation.getArgumentAt(1, String.class);
String name = invocation.getArgumentAt(2, String.class);
DataStorageFile file = new DataStorageFile();
file.setPath(path + "/" + name);
return file;
});
when(attachmentManager.load(Mockito.anyLong())).thenAnswer(invocation -> {
Attachment attachment = new Attachment();
attachment.setId(invocation.getArgumentAt(0, Long.class));
attachment.setName(TEST_ATTACHMENT_NAME);
attachment.setPath(TEST_ATTACHMENT_PATH);
return attachment;
});
DataStorageStreamingContent content = new DataStorageStreamingContent(new ByteArrayInputStream(new byte[] { 1 }), TEST_ATTACHMENT_NAME);
when(dataStorageManager.getStreamingContent(testSystemDataStorage.getId(), TEST_ATTACHMENT_PATH, null)).thenReturn(content);
when(authManager.getAuthorizedUser()).thenReturn(TEST_USER);
}
use of com.epam.pipeline.entity.datastorage.DataStorageFile in project cloud-pipeline by epam.
the class NFSStorageProvider method getItems.
@Override
public DataStorageListing getItems(NFSDataStorage dataStorage, String path, Boolean showVersion, Integer pageSize, String marker) {
File dataStorageRoot = mount(dataStorage);
File dir = path != null ? new File(dataStorageRoot, path) : dataStorageRoot;
long offset = StringUtils.isNumeric(marker) ? Long.parseLong(marker) : 1;
try (Stream<Path> dirStream = Files.walk(dir.toPath(), 1)) {
List<AbstractDataStorageItem> dataStorageItems = dirStream.sorted().skip(// First element is a directory itself
offset).limit(pageSize).map(p -> {
File file = p.toFile();
AbstractDataStorageItem item;
if (file.isDirectory()) {
item = new DataStorageFolder();
} else {
// set size if it's a file
DataStorageFile dataStorageFile = new DataStorageFile();
dataStorageFile.setSize(file.length());
dataStorageFile.setChanged(S3Constants.getAwsDateFormat().format(new Date(file.lastModified())));
item = dataStorageFile;
}
item.setName(file.getName());
item.setPath(dataStorageRoot.toURI().relativize(file.toURI()).getPath());
return item;
}).collect(Collectors.toList());
DataStorageListing listing = new DataStorageListing();
listing.setResults(dataStorageItems);
Long nextOffset = offset + pageSize;
try (Stream<Path> nextStream = Files.walk(dir.toPath(), 1)) {
if (nextStream.skip(nextOffset).findFirst().isPresent()) {
listing.setNextPageMarker(nextOffset.toString());
}
}
return listing;
} catch (IOException e) {
throw new DataStorageException(e);
}
}
use of com.epam.pipeline.entity.datastorage.DataStorageFile in project cloud-pipeline by epam.
the class S3Helper method listVersions.
private DataStorageListing listVersions(AmazonS3 client, String bucket, String requestPath, Integer pageSize, String marker) {
ListVersionsRequest request = new ListVersionsRequest().withBucketName(bucket).withPrefix(requestPath).withDelimiter(S3Constants.DELIMITER);
if (StringUtils.hasValue(marker)) {
request.setKeyMarker(marker);
}
if (pageSize != null) {
request.setMaxResults(pageSize);
}
VersionListing versionListing;
List<AbstractDataStorageItem> items = new ArrayList<>();
Map<String, DataStorageFile> itemKeys = new HashMap<>();
String previous = null;
do {
versionListing = client.listVersions(request);
for (String commonPrefix : versionListing.getCommonPrefixes()) {
if (checkListingSize(pageSize, items, itemKeys)) {
items.addAll(itemKeys.values());
return new DataStorageListing(previous, items);
}
previous = getPreviousKey(previous, commonPrefix);
AbstractDataStorageItem folder = parseFolder(requestPath, commonPrefix);
items.add(folder);
}
for (S3VersionSummary versionSummary : versionListing.getVersionSummaries()) {
if (!pathMatch(requestPath, versionSummary.getKey())) {
continue;
}
DataStorageFile file = AbstractS3ObjectWrapper.getWrapper(versionSummary).convertToStorageFile(requestPath);
if (file == null) {
continue;
}
if (!itemKeys.containsKey(file.getName())) {
if (checkListingSize(pageSize, items, itemKeys)) {
items.addAll(itemKeys.values());
return new DataStorageListing(previous, items);
}
previous = getPreviousKey(previous, versionSummary.getKey());
Map<String, AbstractDataStorageItem> versions = new LinkedHashMap<>();
versions.put(file.getVersion(), file.copy(file));
file.setVersions(versions);
itemKeys.put(file.getName(), file);
} else {
DataStorageFile item = itemKeys.get(file.getName());
Map<String, AbstractDataStorageItem> versions = item.getVersions();
versions.put(file.getVersion(), file.copy(file));
if (isLaterVersion(file.getChanged(), item.getChanged())) {
file.setVersions(versions);
itemKeys.put(file.getName(), file);
}
}
}
request.setKeyMarker(versionListing.getNextKeyMarker());
request.setVersionIdMarker(versionListing.getNextVersionIdMarker());
} while (versionListing.isTruncated());
items.addAll(itemKeys.values());
String returnToken = versionListing.isTruncated() ? previous : null;
return new DataStorageListing(returnToken, items);
}
Aggregations