重新启动Spark服务器后,为什么会出现“连接被拒绝”错误?

时间:2018-08-15 14:11:26

标签: junit kotlin integration-testing spark-java

我有这个测试班:

class PostIT {

    companion object {

        @BeforeClass
        @JvmStatic
        fun initialise() {
            baseURI = "http://localhost:4567"
            Server.start()
        }

        @AfterClass
        @JvmStatic
        fun tearDown() {
            Server.stop()
        }

    }

    //some test cases

}

class UserIT {

    companion object {

        @BeforeClass
        @JvmStatic
        fun initialise() {
            baseURI = "http://localhost:4567"
            Server.start()
        }

        @AfterClass
        @JvmStatic
        fun tearDown() {
            Server.stop()
        }

    }

    //some test cases

}

Server对象:

object Server {

    fun start() {
        Spark.init()
        prepareRoutes()
    }

    fun stop() {
        Spark.stop()
    }

    private fun prepareRoutes() {
        get("/users", whatever)
        //more routes
    }        

}

当我分别运行两个测试类时,它可以正常工作。但是,当我告诉IDE同时运行两个测试类时,在运行第二个测试类时得到connection refused error

当服务器停止时,它再也不会启动。就像Spark.init()在服务器停止后无法正常工作。

我还尝试过在Spark.awaitInitialization()之后致电Spark.init()

我想念什么?

1 个答案:

答案 0 :(得分:0)

解决了!实际上,问题不在于停止后的服务器初始化。我们必须等到服务器停止。我找到了解决方法here

fun stop() {
    try {
        Spark.stop()
        while (true) {
            try {
                Spark.port()
                Thread.sleep(500)
            } catch (ignored: IllegalStateException) {
                break
            }

        }
    } catch (ex: Exception) {
    }
}