Harden replication test (#1834)
diff --git a/tests/src/whisk/core/database/test/ExtendedCouchDbRestClient.scala b/tests/src/whisk/core/database/test/ExtendedCouchDbRestClient.scala
index d4d7858..2ac2845 100644
--- a/tests/src/whisk/core/database/test/ExtendedCouchDbRestClient.scala
+++ b/tests/src/whisk/core/database/test/ExtendedCouchDbRestClient.scala
@@ -21,6 +21,7 @@
import akka.http.scaladsl.model._
import spray.json._
+import spray.json.DefaultJsonProtocol._
import whisk.core.database.CouchDbRestClient
@@ -32,15 +33,23 @@
// http://docs.couchdb.org/en/1.6.1/api/server/common.html#get--
def instanceInfo(): Future[Either[StatusCode, JsObject]] =
- requestJson(mkRequest(HttpMethods.GET, Uri./))
+ requestJson[JsObject](mkRequest(HttpMethods.GET, Uri./))
+
+ // http://docs.couchdb.org/en/1.6.1/api/server/common.html#all-dbs
+ def dbs(): Future[Either[StatusCode, List[String]]] = {
+ implicit val ec = system.dispatcher
+ requestJson[JsArray](mkRequest(HttpMethods.GET, uri("_all_dbs"))).map { either =>
+ either.right.map(_.convertTo[List[String]])
+ }
+ }
// http://docs.couchdb.org/en/1.6.1/api/database/common.html#put--db
def createDb(): Future[Either[StatusCode, JsObject]] =
- requestJson(mkRequest(HttpMethods.PUT, uri(db)))
+ requestJson[JsObject](mkRequest(HttpMethods.PUT, uri(db)))
// http://docs.couchdb.org/en/1.6.1/api/database/common.html#delete--db
def deleteDb(): Future[Either[StatusCode, JsObject]] =
- requestJson(mkRequest(HttpMethods.DELETE, uri(db)))
+ requestJson[JsObject](mkRequest(HttpMethods.DELETE, uri(db)))
// http://docs.couchdb.org/en/1.6.1/api/database/bulk-api.html#get--db-_all_docs
def getAllDocs(skip: Option[Int] = None, limit: Option[Int] = None, includeDocs: Option[Boolean] = None): Future[Either[StatusCode, JsObject]] = {
@@ -55,6 +64,6 @@
}).toMap
val url = uri(db, "_all_docs").withQuery(Uri.Query(argMap))
- requestJson(mkRequest(HttpMethods.GET, url))
+ requestJson[JsObject](mkRequest(HttpMethods.GET, url))
}
}
diff --git a/tests/src/whisk/core/database/test/ReplicatorTests.scala b/tests/src/whisk/core/database/test/ReplicatorTests.scala
index 172fcae..d579d7c 100644
--- a/tests/src/whisk/core/database/test/ReplicatorTests.scala
+++ b/tests/src/whisk/core/database/test/ReplicatorTests.scala
@@ -74,6 +74,12 @@
println(s"Creating database: $name")
val db = new ExtendedCouchDbRestClient(config.dbProtocol, config.dbHost, config.dbPort.toInt, config.dbUsername, config.dbPassword, name)
db.createDb().futureValue shouldBe 'right
+
+ retry({
+ val list = db.dbs().futureValue.right.get
+ list should contain(name)
+ }, N = 10, waitBeforeRetry = Some(500.milliseconds))
+
db
}
@@ -82,8 +88,8 @@
println(s"Removing database: $name")
val db = new ExtendedCouchDbRestClient(config.dbProtocol, config.dbHost, config.dbPort.toInt, config.dbUsername, config.dbPassword, name)
retry({
- val delete = db.deleteDb()
- if (!ignoreFailure) delete.futureValue shouldBe 'right
+ val delete = db.deleteDb().futureValue
+ if (!ignoreFailure) delete shouldBe 'right
}, N = 10, waitBeforeRetry = Some(500.milliseconds))
db
}