import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Optional;
-
import org.immutables.gson.Gson;
import org.immutables.value.Value;
import org.onap.dcaegen2.collectors.datafile.ftp.FileServerData;
@Value.Immutable
@Gson.TypeAdapters
public abstract class FileData {
- private static final String DATAFILE_TMPDIR = "/tmp/onap_datafile/";
+ public static final String DATAFILE_TMPDIR = "/tmp/onap_datafile/";
/**
* @return the file name with no path
return URI.create(location()).getPath();
}
- public Path getLocalFileName() {
- return createLocalFileName(messageMetaData().sourceName(), name());
- }
-
- public static Path createLocalFileName(String sourceName, String fileName) {
- return Paths.get(DATAFILE_TMPDIR, sourceName + "_" + fileName);
+ public Path getLocalFilePath() {
+ return Paths.get(DATAFILE_TMPDIR, name());
}
public FileServerData fileServerData() {
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
-
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.time.Duration;
import java.util.Map;
import java.util.UUID;
-
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPut;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
-
import reactor.core.publisher.Mono;
/**
metaData.getAsJsonObject().remove(NAME_JSON_TAG).getAsString();
metaData.getAsJsonObject().remove(INTERNAL_LOCATION_JSON_TAG);
put.addHeader(X_DMAAP_DR_META, metaData.toString());
- put.setURI(getPublishUri(model.getInternalLocation().getFileName().toString()));
+ put.setURI(getPublishUri(model.getName()));
}
private void prepareBody(ConsumerDmaapModel model, HttpPut put) throws IOException {
logger.trace("starting to collectFile {}", fileData.name());
final String remoteFile = fileData.remoteFilePath();
- final Path localFile = fileData.getLocalFileName();
+ final Path localFile = fileData.getLocalFilePath();
try (FileCollectClient currentClient = createClient(fileData)) {
currentClient.open();
import java.time.Instant;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
-
import org.onap.dcaegen2.collectors.datafile.configuration.AppConfig;
import org.onap.dcaegen2.collectors.datafile.model.ConsumerDmaapModel;
import org.onap.dcaegen2.collectors.datafile.model.FileData;
import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.core.scheduler.Scheduler;
private boolean shouldBePublished(FileData fileData, Map<String, String> contextMap) {
boolean result = false;
- Path localFileName = fileData.getLocalFileName();
- if (alreadyPublishedFiles.put(localFileName) == null) {
- result = !createPublishedChecker().execute(localFileName.getFileName().toString(), contextMap);
+ Path localFilePath = fileData.getLocalFilePath();
+ if (alreadyPublishedFiles.put(localFilePath) == null) {
+ result = !createPublishedChecker().execute(fileData.name(), contextMap);
}
return result;
}
private Mono<ConsumerDmaapModel> handleFetchFileFailure(FileData fileData, Map<String, String> contextMap) {
MdcVariables.setMdcContextMap(contextMap);
- Path localFileName = fileData.getLocalFileName();
+ Path localFilePath = fileData.getLocalFilePath();
logger.error("File fetching failed, fileData {}", fileData);
- deleteFile(localFileName, contextMap);
- alreadyPublishedFiles.remove(localFileName);
+ deleteFile(localFilePath, contextMap);
+ alreadyPublishedFiles.remove(localFilePath);
currentNumberOfTasks.decrementAndGet();
return Mono.empty();
}
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.springframework.http.HttpStatus;
import org.springframework.web.util.DefaultUriBuilderFactory;
import org.springframework.web.util.UriBuilder;
-
import reactor.test.StepVerifier;
/**
private static final String TIME_ZONE_OFFSET = "UTC+05:00";
private static final String PM_FILE_NAME = "A20161224.1030-1045.bin.gz";
private static final String FTPES_ADDRESS = "ftpes://192.168.0.101:22/ftp/rop/" + PM_FILE_NAME;
- private static final String LOCAL_FILE_NAME = SOURCE_NAME + "_" + PM_FILE_NAME;
private static final String COMPRESSION = "gzip";
private static final String FILE_FORMAT_TYPE = "org.3GPP.32.435#measCollec";
.timeZoneOffset(TIME_ZONE_OFFSET) //
.name(PM_FILE_NAME) //
.location(FTPES_ADDRESS) //
- .internalLocation(Paths.get("target/" + LOCAL_FILE_NAME)) //
+ .internalLocation(Paths.get("target/" + PM_FILE_NAME)) //
.compression("gzip") //
.fileFormatType(FILE_FORMAT_TYPE) //
.fileFormatVersion(FILE_FORMAT_VERSION) //
Path actualPath = Paths.get(actualUri.getPath());
assertTrue(PUBLISH_TOPIC.equals(actualPath.getName(0).toString()));
assertTrue(FEED_ID.equals(actualPath.getName(1).toString()));
- assertTrue(LOCAL_FILE_NAME.equals(actualPath.getName(2).toString()));
+ assertTrue(PM_FILE_NAME.equals(actualPath.getName(2).toString()));
Header[] contentHeaders = actualPut.getHeaders("content-type");
assertEquals(APPLICATION_OCTET_STREAM_CONTENT_TYPE, contentHeaders[0].getValue());
when(statusLineMock.getStatusCode()).thenReturn(firstResponse, nextHttpResponses);
InputStream fileStream = new ByteArrayInputStream(FILE_CONTENT.getBytes());
- doReturn(fileStream).when(publisherTaskUnderTestSpy).createInputStream(Paths.get("target", LOCAL_FILE_NAME));
+ doReturn(fileStream).when(publisherTaskUnderTestSpy).createInputStream(Paths.get("target", PM_FILE_NAME));
}
private Map<String, String> getMetaDataAsMap(Header[] metaHeaders) {
import static org.mockito.Mockito.when;
import java.nio.file.Path;
+import java.nio.file.Paths;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
-
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.onap.dcaegen2.collectors.datafile.configuration.AppConfig;
import org.onap.dcaegen2.collectors.datafile.model.ImmutableFileData;
import org.onap.dcaegen2.collectors.datafile.model.ImmutableMessageMetaData;
import org.onap.dcaegen2.collectors.datafile.model.MessageMetaData;
-
import reactor.test.StepVerifier;
/**
private static final int PORT_22 = 22;
private static final String PM_FILE_NAME = "A20161224.1030-1045.bin.gz";
private static final String REMOTE_FILE_LOCATION = "/ftp/rop/" + PM_FILE_NAME;
- private static final Path LOCAL_FILE_LOCATION = FileData.createLocalFileName(SOURCE_NAME, PM_FILE_NAME);
+ private static final Path LOCAL_FILE_LOCATION = Paths.get(FileData.DATAFILE_TMPDIR, PM_FILE_NAME);
private static final String USER = "usr";
private static final String PWD = "pwd";
private static final String FTPES_LOCATION =