# Licensed to the Apache Software Foundation (ASF) under one or more
# license agreements; and to You under the Apache License, version 2.0:
#
#   https://www.apache.org/licenses/LICENSE-2.0
#
# This file is part of the Apache Pekko project, which was derived from Akka.
#

name: Timing sensitive tests

on:
  schedule:
    - cron: "0 0 * * *"
  workflow_dispatch:

permissions: {}

jobs:

  pekko-timing-sensitive-tests:
    name: Pekko Tests taggedAs TimingTest
    runs-on: ubuntu-22.04
    if: github.repository == 'apache/pekko'
    steps:

      - name: Checkout
        uses: actions/checkout@v5
        with:
          fetch-depth: 0
          fetch-tags: true

      - name: Setup Java 17
        uses: actions/setup-java@v5
        with:
          distribution: temurin
          java-version: 17

      - name: Install sbt
        uses: sbt/setup-sbt@17575ea4e18dd928fe5968dbe32294b97923d65b # v1.1.13

      - name: Cache Coursier cache
        uses: coursier/cache-action@4e2615869d13561d626ed48655e1a39e5b192b3c # v6.4.7

      - name: Enable jvm-opts
        run: cp .jvmopts-ci .jvmopts

      - name: sbt test
        env:
          DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
        run: |-
          sbt \
            -Djava.security.egd=file:/dev/./urandom \
            -Dpekko.cluster.assert=on \
            -Dpekko.test.timefactor=2 \
            -Dpekko.actor.testkit.typed.timefactor=2 \
            -Dpekko.test.tags.only=timing \
            -Dpekko.log.timestamps=true \
            -Dpekko.test.multi-in-test=false \
            -Dmultinode.XX:MetaspaceSize=128M \
            -Dmultinode.Xms256M \
            -Dmultinode.Xmx256M \
            -Dmultinode.XX:+AlwaysActAsServerClassMachine \
            clean test

      - name: Test Reports
        # Makes it easier to spot failures instead of looking at the logs.
        if: ${{ failure() }}
        uses: scacap/action-surefire-report@1a128e49c0585bc0b8e38e541ac3b6e35a5bc727 # v1.9.0
        with:
          report_paths: '**/target/test-reports/TEST-*.xml'
          fail_if_no_tests: false
          skip_publishing: true
