Skip to content
This repository was archived by the owner on Apr 21, 2026. It is now read-only.

Commit be7279f

Browse files
author
Kit Plummer
authored
fix: library name and Android-specific parser (#11)
* fix: library name and Android-specific parser * many more tests, tests and more tests
1 parent 2293710 commit be7279f

76 files changed

Lines changed: 11286 additions & 3451 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/java-ci.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ jobs:
3838

3939
- name: Run Checkstyle
4040
working-directory: ./java
41-
run: ./gradlew :library:checkstyleMain :library:checkstyleTest :example:checkstyleMain :example:checkstyleTest
41+
run: ./gradlew :ditto_cot:checkstyleMain :ditto_cot:checkstyleTest :ditto_cot_example:checkstyleMain :ditto_cot_example:checkstyleTest
4242

4343
- name: Generate schema classes
4444
working-directory: ./java
45-
run: ./gradlew :library:generateSchemaClasses
45+
run: ./gradlew :ditto_cot:generateSchemaClasses
4646

4747
build-and-test:
4848
runs-on: ubuntu-latest
@@ -79,34 +79,34 @@ jobs:
7979

8080
- name: Generate schema classes
8181
working-directory: ./java
82-
run: ./gradlew :library:generateSchemaClasses
82+
run: ./gradlew :ditto_cot:generateSchemaClasses
8383

8484
- name: Build library
8585
working-directory: ./java
86-
run: ./gradlew :library:build -x test
86+
run: ./gradlew :ditto_cot:build -x test
8787

8888
- name: Run tests
8989
working-directory: ./java
90-
run: ./gradlew :library:test :example:test --info
90+
run: ./gradlew :ditto_cot:test :ditto_cot_example:test --info
9191

9292
- name: Generate test report
9393
working-directory: ./java
94-
run: ./gradlew :library:jacocoTestReport
94+
run: ./gradlew :ditto_cot:jacocoTestReport
9595

9696
- name: Upload test results
9797
uses: actions/upload-artifact@v4
9898
if: always()
9999
with:
100100
name: test-results
101101
path: |
102-
java/library/build/reports/tests/
103-
java/library/build/reports/jacoco/
102+
java/ditto_cot/build/reports/tests/
103+
java/ditto_cot/build/reports/jacoco/
104104
105105
- name: Upload coverage to Codecov (optional)
106106
uses: codecov/codecov-action@v4
107107
if: success()
108108
with:
109-
file: java/library/build/reports/jacoco/test/jacocoTestReport.xml
109+
file: java/ditto_cot/build/reports/jacoco/test/jacocoTestReport.xml
110110
flags: java
111111
name: java-coverage
112112
fail_ci_if_error: false
@@ -147,8 +147,8 @@ jobs:
147147

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

152152
- name: Run XML round-trip tests
153153
working-directory: ./java
154-
run: ./gradlew :library:test --tests "com.ditto.cot.CoTXmlRoundTripTest"
154+
run: ./gradlew :ditto_cot:test --tests "com.ditto.cot.CoTXmlRoundTripTest"

Makefile

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,18 @@ java:
3131
echo "Generating Java classes from schema..."; \
3232
./gradlew generateSchemaClasses; \
3333
echo "Building Java library..."; \
34-
./gradlew build -x test; \
34+
./gradlew build -x test -x jacocoTestCoverageVerification; \
35+
else \
36+
echo "Java build files not found. Skipping."; \
37+
fi
38+
39+
.PHONY: java-test-client
40+
java-test-client:
41+
@echo "Building Java test client for cross-language tests..."
42+
@if [ -f "java/build.gradle" ] || [ -f "java/build.gradle.kts" ]; then \
43+
cd java && \
44+
echo "Building test client with all dependencies..."; \
45+
./gradlew :ditto_cot:fatJar; \
3546
else \
3647
echo "Java build files not found. Skipping."; \
3748
fi
@@ -68,6 +79,11 @@ clean-csharp:
6879
.PHONY: test
6980
test: test-rust test-java test-csharp
7081

82+
.PHONY: test-cross-lang
83+
test-cross-lang: java-test-client
84+
@echo "Running cross-language multi-peer test..."
85+
@cd rust && cargo test e2e_cross_lang_multi_peer_test
86+
7187
.PHONY: test-rust
7288
test-rust:
7389
@echo "Testing Rust library..."
@@ -77,7 +93,7 @@ test-rust:
7793
test-java:
7894
@echo "Testing Java library and example..."
7995
@if [ -f "java/build.gradle" ] || [ -f "java/build.gradle.kts" ]; then \
80-
cd java && ./gradlew :library:test :example:test --info --console=rich --rerun-tasks; \
96+
cd java && ./gradlew :ditto_cot:test :ditto_cot_example:test --info --console=rich --rerun-tasks; \
8197
else \
8298
echo "Java build files not found. Skipping tests."; \
8399
fi
@@ -127,11 +143,13 @@ help:
127143
@echo " test-rust - Run tests for Rust library"
128144
@echo " test-java - Run tests for Java library"
129145
@echo " test-csharp - Run tests for C# library"
146+
@echo " test-cross-lang - Run cross-language multi-peer test"
130147
@echo " example-rust - Run Rust example client"
131148
@echo " example-java - Run Java example client"
132149
@echo " test-integration - Run cross-language integration test"
133150
@echo " clean - Clean all libraries"
134151
@echo " clean-rust - Clean Rust library"
135152
@echo " clean-java - Clean Java library"
136153
@echo " clean-csharp - Clean C# library"
154+
@echo " java-test-client - Build Java test client for cross-language tests"
137155
@echo " help - Show this help message"

java/build.gradle

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,12 @@ subprojects {
7676
}
7777

7878
// Configure specific subprojects
79-
project(':library') {
80-
// Library-specific configuration is in library/build.gradle
79+
project(':ditto_cot') {
80+
// Library-specific configuration is in ditto_cot/build.gradle
8181
}
8282

83-
project(':example') {
84-
// Example-specific configuration is in example/build.gradle
83+
project(':ditto_cot_example') {
84+
// Example-specific configuration is in ditto_cot_example/build.gradle
8585
}
8686

8787
// Task to build all subprojects
@@ -103,11 +103,11 @@ task cleanAll {
103103
}
104104

105105
// Task to run the example
106-
// runExample task is now defined only in example/build.gradle
106+
// runExample task is now defined only in ditto_cot_example/build.gradle
107107

108108
// Configure task dependencies for the library project
109-
project(':library') {
110-
// fatJar dependency handled in library/build.gradle
109+
project(':ditto_cot') {
110+
// fatJar dependency handled in ditto_cot/build.gradle
111111

112112
// Configure task dependencies
113113
tasks.named('compileJava') {
@@ -120,7 +120,7 @@ project(':library') {
120120
dependsOn 'generateSchemaClasses'
121121
}
122122

123-
// sourcesJar configuration is handled in library/build.gradle
123+
// sourcesJar configuration is handled in ditto_cot/build.gradle
124124

125125

126126
// Make check depend on coverage verification

java/ditto_cot/.jqwik-database

4 Bytes
Binary file not shown.
Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,13 @@ dependencies {
8484
testImplementation 'org.assertj:assertj-core:3.24.2'
8585
testImplementation 'org.mockito:mockito-core:5.4.0'
8686
testImplementation 'io.github.cdimascio:dotenv-java:3.0.0'
87+
88+
// JMH for performance benchmarks
89+
testImplementation 'org.openjdk.jmh:jmh-core:1.37'
90+
testAnnotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.37'
91+
92+
// Additional dependencies for fuzz testing
93+
testImplementation 'net.jqwik:jqwik:1.8.2'
8794

8895
}
8996

@@ -113,10 +120,12 @@ jacocoTestReport {
113120
}
114121

115122
jacocoTestCoverageVerification {
123+
dependsOn generateSchemaClasses, compileJava, processResources, test
124+
116125
violationRules {
117126
rule {
118127
limit {
119-
minimum = 0.60
128+
minimum = 0.50
120129
}
121130
}
122131
}
@@ -218,7 +227,7 @@ task fatJar(type: Jar) {
218227
exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
219228
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
220229
manifest {
221-
attributes 'Main-Class': 'com.ditto.cot.example.SimpleExample'
230+
attributes 'Main-Class': 'com.ditto.cot.CrossLanguageMultiPeerClient'
222231
}
223232
}
224233

0 commit comments

Comments
 (0)