2012-06-22 18 views
6

Tôi đang gặp sự cố khi chạy nhiều thông số chức năng (sử dụng specs2), kiểm tra cụ thể bắt đầu Máy chủ kiểm tra, mở trình duyệt HTMLUNIT và điều hướng đến trang để kiểm tra phần tử. Trang được đề cập sẽ tải các phần tử mà chúng tôi kiểm tra theo yêu cầu ajax. Việc chờ phần tử hiển thị thời gian với thông báo lỗi bên dưới.Làm cách nào để chạy nhiều thông số chức năng với TestServer trong Play 2.0.1?

Đoạn mã:

trait CommonSteps extends BaseSpecfication { 
    val testServer: TestServer = TestServer(3333) 
    val testServerBaseURL: String = "http://localhost:3333/" 

    override def map(fs: => Fragments) = 
    Step(testServer.start())^super.map(fs)^Step(testServer.stop()) 

} 

class FunctionalTest1 extends Specification with CommonSteps { def is = 
    ... 

    ... extends When[...] { 
    val browser: TestBrowser = TestBrowser.of(HTMLUNIT) 
    browser.goTo(testServerBaseURL + "/some_path") 
    browser 
    } 

    ... extends Then[...] { 
    browser.await.until("element that is loaded on ajax request").isPresent() 
    ... 
    } 

} 

Chúng tôi nhận được lỗi:

Caused by: java.sql.SQLException: Attempting to obtain a connection from a pool that has already been shutdown. 
Stack trace of location where pool was shutdown follows: 
    java.lang.Thread.getStackTrace(Thread.java:1479) 
    com.jolbox.bonecp.BoneCP.captureStackTrace(BoneCP.java:543) 
    com.jolbox.bonecp.BoneCP.shutdown(BoneCP.java:159) 
    com.jolbox.bonecp.BoneCPDataSource.close(BoneCPDataSource.java:123) 
    play.api.db.BoneCPApi.shutdownPool(DB.scala:387) 
    play.api.db.BoneCPPlugin$$anonfun$onStop$1.apply(DB.scala:252) 
    play.api.db.BoneCPPlugin$$anonfun$onStop$1.apply(DB.scala:250) 
    scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) 
    scala.collection.immutable.List.foreach(List.scala:45) 
    play.api.db.BoneCPPlugin.onStop(DB.scala:250) 
    play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:75) 
    play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:74) 
    scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) 
    scala.collection.immutable.List.foreach(List.scala:45) 
    play.api.Play$$anonfun$stop$1.apply(Play.scala:74) 
    play.api.Play$$anonfun$stop$1.apply(Play.scala:74) 
    scala.Option.map(Option.scala:133) 
    play.api.Play$.stop(Play.scala:73) 
    play.core.server.NettyServer.stop(NettyServer.scala:73) 

Trong khi kiểm tra hoạt động khi chạy trong sự cô lập, chúng tôi nhận được lỗi khi chạy hai hoặc nhiều trong số họ lại với nhau.

Có vẻ như liên quan đến this issue, mặc dù ví dụ của tôi là ứng dụng Scala Play. Có ai có thể xác nhận rằng sự cố này được khắc phục trong phiên bản Play mới hơn không? Hoặc, có cách giải quyết khác để tránh lỗi này trong Play 2.0.1 hay không.

Trả lời

3

Sự cố này sẽ được khắc phục trong Play 2.0.2, hiện đang ở trạng thái RC. Nó là an toàn để nâng cấp từ 2.0.1 lên 2.0.2, vì mọi thứ đều tương thích ngược.

Nhờ @ guillaume-bort để cung cấp thông tin này.

+0

Thông tin khác có sẵn tại đây: https://groups.google.com/forum/?fromgroups=#!topic/play-framework/znFuqeRz84w – blackbox

Các vấn đề liên quan