From 6187665755fee26bb55525cfcc108c1c948f591b Mon Sep 17 00:00:00 2001 From: Chandan Kumar Date: Mon, 10 Feb 2020 16:09:57 +0530 Subject: [PATCH 1/6] Add build pipeline --- .github/workflows/scala.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/scala.yml diff --git a/.github/workflows/scala.yml b/.github/workflows/scala.yml new file mode 100644 index 0000000..545ce18 --- /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 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Run tests + run: sbt test From 58e73f24121c1d89c568eff4be3b908f2d7763f1 Mon Sep 17 00:00:00 2001 From: Chandan Kumar Date: Mon, 10 Feb 2020 16:32:01 +0530 Subject: [PATCH 2/6] Update scala.yml --- .github/workflows/scala.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/scala.yml b/.github/workflows/scala.yml index 545ce18..a330fdb 100644 --- a/.github/workflows/scala.yml +++ b/.github/workflows/scala.yml @@ -9,9 +9,9 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 1.8 + - name: Set up JDK 11 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11.0 - name: Run tests run: sbt test From 0fb7599e5a1c02b0a3626656a5f7a2dba0bc1910 Mon Sep 17 00:00:00 2001 From: Chandan Date: Wed, 12 Feb 2020 11:05:18 +0530 Subject: [PATCH 3/6] Fix RackUnawareStrategyTest --- .../org/dist/kvstore/locator/RackUnawareStrategyTest.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) } From 2573e455456506356fbd49437fca0b0304c46407 Mon Sep 17 00:00:00 2001 From: Chandan Date: Wed, 12 Feb 2020 11:28:27 +0530 Subject: [PATCH 4/6] Fix test failures by cleaning up after execution --- .../dist/simplekafka/ControllerZookeeperFailureTests.scala | 4 ++++ .../scala/org/dist/simplekafka/ProducerConsumerTest.scala | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/src/test/scala/org/dist/simplekafka/ControllerZookeeperFailureTests.scala b/src/test/scala/org/dist/simplekafka/ControllerZookeeperFailureTests.scala index 34d02e2..706e917 100644 --- a/src/test/scala/org/dist/simplekafka/ControllerZookeeperFailureTests.scala +++ b/src/test/scala/org/dist/simplekafka/ControllerZookeeperFailureTests.scala @@ -54,6 +54,10 @@ class ControllerZookeeperFailureTests extends ZookeeperTestHarness { partitionReplicaLeaderInfo.foreach(leaderAndReplicas => { assert(leaderAndReplicas.partitionStateInfo.leader.id != 1) }) + + // Clean up + broker2.shutdown() + broker3.shutdown() } 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..d8c6976 100644 --- a/src/test/scala/org/dist/simplekafka/ProducerConsumerTest.scala +++ b/src/test/scala/org/dist/simplekafka/ProducerConsumerTest.scala @@ -53,6 +53,13 @@ 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() } private def leaderCache(broker: Server) = { From 1f482075331b3c1e3e2492c995ea9f8b4cc01c8a Mon Sep 17 00:00:00 2001 From: Chandan Date: Wed, 12 Feb 2020 11:42:04 +0530 Subject: [PATCH 5/6] Add 1 second wait for brokers to finish shutting down --- .../org/dist/simplekafka/ControllerZookeeperFailureTests.scala | 1 + src/test/scala/org/dist/simplekafka/ProducerConsumerTest.scala | 1 + 2 files changed, 2 insertions(+) diff --git a/src/test/scala/org/dist/simplekafka/ControllerZookeeperFailureTests.scala b/src/test/scala/org/dist/simplekafka/ControllerZookeeperFailureTests.scala index 706e917..ff77dde 100644 --- a/src/test/scala/org/dist/simplekafka/ControllerZookeeperFailureTests.scala +++ b/src/test/scala/org/dist/simplekafka/ControllerZookeeperFailureTests.scala @@ -58,6 +58,7 @@ class ControllerZookeeperFailureTests extends ZookeeperTestHarness { // Clean up broker2.shutdown() broker3.shutdown() + Thread.sleep(1000) } 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 d8c6976..6f9a31f 100644 --- a/src/test/scala/org/dist/simplekafka/ProducerConsumerTest.scala +++ b/src/test/scala/org/dist/simplekafka/ProducerConsumerTest.scala @@ -60,6 +60,7 @@ class ProducerConsumerTest extends ZookeeperTestHarness with Logging { broker3.shutdown() broker4.shutdown() broker5.shutdown() + Thread.sleep(1000) } private def leaderCache(broker: Server) = { From c3aa0d5d262f451b6d45a0f515e22bd00773ad5e Mon Sep 17 00:00:00 2001 From: Chandan Date: Thu, 13 Feb 2020 10:56:24 +0530 Subject: [PATCH 6/6] Fix a flaky test due to randInt --- src/test/scala/org/dist/queue/AdminUtilsTest.scala | 4 ++-- .../dist/simplekafka/ControllerZookeeperFailureTests.scala | 4 ++-- .../scala/org/dist/simplekafka/ProducerConsumerTest.scala | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) 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 ff77dde..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) @@ -58,7 +58,7 @@ class ControllerZookeeperFailureTests extends ZookeeperTestHarness { // Clean up broker2.shutdown() broker3.shutdown() - Thread.sleep(1000) + 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 6f9a31f..4bbe795 100644 --- a/src/test/scala/org/dist/simplekafka/ProducerConsumerTest.scala +++ b/src/test/scala/org/dist/simplekafka/ProducerConsumerTest.scala @@ -60,7 +60,7 @@ class ProducerConsumerTest extends ZookeeperTestHarness with Logging { broker3.shutdown() broker4.shutdown() broker5.shutdown() - Thread.sleep(1000) + Thread.sleep(1000) // Delay for brokers to finish shutting down. } private def leaderCache(broker: Server) = {