From a764088a538e5d704a77b98c74aca13d553868d7 Mon Sep 17 00:00:00 2001 From: Minh Vu Date: Thu, 28 Mar 2024 09:17:42 -0700 Subject: [PATCH] add `uploadS3Key` activation parameter to specify upload file name (#82) * add `s3key` parameter to specify upload file name * rename `s3key` to `upload.s3.key` for readability and avoid conflicts * rename `s3key` to `uploadS3Key` for readability and avoid conflicts * upgrade to gradle 6 in order to apply com.jfrog.artifactory * typo --- build.gradle | 1 + cdi-core/build.gradle | 12 +- .../SecondaryInputProperties.java | 2 +- .../linkedin/cdi/connection/S3Connection.java | 133 +++++++++--------- .../converter/InFlowValidationConverter.java | 8 +- .../cdi/factory/http/HttpRequestMethod.java | 2 +- .../cdi/factory/sftp/SftpChannelClient.java | 2 +- .../com/linkedin/cdi/util/HdfsReader.java | 2 +- .../cdi/util/JsonIntermediateSchema.java | 4 +- .../com/linkedin/cdi/util/SchemaUtils.java | 6 +- .../connection/HdfsReadConnectionTest.java | 2 + .../MulstistageReadConnectionTest.java | 2 + .../DefaultConnectionClientFactoryTest.java | 2 + .../com/linkedin/cdi/keys/JobKeysTest.java | 2 + .../cdi/util/EncryptionUtilsTest.java | 2 + .../cdi/util/HttpRequestMethodTest.java | 2 + .../com/linkedin/cdi/util/JdbcUtilsTest.java | 2 + docs/parameters/ms.secondary.input.md | 8 +- gradle/java-publishing.gradle | 10 -- .../scripts/jacoco-coveralls-support.gradle | 8 +- gradle/scripts/testSetup.gradle | 29 +--- gradle/wrapper/gradle-wrapper.jar | Bin 53556 -> 55616 bytes gradle/wrapper/gradle-wrapper.properties | 7 +- gradlew | 57 ++++++-- gradlew.bat | 26 ++-- 25 files changed, 166 insertions(+), 165 deletions(-) diff --git a/build.gradle b/build.gradle index 6a5445e..d61ca15 100644 --- a/build.gradle +++ b/build.gradle @@ -67,6 +67,7 @@ subprojects { sp -> maxWarnings = 0 ignoreFailures = false } + checkstyleMain.source = ["src/main/java", "src/test/java"] } afterEvaluate { diff --git a/cdi-core/build.gradle b/cdi-core/build.gradle index bb66053..407ea22 100644 --- a/cdi-core/build.gradle +++ b/cdi-core/build.gradle @@ -26,17 +26,7 @@ sourceSets { } jacoco { - toolVersion = '0.8.0' -} - -// Exclude classes, packages from Jacoco report, which we don't need to add unit tests for. -jacocoTestReport { - afterEvaluate { - classDirectories = files(classDirectories.files.collect { - fileTree(dir: it, - exclude: ['com/linkedin/cdi/factory']) - }) - } + toolVersion = "0.8.6" } apply from: "$rootDir/gradle/java-publishing.gradle" diff --git a/cdi-core/src/main/java/com/linkedin/cdi/configuration/SecondaryInputProperties.java b/cdi-core/src/main/java/com/linkedin/cdi/configuration/SecondaryInputProperties.java index 56ca3bd..c7af544 100644 --- a/cdi-core/src/main/java/com/linkedin/cdi/configuration/SecondaryInputProperties.java +++ b/cdi-core/src/main/java/com/linkedin/cdi/configuration/SecondaryInputProperties.java @@ -99,7 +99,7 @@ public Map readAuthenticationToken(State state) { * Read authentication and activation secondary input records and payload definitions (not records) * * @return a set of JsonArrays of data read from locations specified in SECONDARY_INPUT - * property organized by category, in a Map structure + * property organized by category, in a Map<String, JsonArray> structure */ public Map readAllContext(State state) { Map secondaryInputs = new HashMap<>(); diff --git a/cdi-core/src/main/java/com/linkedin/cdi/connection/S3Connection.java b/cdi-core/src/main/java/com/linkedin/cdi/connection/S3Connection.java index e51b736..05f41fd 100644 --- a/cdi-core/src/main/java/com/linkedin/cdi/connection/S3Connection.java +++ b/cdi-core/src/main/java/com/linkedin/cdi/connection/S3Connection.java @@ -14,42 +14,35 @@ import com.linkedin.cdi.util.JsonUtils; import com.linkedin.cdi.util.SecretManager; import com.linkedin.cdi.util.WorkUnitStatus; -import java.io.BufferedInputStream; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.IOException; -import java.net.URI; -import java.nio.charset.StandardCharsets; -import java.time.Duration; -import java.util.List; -import java.util.stream.Collectors; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang.StringUtils; import org.apache.gobblin.configuration.State; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.Path; +import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import software.amazon.awssdk.auth.credentials.AnonymousCredentialsProvider; -import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; -import software.amazon.awssdk.auth.credentials.AwsCredentials; -import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; -import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; +import software.amazon.awssdk.auth.credentials.*; import software.amazon.awssdk.core.ResponseInputStream; import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.core.sync.ResponseTransformer; import software.amazon.awssdk.services.s3.S3Client; -import software.amazon.awssdk.services.s3.model.GetObjectRequest; -import software.amazon.awssdk.services.s3.model.GetObjectResponse; -import software.amazon.awssdk.services.s3.model.ListObjectsV2Request; -import software.amazon.awssdk.services.s3.model.ListObjectsV2Response; -import software.amazon.awssdk.services.s3.model.PutObjectRequest; -import software.amazon.awssdk.services.s3.model.PutObjectResponse; +import software.amazon.awssdk.services.s3.model.*; import software.amazon.awssdk.utils.AttributeMap; -import static com.linkedin.cdi.configuration.PropertyCollection.*; -import static software.amazon.awssdk.http.SdkHttpConfigurationOption.*; +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.net.URI; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.List; +import java.util.stream.Collectors; + +import static com.linkedin.cdi.configuration.PropertyCollection.MSTAGE_CONNECTION_CLIENT_FACTORY; +import static software.amazon.awssdk.http.SdkHttpConfigurationOption.CONNECTION_TIMEOUT; +import static software.amazon.awssdk.http.SdkHttpConfigurationOption.GLOBAL_HTTP_DEFAULTS; /** * S3Connection creates transmission channel with AWS S3 data provider or AWS S3 data receiver, @@ -59,6 +52,7 @@ */ public class S3Connection extends MultistageConnection { private static final Logger LOG = LoggerFactory.getLogger(S3Connection.class); + private static final String UPLOAD_S3_KEY = "uploadS3Key"; final private S3Keys s3SourceV2Keys; private S3Client s3Client = null; @@ -84,12 +78,16 @@ public S3Connection(State state, JobKeys jobKeys, ExtractorKeys extractorKeys) { public WorkUnitStatus execute(WorkUnitStatus status) { s3Client = getS3HttpClient(getState()); - String finalPrefix = getWorkUnitSpecificString(s3SourceV2Keys.getPrefix(), getExtractorKeys().getDynamicParameters()); + JsonObject dynamicParameters = getExtractorKeys().getDynamicParameters(); + String finalPrefix = getWorkUnitSpecificString(s3SourceV2Keys.getPrefix(), dynamicParameters); LOG.debug("Final Prefix to get files list: {}", finalPrefix); - boolean shouldUpload = StringUtils.isNotEmpty(getExtractorKeys().getPayloadsBinaryPath()); - // upload to S3 if payload is empty, otherwise download from S3 + String pathStr = getExtractorKeys().getPayloadsBinaryPath(); + boolean shouldUpload = StringUtils.isNotEmpty(pathStr); + // upload to S3 if payload is empty, otherwise download from S3 if (shouldUpload) { - ByteArrayInputStream byteArrayInputStream = handleUpload(finalPrefix); + Path path = new Path(pathStr); + String fileName = finalPrefix + "/" + getS3Key(path); + ByteArrayInputStream byteArrayInputStream = handleUpload(path, fileName); if (byteArrayInputStream != null) { status.setBuffer(byteArrayInputStream); } @@ -97,8 +95,8 @@ public WorkUnitStatus execute(WorkUnitStatus status) { } try { List files = getFilesList(finalPrefix).stream() - .filter(objectKey -> objectKey.matches(s3SourceV2Keys.getFilesPattern())) - .collect(Collectors.toList()); + .filter(objectKey -> objectKey.matches(s3SourceV2Keys.getFilesPattern())) + .collect(Collectors.toList()); LOG.debug("Number of files identified: {}", files.size()); @@ -106,21 +104,21 @@ public WorkUnitStatus execute(WorkUnitStatus status) { status.setBuffer(wrap(files)); } else { // Multiple files are returned, then only process the exact match - String fileToDownload = files.size() == 0 - ? StringUtils.EMPTY : files.size() == 1 - ? files.get(0) : finalPrefix; + String fileToDownload = files.isEmpty() + ? StringUtils.EMPTY : files.size() == 1 + ? files.get(0) : finalPrefix; if (StringUtils.isNotBlank(fileToDownload)) { LOG.debug("Downloading file: {}", fileToDownload); GetObjectRequest getObjectRequest = - GetObjectRequest.builder().bucket(s3SourceV2Keys.getBucket()).key(fileToDownload).build(); + GetObjectRequest.builder().bucket(s3SourceV2Keys.getBucket()).key(fileToDownload).build(); ResponseInputStream response = - s3Client.getObject(getObjectRequest, ResponseTransformer.toInputStream()); + s3Client.getObject(getObjectRequest, ResponseTransformer.toInputStream()); status.setBuffer(response); } else { LOG.warn("Invalid set of parameters. " - + "To list down files from a bucket, pattern parameter is needed," - + ", and to get object from s3 source target file name is needed."); + + "To list down files from a bucket, pattern parameter is needed," + + ", and to get object from s3 source target file name is needed."); } } } catch (Exception e) { @@ -130,32 +128,41 @@ public WorkUnitStatus execute(WorkUnitStatus status) { return status; } - private ByteArrayInputStream handleUpload(String finalPrefix) { + /** + * Get s3 key either from activation parameters named `UPLOAD_S3_KEY` or from the source path itself + */ + @NotNull + private String getS3Key(Path path) { + JsonObject activationParameters = getExtractorKeys().getActivationParameters(); + if(activationParameters.has(UPLOAD_S3_KEY)){ + return activationParameters.get(UPLOAD_S3_KEY).getAsString(); + } + return path.getName(); + } + + private ByteArrayInputStream handleUpload(Path path, String fileName) { // the path here should be a file path instead of a directory path. Planning should be done upfront at the Source // level and here each connection would just read a single file - String pathStr = getExtractorKeys().getPayloadsBinaryPath(); - Path path = new Path(pathStr); - LOG.info("reading from path: {}", getExtractorKeys().getPayloadsBinaryPath()); + LOG.info("reading from path: {}", path); Configuration conf = new Configuration(); try ( - FSDataInputStream fsDataInputStream = path.getFileSystem(conf).open(path); - FSDataInputStream fsDataInputStreamForMD5 = path.getFileSystem(conf).open(path); - BufferedInputStream bufferedInputStream = new BufferedInputStream(fsDataInputStream) - ) { + FSDataInputStream fsDataInputStream = path.getFileSystem(conf).open(path); + FSDataInputStream fsDataInputStreamForMD5 = path.getFileSystem(conf).open(path); + BufferedInputStream bufferedInputStream = new BufferedInputStream(fsDataInputStream) + ) { long fileSize = path.getFileSystem(conf).getFileStatus(path).getLen(); // HDFS uses MD5MD5CRC for checksum, and thus MD5 needs to be computed separately // to compare with the MD5 returned from S3 // A more detailed explanation can be found here // https://cloud.google.com/architecture/hadoop/validating-data-transfers String md5Hex = DigestUtils.md5Hex(fsDataInputStreamForMD5); - String fileName = finalPrefix + "/" + path.getName(); String bucket = s3SourceV2Keys.getBucket(); LOG.info("writing to bucket {} and key {}", bucket, fileName); PutObjectRequest putObjectRequest = PutObjectRequest - .builder() - .bucket(bucket) - .key(fileName) - .build(); + .builder() + .bucket(bucket) + .key(fileName) + .build(); RequestBody requestBody = RequestBody.fromInputStream(bufferedInputStream, fileSize); PutObjectResponse putObjectResponse = s3Client.putObject(putObjectRequest, requestBody); LOG.info("retrieved put object response"); @@ -165,21 +172,20 @@ private ByteArrayInputStream handleUpload(String finalPrefix) { boolean md5Valid = true; if (!eTagTruncated.equals(md5Hex)) { LOG.error("md5 validation failed for bucket {} and key {}:" - + " {} from S3 is different from {} of the original file", - bucket, fileName, eTag, md5Hex); + + " {} from S3 is different from {} of the original file", + bucket, fileName, eTag, md5Hex); md5Valid = false; } JsonObject jsonObject = - JsonUtils.GSON_WITH_SUPERCLASS_EXCLUSION.toJsonTree(putObjectResponse).getAsJsonObject(); + JsonUtils.GSON_WITH_SUPERCLASS_EXCLUSION.toJsonTree(putObjectResponse).getAsJsonObject(); jsonObject.addProperty("md5Valid", md5Valid); jsonObject.addProperty("bucket", bucket); jsonObject.addProperty("key", fileName); return new ByteArrayInputStream( - jsonObject.toString().getBytes(StandardCharsets.UTF_8) + jsonObject.toString().getBytes(StandardCharsets.UTF_8) ); } catch (IOException e) { - LOG.error("Encountered IO Exception when reading from path: {}", pathStr); - e.printStackTrace(); + LOG.error("Encountered IO Exception when reading from path: " + path, e); return null; } } @@ -226,16 +232,16 @@ synchronized S3Client getS3HttpClient(State state) { Integer connectionTimeout = s3SourceV2Keys.getConnectionTimeout(); AttributeMap config = connectionTimeout == null ? GLOBAL_HTTP_DEFAULTS - : GLOBAL_HTTP_DEFAULTS.toBuilder() + : GLOBAL_HTTP_DEFAULTS.toBuilder() .put(CONNECTION_TIMEOUT, Duration.ofSeconds(connectionTimeout)) .build(); s3Client = S3Client.builder() - .region(this.s3SourceV2Keys.getRegion()) - .endpointOverride(URI.create(s3SourceV2Keys.getEndpoint())) - .httpClient(factory.getS3Client(state, config)) - .credentialsProvider(getCredentialsProvider(state)) - .build(); + .region(this.s3SourceV2Keys.getRegion()) + .endpointOverride(URI.create(s3SourceV2Keys.getEndpoint())) + .httpClient(factory.getS3Client(state, config)) + .credentialsProvider(getCredentialsProvider(state)) + .build(); } catch (Exception e) { LOG.error("Error creating S3 Client: {}", e.getMessage()); } @@ -245,12 +251,13 @@ synchronized S3Client getS3HttpClient(State state) { /** * retrieve a list of objects given a bucket name and a prefix + * * @return list of object keys */ private List getFilesList(String finalPrefix) { List files = Lists.newArrayList(); ListObjectsV2Request.Builder builder = - ListObjectsV2Request.builder().bucket(s3SourceV2Keys.getBucket()).maxKeys(s3SourceV2Keys.getMaxKeys()); + ListObjectsV2Request.builder().bucket(s3SourceV2Keys.getBucket()).maxKeys(s3SourceV2Keys.getMaxKeys()); if (!finalPrefix.isEmpty()) { builder.prefix(finalPrefix); @@ -275,8 +282,8 @@ public AwsCredentialsProvider getCredentialsProvider(State state) { AwsCredentialsProvider credentialsProvider = AnonymousCredentialsProvider.create(); if (StringUtils.isNotBlank(s3SourceV2Keys.getAccessKey()) || StringUtils.isNotEmpty(s3SourceV2Keys.getSecretId())) { AwsCredentials credentials = - AwsBasicCredentials.create(SecretManager.getInstance(state).decrypt(s3SourceV2Keys.getAccessKey()), - SecretManager.getInstance(state).decrypt(s3SourceV2Keys.getSecretId())); + AwsBasicCredentials.create(SecretManager.getInstance(state).decrypt(s3SourceV2Keys.getAccessKey()), + SecretManager.getInstance(state).decrypt(s3SourceV2Keys.getSecretId())); credentialsProvider = StaticCredentialsProvider.create(credentials); } return credentialsProvider; diff --git a/cdi-core/src/main/java/com/linkedin/cdi/converter/InFlowValidationConverter.java b/cdi-core/src/main/java/com/linkedin/cdi/converter/InFlowValidationConverter.java index f68a2a9..b3681f2 100644 --- a/cdi-core/src/main/java/com/linkedin/cdi/converter/InFlowValidationConverter.java +++ b/cdi-core/src/main/java/com/linkedin/cdi/converter/InFlowValidationConverter.java @@ -40,12 +40,12 @@ * Currently following rules are defined: * * fail (upper bound rule): the source should be failed records - * Job succeeds when the row count in validation set / row count in base set < threshold - * Job fails when the row count in validation set / row count in base set >= threshold + * Job succeeds when the row count in validation set / row count in base set < threshold + * Job fails when the row count in validation set / row count in base set >= threshold * * success (lower bound rule): the source should be succeeded records - * Job succeeds when the row count in validation set / row count in base set >= threshold - * Job fails when the row count in validation set / row count in base set < threshold + * Job succeeds when the row count in validation set / row count in base set >= threshold + * Job fails when the row count in validation set / row count in base set < threshold */ public class InFlowValidationConverter extends Converter { private static final Logger LOG = LoggerFactory.getLogger(InFlowValidationConverter.class); diff --git a/cdi-core/src/main/java/com/linkedin/cdi/factory/http/HttpRequestMethod.java b/cdi-core/src/main/java/com/linkedin/cdi/factory/http/HttpRequestMethod.java index ff1942c..b430ed7 100644 --- a/cdi-core/src/main/java/com/linkedin/cdi/factory/http/HttpRequestMethod.java +++ b/cdi-core/src/main/java/com/linkedin/cdi/factory/http/HttpRequestMethod.java @@ -266,7 +266,7 @@ protected String appendParameters(String uri, JsonObject parameters) { * {"param1": "value1", "param2": "value2"} * * URL Encoded Example: - * param1=value1¶m2=value2 + * param1=value1%26param2=value2 * * @param parameters Json structured parameters * @return URL encoded entity diff --git a/cdi-core/src/main/java/com/linkedin/cdi/factory/sftp/SftpChannelClient.java b/cdi-core/src/main/java/com/linkedin/cdi/factory/sftp/SftpChannelClient.java index 01203a8..65c4546 100644 --- a/cdi-core/src/main/java/com/linkedin/cdi/factory/sftp/SftpChannelClient.java +++ b/cdi-core/src/main/java/com/linkedin/cdi/factory/sftp/SftpChannelClient.java @@ -132,7 +132,7 @@ public List ls(String path) { /** * Execute an FTP ls command with retries * @param path the target path to list content - * @param retries the number of times to try the ls command, must be > 0 + * @param retries the number of times to try the ls command, must be > 0 * @return the list of files and directories */ @Override diff --git a/cdi-core/src/main/java/com/linkedin/cdi/util/HdfsReader.java b/cdi-core/src/main/java/com/linkedin/cdi/util/HdfsReader.java index a0d54f0..2785b90 100644 --- a/cdi-core/src/main/java/com/linkedin/cdi/util/HdfsReader.java +++ b/cdi-core/src/main/java/com/linkedin/cdi/util/HdfsReader.java @@ -75,7 +75,7 @@ public List getFieldsAsList(JsonElement field) { /** * Reads secondary input paths one by one and return the JsonArrays by category - * @return a Map structure for records by category + * @return a Map<String, JsonArray> structure for records by category */ public Map readAll() { if (transientInputPayload == null || transientInputPayload.size() == 0) { diff --git a/cdi-core/src/main/java/com/linkedin/cdi/util/JsonIntermediateSchema.java b/cdi-core/src/main/java/com/linkedin/cdi/util/JsonIntermediateSchema.java index 6e0cbbd..09bc91a 100644 --- a/cdi-core/src/main/java/com/linkedin/cdi/util/JsonIntermediateSchema.java +++ b/cdi-core/src/main/java/com/linkedin/cdi/util/JsonIntermediateSchema.java @@ -19,7 +19,7 @@ /** * Recursively defined a Json Intermediate schema * - * JsonIntermediateSchema := Map + * JsonIntermediateSchema := Map<columnName, JisColumn> * * JisColumn := (columnName, nullability, JisDataType) * @@ -31,7 +31,7 @@ * * EnumType := (JsonElementType, symbolsArray) * - * UnionType := (JsonElementType, List) + * UnionType := (JsonElementType, List<JisDataType>) * */ diff --git a/cdi-core/src/main/java/com/linkedin/cdi/util/SchemaUtils.java b/cdi-core/src/main/java/com/linkedin/cdi/util/SchemaUtils.java index ab5446c..3e12754 100644 --- a/cdi-core/src/main/java/com/linkedin/cdi/util/SchemaUtils.java +++ b/cdi-core/src/main/java/com/linkedin/cdi/util/SchemaUtils.java @@ -35,9 +35,9 @@ private SchemaUtils() { * @return true if first N columns are all existing in source and false other wise * * - * Example 1: definedColumns: [A, c], sourceColumns: [a, B, C] ==> true, B in source will be ignored in projection - * Example 2: definedColumns: [A, e], sourceColumns: [a, B, C] ==> false - * Example 3: definedColumns: [A, B, C], sourceColumns: [A, B] ==> true, C is assumed to be a derived field + * Example 1: definedColumns: [A, c], sourceColumns: [a, B, C] ==> true, B in source will be ignored in projection + * Example 2: definedColumns: [A, e], sourceColumns: [a, B, C] ==> false + * Example 3: definedColumns: [A, B, C], sourceColumns: [A, B] ==> true, C is assumed to be a derived field * */ public static boolean isValidSchemaDefinition( diff --git a/cdi-core/src/test/java/com/linkedin/cdi/connection/HdfsReadConnectionTest.java b/cdi-core/src/test/java/com/linkedin/cdi/connection/HdfsReadConnectionTest.java index 77bf497..293b935 100644 --- a/cdi-core/src/test/java/com/linkedin/cdi/connection/HdfsReadConnectionTest.java +++ b/cdi-core/src/test/java/com/linkedin/cdi/connection/HdfsReadConnectionTest.java @@ -16,6 +16,7 @@ import org.apache.gobblin.source.extractor.filebased.TimestampAwareFileBasedHelper; import org.apache.gobblin.source.extractor.hadoop.HadoopFsHelper; import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import org.testng.Assert; @@ -27,6 +28,7 @@ @Test @PrepareForTest({HadoopFsHelper.class, TimestampAwareFileBasedHelper.class}) +@PowerMockIgnore("jdk.internal.reflect.*") public class HdfsReadConnectionTest extends PowerMockTestCase { @Test public void testGetFileList() throws Exception { diff --git a/cdi-core/src/test/java/com/linkedin/cdi/connection/MulstistageReadConnectionTest.java b/cdi-core/src/test/java/com/linkedin/cdi/connection/MulstistageReadConnectionTest.java index ab19f47..b6c2500 100644 --- a/cdi-core/src/test/java/com/linkedin/cdi/connection/MulstistageReadConnectionTest.java +++ b/cdi-core/src/test/java/com/linkedin/cdi/connection/MulstistageReadConnectionTest.java @@ -15,6 +15,7 @@ import com.linkedin.cdi.util.WorkUnitStatus; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import org.testng.Assert; @@ -25,6 +26,7 @@ @Test @PrepareForTest(VariableUtils.class) +@PowerMockIgnore("jdk.internal.reflect.*") public class MulstistageReadConnectionTest extends PowerMockTestCase { @Test public void testGetNext() throws RetriableAuthenticationException { diff --git a/cdi-core/src/test/java/com/linkedin/cdi/factory/DefaultConnectionClientFactoryTest.java b/cdi-core/src/test/java/com/linkedin/cdi/factory/DefaultConnectionClientFactoryTest.java index dc50379..c0eae8f 100644 --- a/cdi-core/src/test/java/com/linkedin/cdi/factory/DefaultConnectionClientFactoryTest.java +++ b/cdi-core/src/test/java/com/linkedin/cdi/factory/DefaultConnectionClientFactoryTest.java @@ -9,6 +9,7 @@ import org.apache.http.impl.client.HttpClientBuilder; import org.mockito.Mock; import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import org.testng.Assert; @@ -18,6 +19,7 @@ @PrepareForTest({HttpClientBuilder.class}) +@PowerMockIgnore("jdk.internal.reflect.*") public class DefaultConnectionClientFactoryTest extends PowerMockTestCase { @Mock private HttpClientBuilder httpClientBuilder; diff --git a/cdi-core/src/test/java/com/linkedin/cdi/keys/JobKeysTest.java b/cdi-core/src/test/java/com/linkedin/cdi/keys/JobKeysTest.java index 5073789..3967a4f 100644 --- a/cdi-core/src/test/java/com/linkedin/cdi/keys/JobKeysTest.java +++ b/cdi-core/src/test/java/com/linkedin/cdi/keys/JobKeysTest.java @@ -18,6 +18,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.gobblin.configuration.State; import org.mockito.Mockito; +import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import org.testng.Assert; @@ -29,6 +30,7 @@ @PrepareForTest({JsonUtils.class}) +@PowerMockIgnore("jdk.internal.reflect.*") public class JobKeysTest extends PowerMockTestCase { private JobKeys jobKeys; private Gson gson; diff --git a/cdi-core/src/test/java/com/linkedin/cdi/util/EncryptionUtilsTest.java b/cdi-core/src/test/java/com/linkedin/cdi/util/EncryptionUtilsTest.java index e811123..ede7d14 100644 --- a/cdi-core/src/test/java/com/linkedin/cdi/util/EncryptionUtilsTest.java +++ b/cdi-core/src/test/java/com/linkedin/cdi/util/EncryptionUtilsTest.java @@ -10,6 +10,7 @@ import org.apache.gobblin.password.PasswordManager; import org.mockito.Mock; import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import org.testng.Assert; @@ -21,6 +22,7 @@ @PrepareForTest({PasswordManager.class}) +@PowerMockIgnore("jdk.internal.reflect.*") public class EncryptionUtilsTest extends PowerMockTestCase { private final static String PLAIN_PASSWORD = "password"; private final static String ENC_PASSWORD = "ENC(M6nV+j0lhqZ36RgvuF5TQMyNvBtXmkPl)"; diff --git a/cdi-core/src/test/java/com/linkedin/cdi/util/HttpRequestMethodTest.java b/cdi-core/src/test/java/com/linkedin/cdi/util/HttpRequestMethodTest.java index 8cf1ebd..f33124f 100644 --- a/cdi-core/src/test/java/com/linkedin/cdi/util/HttpRequestMethodTest.java +++ b/cdi-core/src/test/java/com/linkedin/cdi/util/HttpRequestMethodTest.java @@ -22,6 +22,7 @@ import org.apache.http.client.methods.HttpPut; import org.apache.http.client.methods.HttpUriRequest; import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import org.testng.Assert; @@ -39,6 +40,7 @@ @Test @PrepareForTest({VariableUtils.class}) +@PowerMockIgnore("jdk.internal.reflect.*") public class HttpRequestMethodTest extends PowerMockTestCase { final static String FROM_DATETIME = "2017-01-02T00:00:00-0800"; diff --git a/cdi-core/src/test/java/com/linkedin/cdi/util/JdbcUtilsTest.java b/cdi-core/src/test/java/com/linkedin/cdi/util/JdbcUtilsTest.java index e1e4692..bda3d52 100644 --- a/cdi-core/src/test/java/com/linkedin/cdi/util/JdbcUtilsTest.java +++ b/cdi-core/src/test/java/com/linkedin/cdi/util/JdbcUtilsTest.java @@ -14,6 +14,7 @@ import org.apache.commons.lang.StringUtils; import org.mockito.Mock; import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import org.testng.Assert; @@ -29,6 +30,7 @@ */ @PrepareForTest({Base64.class}) +@PowerMockIgnore("jdk.internal.reflect.*") public class JdbcUtilsTest extends PowerMockTestCase { @Mock diff --git a/docs/parameters/ms.secondary.input.md b/docs/parameters/ms.secondary.input.md index 40837c3..2d73c19 100644 --- a/docs/parameters/ms.secondary.input.md +++ b/docs/parameters/ms.secondary.input.md @@ -89,8 +89,8 @@ is defined in `ms.watermark`. In execution, there will be 3 work units generated The `format` of payload defines in which format the payload should be read as. This field is optional and by default the input will be read as a Json array. However, if `"format":"binary"` is specified, then DIL will simply store the payload path string -in `payloadsBinaryPath` field of extractor keys to be used later. Currently the binary format is only used in S3 upload use case -where an input stream will be opened on the given path and then passed as the input to the `putObject` method for uploading to S3. +in `payloadsBinaryPath` field of extractor keys to be used later. Currently, the binary format is only used in S3 upload use case +where an input stream will be opened on the given path and then passed as the input to the `putObject` method for uploading to S3. In this upload key, the s3 key will be the last part of the path (file name), or can be configured by specifying the `uploadS3Key` field in the secondary input. The variable can only be a [job-level variables](../concepts/variables.md#job-level-variables) or a [work-unit-level static variable](../concepts/variables.md#work-unit-level-static-variables). @@ -121,4 +121,8 @@ In the following, we egress the normalized records from a prior job (`${preproce - `ms.secondary.input=[{"path": "${job.dir}/${extract.namespace}/${preprocess.table.name}", "fields": ["conversions"], "category": "payload"}]` +In the following, we specify the s3 key to upload using `s3key` parameter + +- `ms.secondary.input=[{"path": "${job.dir}/${extract.namespace}/${preprocess.table.name}", "fields": ["pathName", "uploadS3Key"], "category": "activation"}]` + [back to summary](summary.md#mssecondaryinput) \ No newline at end of file diff --git a/gradle/java-publishing.gradle b/gradle/java-publishing.gradle index a00688b..3f09df1 100644 --- a/gradle/java-publishing.gradle +++ b/gradle/java-publishing.gradle @@ -93,7 +93,6 @@ artifactory { repoKey = 'dil' username = System.getenv('ARTIFACTORY_USER') password = System.getenv('ARTIFACTORY_KEY') - maven = true } defaults { @@ -108,15 +107,6 @@ artifactory { } } } - - resolve { - repository { - repoKey = 'release' - username = System.getenv('ARTIFACTORY_USER') - password = System.getenv('ARTIFACTORY_KEY') - maven = true - } - } } artifactoryPublish { diff --git a/gradle/scripts/jacoco-coveralls-support.gradle b/gradle/scripts/jacoco-coveralls-support.gradle index a6977dd..a1f28f8 100644 --- a/gradle/scripts/jacoco-coveralls-support.gradle +++ b/gradle/scripts/jacoco-coveralls-support.gradle @@ -8,7 +8,7 @@ apply plugin: 'jacoco' -ext.jacocoVersion = '0.8.1' +ext.jacocoVersion = '0.8.6' jacoco { toolVersion = jacocoVersion @@ -30,11 +30,5 @@ subprojects { xml.enabled = true csv.enabled = false } - - afterEvaluate { - classDirectories = files(classDirectories.files.collect { - fileTree(dir: it, exclude: 'helix-*.jar') - }) - } } } diff --git a/gradle/scripts/testSetup.gradle b/gradle/scripts/testSetup.gradle index 15c24f8..72118f6 100644 --- a/gradle/scripts/testSetup.gradle +++ b/gradle/scripts/testSetup.gradle @@ -4,7 +4,6 @@ subprojects { plugins.withType(JavaPlugin) { - plugins.apply('findbugs') plugins.apply('checkstyle') test { @@ -30,38 +29,12 @@ subprojects { } } - findbugs { - toolVersion = findBugsVersion - ignoreFailures = false - effort = "max" - sourceSets = [sourceSets.main] // Only analyze src/java/main, not src/java/test/ - // The exclude filter file must be under "ligradle/findbugs/" for internal compatibility with ligradle FindBugs - excludeFilter = file(rootProject.projectDir.path + "/quality/findbugsExclude.xml") - } checkstyle { toolVersion = '7.6.1' configFile = rootProject.file('gradle/checkstyle/checkstyle.xml') } - } - tasks.withType(FindBugs) { - // Only one findbugs report can be enabled at a time. - // There are 3 kinds of reports in gobblin. - // 1. xml - when withFindBugsXmlReport is set - // 2. xml:withMessages - For Li internal builds - // 3. html - otherwise - if (project.hasProperty("withFindBugsXmlReport") && reports.find { it.name == "xml:withMessages"} == null) { - reports { - html.enabled = false - xml.enabled = true - } - } - else if (reports.find { it.name == "xml:withMessages"} == null) { - reports { - html.enabled = true - xml.enabled = false - } - } + checkstyleMain.source = ["src/main/java", "src/test/java"] } tasks.withType(Test) { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index ca78035ef0501d802d4fc55381ef2d5c3ce0ec6e..5c2d1cf016b3885f6930543d57b744ea8c220a1a 100644 GIT binary patch literal 55616 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