Skip to content

Commit

Permalink
Merge pull request #5 from Bit-Quill/dev-java-pipeline
Browse files Browse the repository at this point in the history
Add java pipeline
  • Loading branch information
Yury-Fridlyand authored Sep 20, 2023
2 parents 76c37db + 0a4427e commit ffd0015
Show file tree
Hide file tree
Showing 19 changed files with 617 additions and 0 deletions.
44 changes: 44 additions & 0 deletions .github/workflows/java-benchmark.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Java client benchmarks

on:
workflow_dispatch:
inputs:
name:
required: false
type: string

run-name: ${{ inputs.name == '' && format('{0} @ {1}', github.ref_name, github.sha) || inputs.name }}

jobs:
java-benchmark:
strategy:
matrix:
java:
- 11
- 17
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v3
with:
distribution: "temurin"
java-version: ${{ matrix.java }}

# TODO: uncomment once benchmark implemented
# - name: Run benchmarks
# working-directory: java/jabushka
# run: ./gradlew -Pbenchmark :benchmark:jedis :benchmark:lettuce :benchmark:jabushka

- name: Upload test reports
if: always()
continue-on-error: true
uses: actions/upload-artifact@v2
with:
name: test-reports-${{ matrix.java }}
path: |
java/jabushka/benchmarks/build/**
59 changes: 59 additions & 0 deletions .github/workflows/java.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: SQL Java CI

on:
pull_request:
push:
paths:
- "java/**"
- ".github/workflows/java.yml"

# Run only most latest job on a branch and cancel previous ones
concurrency:
group: ${{ github.head_ref || github.ref }}
cancel-in-progress: true

jobs:
build-and-test-java-client:
strategy:
# Run all jobs
fail-fast: false
matrix:
java:
- 11
- 17
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v3
with:
distribution: "temurin"
java-version: ${{ matrix.java }}

- name: Install and run protoc (protobuf)
run: |
sudo apt update
sudo apt install -y protobuf-compiler
protoc -Iprotobuf=babushka-core/src/protobuf/ --java_out=java/jabushka/jabushka/src/main/java/org/babushka/jabushka/generated babushka-core/src/protobuf/*.proto
- name: Build rust part
working-directory: java
run: cargo build

- name: Build with Gradle
working-directory: java/jabushka
run: ./gradlew --continue build

- name: Upload test reports
if: always()
continue-on-error: true
uses: actions/upload-artifact@v2
with:
name: test-reports-${{ matrix.java }}
path: |
java/jabushka/jabushka/build/**
java/jabushka/integTest/build/**
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
debug/
target/

# Git stuff
.worktrees

# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock
Expand All @@ -17,6 +20,14 @@ dump.rdb
.env
benchmarks/results

# IDE generaged files
.vs
.vscode
.idea

# MacOS metadata
.DS_Store

# lock files

yarn.lock
Expand Down
3 changes: 3 additions & 0 deletions java/.cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[env]
BABUSHKA_NAME = { value = "BabushkaPy", force = true }
BABUSHKA_VERSION = "0.1.0"
5 changes: 5 additions & 0 deletions java/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.gradle
*.iml
.java-version
build
generated
21 changes: 21 additions & 0 deletions java/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
[package]
name = "jabushka"
version = "0.0.0"
edition = "2021"
license = "BSD-3-Clause"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
name = "jabushka"
crate-type = ["cdylib"]

[dependencies]
redis = { path = "../submodules/redis-rs/redis", features = ["aio", "tokio-comp", "connection-manager", "tls", "tokio-rustls-comp"] }
babushka = { path = "../babushka-core" }
tokio = { version = "^1", features = ["rt", "macros", "rt-multi-thread", "time"] }
logger_core = {path = "../logger_core"}
tracing-subscriber = "0.3.16"

[profile.release]
lto = true
debug = true
Empty file added java/README.md
Empty file.
Empty file.
102 changes: 102 additions & 0 deletions java/jabushka/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
plugins {
id 'java'
id 'java-library'
id 'io.freefair.lombok' version '6.4.0'
id 'jacoco'
id 'com.diffplug.spotless' version '6.19.0'
}

repositories {
mavenCentral()
mavenLocal()
}

subprojects {
repositories {
mavenCentral()
mavenLocal()
}
// minimal java compatibility level
plugins.withId('java') {
sourceCompatibility = targetCompatibility = "11"
}
tasks.withType(Test) {
useJUnitPlatform()

testLogging {
exceptionFormat "full"
events "started", "skipped", "passed", "failed"
showStandardStreams true
}
// Temporary suspend jacoco
// finalizedBy jacocoTestReport, jacocoTestCoverageVerification
}
}

dependencies {
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter', version: '5.6.2'
}

// Apply a specific Java toolchain to ease working on different environments.
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}

// JaCoCo section (code coverage by unit tests)
jacoco {
toolVersion = "0.8.9"
}
jacocoTestReport {
reports {
xml.configure { enabled false }
csv.configure { enabled false }
}
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.collect {
fileTree(dir: it)
}))
}
}
jacocoTestCoverageVerification {
violationRules {
rule {
element = 'CLASS'
excludes = [
]
limit {
counter = 'LINE'
minimum = 1.0
}
limit {
counter = 'BRANCH'
minimum = 1.0
}
}
}
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.collect {
fileTree(dir: it)
}))
}
}
// Temporary suspend jacoco
// check.dependsOn jacocoTestCoverageVerification
// End of JaCoCo section

// Spotless section (code style)
spotless {
java {
target fileTree('.') {
include '**/*.java'
exclude '**/build/**', '**/build-*/**', '**/generated/**'
}
importOrder()
removeUnusedImports()
trimTrailingWhitespace()
endWithNewline()
googleJavaFormat('1.17.0').reflowLongStrings().groupArtifact('com.google.googlejavaformat:google-java-format')
}
}
// End of Spotless section
2 changes: 2 additions & 0 deletions java/jabushka/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
version=1.13.0
org.gradle.jvmargs=-Duser.language=en -Duser.country=US
Binary file added java/jabushka/gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 7 additions & 0 deletions java/jabushka/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading

0 comments on commit ffd0015

Please sign in to comment.