* and enable gc logging via -Dakka.ci-server=true in .jvmopts-ci * and some cleanup * exclude ClusterReceptionistSpec and JoinConfigCompatCheckerRollingUpdateSpec with new tag
This commit is contained in:
parent
ad5864c6d8
commit
5e3e61458a
8 changed files with 94 additions and 35 deletions
|
|
@ -56,7 +56,6 @@ jobs:
|
|||
run: |-
|
||||
sbt -jvm-opts .jvmopts-ci \
|
||||
-Dakka.mima.enabled=false \
|
||||
-Dakka.ci-server=true \
|
||||
-Dakka.test.multi-in-test=false \
|
||||
-Dakka.test.timefactor=2 \
|
||||
-Dakka.actor.testkit.typed.timefactor=2 \
|
||||
|
|
|
|||
75
.github/workflows/nightly-builds.yml
vendored
75
.github/workflows/nightly-builds.yml
vendored
|
|
@ -94,6 +94,7 @@ jobs:
|
|||
uses: coursier/cache-action@v6.2
|
||||
|
||||
- name: sbt ${{ matrix.command }}
|
||||
# note that this is not running any multi-jvm tests because multi-in-test=false
|
||||
run: |-
|
||||
sbt -jvm-opts .jvmopts-ci \
|
||||
-Djava.security.egd=file:/dev/./urandom \
|
||||
|
|
@ -101,13 +102,8 @@ jobs:
|
|||
-Dakka.test.timefactor=2 \
|
||||
-Dakka.actor.testkit.typed.timefactor=2 \
|
||||
-Dakka.test.tags.exclude=gh-exclude,timing \
|
||||
-Dakka.test.multi-in-test=false \
|
||||
-Dakka.cluster.assert=on \
|
||||
-Dakka.test.names.exclude=akka.cluster.Stress \
|
||||
-Dmultinode.XX:MetaspaceSize=128M \
|
||||
-Dmultinode.Xms256M \
|
||||
-Dmultinode.Xmx256M \
|
||||
-Dmultinode.Xlog:gc \
|
||||
-Dmultinode.XX:+AlwaysActAsServerClassMachine \
|
||||
clean ${{ matrix.command }}
|
||||
|
||||
- name: Email on failure
|
||||
|
|
@ -139,11 +135,11 @@ jobs:
|
|||
jdkVersion: ["adopt@1.8.0", "adopt@1.11", "openjdk@1.17.0"]
|
||||
include:
|
||||
- jdkVersion: adopt@1.8.0
|
||||
extraOpts: "-Dmultinode.XX:+PrintGCDetails -Dmultinode.XX:+PrintGCTimeStamps"
|
||||
extraOpts: ""
|
||||
- jdkVersion: adopt@1.11
|
||||
extraOpts: "-Dmultinode.Xlog:gc"
|
||||
extraOpts: ""
|
||||
- jdkVersion: openjdk@1.17.0
|
||||
extraopts: "-Dmultinode.Xlog:gc"
|
||||
extraopts: ""
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
|
@ -159,7 +155,7 @@ jobs:
|
|||
uses: coursier/cache-action@v6.2
|
||||
|
||||
- name: Compile and Test
|
||||
# note that this is not running any multi-jvm tests (yet) because multi-in-test=false
|
||||
# note that this is not running any multi-jvm tests because multi-in-test=false
|
||||
run: |-
|
||||
sbt -jvm-opts .jvmopts-ci \
|
||||
-Dakka.cluster.assert=on \
|
||||
|
|
@ -168,10 +164,6 @@ jobs:
|
|||
-Dakka.actor.testkit.typed.timefactor=2 \
|
||||
-Dakka.test.tags.exclude=gh-exclude,timing \
|
||||
-Dakka.test.multi-in-test=false \
|
||||
-Dmultinode.XX:MetaspaceSize=128M \
|
||||
-Dmultinode.Xms256M \
|
||||
-Dmultinode.Xmx256M \
|
||||
-Dmultinode.XX:+AlwaysActAsServerClassMachine \
|
||||
${{ matrix.extraOpts }} \
|
||||
clean "+~ ${{ matrix.scalaVersion }} test" checkTestsHaveRun
|
||||
|
||||
|
|
@ -225,3 +217,58 @@ jobs:
|
|||
body: |
|
||||
Job ${{ github.job }} in workflow ${{ github.workflow }} of ${{github.repository}} failed!
|
||||
https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}
|
||||
|
||||
akka-artery-aeron-tests:
|
||||
name: Akka Artery Aeron Tests
|
||||
runs-on: ubuntu-20.04
|
||||
if: github.repository == 'akka/akka'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
command:
|
||||
- akka-remote/test akka-remote-tests/test
|
||||
- akka-cluster/test akka-cluster-typed/test
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
# we don't know what commit the last tag was it's safer to get entire repo so previousStableVersion resolves
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK 11
|
||||
uses: olafurpg/setup-scala@v10
|
||||
with:
|
||||
java-version: adopt@1.11
|
||||
|
||||
- name: Cache Coursier cache
|
||||
uses: coursier/cache-action@v6.2
|
||||
|
||||
- name: sbt ${{ matrix.command }}
|
||||
# note that this is not running any multi-jvm tests because multi-in-test=false
|
||||
run: |-
|
||||
sbt -jvm-opts .jvmopts-ci \
|
||||
-Djava.security.egd=file:/dev/./urandom \
|
||||
-Dakka.remote.artery.transport=aeron-udp \
|
||||
-Dakka.test.timefactor=2 \
|
||||
-Dakka.actor.testkit.typed.timefactor=2 \
|
||||
-Dakka.test.tags.exclude=gh-exclude,gh-exclude-aeron,timing \
|
||||
-Dakka.test.multi-in-test=false \
|
||||
-Dakka.cluster.assert=on \
|
||||
-Daeron.dir=/opt/volumes/media-driver \
|
||||
-Daeron.term.buffer.length=33554432 \
|
||||
clean ${{ matrix.command }}
|
||||
|
||||
- name: Email on failure
|
||||
if: ${{ failure() }}
|
||||
uses: dawidd6/action-send-mail@v3
|
||||
with:
|
||||
server_address: smtp.gmail.com
|
||||
server_port: 465
|
||||
username: ${{secrets.MAIL_USERNAME}}
|
||||
password: ${{secrets.MAIL_PASSWORD}}
|
||||
subject: "Failed: ${{ github.workflow }} / ${{ github.job }}"
|
||||
to: akka.official@gmail.com
|
||||
from: Akka CI (GHActions)
|
||||
body: |
|
||||
Job ${{ github.job }} in workflow ${{ github.workflow }} of ${{github.repository}} failed!
|
||||
https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}
|
||||
|
|
|
|||
1
.github/workflows/scala3-build.yml
vendored
1
.github/workflows/scala3-build.yml
vendored
|
|
@ -57,7 +57,6 @@ jobs:
|
|||
-Dmultinode.XX:MetaspaceSize=128M \
|
||||
-Dmultinode.Xms256M \
|
||||
-Dmultinode.Xmx256M \
|
||||
-Dmultinode.Xlog:gc \
|
||||
-Dmultinode.XX:+AlwaysActAsServerClassMachine \
|
||||
"+~ 3 ${{ matrix.command }}"
|
||||
|
||||
|
|
|
|||
1
.github/workflows/timing-tests.yml
vendored
1
.github/workflows/timing-tests.yml
vendored
|
|
@ -39,7 +39,6 @@ jobs:
|
|||
-Dmultinode.XX:MetaspaceSize=128M \
|
||||
-Dmultinode.Xms256M \
|
||||
-Dmultinode.Xmx256M \
|
||||
-Dmultinode.Xlog:gc \
|
||||
-Dmultinode.XX:+AlwaysActAsServerClassMachine \
|
||||
clean test
|
||||
|
||||
|
|
|
|||
|
|
@ -12,3 +12,4 @@
|
|||
-XX:MetaspaceSize=512M
|
||||
-XX:-ClassUnloadingWithConcurrentMark
|
||||
-Djava.security.egd=file:/dev/./urandom
|
||||
-Dakka.ci-server=true
|
||||
|
|
|
|||
|
|
@ -8,9 +8,11 @@ import java.util.concurrent.ThreadLocalRandom
|
|||
|
||||
import scala.concurrent.Await
|
||||
import scala.concurrent.duration._
|
||||
|
||||
import com.typesafe.config.ConfigFactory
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
import akka.actor.RootActorPath
|
||||
import akka.actor.testkit.typed.FishingOutcome
|
||||
import akka.actor.testkit.typed.scaladsl.ActorTestKit
|
||||
|
|
@ -31,6 +33,8 @@ import akka.serialization.jackson.CborSerializable
|
|||
import akka.testkit.LongRunningTest
|
||||
import org.scalatest.concurrent.ScalaFutures
|
||||
|
||||
import akka.testkit.GHExcludeAeronTest
|
||||
|
||||
object ClusterReceptionistSpec {
|
||||
val config = ConfigFactory.parseString(s"""
|
||||
akka.loglevel = DEBUG # issue #24960
|
||||
|
|
@ -80,7 +84,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
|
||||
"The cluster receptionist" must {
|
||||
|
||||
"eventually replicate registrations to the other side" taggedAs (LongRunningTest) in {
|
||||
"eventually replicate registrations to the other side".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-1", ClusterReceptionistSpec.config)
|
||||
val system1 = testKit1.system
|
||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||
|
|
@ -118,7 +122,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
}
|
||||
}
|
||||
|
||||
"handle registrations before joining" taggedAs (LongRunningTest) in {
|
||||
"handle registrations before joining".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-2", ClusterReceptionistSpec.config)
|
||||
val system1 = testKit1.system
|
||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||
|
|
@ -148,11 +152,11 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
}
|
||||
}
|
||||
|
||||
"remove registrations when node dies" taggedAs (LongRunningTest) in {
|
||||
"remove registrations when node dies".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
testNodeRemoval(down = true)
|
||||
}
|
||||
|
||||
"remove registrations when node leaves" taggedAs (LongRunningTest) in {
|
||||
"remove registrations when node leaves".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
testNodeRemoval(down = false)
|
||||
}
|
||||
|
||||
|
|
@ -215,7 +219,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
}
|
||||
}
|
||||
|
||||
"not remove registrations when self is shutdown" taggedAs (LongRunningTest) in {
|
||||
"not remove registrations when self is shutdown".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-4", ClusterReceptionistSpec.config)
|
||||
val system1 = testKit1.system
|
||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||
|
|
@ -264,7 +268,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
|
||||
}
|
||||
|
||||
"work with services registered before node joins cluster" taggedAs (LongRunningTest) in {
|
||||
"work with services registered before node joins cluster".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-5", ClusterReceptionistSpec.config)
|
||||
val system1 = testKit1.system
|
||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||
|
|
@ -322,7 +326,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
}
|
||||
}
|
||||
|
||||
"handle a new incarnation of the same node well" taggedAs (LongRunningTest) in {
|
||||
"handle a new incarnation of the same node well".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-6", ClusterReceptionistSpec.config)
|
||||
val system1 = testKit1.system
|
||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||
|
|
@ -423,7 +427,9 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
}
|
||||
|
||||
// reproducer of issue #26284
|
||||
"handle a new incarnation of the same node that is no longer part of same cluster" taggedAs (LongRunningTest) in {
|
||||
"handle a new incarnation of the same node that is no longer part of same cluster".taggedAs(
|
||||
LongRunningTest,
|
||||
GHExcludeAeronTest) in {
|
||||
val testKit1 = ActorTestKit(
|
||||
"ClusterReceptionistSpec-test-7",
|
||||
ConfigFactory.parseString("""
|
||||
|
|
@ -527,7 +533,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
}
|
||||
}
|
||||
|
||||
"not lose removals on concurrent updates to same key" taggedAs (LongRunningTest) in {
|
||||
"not lose removals on concurrent updates to same key".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
val config = ConfigFactory.parseString("""
|
||||
# disable delta propagation so we can have repeatable concurrent writes
|
||||
# without delta reaching between nodes already
|
||||
|
|
@ -598,7 +604,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
}
|
||||
}
|
||||
|
||||
"not conflict with the ClusterClient receptionist default name" taggedAs (LongRunningTest) in {
|
||||
"not conflict with the ClusterClient receptionist default name".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
val testKit = ActorTestKit(s"ClusterReceptionistSpec-test-9", ClusterReceptionistSpec.config)
|
||||
try {
|
||||
testKit.system.systemActorOf(Behaviors.ignore, "receptionist")
|
||||
|
|
@ -607,7 +613,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
}
|
||||
}
|
||||
|
||||
"handle unregistration and re-registration of services" taggedAs (LongRunningTest) in {
|
||||
"handle unregistration and re-registration of services".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-10", ClusterReceptionistSpec.config)
|
||||
val system1 = testKit1.system
|
||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||
|
|
@ -665,7 +671,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
|
||||
}
|
||||
|
||||
"handle unregistration per key not per actor" taggedAs (LongRunningTest) in {
|
||||
"handle unregistration per key not per actor".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-11", ClusterReceptionistSpec.config)
|
||||
val system1 = testKit1.system
|
||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||
|
|
@ -717,7 +723,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
|
||||
}
|
||||
|
||||
"handle concurrent unregistration and registration on different nodes" taggedAs (LongRunningTest) in {
|
||||
"handle concurrent unregistration and registration on different nodes".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
// this covers the fact that with ddata a removal can be lost
|
||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-12", ClusterReceptionistSpec.config)
|
||||
val system1 = testKit1.system
|
||||
|
|
@ -776,7 +782,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
}
|
||||
// Fixme concurrent registration and unregistration
|
||||
|
||||
"notify subscribers when registering and joining simultaneously" taggedAs (LongRunningTest) in {
|
||||
"notify subscribers when registering and joining simultaneously".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
// failing test reproducer for issue #28792
|
||||
// It's possible that the registry entry from the ddata update arrives before MemberJoined.
|
||||
val config = ConfigFactory.parseString("""
|
||||
|
|
@ -839,7 +845,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
|||
}
|
||||
}
|
||||
|
||||
"never use durable store" taggedAs (LongRunningTest) in {
|
||||
"never use durable store".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
val testKit = ActorTestKit("ClusterReceptionistSpec-test-14", ClusterReceptionistSpec.config)
|
||||
val system = testKit.system
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,10 @@ package akka.cluster
|
|||
|
||||
import scala.collection.{ immutable => im }
|
||||
import scala.concurrent.duration._
|
||||
|
||||
import com.typesafe.config.{ Config, ConfigFactory }
|
||||
|
||||
import akka.testkit.GHExcludeAeronTest
|
||||
import akka.testkit.LongRunningTest
|
||||
|
||||
object JoinConfigCompatCheckerRollingUpdateSpec {
|
||||
|
|
@ -47,14 +50,18 @@ class JoinConfigCompatCheckerRollingUpdateSpec
|
|||
|
||||
"A Node" must {
|
||||
val timeout = 20.seconds
|
||||
"NOT be allowed to re-join a cluster if it has a new, additional configuration the others do not have and not the old" taggedAs LongRunningTest in {
|
||||
"NOT be allowed to re-join a cluster if it has a new, additional configuration the others do not have and not the old"
|
||||
.taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
// confirms the 2 attempted re-joins fail with both nodes being terminated
|
||||
upgradeCluster(3, v1Config, v2ConfigIncompatible, timeout, timeout, enforced = true, shouldRejoin = false)
|
||||
}
|
||||
"be allowed to re-join a cluster if it has a new, additional property and checker the others do not have" taggedAs LongRunningTest in {
|
||||
"be allowed to re-join a cluster if it has a new, additional property and checker the others do not have".taggedAs(
|
||||
LongRunningTest,
|
||||
GHExcludeAeronTest) in {
|
||||
upgradeCluster(3, v1Config, v2Config, timeout, timeout * 3, enforced = true, shouldRejoin = true)
|
||||
}
|
||||
"be allowed to re-join a cluster if it has a new, additional configuration the others do not have and configured to NOT enforce it" taggedAs LongRunningTest in {
|
||||
"be allowed to re-join a cluster if it has a new, additional configuration the others do not have and configured to NOT enforce it"
|
||||
.taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||
upgradeCluster(3, v1Config, v2Config, timeout, timeout * 3, enforced = false, shouldRejoin = true)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,3 +11,4 @@ object LongRunningTest extends Tag("long-running")
|
|||
object PerformanceTest extends Tag("performance")
|
||||
|
||||
object GHExcludeTest extends Tag("gh-exclude")
|
||||
object GHExcludeAeronTest extends Tag("gh-exclude-aeron")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue