diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 0000000..f421883
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,209 @@
+name: 'Test RumbleDB Parser'
+
+on:
+ push:
+ branches: [ main, master ]
+ pull_request:
+ branches: [ main, master ]
+ workflow_dispatch:
+
+env:
+ TESTED_BRANCH: master
+ TESTED_PARSER: jsoniq
+
+jobs:
+ build:
+ name: Build Rumble
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Rumble Repository
+ uses: actions/checkout@v4
+ with:
+ repository: RumbleDB/rumble
+ ref: ${{ env.TESTED_BRANCH }}
+ path: rumble
+
+ - name: Set up JDK 17
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+
+ - name: Build with Maven
+ working-directory: ./rumble
+ run: mvn clean compile assembly:single
+
+ - name: Upload build artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: rumble-target
+ path: rumble/target
+
+ test:
+ name: Test - ${{ matrix.test_name }}
+ needs: build
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ test_name: [ 'App', 'Array', 'Fn1', 'Fn2', 'Map', 'Math', 'Misc', 'Op', 'Prod1', 'Prod2', 'Ser', 'Xs' ]
+
+ continue-on-error: true
+ steps:
+ - name: Checkout Test Suite Repository
+ uses: actions/checkout@v4
+
+ - name: Set up JDK 17
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ cache: 'maven'
+
+ - name: Create directory structure for system-scoped dependency
+ run: mkdir -p rumble/target
+
+ - name: Download build artifact into the correct path
+ uses: actions/download-artifact@v4
+ with:
+ name: rumble-target
+ path: rumble/target
+
+ - name: Run Maven Tests
+ id: run-tests
+ run: |
+ if [ "${{ env.TESTED_PARSER }}" = "jsoniq" ]; then
+ mvn -Dtest=${{ matrix.test_name }}Test test -quiet
+ else
+ mvn -Dtest=XQuery${{ matrix.test_name }}Test test -quiet
+ fi
+
+ - name: Upload Surefire reports
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: surefire-report-${{ matrix.test_name }}
+ path: target/surefire-reports/*.xml
+ retention-days: 7
+
+ - name: Test Summary
+ uses: test-summary/action@v2
+ with:
+ paths: "target/surefire-reports/*.xml"
+ show: "none"
+ if: always()
+
+ spotless-check:
+ name: Spotless Check
+ needs: build
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Test Suite Repository
+ uses: actions/checkout@v4
+
+ - name: Set up JDK 17
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+
+ - name: Run Spotless Check
+ run: mvn spotless:check
+
+ collect:
+ name: Collect Artifacts
+ needs: test
+ runs-on: ubuntu-latest
+ if: always()
+ steps:
+ - name: Checkout Test Suite Repository
+ uses: actions/checkout@v4
+
+ - name: Set up JDK 17
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ cache: 'maven'
+
+ - name: Create directory structure for system-scoped dependency
+ run: mkdir -p rumble/target
+
+ - name: Download build artifact into the correct path
+ uses: actions/download-artifact@v4
+ with:
+ name: rumble-target
+ path: rumble/target
+
+ - name: Download all surefire reports
+ uses: actions/download-artifact@v4
+ with:
+ pattern: surefire-report-*
+ path: all-surefire-reports
+ merge-multiple: true
+
+ - name: Collect and process artifacts
+ run: |
+ mkdir -p collected-artifacts
+ mkdir -p target
+ mv all-surefire-reports target/surefire-reports
+ cp -r target/surefire-reports collected-artifacts/
+ mvn compile
+ mvn exec:java
+
+ - name: Upload collected data
+ uses: actions/upload-artifact@v4
+ with:
+ name: collected-data
+ path: |
+ collected-artifacts
+ analytics-results
+
+ - name: Test Summary
+ uses: test-summary/action@v2
+ with:
+ paths: "target/surefire-reports/*.xml"
+ show: "none"
+ if: always()
+
+ - name: Test Report
+ uses: dorny/test-reporter@v2
+ if: always()
+ with:
+ name: Tests # Name of the check run which will be created
+ path: "target/surefire-reports/*.xml" # Path to test results
+ reporter: java-junit # Format of test results
+
+ plot:
+ name: Analytics and Plotting
+ needs: collect
+ runs-on: ubuntu-latest
+ if: always()
+ steps:
+ - name: Checkout Test Suite Repository
+ uses: actions/checkout@v4
+
+ - name: Set up Python 3.12
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.12'
+
+ - name: Download collected data
+ uses: actions/download-artifact@v4
+ with:
+ name: collected-data
+ path: .
+
+ - name: Install dependencies and run plotting script
+ run: |
+ pip install -r analytics/requirements.txt
+ python analytics/plot.py > script_output.txt
+ cat script_output.txt >> $GITHUB_STEP_SUMMARY
+
+ - name: Upload plots
+ uses: actions/upload-artifact@v4
+ with:
+ name: plots-and-results
+ path: |
+ plots
+ analytics-results
diff --git a/pom.xml b/pom.xml
index d387c28..88796d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,26 +69,26 @@
com.github.rumbledb
rumbledb
- 1.23.0
+ 2.0.0
system
- ${project.basedir}/rumble/target/rumbledb-1.23.0-jar-with-dependencies.jar
+ ${project.basedir}/rumble/target/rumbledb-2.0.0-jar-with-dependencies.jar
org.apache.spark
spark-core_2.13
- 3.5.1
+ 4.0.1
compile
org.apache.spark
spark-sql_2.13
- 3.5.1
+ 4.0.1
compile
org.apache.spark
spark-mllib_2.13
- 3.5.1
+ 4.0.1
compile
@@ -114,7 +114,11 @@
4.13.2
test
+
+ org.apache.spark
+ spark-hive_2.13
+ 4.0.1
+ provided
+
-
-
\ No newline at end of file
diff --git a/src/test/java/iq/base/TestBase.java b/src/test/java/iq/base/TestBase.java
index dab0537..0f50280 100644
--- a/src/test/java/iq/base/TestBase.java
+++ b/src/test/java/iq/base/TestBase.java
@@ -95,7 +95,7 @@ private List- runQuery(String query, Rumble rumble, Environment environment
}
SequenceOfItems queryResult = rumble.runQuery(query);
List
- resultAsList = new ArrayList<>();
- queryResult.populateListWithWarningOnlyIfCapReached(resultAsList);
+ queryResult.populateList(resultAsList, 1000000000);
return resultAsList;
}