You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@openwhisk.apache.org by GitBox <gi...@apache.org> on 2018/02/06 12:16:20 UTC
[GitHub] cbickel closed pull request #3186: Rework some tests.
cbickel closed pull request #3186: Rework some tests.
URL: https://github.com/apache/incubator-openwhisk/pull/3186
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/tests/src/test/scala/common/BaseWsk.scala b/tests/src/test/scala/common/BaseWsk.scala
index 775bfe03cb..655f578292 100644
--- a/tests/src/test/scala/common/BaseWsk.scala
+++ b/tests/src/test/scala/common/BaseWsk.scala
@@ -17,22 +17,18 @@
package common
-import java.io.BufferedWriter
-import java.io.File
-import java.io.FileWriter
+import java.io._
import java.time.Instant
-import scala.concurrent.duration.DurationInt
-import scala.collection.mutable.Buffer
-import scala.concurrent.duration.Duration
-import scala.language.postfixOps
+import common.TestUtils._
import org.scalatest.Matchers
-
-import TestUtils._
-import spray.json.JsObject
-import spray.json.JsValue
-import spray.json.pimpString
+import spray.json._
import whisk.core.entity.ByteSize
+import whisk.utils.retry
+
+import scala.collection.mutable.Buffer
+import scala.concurrent.duration._
+import scala.language.postfixOps
case class WskProps(
authKey: String = WhiskProperties.readAuthKey(WhiskProperties.getAuthFileForTesting),
@@ -72,21 +68,7 @@ trait WaitFor {
pollPeriod: Duration = 1 second,
totalWait: Duration = 30 seconds): T = {
Thread.sleep(initialWait.toMillis)
- val endTime = System.currentTimeMillis() + totalWait.toMillis
- while (System.currentTimeMillis() < endTime) {
- val predicate = step()
- predicate match {
- case (t: Boolean) if t =>
- return predicate
- case (t: Any) if t != null && !t.isInstanceOf[Boolean] =>
- return predicate
- case _ if System.currentTimeMillis() >= endTime =>
- return predicate
- case _ =>
- Thread.sleep(pollPeriod.toMillis)
- }
- }
- null.asInstanceOf[T]
+ retry[T](step(), (totalWait / pollPeriod).toInt, Some(pollPeriod))
}
}
diff --git a/tests/src/test/scala/common/Wsk.scala b/tests/src/test/scala/common/Wsk.scala
index 1192e6eebf..ea3b52c389 100644
--- a/tests/src/test/scala/common/Wsk.scala
+++ b/tests/src/test/scala/common/Wsk.scala
@@ -684,9 +684,8 @@ class WskActivation() extends RunWskCmd with HasActivation with WaitFor with Bas
() => {
val result =
cli(wp.overrides ++ Seq(noun, "get", activationId, "--auth", wp.authKey), expectedExitCode = DONTCARE_EXIT)
- if (result.exitCode == NOT_FOUND) {
- null
- } else if (result.exitCode == SUCCESS_EXIT) {
+ result.exitCode shouldNot be(NOT_FOUND)
+ if (result.exitCode == SUCCESS_EXIT) {
Right(result.stdout)
} else Left(s"$result")
},
diff --git a/tests/src/test/scala/common/rest/WskRest.scala b/tests/src/test/scala/common/rest/WskRest.scala
index 4934b8ec42..30860432ee 100644
--- a/tests/src/test/scala/common/rest/WskRest.scala
+++ b/tests/src/test/scala/common/rest/WskRest.scala
@@ -18,76 +18,40 @@
package common.rest
import java.io.File
+import java.nio.charset.StandardCharsets
+import java.security.cert.X509Certificate
import java.time.Instant
import java.util.Base64
-import java.security.cert.X509Certificate
+import javax.net.ssl._
+
+import akka.http.scaladsl.model.HttpMethods._
+import akka.http.scaladsl.model.StatusCodes.{Accepted, BadRequest, NotFound, OK}
+import akka.http.scaladsl.model.Uri.Path
+import akka.http.scaladsl.model._
+import akka.http.scaladsl.model.headers._
+import akka.http.scaladsl.settings.ConnectionPoolSettings
+import akka.http.scaladsl.{Http, HttpsConnectionContext}
+import akka.stream._
+import akka.stream.scaladsl._
+import com.typesafe.sslconfig.akka.AkkaSSLConfig
+import common.TestUtils._
+import common._
import org.apache.commons.io.FileUtils
-import org.scalatest.Matchers
-import org.scalatest.FlatSpec
+import org.scalatest._
import org.scalatest.concurrent.ScalaFutures
import org.scalatest.time.Span.convertDurationToSpan
-import scala.Left
-import scala.Right
-import scala.collection.JavaConversions.mapAsJavaMap
-import scala.collection.mutable.Buffer
-import scala.collection.immutable.Seq
-import scala.concurrent.duration.Duration
-import scala.concurrent.duration.DurationInt
-import scala.concurrent.{Future, Promise}
-import scala.language.postfixOps
-import scala.util.Failure
-import scala.util.Success
-import scala.util.Try
-import scala.util.{Failure, Success}
-import akka.http.scaladsl.model.StatusCode
-import akka.http.scaladsl.model.StatusCodes.Accepted
-import akka.http.scaladsl.model.StatusCodes.NotFound
-import akka.http.scaladsl.model.StatusCodes.BadRequest
-import akka.http.scaladsl.model.StatusCodes.OK
-import akka.http.scaladsl.model.HttpRequest
-import akka.http.scaladsl.model.HttpMethod
-import akka.http.scaladsl.model.HttpResponse
-import akka.http.scaladsl.model.headers.Authorization
-import akka.http.scaladsl.model.HttpEntity
-import akka.http.scaladsl.model.ContentTypes
-import akka.http.scaladsl.Http
-import akka.http.scaladsl.model.headers.BasicHttpCredentials
-import akka.http.scaladsl.model.Uri
-import akka.http.scaladsl.model.Uri.Path
-import akka.http.scaladsl.model.HttpMethods.DELETE
-import akka.http.scaladsl.model.HttpMethods.GET
-import akka.http.scaladsl.model.HttpMethods.POST
-import akka.http.scaladsl.model.HttpMethods.PUT
-import akka.http.scaladsl.HttpsConnectionContext
-import akka.http.scaladsl.settings.ConnectionPoolSettings
-import akka.stream.ActorMaterializer
-import akka.stream.scaladsl.{Keep, Sink, Source}
-import akka.stream.{OverflowStrategy, QueueOfferResult}
-import spray.json._
import spray.json.DefaultJsonProtocol._
-import spray.json.JsObject
-import spray.json.JsValue
-import spray.json.pimpString
-import common._
-import common.BaseDeleteFromCollection
-import common.BaseListOrGetFromCollection
-import common.HasActivation
-import common.RunWskCmd
-import common.TestUtils
-import common.TestUtils.SUCCESS_EXIT
-import common.TestUtils.DONTCARE_EXIT
-import common.TestUtils.ANY_ERROR_EXIT
-import common.TestUtils.DONTCARE_EXIT
-import common.TestUtils.RunResult
-import common.WaitFor
-import common.WhiskProperties
-import common.WskActorSystem
-import common.WskProps
+import spray.json._
import whisk.core.entity.ByteSize
import whisk.utils.retry
-import javax.net.ssl.{HostnameVerifier, KeyManager, SSLContext, SSLSession, X509TrustManager}
-import com.typesafe.sslconfig.akka.AkkaSSLConfig
-import java.nio.charset.StandardCharsets
+
+import scala.collection.JavaConversions.mapAsJavaMap
+import scala.collection.immutable.Seq
+import scala.collection.mutable.Buffer
+import scala.concurrent._
+import scala.concurrent.duration._
+import scala.language.postfixOps
+import scala.util._
class AcceptAllHostNameVerifier extends HostnameVerifier {
override def verify(s: String, sslSession: SSLSession): Boolean = true
@@ -780,19 +744,18 @@ class WskRestActivation extends RunWskRestCmd with HasActivationRest with WaitFo
pollPeriod: Duration = 1 second,
totalWait: Duration = 30 seconds)(implicit wp: WskProps): Either[String, JsObject] = {
val activation = waitfor(() => {
- val result = get(Some(activationId), expectedExitCode = DONTCARE_EXIT)(wp)
- if (result.statusCode == NotFound) {
- null
- } else result
+ val result = get(Some(activationId), expectedExitCode = DONTCARE_EXIT)
+ result.statusCode shouldNot be(NotFound)
+ result
}, initialWait, pollPeriod, totalWait)
+
Try {
- assert(activation.statusCode == OK)
- assert(activation.getField("activationId") != "")
+ activation.statusCode shouldBe (OK)
+ activation.getField("activationId") shouldNot be("")
activation.respBody
} map {
Right(_)
} getOrElse Left(s"Cannot find activation id from '$activation'")
-
}
override def logs(activationId: Option[String] = None,
@@ -1525,7 +1488,7 @@ object RestResult {
}
}
-class RestResult(var statusCode: StatusCode, var respData: String = "", blocking: Boolean = false)
+class RestResult(val statusCode: StatusCode, val respData: String = "", blocking: Boolean = false)
extends RunResult(
RestResult.convertStausCodeToExitCode(statusCode, blocking),
respData,
diff --git a/tests/src/test/scala/whisk/core/database/test/CleanUpActivationsTest.scala b/tests/src/test/scala/whisk/core/database/test/CleanUpActivationsTest.scala
index 997397fe87..43db70e50f 100644
--- a/tests/src/test/scala/whisk/core/database/test/CleanUpActivationsTest.scala
+++ b/tests/src/test/scala/whisk/core/database/test/CleanUpActivationsTest.scala
@@ -20,25 +20,17 @@ package whisk.core.database.test
import java.io.File
import java.time.Instant
-import scala.concurrent.duration.DurationInt
-import scala.concurrent.duration.FiniteDuration
-import scala.language.implicitConversions
-
+import akka.http.scaladsl.model.StatusCodes
+import common._
import org.junit.runner.RunWith
-import org.scalatest.FlatSpec
-import org.scalatest.Matchers
+import org.scalatest._
import org.scalatest.concurrent.ScalaFutures
import org.scalatest.junit.JUnitRunner
-
-import akka.http.scaladsl.model.StatusCodes
-import common.StreamLogging
-import common.TestUtils
-import common.WaitFor
-import common.WhiskProperties
-import common.WskActorSystem
import spray.json.DefaultJsonProtocol._
-import spray.json.JsObject
-import spray.json.pimpAny
+import spray.json._
+
+import scala.concurrent.duration._
+import scala.language.implicitConversions
@RunWith(classOf[JUnitRunner])
class CleanUpActivationsTest
@@ -46,7 +38,6 @@ class CleanUpActivationsTest
with Matchers
with ScalaFutures
with WskActorSystem
- with WaitFor
with StreamLogging
with DatabaseScriptTestUtils {
diff --git a/tests/src/test/scala/whisk/core/database/test/DatabaseScriptTestUtils.scala b/tests/src/test/scala/whisk/core/database/test/DatabaseScriptTestUtils.scala
index 9b227dfffe..7d15788ad4 100644
--- a/tests/src/test/scala/whisk/core/database/test/DatabaseScriptTestUtils.scala
+++ b/tests/src/test/scala/whisk/core/database/test/DatabaseScriptTestUtils.scala
@@ -72,9 +72,7 @@ trait DatabaseScriptTestUtils extends ScalaFutures with Matchers with WaitFor wi
/** Wait for database to appear */
def waitForDatabase(dbName: String)(implicit as: ActorSystem, logging: Logging) = {
val client = new ExtendedCouchDbRestClient(dbProtocol, dbHost, dbPort.toInt, dbUsername, dbPassword, dbName)
- waitfor(() => {
- client.getAllDocs(includeDocs = Some(true)).futureValue.isRight
- })
+ waitfor(() => client.getAllDocs(includeDocs = Some(true)).futureValue shouldBe 'right)
client
}
@@ -91,14 +89,16 @@ trait DatabaseScriptTestUtils extends ScalaFutures with Matchers with WaitFor wi
/** Wait for a document to appear */
def waitForDocument(client: ExtendedCouchDbRestClient, id: String) =
- waitfor(() => client.getDoc(id).futureValue.isRight)
+ waitfor(() => client.getDoc(id).futureValue shouldBe 'right)
/** Get all docs within one database */
- def getAllDocs(dbName: String)(implicit as: ActorSystem, logging: Logging) = {
+ def getAllDocs(dbName: String)(implicit as: ActorSystem, logging: Logging): JsObject = {
val client = new ExtendedCouchDbRestClient(dbProtocol, dbHost, dbPort.toInt, dbUsername, dbPassword, dbName)
- val documents = client.getAllDocs(includeDocs = Some(true)).futureValue
- documents shouldBe 'right
- documents.right.get
+ retry({
+ val documents = client.getAllDocs(includeDocs = Some(true)).futureValue
+ documents shouldBe 'right
+ documents.right.get
+ })
}
/** wait until all documents are processed by the view */
@@ -106,7 +106,7 @@ trait DatabaseScriptTestUtils extends ScalaFutures with Matchers with WaitFor wi
waitfor(() => {
val view = db.executeView(designDoc, viewName)().futureValue
view shouldBe 'right
- view.right.get.fields("rows").convertTo[List[JsObject]].length == numDocuments
+ view.right.get.fields("rows").convertTo[List[JsObject]].length shouldBe numDocuments
}, totalWait = 2.minutes)
}
}
diff --git a/tests/src/test/scala/whisk/core/database/test/ReplicatorTests.scala b/tests/src/test/scala/whisk/core/database/test/ReplicatorTests.scala
index 727d8720e2..819f02178f 100644
--- a/tests/src/test/scala/whisk/core/database/test/ReplicatorTests.scala
+++ b/tests/src/test/scala/whisk/core/database/test/ReplicatorTests.scala
@@ -32,7 +32,6 @@ import org.scalatest.junit.JUnitRunner
import akka.http.scaladsl.model.StatusCodes
import common.StreamLogging
import common.TestUtils
-import common.WaitFor
import common.WhiskProperties
import common.WskActorSystem
import spray.json._
@@ -44,7 +43,6 @@ class ReplicatorTests
with Matchers
with ScalaFutures
with WskActorSystem
- with WaitFor
with StreamLogging
with DatabaseScriptTestUtils {
@@ -140,18 +138,15 @@ class ReplicatorTests
/** Wait for a replication to finish */
def waitForReplication(dbName: String) = {
- val timeout = 5.minutes
- val replicationResult = waitfor(() => {
+ retry(() => {
val replicatorDoc = replicatorClient.getDoc(dbName).futureValue
replicatorDoc shouldBe 'right
val state = replicatorDoc.right.get.fields.get("_replication_state")
println(s"Waiting for replication, state: $state")
- state.contains("completed".toJson)
- }, totalWait = timeout)
-
- assert(replicationResult, s"replication did not finish in $timeout")
+ state should contain("completed".toJson)
+ }, 300, Some(1.second))
}
/** Compares to databases to full equality */
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services