Skip to content
Snippets Groups Projects
Commit 5644e787 authored by Markus Thömmes's avatar Markus Thömmes Committed by rodric rabbah
Browse files

Harden replication test (#1834)

parent d42ee545
No related branches found
No related tags found
No related merge requests found
...@@ -21,6 +21,7 @@ import akka.actor.ActorSystem ...@@ -21,6 +21,7 @@ import akka.actor.ActorSystem
import akka.http.scaladsl.model._ import akka.http.scaladsl.model._
import spray.json._ import spray.json._
import spray.json.DefaultJsonProtocol._
import whisk.core.database.CouchDbRestClient import whisk.core.database.CouchDbRestClient
...@@ -32,15 +33,23 @@ class ExtendedCouchDbRestClient(protocol: String, host: String, port: Int, usern ...@@ -32,15 +33,23 @@ class ExtendedCouchDbRestClient(protocol: String, host: String, port: Int, usern
// http://docs.couchdb.org/en/1.6.1/api/server/common.html#get-- // http://docs.couchdb.org/en/1.6.1/api/server/common.html#get--
def instanceInfo(): Future[Either[StatusCode, JsObject]] = 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 // http://docs.couchdb.org/en/1.6.1/api/database/common.html#put--db
def createDb(): Future[Either[StatusCode, JsObject]] = 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 // http://docs.couchdb.org/en/1.6.1/api/database/common.html#delete--db
def deleteDb(): Future[Either[StatusCode, JsObject]] = 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 // 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]] = { def getAllDocs(skip: Option[Int] = None, limit: Option[Int] = None, includeDocs: Option[Boolean] = None): Future[Either[StatusCode, JsObject]] = {
...@@ -55,6 +64,6 @@ class ExtendedCouchDbRestClient(protocol: String, host: String, port: Int, usern ...@@ -55,6 +64,6 @@ class ExtendedCouchDbRestClient(protocol: String, host: String, port: Int, usern
}).toMap }).toMap
val url = uri(db, "_all_docs").withQuery(Uri.Query(argMap)) val url = uri(db, "_all_docs").withQuery(Uri.Query(argMap))
requestJson(mkRequest(HttpMethods.GET, url)) requestJson[JsObject](mkRequest(HttpMethods.GET, url))
} }
} }
...@@ -74,6 +74,12 @@ class ReplicatorTests extends FlatSpec ...@@ -74,6 +74,12 @@ class ReplicatorTests extends FlatSpec
println(s"Creating database: $name") println(s"Creating database: $name")
val db = new ExtendedCouchDbRestClient(config.dbProtocol, config.dbHost, config.dbPort.toInt, config.dbUsername, config.dbPassword, name) val db = new ExtendedCouchDbRestClient(config.dbProtocol, config.dbHost, config.dbPort.toInt, config.dbUsername, config.dbPassword, name)
db.createDb().futureValue shouldBe 'right db.createDb().futureValue shouldBe 'right
retry({
val list = db.dbs().futureValue.right.get
list should contain(name)
}, N = 10, waitBeforeRetry = Some(500.milliseconds))
db db
} }
...@@ -82,8 +88,8 @@ class ReplicatorTests extends FlatSpec ...@@ -82,8 +88,8 @@ class ReplicatorTests extends FlatSpec
println(s"Removing database: $name") println(s"Removing database: $name")
val db = new ExtendedCouchDbRestClient(config.dbProtocol, config.dbHost, config.dbPort.toInt, config.dbUsername, config.dbPassword, name) val db = new ExtendedCouchDbRestClient(config.dbProtocol, config.dbHost, config.dbPort.toInt, config.dbUsername, config.dbPassword, name)
retry({ retry({
val delete = db.deleteDb() val delete = db.deleteDb().futureValue
if (!ignoreFailure) delete.futureValue shouldBe 'right if (!ignoreFailure) delete shouldBe 'right
}, N = 10, waitBeforeRetry = Some(500.milliseconds)) }, N = 10, waitBeforeRetry = Some(500.milliseconds))
db db
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment