summaryrefslogtreecommitdiff
path: root/test/files/run/reflection-sync-potpourri.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-01-10 10:48:57 +0100
committerJason Zaugg <jzaugg@gmail.com>2014-01-10 10:48:57 +0100
commit1d908106cf51279291c41fea455595ab6934d984 (patch)
tree40db46604639d24dd04d773e1552a7eb43912816 /test/files/run/reflection-sync-potpourri.scala
parente089cafb5fd02e2457bafde3252da3a771d3180e (diff)
downloadscala-1d908106cf51279291c41fea455595ab6934d984.tar.gz
scala-1d908106cf51279291c41fea455595ab6934d984.tar.bz2
scala-1d908106cf51279291c41fea455595ab6934d984.zip
SI-8131 Move test for reflection thread safety to pending.
Examples noted in SI-8131 show that race conditions still abound. This has been noted twice during pull request validation.
Diffstat (limited to 'test/files/run/reflection-sync-potpourri.scala')
-rw-r--r--test/files/run/reflection-sync-potpourri.scala32
1 files changed, 0 insertions, 32 deletions
diff --git a/test/files/run/reflection-sync-potpourri.scala b/test/files/run/reflection-sync-potpourri.scala
deleted file mode 100644
index 0ad5f2ab66..0000000000
--- a/test/files/run/reflection-sync-potpourri.scala
+++ /dev/null
@@ -1,32 +0,0 @@
-import scala.reflect.runtime.universe._
-
-// this test checks that under heavily multithreaded conditions:
-// 1) scala.reflect.runtime.universe, its rootMirror and definitions are initialized correctly
-// 2) symbols are correctly materialized into PackageScopes (no dupes)
-// 3) unpickling works okay even we unpickle the same symbol a lot of times
-
-object Test extends App {
- def foo[T: TypeTag](x: T) = typeOf[T].toString
- val n = 1000
- val rng = new scala.util.Random()
- val types = List(
- () => typeOf[java.lang.reflect.Method],
- () => typeOf[java.lang.annotation.Annotation],
- () => typeOf[scala.io.BufferedSource],
- () => typeOf[scala.io.Codec])
- val perms = types.permutations.toList
- def force(lazytpe: () => Type): String = {
- lazytpe().typeSymbol.typeSignature
- lazytpe().toString
- }
- val diceRolls = List.fill(n)(rng.nextInt(perms.length))
- val threads = (1 to n) map (i => new Thread(s"Reflector-$i") {
- override def run(): Unit = {
- val s1 = foo("42")
- val s2 = perms(diceRolls(i - 1)).map(x => force(x)).sorted.mkString(", ")
- assert(s1 == "java.lang.String")
- assert(s2 == "java.lang.annotation.Annotation, java.lang.reflect.Method, scala.io.BufferedSource, scala.io.Codec")
- }
- })
- threads foreach (_.start)
-} \ No newline at end of file