diff --git a/.github/workflows/scala.yml b/.github/workflows/scala.yml new file mode 100644 index 0000000..a330fdb --- /dev/null +++ b/.github/workflows/scala.yml @@ -0,0 +1,17 @@ +name: Scala CI + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11.0 + - name: Run tests + run: sbt test diff --git a/src/test/scala/org/dist/kvstore/locator/RackUnawareStrategyTest.scala b/src/test/scala/org/dist/kvstore/locator/RackUnawareStrategyTest.scala index 7c5b5ae..8b0033d 100644 --- a/src/test/scala/org/dist/kvstore/locator/RackUnawareStrategyTest.scala +++ b/src/test/scala/org/dist/kvstore/locator/RackUnawareStrategyTest.scala @@ -20,7 +20,7 @@ class RackUnawareStrategyTest extends FunSuite { tokenMetadata.update(newToken(), InetAddressAndPort.create("10.10.10.14", 8000)) val rackUnawareStrategy = new RackUnawareStrategy(tokenMetadata) - assert(2 == getEndPoints(rackUnawareStrategy, "5")) + assert(2 == getEndPoints(rackUnawareStrategy, "5").length) } diff --git a/src/test/scala/org/dist/queue/AdminUtilsTest.scala b/src/test/scala/org/dist/queue/AdminUtilsTest.scala index 92aade5..92496d5 100644 --- a/src/test/scala/org/dist/queue/AdminUtilsTest.scala +++ b/src/test/scala/org/dist/queue/AdminUtilsTest.scala @@ -14,8 +14,8 @@ import scala.collection.{Map, mutable} class AdminUtilsTest extends ZookeeperTestHarness { test("should create assign replicas to topic partitions") { - val value: collection.Map[Int, collection.Seq[Int]] = AdminUtils.assignReplicasToBrokers(Seq(0, 1), 1, 1) - assert(value(0) == List(1)) + val value: collection.Map[Int, collection.Seq[Int]] = AdminUtils.assignReplicasToBrokers(Seq(0, 1), 1, 1, 0) + assert(value(0) == List(0)) } test("should spread replicas on other brokers") { diff --git a/src/test/scala/org/dist/simplekafka/ControllerZookeeperFailureTests.scala b/src/test/scala/org/dist/simplekafka/ControllerZookeeperFailureTests.scala index 34d02e2..f0dd725 100644 --- a/src/test/scala/org/dist/simplekafka/ControllerZookeeperFailureTests.scala +++ b/src/test/scala/org/dist/simplekafka/ControllerZookeeperFailureTests.scala @@ -6,7 +6,7 @@ import org.dist.util.Networks import scala.jdk.CollectionConverters._ - +// TODO Flaky test. Code block ("clean up") towards the end is an attempt to fix the flakiness class ControllerZookeeperFailureTests extends ZookeeperTestHarness { test("should elect new broker as leader once controller shuts down") { val broker1 = newBroker(1) @@ -54,6 +54,11 @@ class ControllerZookeeperFailureTests extends ZookeeperTestHarness { partitionReplicaLeaderInfo.foreach(leaderAndReplicas => { assert(leaderAndReplicas.partitionStateInfo.leader.id != 1) }) + + // Clean up + broker2.shutdown() + broker3.shutdown() + Thread.sleep(1000) // Delay for brokers to finish shutting down. } def testSocketServer(server: Server) = { diff --git a/src/test/scala/org/dist/simplekafka/ProducerConsumerTest.scala b/src/test/scala/org/dist/simplekafka/ProducerConsumerTest.scala index 853869c..4bbe795 100644 --- a/src/test/scala/org/dist/simplekafka/ProducerConsumerTest.scala +++ b/src/test/scala/org/dist/simplekafka/ProducerConsumerTest.scala @@ -53,6 +53,14 @@ class ProducerConsumerTest extends ZookeeperTestHarness with Logging { assert(messages.get("key1") == "message1") assert(messages.get("key2") == "message2") assert(messages.get("key3") == "message3") + + // Clean up + broker1.shutdown() + broker2.shutdown() + broker3.shutdown() + broker4.shutdown() + broker5.shutdown() + Thread.sleep(1000) // Delay for brokers to finish shutting down. } private def leaderCache(broker: Server) = {