xunit / devices.xunit

xUnit.net Runners for Devices
Other
73 stars 35 forks source link

Extremely poor performance, tests do not complete #154

Open NightOwl888 opened 3 years ago

NightOwl888 commented 3 years ago

I have a single test project with over 77,000 tests in it. Running the tests on .NET Core using dotnet test, these tests are both discovered and complete running within 4 minutes.

However, when loading a project that uses xunit.runner.devices on MonoAndroid90 (using the Android emulator on Windows 10), it takes about 50 minutes just to discover the tests. Subsequently, the tests will run for over an hour before they crash the runner. Here is the log of the crash:

12-20 08:10:49.464 I/s.Android.xUni(28763): Explicit concurrent copying GC freed 4(32KB) AllocSpace objects, 0(0B) LOS objects, 45% free, 7353KB/13MB, paused 291us total 22.884ms
12-20 08:10:49.477 D/Mono    (28763): GC_TAR_BRIDGE bridges 937 objects 1800 opaque 9 colors 937 colors-bridged 937 colors-visible 937 xref 0 cache-hit 0 cache-semihit 0 cache-miss 0 setup 0.10ms tarjan 0.43ms scc-setup 0.25ms gather-xref 0.01ms xref-setup 0.01ms cleanup 0.12ms
12-20 08:10:49.477 D/Mono    (28763): GC_BRIDGE: Complete, was running for 37.36ms
12-20 08:10:49.477 D/Mono    (28763): GC_MAJOR: (user request) time 143.42ms, stw 157.33ms los size: 158632K in use: 134042K
12-20 08:10:49.477 D/Mono    (28763): GC_MAJOR_SWEEP: major size: 218816K in use: 208627K
12-20 08:10:49.477 I/monodroid-gc(28763): 50479 outstanding GREFs. Performing a full GC!
12-20 08:10:49.670 I/s.Android.xUni(28763): Explicit concurrent copying GC freed 3(31KB) AllocSpace objects, 0(0B) LOS objects, 45% free, 7353KB/13MB, paused 313us total 22.990ms
12-20 08:10:49.684 D/Mono    (28763): GC_TAR_BRIDGE bridges 937 objects 1800 opaque 9 colors 937 colors-bridged 937 colors-visible 937 xref 0 cache-hit 0 cache-semihit 0 cache-miss 0 setup 0.11ms tarjan 0.49ms scc-setup 0.11ms gather-xref 0.02ms xref-setup 0.01ms cleanup 0.16ms
12-20 08:10:49.685 D/Mono    (28763): GC_BRIDGE: Complete, was running for 38.00ms
12-20 08:10:49.685 D/Mono    (28763): GC_MAJOR: (user request) time 152.57ms, stw 169.20ms los size: 158632K in use: 134042K
12-20 08:10:49.685 D/Mono    (28763): GC_MAJOR_SWEEP: major size: 218816K in use: 206358K
12-20 08:10:49.686 I/monodroid-gc(28763): 50479 outstanding GREFs. Performing a full GC!
12-20 08:10:49.967 I/s.Android.xUni(28763): Explicit concurrent copying GC freed 4(31KB) AllocSpace objects, 0(0B) LOS objects, 45% free, 7353KB/13MB, paused 647us total 33.292ms
12-20 08:10:49.985 D/Mono    (28763): GC_TAR_BRIDGE bridges 937 objects 1800 opaque 9 colors 937 colors-bridged 937 colors-visible 937 xref 0 cache-hit 0 cache-semihit 0 cache-miss 0 setup 0.28ms tarjan 1.01ms scc-setup 0.18ms gather-xref 0.03ms xref-setup 0.02ms cleanup 0.15ms
12-20 08:10:49.985 D/Mono    (28763): GC_BRIDGE: Complete, was running for 53.61ms
12-20 08:10:49.985 D/Mono    (28763): GC_MAJOR: (user request) time 217.89ms, stw 245.63ms los size: 158632K in use: 134170K
12-20 08:10:49.985 D/Mono    (28763): GC_MAJOR_SWEEP: major size: 218816K in use: 207265K
12-20 08:10:49.985 I/monodroid-gc(28763): 50480 outstanding GREFs. Performing a full GC!
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666] JNI ERROR (app bug): global reference table overflow (max=51200)global reference table dump:
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]   Last 10 entries (of 50263):
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]     50262: 0x12ec0048 java.lang.Class<mono.java.lang.RunnableImplementor>
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]     50261: 0x1314e340 mono.java.lang.RunnableImplementor
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]     50260: 0x1314e330 mono.java.lang.RunnableImplementor
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]     50259: 0x1314e320 mono.java.lang.RunnableImplementor
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]     50258: 0x1314e310 mono.java.lang.RunnableImplementor
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]     50257: 0x1314e300 mono.java.lang.RunnableImplementor
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]     50256: 0x1314e2f0 mono.java.lang.RunnableImplementor
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]     50255: 0x1314e2e0 mono.java.lang.RunnableImplementor
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]     50254: 0x1314e2d0 mono.java.lang.RunnableImplementor
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]     50253: 0x1314e2c0 mono.java.lang.RunnableImplementor
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]   Summary:
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]     49349 of mono.java.lang.RunnableImplementor (49349 unique instances)
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]       499 of java.lang.Class (399 unique instances)
12-20 08:10:50.266 F/s.Android.xUni(28763): java_vm_ext.cc:666]       275 of java.nio.DirectByteBuffer (275 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]        16 of android.widget.TextView (16 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]        11 of crc643f46942d9dd1fff9.LabelRenderer (11 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]        11 of crc643f46942d9dd1fff9.FormsTextView (11 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         9 of android.app.LoadedApk$ReceiverDispatcher$InnerReceiver (9 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         8 of crc643f46942d9dd1fff9.TextCellRenderer_TextCellView (8 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         8 of android.widget.ImageView (8 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         5 of dalvik.system.PathClassLoader (3 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         4 of crc643f46942d9dd1fff9.Platform_DefaultRenderer (4 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         3 of android.opengl.EGLDisplay (2 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         3 of android.opengl.EGLSurface (2 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         3 of android.opengl.EGLContext (2 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         2 of org.chromium.mojo.system.impl.WatcherImpl (2 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         2 of java.lang.String (2 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         2 of java.lang.ThreadGroup (2 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         2 of java.lang.ref.WeakReference (2 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         2 of android.os.Handler (2 unique instances)
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of crc64efc900afe5cf1979.MainActivity
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of crc643f46942d9dd1fff9.PowerSaveModeBroadcastReceiver
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of crc643f46942d9dd1fff9.PlatformRenderer
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of crc643f46942d9dd1fff9.NavigationRenderer
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of crc643f46942d9dd1fff9.PageRenderer
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of crc643f46942d9dd1fff9.TableViewRenderer
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of crc643f46942d9dd1fff9.TableViewModelRenderer
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of crc643f46942d9dd1fff9.VisualElementTracker_AttachTracker
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of crc643f46942d9dd1fff9.ActivityIndicatorRenderer
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of crc643f46942d9dd1fff9.ScrollViewRenderer
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of crc643f46942d9dd1fff9.ScrollViewContainer
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of crc643f46942d9dd1fff9.ViewCellRenderer_ViewCellContainer
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of org.chromium.ui.gfx.ViewConfigurationHelper
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of org.chromium.policy.PolicyConverter
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of org.chromium.policy.CombinedPolicyProvider
12-20 08:10:50.267 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of org.chromium.net.NetworkChangeNotifier
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of org.chromium.net.ProxyChangeListener
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of org.chromium.base.JavaHandlerThread
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of org.chromium.media.AudioManagerAndroid
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of org.chromium.content.browser.BackgroundSyncNetworkObserver
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of org.chromium.content.browser.ContentNfcDelegate
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of org.chromium.device.time_zone_monitor.TimeZoneMonitor
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of UZ
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of java.lang.Runtime
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of dalvik.system.VMRuntime
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.app.Application
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.widget.LinearLayout
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.os.Looper
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.graphics.Typeface
12-20 08:10:50.268 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.app.ActivityThread$ApplicationThread
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.content.res.AssetManager
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.animation.ValueAnimator
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.widget.ProgressBar
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.view.inputmethod.InputMethodManager$ControlledInputConnectionWrapper
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.content.ClipboardManager$1
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.graphics.HardwareRenderer$ProcessInitializer$1
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.view.WindowManagerGlobal$1
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorRT
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.database.ContentObserver$Transport
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.view.autofill.AutofillManager$AutofillManagerClient
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.content.res.ColorStateList
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.content.ContentProvider$Transport
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.hardware.input.InputManager$InputDevicesChangedListener
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.view.inputmethod.InputMethodManager$1
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.hardware.display.DisplayManagerGlobal$DisplayManagerCallback
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.view.accessibility.AccessibilityManager$1
12-20 08:10:50.269 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.os.PersistableBundle$1
12-20 08:10:50.270 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.view.ViewRootImpl$W
12-20 08:10:50.270 F/s.Android.xUni(28763): java_vm_ext.cc:666]         1 of android.widget.ListView
12-20 08:10:50.270 F/s.Android.xUni(28763): java_vm_ext.cc:666] 
12-20 08:10:50.504 F/s.Android.xUni(28763): runtime.cc:630] Runtime aborting...
12-20 08:10:50.504 F/s.Android.xUni(28763): runtime.cc:630] All threads:
12-20 08:10:50.504 F/s.Android.xUni(28763): runtime.cc:630] DALVIK THREADS (46):
12-20 08:10:50.504 F/s.Android.xUni(28763): runtime.cc:630] "Thread-14" prio=10 tid=22 Runnable
12-20 08:10:50.504 F/s.Android.xUni(28763): runtime.cc:630]   | group="" sCount=0 dsCount=0 flags=0 obj=0x12ec2008 self=0x74dd2d932800
12-20 08:10:50.504 F/s.Android.xUni(28763): runtime.cc:630]   | sysTid=29259 nice=-10 cgrp=default sched=0/0 handle=0x74dd28cfad50
12-20 08:10:50.504 F/s.Android.xUni(28763): runtime.cc:630]   | state=R schedstat=( 4047130478418 392695269009 1231317 ) utm=357581 stm=47131 core=3 HZ=100
12-20 08:10:50.504 F/s.Android.xUni(28763): runtime.cc:630]   | stack=0x74dd28afc000-0x74dd28afe000 stackSize=2047KB
12-20 08:10:50.504 F/s.Android.xUni(28763): runtime.cc:630]   | held mutexes= "abort lock" "mutator lock"(shared held)
12-20 08:10:50.504 F/s.Android.xUni(28763): runtime.cc:630]   native: #00 pc 000000000048df2e  /apex/com.android.runtime/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+126)
12-20 08:10:50.504 F/s.Android.xUni(28763): runtime.cc:630]   native: #01 pc 00000000005a77a3  /apex/com.android.runtime/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, BacktraceMap*, bool) const+675)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #02 pc 00000000005c49ab  /apex/com.android.runtime/lib64/libart.so (art::DumpCheckpoint::Run(art::Thread*)+859)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #03 pc 00000000005bcf08  /apex/com.android.runtime/lib64/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+456)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #04 pc 00000000005bc2c1  /apex/com.android.runtime/lib64/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool)+1601)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #05 pc 0000000000552e99  /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+1529)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #06 pc 000000000000c873  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+611)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #07 pc 00000000003ef4b3  /apex/com.android.runtime/lib64/libart.so (art::JavaVMExt::AddGlobalRef(art::Thread*, art::ObjPtr<art::mirror::Object>)+291)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #08 pc 00000000002b67d3  /apex/com.android.runtime/lib64/libart.so (art::gc::ReferenceProcessor::CollectClearedReferences(art::Thread*)+227)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #09 pc 0000000000296c81  /apex/com.android.runtime/lib64/libart.so (art::gc::Heap::CollectGarbageInternal(art::gc::collector::GcType, art::gc::GcCause, bool)+3633)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #10 pc 0000000000004d1b  /apex/com.android.runtime/lib64/libopenjdkjvm.so (JVM_GC+91)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Runtime.nativeGc(Native method)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Runtime.gc(Runtime.java:775)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630] 
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630] "main" prio=10 tid=1 Native
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x71d4bac8 self=0x74de1bfb8000
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   | sysTid=28763 nice=-10 cgrp=default sched=0/0 handle=0x74de1c541ed8
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   | state=S schedstat=( 461438066248 104413354423 180818 ) utm=40372 stm=5770 core=3 HZ=100
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   | stack=0x7ffd3328e000-0x7ffd33290000 stackSize=8192KB
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   | held mutexes=
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   kernel: (couldn't read /proc/self/task/28763/stack)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #00 pc 00000000000943f6  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+22)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #01 pc 0000000000097e1a  /apex/com.android.runtime/lib64/bionic/libc.so (__futex_wait_ex(void volatile*, bool, int, bool, timespec const*)+138)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #02 pc 0000000000101ca6  /apex/com.android.runtime/lib64/bionic/libc.so (NonPI::MutexLockWithTimeout(pthread_mutex_internal_t*, bool, timespec const*)+294)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #03 pc 0000000000265899  /data/app/Mono.Android.DebugRuntime-olrkrjAP17w7NWGYQgIwsg==/lib/x86_64/libmonosgen-64bit-2.0.so (sgen_gc_lock+73)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #04 pc 0000000000256b2e  /data/app/Mono.Android.DebugRuntime-olrkrjAP17w7NWGYQgIwsg==/lib/x86_64/libmonosgen-64bit-2.0.so (mono_gc_alloc_vector+110)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   native: #05 pc 00000000000379c7  <anonymous:62d25000> (???)
12-20 08:10:50.505 F/s.Android.xUni(28763): runtime.cc:630]   at mono.java.lang.RunnableImplementor.n_run(Native method)
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630]   at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30)
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630]   at android.os.Handler.handleCallback(Handler.java:883)
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630]   at android.os.Handler.dispatchMessage(Handler.java:100)
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630]   at android.os.Looper.loop(Looper.java:214)
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630]   at android.app.ActivityThread.main(ActivityThread.java:7356)
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.reflect.Method.invoke(Native method)
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630]   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630] 
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630] "Jit thread pool worker thread 0" prio=10 tid=2 Native
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x12ec0390 self=0x74dd8c200000
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630]   | sysTid=28769 nice=0 cgrp=default sched=0/0 handle=0x74dd8c104d40
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630]   | state=S schedstat=( 552595974 429096543 601 ) utm=10 stm=45 core=1 HZ=100
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630]   | stack=0x74dd8c006000-0x74dd8c008000 stackSize=1023KB
12-20 08:10:50.506 F/s.Android.xUni(28763): runtime.cc:630]   | held mutexes=
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   kernel: (couldn't read /proc/self/task/28769/stack)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #00 pc 00000000000943f6  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+22)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #01 pc 000000000017fd7e  /apex/com.android.runtime/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+110)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #02 pc 00000000005c6639  /apex/com.android.runtime/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+297)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #03 pc 00000000005c5871  /apex/com.android.runtime/lib64/libart.so (art::ThreadPoolWorker::Run()+113)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #04 pc 00000000005c5379  /apex/com.android.runtime/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+233)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #05 pc 0000000000100fce  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+30)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #06 pc 0000000000098fe7  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+55)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   (no managed stack frames)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630] 
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630] "Signal Catcher" prio=10 tid=7 WaitingInMainSignalCatcherLoop
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x12ec0408 self=0x74dd8bd19000
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   | sysTid=28774 nice=0 cgrp=default sched=0/0 handle=0x74dd8bfffd50
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   | state=S schedstat=( 523488 265935 4 ) utm=0 stm=0 core=3 HZ=100
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   | stack=0x74dd8bf09000-0x74dd8bf0b000 stackSize=991KB
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   | held mutexes=
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   kernel: (couldn't read /proc/self/task/28774/stack)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #00 pc 00000000000ebbba  /apex/com.android.runtime/lib64/bionic/libc.so (__rt_sigtimedwait+10)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #01 pc 00000000000a3e2a  /apex/com.android.runtime/lib64/bionic/libc.so (sigwait+74)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #02 pc 000000000057664a  /apex/com.android.runtime/lib64/libart.so (art::SignalCatcher::WaitForSignal(art::Thread*, art::SignalSet&)+250)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #03 pc 00000000005752b2  /apex/com.android.runtime/lib64/libart.so (art::SignalCatcher::Run(void*)+258)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #04 pc 0000000000100fce  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+30)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #05 pc 0000000000098fe7  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+55)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   (no managed stack frames)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630] 
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630] "HeapTaskDaemon" prio=10 tid=8 WaitingForTaskProcessor
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x12ec0480 self=0x74de1bfbd400
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   | sysTid=28776 nice=4 cgrp=default sched=0/0 handle=0x74dd41e99d50
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   | state=S schedstat=( 4955657286 7116831765 6987 ) utm=12 stm=483 core=3 HZ=100
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   | stack=0x74dd41d97000-0x74dd41d99000 stackSize=1039KB
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   | held mutexes=
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   kernel: (couldn't read /proc/self/task/28776/stack)
12-20 08:10:50.507 F/s.Android.xUni(28763): runtime.cc:630]   native: #00 pc 00000000000943f8  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+24)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   native: #01 pc 00000000001801dc  /apex/com.android.runtime/lib64/libart.so (art::ConditionVariable::TimedWait(art::Thread*, long, int)+140)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   native: #02 pc 00000000002e58ac  /apex/com.android.runtime/lib64/libart.so (art::gc::TaskProcessor::GetTask(art::Thread*)+300)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   native: #03 pc 00000000002e6182  /apex/com.android.runtime/lib64/libart.so (art::gc::TaskProcessor::RunAllTasks(art::Thread*)+66)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   at dalvik.system.VMRuntime.runHeapTasks(Native method)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Daemons$HeapTaskDaemon.runInternal(Daemons.java:523)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Daemons$Daemon.run(Daemons.java:137)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Thread.run(Thread.java:919)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630] 
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630] "FinalizerDaemon" prio=10 tid=9 Waiting
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x12ec04f8 self=0x74dd8bca2c00
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   | sysTid=28778 nice=4 cgrp=default sched=0/0 handle=0x74dd41c87d50
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   | state=S schedstat=( 4143111895 14220816456 45517 ) utm=149 stm=265 core=1 HZ=100
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   | stack=0x74dd41b85000-0x74dd41b87000 stackSize=1039KB
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   | held mutexes=
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   kernel: (couldn't read /proc/self/task/28778/stack)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   native: #00 pc 00000000000943f6  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+22)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   native: #01 pc 000000000017fd7e  /apex/com.android.runtime/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+110)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   native: #02 pc 00000000004891d2  /apex/com.android.runtime/lib64/libart.so (art::Monitor::Wait(art::Thread*, long, int, bool, art::ThreadState)+626)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   native: #03 pc 000000000048acef  /apex/com.android.runtime/lib64/libart.so (art::Monitor::Wait(art::Thread*, art::ObjPtr<art::mirror::Object>, long, int, bool, art::ThreadState)+319)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Object.wait(Native method)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   - waiting on <0x0df1b557> (a java.lang.Object)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Object.wait(Object.java:442)
12-20 08:10:50.508 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:190)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   - locked <0x0df1b557> (a java.lang.Object)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:211)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:271)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Daemons$Daemon.run(Daemons.java:137)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Thread.run(Thread.java:919)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630] 
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630] "ReferenceQueueDaemon" prio=10 tid=10 Waiting
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x12ec0570 self=0x74de1c12e000
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   | sysTid=28777 nice=4 cgrp=default sched=0/0 handle=0x74dd41d90d50
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   | state=S schedstat=( 1350696456 2402508688 13862 ) utm=34 stm=100 core=0 HZ=100
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   | stack=0x74dd41c8e000-0x74dd41c90000 stackSize=1039KB
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   | held mutexes=
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   kernel: (couldn't read /proc/self/task/28777/stack)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   native: #00 pc 00000000000943f6  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+22)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   native: #01 pc 000000000017fd7e  /apex/com.android.runtime/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+110)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   native: #02 pc 00000000004891d2  /apex/com.android.runtime/lib64/libart.so (art::Monitor::Wait(art::Thread*, long, int, bool, art::ThreadState)+626)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   native: #03 pc 000000000048acef  /apex/com.android.runtime/lib64/libart.so (art::Monitor::Wait(art::Thread*, art::ObjPtr<art::mirror::Object>, long, int, bool, art::ThreadState)+319)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Object.wait(Native method)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   - waiting on <0x0d74e844> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Object.wait(Object.java:442)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Object.wait(Object.java:568)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:215)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   - locked <0x0d74e844> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Daemons$Daemon.run(Daemons.java:137)
12-20 08:10:50.509 F/s.Android.xUni(28763): runtime.cc:630]   at java.lang.Thread.run(Thread.java:919)
12-20 08:10:50.510 F/s.Android.xUni(28763): runtime.cc:630] 
12-20 08:10:50.510 F/s.Android.xUni(28763): runtime.cc:630] "FinalizerWatchdogDaemon" prio=10 tid=11 Waiting
12-20 08:10:50.510 F/s.Android.xUni(28763): runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x12ec05e8 self=0x74dd8bca4800
12-20 08:10:50.510 F/s.Android.xUni(28763): runtime.cc:630]   | sysTid=28779 nice=4 cgrp=default sched=0/0 handle=0x74dd41b7ed50
12-20 08:10:50.510 F/s.Android.xUni(28763): runtime.cc:630]   | state=S schedstat=( 188226695 1572206819 3312 ) utm=6 stm=11 core=1 HZ=100
12-20 08:10:50.510 F/s.Android.xUni(28763): runtime.cc:630]   | stack=0x74dd41a7c000-0x74dd41a7e000 stackSize=1039KB
12-20 08:10:50.510 F/s.Android.xUni(28763): runtime.cc:630]   | held mutexes=
12-20 08:10:50.510 F/s.Android.xUni(28763): runtime.cc:630]   kernel: (couldn't read /proc/self/task/28779/stack)
12-20 08:10:50.510 F/s.Android.xUni(28763): runtime.cc:630]   native: #00 pc 00000000000943f6  /apex/com.android.runtime/lib64/bionic/libc.so (syscall+22)

At least for the test discovery part, I noticed that in the xunit.runner.visualstudio project is not loading all of the test methods during the inital phase. In this project, the tests are loaded immediately for all assemblies and then stored in a list in RAM.

Please fix the project so it will scale to tens of thousands of tests at least.