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; }