diff --git a/.github/workflows/bullmq-tests.yml b/.github/workflows/bullmq-tests.yml index d51e018398af..7b3fa51db5e1 100644 --- a/.github/workflows/bullmq-tests.yml +++ b/.github/workflows/bullmq-tests.yml @@ -12,39 +12,71 @@ jobs: name: Build timeout-minutes: 60 - container: - image: ghcr.io/romange/alpine-dev:latest - options: --security-opt seccomp=unconfined - credentials: - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} + #container: + # image: ghcr.io/romange/alpine-dev:latest + # options: --security-opt seccomp=unconfined + # credentials: + # username: ${{ github.repository_owner }} + # password: ${{ secrets.GITHUB_TOKEN }} + #env: + # node-version: lts/* + services: + dragonflydb: + #image: ghcr.io/dragonflydb/dragonfly-weekly:latest + image: docker.dragonflydb.io/dragonflydb/dragonfly:v1.24.0 + env: + DFLY_cluster_mode: emulated + DFLY_lock_on_hashtags: true + HEALTHCHECK_PORT: 6379 + ports: + - 6379:6379 steps: - uses: actions/checkout@v4 with: submodules: true - name: Install NodeJs run: | - apk add --no-cache nodejs npm yarn + wget -q https://unofficial-builds.nodejs.org/download/release/v22.12.0/node-v22.12.0-linux-x64-glibc-217.tar.xz + tar -xf node-v22.12.0-linux-x64-glibc-217.tar.xz + sudo cp -r node-v22.12.0-linux-x64-glibc-217/* /usr/local/ + sudo apt install yarn jq node --version npm --version yarn --version mkdir -p $GITHUB_WORKSPACE/build - - name: Configure/Build +# - name: Configure/Build +# run: | +# cd $GITHUB_WORKSPACE/build +# #cmake .. -DCMAKE_BUILD_TYPE=Release -GNinja +# #ninja dragonfly +# wget -q https://github.com/dragonflydb/dragonfly/releases/download/v1.24.0/dragonfly-x86_64.tar.gz +# tar -zxvf dragonfly-x86_64.tar.gz +# mv dragonfly-x86_64 dragonfly +# ./dragonfly --alsologtostderr --cluster_mode=emulated --lock_on_hashtags --dbfilename= & + - name: Build and Test BullMQ run: | - cd $GITHUB_WORKSPACE/build - cmake .. -DCMAKE_BUILD_TYPE=Debug -GNinja - ninja dragonfly - ./dragonfly --alsologtostderr & - - - name: Clone and build BullMQ - run: | - git clone https://github.com/taskforcesh/bullmq.git + mkdir -p $GITHUB_WORKSPACE/../bullmq + cd $GITHUB_WORKSPACE/../bullmq + #DOWNLOAD_URL=$(curl -s https://api.github.com/repos/taskforcesh/bullmq/releases/latest | jq -r '.tarball_url') + #echo "Downloading latest BullMQ release from ${DOWNLOAD_URL}" + #wget -q -O bullmq.tar.gz ${DOWNLOAD_URL} + #tar -zxf bullmq.tar.gz + #mv taskforcesh-bullmq-* bullmq + git clone https://github.com/taskforcesh/bullmq cd bullmq pwd - yarn install --ignore-engines --frozen-lockfile --non-interactive + #patch -p1 -f < $GITHUB_WORKSPACE/bullmq.patch + yarn install yarn build - - name: Test BullMQ - run: | - cd $GITHUB_WORKSPACE/bullmq - # yarn test -i -g "should process delayed jobs with several workers respecting delay" + #BULLMQ_TEST_PREFIX={b} yarn test + sed -i 's/timeout: 4000/timeout: 10000/' .mocharc.js + for i in {1..100}; do + BULLMQ_TEST_PREFIX={b} yarn test -g "should keep workers busy"; + done + - name: Upload logs on failure + if: failure() + uses: actions/upload-artifact@v4 + with: + name: unit_logs + path: /tmp/dragonfly.* diff --git a/bullmq.patch b/bullmq.patch new file mode 100644 index 000000000000..f68ce33efb1c --- /dev/null +++ b/bullmq.patch @@ -0,0 +1,22 @@ +diff --git a/tests/test_job.ts b/tests/test_job.ts +index 0393fe0..57b06d6 100644 +--- a/tests/test_job.ts ++++ b/tests/test_job.ts +@@ -1396,6 +1396,8 @@ describe('Job', function () { + expect(isDelayedAfterPromote).to.be.equal(false); + const isCompleted = await job.isCompleted(); + expect(isCompleted).to.be.equal(true); ++ ++ await worker.close(); + }); + + describe('when re-adding same repeatable job after previous delayed one is promoted', () => { +@@ -1456,6 +1458,8 @@ describe('Job', function () { + const delayedCountAfterReAddition = await queue.getDelayedCount(); + expect(completedCountAfterReAddition).to.be.equal(1); + expect(delayedCountAfterReAddition).to.be.equal(1); ++ ++ await worker.close(); + }); + }); + });