Improve test failure message for #1390.

This commit is contained in:
Josh Suereth
2014-06-02 15:10:17 -04:00
parent aa28240139
commit 2c3f40eb02
2 changed files with 17 additions and 10 deletions
@@ -9,11 +9,20 @@ object ConcurrentCache extends Properties("ClassLoaderCache concurrent access")
implicit lazy val concurrentArb: Arbitrary[Int] = Arbitrary(Gen.choose(1, 1000))
implicit lazy val filenameArb: Arbitrary[String] = Arbitrary(Gen.alphaStr)
private[this] object DifferentClassloader {
def unapply(loaders: Seq[ClassLoader]): Option[(ClassLoader, ClassLoader)] =
if (loaders.size > 1) loaders.sliding(2).find { case Seq(x, y) => x != y } map { case Seq(x, y) => (x, y) }
else None
}
property("Same class loader for same classpaths concurrently processed") = forAll { (names: List[String], concurrent: Int) =>
withcp(names.distinct) { files =>
val cache = new ClassLoaderCache(null)
val loaders = (1 to concurrent).par.map(_ => cache(files)).toList
sameClassLoader(loaders)
loaders match {
case DifferentClassloader(left, right) => false :| s"$left != $right"
case _ => true :| ""
}
}
}
@@ -25,6 +34,4 @@ object ConcurrentCache extends Properties("ClassLoaderCache concurrent access")
}
f(files)
}
private[this] def sameClassLoader(loaders: Seq[ClassLoader]): Boolean = loaders.size < 2 ||
loaders.sliding(2).forall { case Seq(x, y) => x == y }
}