Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
22 changes: 11 additions & 11 deletions .github/workflows/java-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ jobs:

- name: Run Checkstyle
working-directory: ./java
run: ./gradlew :library:checkstyleMain :library:checkstyleTest :example:checkstyleMain :example:checkstyleTest
run: ./gradlew :ditto_cot:checkstyleMain :ditto_cot:checkstyleTest :ditto_cot_example:checkstyleMain :ditto_cot_example:checkstyleTest

- name: Generate schema classes
working-directory: ./java
run: ./gradlew :library:generateSchemaClasses
run: ./gradlew :ditto_cot:generateSchemaClasses

build-and-test:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -79,34 +79,34 @@ jobs:

- name: Generate schema classes
working-directory: ./java
run: ./gradlew :library:generateSchemaClasses
run: ./gradlew :ditto_cot:generateSchemaClasses

- name: Build library
working-directory: ./java
run: ./gradlew :library:build -x test
run: ./gradlew :ditto_cot:build -x test

- name: Run tests
working-directory: ./java
run: ./gradlew :library:test :example:test --info
run: ./gradlew :ditto_cot:test :ditto_cot_example:test --info

- name: Generate test report
working-directory: ./java
run: ./gradlew :library:jacocoTestReport
run: ./gradlew :ditto_cot:jacocoTestReport

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results
path: |
java/library/build/reports/tests/
java/library/build/reports/jacoco/
java/ditto_cot/build/reports/tests/
java/ditto_cot/build/reports/jacoco/

- name: Upload coverage to Codecov (optional)
uses: codecov/codecov-action@v4
if: success()
with:
file: java/library/build/reports/jacoco/test/jacocoTestReport.xml
file: java/ditto_cot/build/reports/jacoco/test/jacocoTestReport.xml
flags: java
name: java-coverage
fail_ci_if_error: false
Expand Down Expand Up @@ -147,8 +147,8 @@ jobs:

- name: Run integration tests
working-directory: ./java
run: ./gradlew :library:test --tests "com.ditto.cot.CoTConverterIntegrationTest"
run: ./gradlew :ditto_cot:test --tests "com.ditto.cot.CoTConverterIntegrationTest"

- name: Run XML round-trip tests
working-directory: ./java
run: ./gradlew :library:test --tests "com.ditto.cot.CoTXmlRoundTripTest"
run: ./gradlew :ditto_cot:test --tests "com.ditto.cot.CoTXmlRoundTripTest"
22 changes: 20 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,18 @@ java:
echo "Generating Java classes from schema..."; \
./gradlew generateSchemaClasses; \
echo "Building Java library..."; \
./gradlew build -x test; \
./gradlew build -x test -x jacocoTestCoverageVerification; \
else \
echo "Java build files not found. Skipping."; \
fi

.PHONY: java-test-client
java-test-client:
@echo "Building Java test client for cross-language tests..."
@if [ -f "java/build.gradle" ] || [ -f "java/build.gradle.kts" ]; then \
cd java && \
echo "Building test client with all dependencies..."; \
./gradlew :ditto_cot:fatJar; \
else \
echo "Java build files not found. Skipping."; \
fi
Expand Down Expand Up @@ -68,6 +79,11 @@ clean-csharp:
.PHONY: test
test: test-rust test-java test-csharp

.PHONY: test-cross-lang
test-cross-lang: java-test-client
@echo "Running cross-language multi-peer test..."
@cd rust && cargo test e2e_cross_lang_multi_peer_test

.PHONY: test-rust
test-rust:
@echo "Testing Rust library..."
Expand All @@ -77,7 +93,7 @@ test-rust:
test-java:
@echo "Testing Java library and example..."
@if [ -f "java/build.gradle" ] || [ -f "java/build.gradle.kts" ]; then \
cd java && ./gradlew :library:test :example:test --info --console=rich --rerun-tasks; \
cd java && ./gradlew :ditto_cot:test :ditto_cot_example:test --info --console=rich --rerun-tasks; \
else \
echo "Java build files not found. Skipping tests."; \
fi
Expand Down Expand Up @@ -127,11 +143,13 @@ help:
@echo " test-rust - Run tests for Rust library"
@echo " test-java - Run tests for Java library"
@echo " test-csharp - Run tests for C# library"
@echo " test-cross-lang - Run cross-language multi-peer test"
@echo " example-rust - Run Rust example client"
@echo " example-java - Run Java example client"
@echo " test-integration - Run cross-language integration test"
@echo " clean - Clean all libraries"
@echo " clean-rust - Clean Rust library"
@echo " clean-java - Clean Java library"
@echo " clean-csharp - Clean C# library"
@echo " java-test-client - Build Java test client for cross-language tests"
@echo " help - Show this help message"
16 changes: 8 additions & 8 deletions java/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,12 @@ subprojects {
}

// Configure specific subprojects
project(':library') {
// Library-specific configuration is in library/build.gradle
project(':ditto_cot') {
// Library-specific configuration is in ditto_cot/build.gradle
}

project(':example') {
// Example-specific configuration is in example/build.gradle
project(':ditto_cot_example') {
// Example-specific configuration is in ditto_cot_example/build.gradle
}

// Task to build all subprojects
Expand All @@ -103,11 +103,11 @@ task cleanAll {
}

// Task to run the example
// runExample task is now defined only in example/build.gradle
// runExample task is now defined only in ditto_cot_example/build.gradle

// Configure task dependencies for the library project
project(':library') {
// fatJar dependency handled in library/build.gradle
project(':ditto_cot') {
// fatJar dependency handled in ditto_cot/build.gradle

// Configure task dependencies
tasks.named('compileJava') {
Expand All @@ -120,7 +120,7 @@ project(':library') {
dependsOn 'generateSchemaClasses'
}

// sourcesJar configuration is handled in library/build.gradle
// sourcesJar configuration is handled in ditto_cot/build.gradle


// Make check depend on coverage verification
Expand Down
Binary file added java/ditto_cot/.jqwik-database
Binary file not shown.
13 changes: 11 additions & 2 deletions java/library/build.gradle → java/ditto_cot/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,13 @@ dependencies {
testImplementation 'org.assertj:assertj-core:3.24.2'
testImplementation 'org.mockito:mockito-core:5.4.0'
testImplementation 'io.github.cdimascio:dotenv-java:3.0.0'

// JMH for performance benchmarks
testImplementation 'org.openjdk.jmh:jmh-core:1.37'
testAnnotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.37'

// Additional dependencies for fuzz testing
testImplementation 'net.jqwik:jqwik:1.8.2'

}

Expand Down Expand Up @@ -113,10 +120,12 @@ jacocoTestReport {
}

jacocoTestCoverageVerification {
dependsOn generateSchemaClasses, compileJava, processResources, test

violationRules {
rule {
limit {
minimum = 0.60
minimum = 0.50
}
}
}
Expand Down Expand Up @@ -218,7 +227,7 @@ task fatJar(type: Jar) {
exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
manifest {
attributes 'Main-Class': 'com.ditto.cot.example.SimpleExample'
attributes 'Main-Class': 'com.ditto.cot.CrossLanguageMultiPeerClient'
}
}

Expand Down
File renamed without changes.
Loading
Loading