Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Karman 10882 enable GitHub checks #53

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
b0b7aa3
Merging all PSC commits to master
abhinb Jan 5, 2024
19364b0
update copyright header (#37)
apoorva918 Jan 8, 2024
820a4bc
Fixing stylecheck errors (#39)
kuldeepk3 Jan 11, 2024
b180758
Merge pull request #38 from pravega/master
sachin-j-joshi Jan 12, 2024
ffecaa1
Adding more validation (#42)
Amit-Singh40 Jan 18, 2024
9df3682
Adding logback file in pravega-sensor-collector.tgz (#44)
Amit-Singh40 Jan 18, 2024
c7c1d65
Garbage completed files delete schedule task changes (#45)
dada-dell-emc Jan 23, 2024
2040b56
Validation improvement (#48)
Amit-Singh40 Jan 23, 2024
13d830f
Support for non-transactional write. (#35)
Bhupender-Y Jan 25, 2024
4a226dc
Load logback for windows (#50)
Amit-Singh40 Feb 2, 2024
4a67317
Improve Parquet file performance (#41)
apoorva918 Feb 7, 2024
09726e9
Adding test cases for validation improvement (#51)
Amit-Singh40 Feb 7, 2024
efb6f0a
Adding checkstyle
Amit-Singh40 Feb 7, 2024
74bf4e9
Updating gradle.yml
Amit-Singh40 Feb 7, 2024
5601e0b
Test
Amit-Singh40 Feb 7, 2024
0dc11fd
test
Amit-Singh40 Feb 7, 2024
f0acf47
test
Amit-Singh40 Feb 7, 2024
ff44e3d
test
Amit-Singh40 Feb 7, 2024
a144456
test
Amit-Singh40 Feb 7, 2024
755d6ef
test
Amit-Singh40 Feb 7, 2024
80a679d
test
Amit-Singh40 Feb 7, 2024
93d0c61
test1
Amit-Singh40 Feb 7, 2024
b5c0cff
test
Amit-Singh40 Feb 8, 2024
3200b31
test
Amit-Singh40 Feb 8, 2024
6512c68
test
Amit-Singh40 Feb 8, 2024
d391c9c
test
Amit-Singh40 Feb 8, 2024
f816433
test
Amit-Singh40 Feb 8, 2024
f06309d
test
Amit-Singh40 Feb 8, 2024
b401d55
test
Amit-Singh40 Feb 8, 2024
4ae7744
test
Amit-Singh40 Feb 8, 2024
46bb46b
test
Amit-Singh40 Feb 8, 2024
764408d
test
Amit-Singh40 Feb 8, 2024
bf18934
test
Amit-Singh40 Feb 8, 2024
a363736
test
Amit-Singh40 Feb 8, 2024
afa2ec1
test
Amit-Singh40 Feb 8, 2024
3472ab4
test
Amit-Singh40 Feb 8, 2024
40bfb0e
test
Amit-Singh40 Feb 8, 2024
455d028
test
Amit-Singh40 Feb 8, 2024
44be06f
test
Amit-Singh40 Feb 8, 2024
45684ae
test
Amit-Singh40 Feb 9, 2024
349ca28
test
Amit-Singh40 Feb 9, 2024
05271b9
test
Amit-Singh40 Feb 9, 2024
946ab63
test
Amit-Singh40 Feb 9, 2024
6a40dad
test
Amit-Singh40 Feb 9, 2024
b87b02a
test
Amit-Singh40 Feb 9, 2024
a4635fd
test
Amit-Singh40 Feb 9, 2024
5582398
test
Amit-Singh40 Feb 12, 2024
cde2972
test
Amit-Singh40 Feb 12, 2024
4d234a4
test
Amit-Singh40 Feb 12, 2024
a1130fe
test
Amit-Singh40 Feb 12, 2024
09e5f64
test
Amit-Singh40 Feb 12, 2024
066c96b
test
Amit-Singh40 Feb 12, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#
# Copyright Pravega Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
codecov:
require_ci_to_pass: yes
max_report_age: off
notify:
wait_for_ci: yes

coverage:
status:
project:
default:
threshold: 0.5%
patch:
default:
target: 80%
ignore:
- "**/generated/**"
- "standalone"
- "test"
154 changes: 154 additions & 0 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
#
# Copyright (c) Dell Inc., or its subsidiaries. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
name: build

on: [push, pull_request, workflow_dispatch]
# workflow_dispatch should make manually triggered ci/cd possible
# workflow file (like this) with `workflow_dispatch` after on should exist on the **master** or default branch,
# or there will be no ui for a manual trigger. https://github.community/t/workflow-dispatch-event-not-working/128856/2

#
# Set 'GRADLE_OPTS' to pass additional custom parameters to each ./gradlew invocation in this workflow.
# Example '--info' or '--debug'.
#GRADLE_OPTS: --info

# The workflow begins with a compilation and static analysis job that also caches the build output and source code,
# followed by a number of parallel test jobs (which make use of that cached artifacts).
#
# Once the build job and all the test jobs complete successfully, a final (no-op) job ("build_and_test_complete") will
# automatically complete. This job must NOT be renamed as the GitHub Pravega Repository gates merges into master on
# this step passing.
#
# Finally, a "snapshot" job is triggered only for pushes (commits) to master and release branches, which publishes all
# artifacts to a public repository.

env:
GLOBAL_CACHE_PATH: |
~/.gradle
~/.m2
GLOBAL_CACHE_KEY: gradle-m2-java-11
GLOBAL_CACHE_RESTORE_KEYS: |
gradle-m2-java-
gradle-m2
# We cache the class files, resources and build output. This is generated on the build job and reused in dependent jobs.
# If there are subsequent builds this includes test execution.
BUILD_CACHE_PATH: |
.gradle
./bin
**/bin
**/build

REPORTS_LOCATIONS: |
pravega-sensor-collector/build/reports


jobs:
build:
name: Build
runs-on: ubuntu-20.04
steps:
- name: Build Information
run: echo Building a '${{ github.event_name }}' for target '${{ github.ref }}'.
- name: Checkout
uses: actions/checkout@v2
- uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '11'
- name: Test script
run: ./scripts/build-installer.sh
- name: Clean
if: ${{ startsWith(github.ref, 'refs/heads/') }}
run: ./gradlew clean ${{env.GRADLE_OPTS}}
- name: Compile & Checkstyle
run: ./gradlew jar compileTest checkstyleMain checkstyleTest --parallel ${{env.GRADLE_OPTS}}
- name: Spotbugs
run: ./gradlew spotbugsMain spotbugsTest
- name: Tar Reports
run: tar --use-compress-program zstd -cf reports-${{github.job}}.tzst `echo ${{env.REPORTS_LOCATIONS}}`
- name: Upload Reports
uses: actions/upload-artifact@v2
with:
name: ${{github.job}}-reports
retention-days: 4
path: reports-${{github.job}}.tzst
# Uncomment these two lines if you need ssh access to debug a build.
# - name: Setup upterm session
# uses: lhotari/action-upterm@v1


unit_test:
name: PSC Unit Tests
needs: build
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
- uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '11'
- name: Unit tests
run: ./gradlew build --parallel ${{env.GRADLE_OPTS}}
- name: PWD
run: pwd
- name: LS
run: ls
- name: LS PSC/build
run: ls pravega-sensor-collector/build
- name: Tar Reports
run: tar --use-compress-program zstd -cf reports-${{github.job}}.tzst `echo ${{env.REPORTS_LOCATIONS}}`
- name: Upload Reports
if: always()
uses: actions/upload-artifact@v2
with:
name: ${{github.job}}-reports
retention-days: 4
path: reports-${{github.job}}.tzst


# DO NOT RENAME THIS JOB. Mergers to master branch are gated on this completing successfully.
build_and_test_complete:
name: CI Complete
needs: [build, unit_test]
runs-on: ubuntu-20.04
steps:
- name: Check Build Status
run: echo Build, static analysis, unit and integration tests successful.
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Download code coverage reports
uses: actions/download-artifact@v2
- name: Untar reports
run: ( ls */reports-*.tzst | xargs -n1 tar --use-compress-program zstd --keep-newer-files -xf )
- name: Upload to Codecov
uses: codecov/codecov-action@v1

snapshot:
name: Publish snapshot packages
needs: [build_and_test_complete]
# Only run this on PUSH (no pull requests) and only on the master branch and release branches.
if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/r0.') || startsWith(github.ref, 'refs/heads/r1.')) }}
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '11'
- name: Assemble
run: ./gradlew assemble --parallel ${{env.GRADLE_OPTS}}
- name: Publish to GitHub Packages
run: ./gradlew publish -PpublishUrl=https://maven.pkg.github.com/${{github.repository}} -PpublishUsername=${{github.actor}} -PpublishPassword=${{secrets.GITHUB_TOKEN}} ${{env.GRADLE_OPTS}}
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,8 @@ For a list of commonly-used configuration values, see the
| `PRAVEGA_SENSOR_COLLECTOR_RAW1_DELETE_COMPLETED_FILES` | `false` | If true, PSC immediately delete the file soon after processing |
| `PRAVEGA_SENSOR_COLLECTOR_RAW1_TRANSACTION_TIMEOUT_MINUTES` | `2.0` | Timeout for each transaction. Default value is 2 minutes |
| `PRAVEGA_SENSOR_COLLECTOR_RAW1_CREATE_SCOPE` | `false` | If Pravega is on SDP, set this to `false`. Accept Boolean value. |
| `PRAVEGA_SENSOR_COLLECTOR_RAW1_EXACTLY_ONCE` | true | If true, it will use transactional write. For raw file ingestion it is recommended to set it as false as in transactional write, client can process maximum file size of 8mb. |
| `PRAVEGA_SENSOR_COLLECTOR_RAW1_ENABLE_LARGE_EVENT` | false | if false, will not allow to write large event. It is recommended to set it as true for non transactional write. |
| `HADOOP_HOME` | `${HOME}/dev` | For windows, Hadoop requires native libraries on Windows to work properly. You can download `Winutils.exe` to fix this. <br> See [here](https://cwiki.apache.org/confluence/display/HADOOP2/WindowsProblems). Add the location of bin/winutils.exe in the parameter HADOOP_HOME. <br> **This is required only for Parquet file type not for CSV and Raw file ingestion type** |


Expand Down
33 changes: 33 additions & 0 deletions pravega-sensor-collector/.codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#
# Copyright Pravega Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
codecov:
require_ci_to_pass: yes
max_report_age: off
notify:
wait_for_ci: yes

coverage:
status:
project:
default:
threshold: 0.5%
patch:
default:
target: 80%
ignore:
- "**/generated/**"
- "standalone"
- "test"
15 changes: 15 additions & 0 deletions pravega-sensor-collector/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ apply plugin: "com.github.spotbugs"
apply plugin: 'checkstyle'
apply plugin: "application"
apply plugin: "com.github.johnrengelman.shadow"
apply plugin: "jacoco"

group = "io.pravega"
archivesBaseName = "pravega-sensor-collector"
Expand Down Expand Up @@ -156,3 +157,17 @@ checkstyle {
}
}


plugins.withId('jacoco') {
jacoco {
toolVersion = "0.8.5"
}
jacocoTestReport {
reports {
xml.enabled true
html.enabled false
}
}

test { finalizedBy jacocoTestReport }
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
export pravega_client_auth_method=Bearer
export pravega_client_auth_loadDynamic=true
export KEYCLOAK_SERVICE_ACCOUNT_FILE=/opt/pravega-sensor-collector/conf/keycloak.json
export JAVA_OPTS="-Xmx512m"
export JAVA_OPTS="-Xmx512m -Dlogback.configurationFile=/opt/pravega-sensor-collector/bin/logback.xml"
export PRAVEGA_SENSOR_COLLECTOR_NET1_CLASS=io.pravega.sensor.collector.network.NetworkDriver
export PRAVEGA_SENSOR_COLLECTOR_NET1_NETWORK_INTERFACE=ens33
export PRAVEGA_SENSOR_COLLECTOR_NET1_MEMORY_QUEUE_CAPACITY_ELEMENTS=10000
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
*/
package io.pravega.sensor.collector;

import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.AbstractService;
import io.pravega.client.ClientConfig;
import io.pravega.client.EventStreamClientFactory;
Expand All @@ -23,15 +24,15 @@
* This is an abstract class for all device drivers.
*/
public abstract class DeviceDriver extends AbstractService implements AutoCloseable {
private static final Logger log = LoggerFactory.getLogger(DeviceDriver.class);
private static final Logger LOGGER = LoggerFactory.getLogger(DeviceDriver.class);

private final DeviceDriverConfig config;

private static final String CREATE_SCOPE_KEY = "CREATE_SCOPE";

public DeviceDriver(DeviceDriverConfig config) {
this.config = config;
log.info("Create Scope: {}", isCreateScope());
this.config = Preconditions.checkNotNull(config, "config");
LOGGER.info("Create Scope: {}", isCreateScope());
}

public String getProperty(String key) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
*/
package io.pravega.sensor.collector;

import com.google.common.base.Preconditions;

import java.util.Map;

public class DeviceDriverConfig {
Expand All @@ -18,19 +20,19 @@ public class DeviceDriverConfig {
private final DeviceDriverManager deviceDriverManager;

public DeviceDriverConfig(String instanceName, String className, Map<String, String> properties, DeviceDriverManager deviceDriverManager) {
this.instanceName = instanceName;
this.className = className;
this.properties = properties;
this.deviceDriverManager = deviceDriverManager;
this.instanceName = Preconditions.checkNotNull(instanceName, "instanceName");
this.className = Preconditions.checkNotNull(className, "className");
this.properties = Preconditions.checkNotNull(properties, "deviceDriverProperties");
this.deviceDriverManager = Preconditions.checkNotNull(deviceDriverManager, "deviceDriverManager");
}

@Override
public String toString() {
return "DeviceDriverConfig{" +
"instanceName='" + instanceName + '\'' +
", className='" + className + '\'' +
", properties=" + properties +
'}';
return "DeviceDriverConfig{"
+ "instanceName='" + instanceName + '\''
+ ", className='" + className + '\''
+ ", properties=" + properties
+ '}';
}

public String getInstanceName() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,23 @@
*/
package io.pravega.sensor.collector;

import com.google.common.base.Preconditions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DeviceDriverFactory {
private static final Logger log = LoggerFactory.getLogger(DeviceDriverFactory.class);
private static final Logger LOGGER = LoggerFactory.getLogger(DeviceDriverFactory.class);

/**
* Instantiate a concrete subclass of DeviceDriver based on key/value properties.
*/
DeviceDriver create(DeviceDriverConfig config) {
try {
log.info("Creating device driver instance {} with class {}", config.getInstanceName(), config.getClassName());
Preconditions.checkNotNull(config, "deviceDriverConfig");
LOGGER.info("Creating device driver instance {} with class {}", config.getInstanceName(), config.getClassName());
final Class<?> deviceDriverClass = Class.forName(config.getClassName());
final DeviceDriver driver = (DeviceDriver) deviceDriverClass.getConstructor(DeviceDriverConfig.class).newInstance(config);
log.info("Done creating device driver instance {}", config.getInstanceName());
LOGGER.info("Done creating device driver instance {}", config.getInstanceName());
return driver;
} catch (Exception e) {
throw new RuntimeException(e);
Expand Down
Loading