Skip to content

Commit c089267

Browse files
radekdoulikjonpryor
authored andcommitted
[tests] Sleep 1s after adb wait-for-device command (#650)
- looks like the adb's wait-for-device function sometime doesn't work perfectly and we are timeouting in our tests, which run on emulator, because adb gets stuck when executing next adb command - added Sleep task - also set ADB_TRACE environment variable to `all` for adb commands we are interested in. in case the added sleep doesn't help, we might at least get some more useful information
1 parent e83c99c commit c089267

File tree

3 files changed

+31
-2
lines changed

3 files changed

+31
-2
lines changed

build-tools/scripts/UnitTestApks.targets

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<UsingTask AssemblyFile="$(MSBuildThisFileDirectory)..\..\bin\Build$(Configuration)\Xamarin.Android.Tools.BootstrapTasks.dll" TaskName="Xamarin.Android.Tools.BootstrapTasks.RunInstrumentationTests" />
77
<UsingTask AssemblyFile="$(MSBuildThisFileDirectory)..\..\bin\Build$(Configuration)\Xamarin.Android.Tools.BootstrapTasks.dll" TaskName="Xamarin.Android.Tools.BootstrapTasks.StartAndroidEmulator" />
88
<UsingTask AssemblyFile="$(MSBuildThisFileDirectory)..\..\bin\Build$(Configuration)\Xamarin.Android.Tools.BootstrapTasks.dll" TaskName="Xamarin.Android.Tools.BootstrapTasks.KillProcess" />
9+
<UsingTask AssemblyFile="$(MSBuildThisFileDirectory)..\..\bin\Build$(Configuration)\xa-prep-tasks.dll" TaskName="Xamarin.Android.BuildTools.PrepTasks.Sleep" />
910

1011
<PropertyGroup>
1112
<_TestImageName>XamarinAndroidUnitTestRunner</_TestImageName>
@@ -41,17 +42,23 @@
4142
<Output TaskParameter="AdbTarget" PropertyName="_EmuTarget" />
4243
<Output TaskParameter="EmulatorProcessId" PropertyName="_EmuPid" />
4344
</StartAndroidEmulator>
44-
<Exec
45+
<Sleep
4546
Condition=" '$(_ValidAdbTarget)' != 'True' "
46-
Command="sleep 10"
47+
Milliseconds="10000"
4748
/>
4849
<Xamarin.Android.Tools.BootstrapTasks.Adb
50+
EnvironmentVariables="ADB_TRACE=all"
4951
Condition=" '$(_ValidAdbTarget)' != 'True' "
5052
Arguments="$(_AdbTarget) wait-for-device"
5153
ToolExe="$(AdbToolExe)"
5254
ToolPath="$(AdbToolPath)"
5355
/>
56+
<Sleep
57+
Condition=" '$(_ValidAdbTarget)' != 'True' "
58+
Milliseconds="1000"
59+
/>
5460
<Xamarin.Android.Tools.BootstrapTasks.Adb
61+
EnvironmentVariables="ADB_TRACE=all"
5562
Condition=" '$(_ValidAdbTarget)' != 'True' "
5663
Arguments="$(_EmuTarget) shell 'counter=0; while [ $counter -lt 60 ] &amp;&amp; [ &quot;`getprop sys.boot_completed`&quot; != &quot;1&quot; ]; do echo Waiting for device to fully boot; sleep 1; let &quot;counter++&quot;; done'"
5764
ToolExe="$(AdbToolExe)"
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using System;
2+
using System.Threading;
3+
4+
using Microsoft.Build.Framework;
5+
using Microsoft.Build.Utilities;
6+
7+
namespace Xamarin.Android.BuildTools.PrepTasks
8+
{
9+
public class Sleep : Task
10+
{
11+
public int Milliseconds { get; set; }
12+
13+
public override bool Execute ()
14+
{
15+
Log.LogMessage (MessageImportance.Normal, $"Going to sleep for {Milliseconds}ms");
16+
Thread.Sleep (Milliseconds);
17+
18+
return true;
19+
}
20+
}
21+
}

build-tools/xa-prep-tasks/xa-prep-tasks.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
<Compile Include="Xamarin.Android.BuildTools.PrepTasks\ReplaceFileContents.cs" />
5050
<Compile Include="Xamarin.Android.BuildTools.PrepTasks\PrepareInstall.cs" />
5151
<Compile Include="Xamarin.Android.BuildTools.PrepTasks\AcceptAndroidSdkLicenses.cs" />
52+
<Compile Include="Xamarin.Android.BuildTools.PrepTasks\Sleep.cs" />
5253
</ItemGroup>
5354
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
5455
<Import Project="xa-prep-tasks.targets" />

0 commit comments

Comments
 (0)