diff --git a/.github/workflows/integration-gzoltar.yml b/.github/workflows/integration-gzoltar.yml
new file mode 100644
index 0000000000..59f7a1a39e
--- /dev/null
+++ b/.github/workflows/integration-gzoltar.yml
@@ -0,0 +1,84 @@
+---
+name: Integration with GZoltar Fault Localization
+
+on:
+ push:
+ paths-ignore:
+ - "docs/**"
+ - "**/*.md"
+ - "**/*.rst"
+ branches:
+ - master
+ - "[0-9].[0-9]"
+ pull_request:
+ branches:
+ - master
+ - "[0-9].[0-9]"
+ schedule:
+ - cron: "0 1 * * *" # nightly build
+
+jobs:
+ build:
+ name: Build and Test
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ pull-requests: write
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up publishing to maven central
+ uses: actions/setup-java@v2
+ with:
+ java-version: "8"
+ distribution: "temurin"
+ - name: System setup
+ run: |
+ sudo apt update
+ sudo apt install -y stunnel make
+ make system-setup
+ - name: Cache dependencies
+ uses: actions/cache@v2
+ with:
+ path: |
+ ~/.m2/repository
+ /var/cache/apt
+ key: jedis-${{hashFiles('**/pom.xml')}}
+ - name: Maven offline
+ run: |
+ mvn -q dependency:go-offline
+ - name: Run tests
+ run: |
+ TEST="" make test-gzoltar
+ env:
+ JVM_OPTS: -Xmx3200m
+ TERM: dumb
+ - name: sleep 10s
+ run: sleep 10s
+ - name: Make - start
+ run: |
+ make start
+ sleep 2s
+ - name: Docker - mod or stack
+ run: docker run -p 52567:6379 -d redis/redis-stack-server:edge
+ - name: Test commands - default protocol
+ run: mvn -P gzoltar-sufire -Dtest="redis.clients.jedis.commands.**" gzoltar:prepare-agent test
+ - name: Test commands - RESP3 protocol
+ run: mvn -P gzoltar-sufire -DjedisProtocol=3 -Dtest="redis.clients.jedis.commands.**" gzoltar:prepare-agent test
+ - name: Test module commands - default protocol
+ run: mvn -P gzoltar-sufire -DmodulesDocker="localhost:52567" -Dtest="redis.clients.jedis.modules.**" gzoltar:prepare-agent test
+ - name: Test module commands - RESP3 protocol
+ run: mvn -P gzoltar-sufire -DjedisProtocol=3 -DmodulesDocker="localhost:52567" -Dtest="redis.clients.jedis.modules.**" gzoltar:prepare-agent test
+ - name: Make - stop
+ run: make stop
+ - name: Generate GZoltar report
+ run: mvn gzoltar:fl-report
+ - name: Enhance GZoltar results
+ uses: GZoltar/gzoltar-feedback-action@main
+ env:
+ NODE_OPTIONS: "--max-old-space-size=16384"
+ with:
+ build-path: "/target/site/gzoltar"
+ sfl-ranking: "[ochiai]"
+ sfl-threshold: "[0.5]"
+ sfl-ranking-order: "ochiai"
+ upload-artifacts: true
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 2987ad80dd..f650b06051 100644
--- a/Makefile
+++ b/Makefile
@@ -445,6 +445,11 @@ test: compile-module start
mvn -Dtest=${SKIP_SSL}${TEST} clean compile test
make stop
+test-gzoltar: compile-module start
+ sleep 2
+ mvn -P gzoltar-sufire -Dtest=${SKIP_SSL}${TEST} clean compile gzoltar:prepare-agent test
+ make stop
+
package: start
mvn clean package
make stop
diff --git a/pom.xml b/pom.xml
index 711be75225..6185f42ed4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,6 +49,7 @@
1.7.36
redis.clients.jedis
1.7.1
+ 1.7.3
@@ -134,6 +135,13 @@
${resilience4j.version}
true
+
+ com.gzoltar
+ com.gzoltar.agent
+ runtime
+ ${gzoltar.version}
+ test
+
@@ -277,6 +285,49 @@
+
+ com.gzoltar
+ com.gzoltar.maven
+ ${gzoltar.version}
+
+
+ fl-report
+
+ fl-report
+
+
+ line
+ true
+ true
+ true
+
+
+ sfL
+
+ ochiai
+
+
+ rho
+ ambiguity
+ entropy
+
+
+
+
+
+ sunburst
+ vertical_partition
+
+
+
+
+
+
+
+
+
@@ -321,5 +372,63 @@
+
+ gzoltar-sufire
+
+
+ gzoltar-sufire
+
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.8.5
+
+ true
+
+
+
+
+ com.gzoltar
+ com.gzoltar.maven
+ ${gzoltar.version}
+
+
+ junit
+ junit
+ 4.13.2
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 3.1.0
+
+
+ org.apache.maven.surefire
+ surefire-junit47
+ 3.1.0
+
+
+
+ true
+
+ ${project.build.directory}/gzoltar.ser
+
+
+
+ listener
+ com.gzoltar.internal.core.listeners.JUnitListener
+
+
+
+
+
+
+