From 3de55fade404c7c6571c23b623645f3beb0bd04e Mon Sep 17 00:00:00 2001 From: VS MobileTools Engineering Service 2 Date: Sun, 26 Feb 2023 12:24:22 -0500 Subject: [PATCH 1/5] Localized file check-in by OneLocBuild (#7827) Context: https://aka.ms/onelocbuild Context: https://aka.ms/AllAboutLoc Build definition ID 17928: Build ID 7384592 --- src/Xamarin.Android.Build.Tasks/Properties/Resources.cs.resx | 2 +- src/Xamarin.Android.Build.Tasks/Properties/Resources.de.resx | 2 +- src/Xamarin.Android.Build.Tasks/Properties/Resources.es.resx | 2 +- src/Xamarin.Android.Build.Tasks/Properties/Resources.fr.resx | 2 +- src/Xamarin.Android.Build.Tasks/Properties/Resources.it.resx | 2 +- src/Xamarin.Android.Build.Tasks/Properties/Resources.ja.resx | 2 +- src/Xamarin.Android.Build.Tasks/Properties/Resources.ko.resx | 2 +- src/Xamarin.Android.Build.Tasks/Properties/Resources.pl.resx | 2 +- src/Xamarin.Android.Build.Tasks/Properties/Resources.pt-BR.resx | 2 +- src/Xamarin.Android.Build.Tasks/Properties/Resources.ru.resx | 2 +- src/Xamarin.Android.Build.Tasks/Properties/Resources.tr.resx | 2 +- .../Properties/Resources.zh-Hans.resx | 2 +- .../Properties/Resources.zh-Hant.resx | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.cs.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.cs.resx index 085003f4259..8d44a930d84 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.cs.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.cs.resx @@ -531,7 +531,7 @@ Změňte hodnotu na název typu kvalifikovaného sestavení, který dědí z: {1 {0} - The assembly name - This is probably caused by the project exceeding the Windows maximum path length limitation. See https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 for details. + To je pravděpodobně způsobeno tím, že projekt překračuje omezení maximální délky cesty systému Windows. Podrobnosti najdete v https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264. The following are literal names and should not be translated: diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.de.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.de.resx index 05b7ea6710e..e6fba0d9357 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.de.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.de.resx @@ -531,7 +531,7 @@ Bitte ändern Sie den Wert in einen Assembly-basierten Typnamen, der von „{1} {0} - The assembly name - This is probably caused by the project exceeding the Windows maximum path length limitation. See https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 for details. + Dies ist wahrscheinlich darauf zurückzuführen, dass das Projekt die Beschränkung der maximalen Pfadlänge von Windows überschreitet. Weitere Informationen finden Sie unter https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264. The following are literal names and should not be translated: diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.es.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.es.resx index 96419cf7e89..d8bf1e7ac06 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.es.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.es.resx @@ -531,7 +531,7 @@ Cambie el valor a un nombre de tipo de ensamblado que herede de "{1}" o quite la {0} - The assembly name - This is probably caused by the project exceeding the Windows maximum path length limitation. See https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 for details. + Esto probablemente se debe a que el proyecto supera la limitación de longitud máxima de la ruta de acceso de Windows. Consulte https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 para obtener más información. The following are literal names and should not be translated: diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.fr.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.fr.resx index 0323d83226c..29f009959e9 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.fr.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.fr.resx @@ -531,7 +531,7 @@ Veuillez remplacer la valeur par un nom de type qualifié par l’assembly qui h {0} - The assembly name - This is probably caused by the project exceeding the Windows maximum path length limitation. See https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 for details. + Cela est probablement dû au fait que le projet dépasse la limite de longueur maximale du chemin d’accès Windows. Pour plus d’informations, consultez https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264. The following are literal names and should not be translated: diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.it.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.it.resx index 71bc6b5dbd2..ea308e8cacf 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.it.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.it.resx @@ -531,7 +531,7 @@ Modificare il valore in un nome di tipo con qualifica assembly che eredita da '{ {0} - The assembly name - This is probably caused by the project exceeding the Windows maximum path length limitation. See https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 for details. + È possibile che il progetto abbia superato la limitazione della lunghezza massima del percorso di Windows. Per i dettagli, vedere https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264. The following are literal names and should not be translated: diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.ja.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.ja.resx index 21b83706972..193acff865b 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.ja.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.ja.resx @@ -531,7 +531,7 @@ In this message, the term "binding" means a piece of generated code that makes i {0} - The assembly name - This is probably caused by the project exceeding the Windows maximum path length limitation. See https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 for details. + これは、プロジェクトが Windows のパスの最大の長さの制限を超えたことが原因の可能性があります。詳細については、https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 を参照してください。 The following are literal names and should not be translated: diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.ko.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.ko.resx index b9d9d43e6dc..281f217c284 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.ko.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.ko.resx @@ -531,7 +531,7 @@ In this message, the term "binding" means a piece of generated code that makes i {0} - The assembly name - This is probably caused by the project exceeding the Windows maximum path length limitation. See https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 for details. + 프로젝트가 Windows 최대 경로 길이 제한을 초과하여 이러한 상황이 발생했을 수 있습니다. 자세한 내용은 https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264를 참조하세요. The following are literal names and should not be translated: diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.pl.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.pl.resx index f72c0bea82f..a2952077e45 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.pl.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.pl.resx @@ -531,7 +531,7 @@ Zmień wartość na nazwę typu kwalifikowalnego zestawu, która dziedziczy po {0} - The assembly name - This is probably caused by the project exceeding the Windows maximum path length limitation. See https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 for details. + Jest to prawdopodobnie spowodowane przez projekt przekraczający ograniczenie maksymalnej długości ścieżki systemu Windows. Aby uzyskać szczegółowe informacje, zobacz https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264. The following are literal names and should not be translated: diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.pt-BR.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.pt-BR.resx index 0ca7ffd3f59..b08ac3ff3bf 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.pt-BR.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.pt-BR.resx @@ -531,7 +531,7 @@ Altere o valor para um nome de tipo qualificado por assembly que herda de "{1}" {0} - The assembly name - This is probably caused by the project exceeding the Windows maximum path length limitation. See https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 for details. + Isso provavelmente ocorreu porque o projeto excedeu a limitação de comprimento máximo do caminho do Windows. Consulte https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 para obter detalhes. The following are literal names and should not be translated: diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.ru.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.ru.resx index 5a50ce541bf..520db7fa520 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.ru.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.ru.resx @@ -531,7 +531,7 @@ In this message, the term "binding" means a piece of generated code that makes i {0} - The assembly name - This is probably caused by the project exceeding the Windows maximum path length limitation. See https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 for details. + Возможно, для этого проекта превышена максимальная длина пути в Windows. См. https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264. The following are literal names and should not be translated: diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.tr.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.tr.resx index 62aa60a13bf..420735cefdc 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.tr.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.tr.resx @@ -531,7 +531,7 @@ Lütfen değeri '{1}' türünden devralan derlemeye uygun bir tür adına dönü {0} - The assembly name - This is probably caused by the project exceeding the Windows maximum path length limitation. See https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 for details. + Bunun nedeni, projenin Windows yol uzunluğu üst sınırını aşması olabilir. Ayrıntılar için bkz. https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264. The following are literal names and should not be translated: diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hans.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hans.resx index 962e3e76d71..4d30aab35a2 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hans.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hans.resx @@ -531,7 +531,7 @@ In this message, the term "binding" means a piece of generated code that makes i {0} - The assembly name - This is probably caused by the project exceeding the Windows maximum path length limitation. See https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 for details. + 这可能是由超出 Windows 最大路径长度限制的项目引起的。有关详细信息,请参阅 https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264。 The following are literal names and should not be translated: diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hant.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hant.resx index 19eb63a25ab..44d27e2135c 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hant.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hant.resx @@ -531,7 +531,7 @@ In this message, the term "binding" means a piece of generated code that makes i {0} - The assembly name - This is probably caused by the project exceeding the Windows maximum path length limitation. See https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264 for details. + 這可能是因為專案超過 Windows 最大路徑長度限制所造成。如需詳細資料,請參閱https://learn.microsoft.com/xamarin/android/errors-and-warnings/apt2264。 The following are literal names and should not be translated: From 977de6f9713ec98ba3f560d2abd091d1ed69aef2 Mon Sep 17 00:00:00 2001 From: Marek Habersack Date: Mon, 27 Feb 2023 19:16:48 +0100 Subject: [PATCH 2/5] [monodroid] Update p/invoke symbol names from net8 alpha1 (#7829) Bring our P/Invoke dispatch tables up to date with .NET 8. --- src/monodroid/jni/generate-pinvoke-tables.cc | 42 ++++++++--- src/monodroid/jni/pinvoke-tables.include | 74 +++++++++++++++----- 2 files changed, 87 insertions(+), 29 deletions(-) diff --git a/src/monodroid/jni/generate-pinvoke-tables.cc b/src/monodroid/jni/generate-pinvoke-tables.cc index ff9049105c0..85ab21c1d8f 100644 --- a/src/monodroid/jni/generate-pinvoke-tables.cc +++ b/src/monodroid/jni/generate-pinvoke-tables.cc @@ -10,6 +10,10 @@ // // If a new library is added, please remember to generate a hash of its name and update pinvoke-override-api.cc // +// To get the list of exported native symbols for a library, you can run the following command on Unix: +// +// for s in $(llvm-nm -DUj [LIBRARY] | sort); do echo "\"$s\","; done +// #include #include #include @@ -308,6 +312,7 @@ const std::vector dotnet_pinvoke_names = { "CompressionNative_InflateReset", // libSystem.Native.so + "SystemNative_Abort", "SystemNative_Accept", "SystemNative_Access", "SystemNative_AlignedAlloc", @@ -315,11 +320,11 @@ const std::vector dotnet_pinvoke_names = { "SystemNative_AlignedRealloc", "SystemNative_Bind", "SystemNative_Calloc", + "SystemNative_CanGetHiddenFlag", "SystemNative_ChDir", "SystemNative_ChMod", "SystemNative_Close", "SystemNative_CloseDir", - "SystemNative_CloseNetworkChangeListenerSocket", "SystemNative_CloseSocketEventPort", "SystemNative_ConfigureTerminalForChildProcess", "SystemNative_Connect", @@ -330,6 +335,7 @@ const std::vector dotnet_pinvoke_names = { "SystemNative_CreateNetworkChangeListenerSocket", "SystemNative_CreateSocketEventBuffer", "SystemNative_CreateSocketEventPort", + "SystemNative_CreateThread", "SystemNative_DisablePosixSignalHandling", "SystemNative_Disconnect", "SystemNative_DrainAutoreleasePool", @@ -337,6 +343,9 @@ const std::vector dotnet_pinvoke_names = { "SystemNative_EnablePosixSignalHandling", "SystemNative_EnumerateGatewayAddressesForInterface", "SystemNative_EnumerateInterfaceAddresses", + "SystemNative_Exit", + "SystemNative_FAllocate", + "SystemNative_FChflags", "SystemNative_FChMod", "SystemNative_FcntlCanGetSetPipeSz", "SystemNative_FcntlGetFD", @@ -348,34 +357,42 @@ const std::vector dotnet_pinvoke_names = { "SystemNative_FLock", "SystemNative_ForkAndExecProcess", "SystemNative_Free", + "SystemNative_FreeEnviron", "SystemNative_FreeHostEntry", + "SystemNative_FreeLibrary", "SystemNative_FreeSocketEventBuffer", "SystemNative_FStat", "SystemNative_FSync", "SystemNative_FTruncate", + "SystemNative_FUTimens", "SystemNative_GetActiveTcpConnectionInfos", "SystemNative_GetActiveUdpListeners", "SystemNative_GetAddressFamily", "SystemNative_GetAllMountPoints", "SystemNative_GetAtOutOfBandMark", + "SystemNative_GetBootTimeTicks", "SystemNative_GetBytesAvailable", "SystemNative_GetControlCharacters", "SystemNative_GetControlMessageBufferSize", "SystemNative_GetCpuUtilization", "SystemNative_GetCryptographicallySecureRandomBytes", "SystemNative_GetCwd", + "SystemNative_GetDefaultSearchOrderPseudoHandle", "SystemNative_GetDefaultTimeZone", + "SystemNative_GetDeviceIdentifiers", "SystemNative_GetDomainName", "SystemNative_GetDomainSocketSizes", "SystemNative_GetEGid", - "SystemNative_GetEUid", "SystemNative_GetEnv", + "SystemNative_GetEnviron", "SystemNative_GetErrNo", "SystemNative_GetEstimatedTcpConnectionCount", "SystemNative_GetEstimatedUdpListenerCount", + "SystemNative_GetEUid", "SystemNative_GetFileSystemType", "SystemNative_GetFormatInfoForMountPoint", "SystemNative_GetGroupList", + "SystemNative_GetGroupName", "SystemNative_GetGroups", "SystemNative_GetHostEntryForName", "SystemNative_GetHostName", @@ -388,11 +405,11 @@ const std::vector dotnet_pinvoke_names = { "SystemNative_GetIPv6Address", "SystemNative_GetIPv6MulticastOption", "SystemNative_GetLingerOption", + "SystemNative_GetLoadLibraryError", "SystemNative_GetMaximumAddressSize", "SystemNative_GetNameInfo", "SystemNative_GetNativeIPInterfaceStatistics", "SystemNative_GetNetworkInterfaces", - "SystemNative_GetNodeName", "SystemNative_GetNonCryptographicallySecureRandomBytes", "SystemNative_GetNumRoutes", "SystemNative_GetOSArchitecture", @@ -403,7 +420,7 @@ const std::vector dotnet_pinvoke_names = { "SystemNative_GetPlatformSignalNumber", "SystemNative_GetPort", "SystemNative_GetPriority", - "SystemNative_GetProcessArchitecture", + "SystemNative_GetProcAddress", "SystemNative_GetProcessPath", "SystemNative_GetPwNamR", "SystemNative_GetPwUidR", @@ -421,11 +438,8 @@ const std::vector dotnet_pinvoke_names = { "SystemNative_GetTcpGlobalStatistics", "SystemNative_GetTimestamp", "SystemNative_GetUdpGlobalStatistics", - "SystemNative_GetUid", - "SystemNative_GetUnixName", "SystemNative_GetUnixRelease", "SystemNative_GetUnixVersion", - "SystemNative_GetUsableSize", "SystemNative_GetWindowSize", "SystemNative_HandleNonCanceledPosixSignal", "SystemNative_InitializeConsoleBeforeRead", @@ -441,8 +455,10 @@ const std::vector dotnet_pinvoke_names = { "SystemNative_LChflagsCanSetHiddenFlag", "SystemNative_Link", "SystemNative_Listen", + "SystemNative_LoadLibrary", "SystemNative_LockFileRegion", "SystemNative_Log", + "SystemNative_LogError", "SystemNative_LowLevelMonitor_Acquire", "SystemNative_LowLevelMonitor_Create", "SystemNative_LowLevelMonitor_Destroy", @@ -455,8 +471,10 @@ const std::vector dotnet_pinvoke_names = { "SystemNative_MAdvise", "SystemNative_Malloc", "SystemNative_MapTcpState", - "SystemNative_MemSet", "SystemNative_MkDir", + "SystemNative_MkdTemp", + "SystemNative_MkFifo", + "SystemNative_MkNod", "SystemNative_MksTemps", "SystemNative_MMap", "SystemNative_MSync", @@ -468,7 +486,6 @@ const std::vector dotnet_pinvoke_names = { "SystemNative_PlatformSupportsDualModeIPv4PacketInfo", "SystemNative_Poll", "SystemNative_PosixFAdvise", - "SystemNative_PosixFAllocate", "SystemNative_PRead", "SystemNative_PReadV", "SystemNative_PWrite", @@ -487,8 +504,10 @@ const std::vector dotnet_pinvoke_names = { "SystemNative_Rename", "SystemNative_RmDir", "SystemNative_SchedGetAffinity", + "SystemNative_SchedGetCpu", "SystemNative_SchedSetAffinity", "SystemNative_SearchPath", + "SystemNative_SearchPath_TempDirectory", "SystemNative_Send", "SystemNative_SendFile", "SystemNative_SendMessage", @@ -512,6 +531,7 @@ const std::vector dotnet_pinvoke_names = { "SystemNative_SetSignalForBreak", "SystemNative_SetSockOpt", "SystemNative_SetTerminalInvalidationHandler", + "SystemNative_SetWindowSize", "SystemNative_ShmOpen", "SystemNative_ShmUnlink", "SystemNative_Shutdown", @@ -536,6 +556,7 @@ const std::vector dotnet_pinvoke_names = { "SystemNative_Write", // libSystem.Security.Cryptography.Native.Android.so + "AndroidCryptoNative_AeadCipherFinalEx", "AndroidCryptoNative_Aes128Cbc", "AndroidCryptoNative_Aes128Ccm", "AndroidCryptoNative_Aes128Cfb128", @@ -601,6 +622,7 @@ const std::vector dotnet_pinvoke_names = { "AndroidCryptoNative_GetECKeyParameters", "AndroidCryptoNative_GetRsaParameters", "AndroidCryptoNative_NewGlobalReference", + "AndroidCryptoNative_RegisterRemoteCertificateValidationCallback", "AndroidCryptoNative_RsaCreate", "AndroidCryptoNative_RsaDestroy", "AndroidCryptoNative_RsaGenerateKeyEx", @@ -621,6 +643,7 @@ const std::vector dotnet_pinvoke_names = { "AndroidCryptoNative_SSLStreamGetProtocol", "AndroidCryptoNative_SSLStreamHandshake", "AndroidCryptoNative_SSLStreamInitialize", + "AndroidCryptoNative_SSLStreamIsLocalCertificateUsed", "AndroidCryptoNative_SSLStreamRead", "AndroidCryptoNative_SSLStreamRelease", "AndroidCryptoNative_SSLStreamRequestClientAuthentication", @@ -639,7 +662,6 @@ const std::vector dotnet_pinvoke_names = { "AndroidCryptoNative_X509ChainGetErrorCount", "AndroidCryptoNative_X509ChainGetErrors", "AndroidCryptoNative_X509ChainSetCustomTrustStore", - "AndroidCryptoNative_X509ChainSupportsRevocationOptions", "AndroidCryptoNative_X509ChainValidate", "AndroidCryptoNative_X509Decode", "AndroidCryptoNative_X509DecodeCollection", diff --git a/src/monodroid/jni/pinvoke-tables.include b/src/monodroid/jni/pinvoke-tables.include index 8e5372c7529..37c91a53f3f 100644 --- a/src/monodroid/jni/pinvoke-tables.include +++ b/src/monodroid/jni/pinvoke-tables.include @@ -250,11 +250,12 @@ static PinvokeEntry internal_pinvokes[] = { }; //64-bit DotNet p/invoke table static PinvokeEntry dotnet_pinvokes[] = { + {0xa9f93429c5e2b5, "AndroidCryptoNative_SSLStreamIsLocalCertificateUsed", nullptr}, {0xba29497af60305, "BrotliDecoderDecompressStream", nullptr}, - {0x2ed58245e72af41, "AndroidCryptoNative_X509ChainSupportsRevocationOptions", nullptr}, {0x336cd3c7fb41c6a, "SystemNative_GetSocketType", nullptr}, {0x37ea669c69089ff, "SystemNative_InitializeConsoleBeforeRead", nullptr}, {0x3a940bbaefedf03, "AndroidCryptoNative_CipherUpdate", nullptr}, + {0x4311d1d324b2057, "SystemNative_GetProcAddress", nullptr}, {0x79ca1869d224820, "CryptoNative_EvpDigestCurrent", nullptr}, {0x82500327210516d, "CryptoNative_EvpMdCtxDestroy", nullptr}, {0x837e8cd30e29700, "SystemNative_GetSockOpt", nullptr}, @@ -289,6 +290,7 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x1b70abf2b91d38a6, "SystemNative_FcntlGetFD", nullptr}, {0x1bd174c8daa88fd4, "SystemNative_ConvertErrorPlatformToPal", nullptr}, {0x1db7c79f266b60ff, "CryptoNative_EvpMdSize", nullptr}, + {0x1dd5f36ff8719418, "SystemNative_FAllocate", nullptr}, {0x1e3389dcfd925f47, "AndroidCryptoNative_Aes128Ecb", nullptr}, {0x1ee1f9e3aa35b6fe, "SystemNative_GetPwUidR", nullptr}, {0x1ef41ad6d9f0b254, "CryptoNative_HmacOneShot", nullptr}, @@ -305,12 +307,14 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x23a16c2067c951a4, "AndroidCryptoNative_BigNumToBinary", nullptr}, {0x242ecded1219ff32, "SystemNative_GetOSArchitecture", nullptr}, {0x242fce87df6dcd96, "AndroidCryptoNative_Aes128Ccm", nullptr}, + {0x2472cfc68a2aa833, "SystemNative_GetEnviron", nullptr}, {0x24d49c833ac8f243, "CryptoNative_EvpSha384", nullptr}, {0x25021f1c66d9ba06, "AndroidCryptoNative_ChaCha20Poly1305", nullptr}, {0x258f314ff5085c28, "AndroidCryptoNative_SSLStreamSetTargetHost", nullptr}, {0x26522342ecf78912, "AndroidCryptoNative_X509ChainGetErrors", nullptr}, {0x2674b72588b740f8, "AndroidCryptoNative_DsaKeyCreateByExplicitParameters", nullptr}, {0x27e9a8d1500d1877, "SystemNative_GetProcessPath", nullptr}, + {0x2a141d3db263b7e8, "SystemNative_MkdTemp", nullptr}, {0x2a36bfbc49143c9f, "SystemNative_Calloc", nullptr}, {0x2b6d983eb884545f, "SystemNative_GetControlCharacters", nullptr}, {0x2f1e9ce68e99a367, "SystemNative_GetAtOutOfBandMark", nullptr}, @@ -321,6 +325,7 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x30f009a9cc61fecd, "AndroidCryptoNative_X509ExportPkcs7", nullptr}, {0x317764b222cff251, "CryptoNative_HmacDestroy", nullptr}, {0x3230c819526d7ffb, "AndroidCryptoNative_NewGlobalReference", nullptr}, + {0x346fa00d618dad31, "AndroidCryptoNative_RegisterRemoteCertificateValidationCallback", nullptr}, {0x34bb308ca52d130c, "SystemNative_SetTerminalInvalidationHandler", nullptr}, {0x35bd95dce64cdafa, "SystemNative_CreateAutoreleasePool", nullptr}, {0x35cc10818712e3d9, "AndroidCryptoNative_X509ChainDestroyContext", nullptr}, @@ -330,6 +335,7 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x3768a2c7a4a8472c, "SystemNative_GetGroupList", nullptr}, {0x386677516cf71915, "AndroidCryptoNative_CipherSetKeyAndIV", nullptr}, {0x38a8dd751094700a, "SystemNative_ReadProcessStatusInfo", nullptr}, + {0x3903d6df930e5cba, "SystemNative_SchedGetCpu", nullptr}, {0x39cbc53a5e7a2296, "SystemNative_SetSendTimeout", nullptr}, {0x3a9f009544a121c4, "AndroidCryptoNative_GetBigNumBytes", nullptr}, {0x3b0b4455b3fea9e2, "SystemNative_SetRLimit", nullptr}, @@ -351,6 +357,7 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x4867eae89a5c605a, "SystemNative_MksTemps", nullptr}, {0x488380dda2b559e6, "SystemNative_SetSignalForBreak", nullptr}, {0x48be037e38782252, "CryptoNative_EnsureOpenSslInitialized", nullptr}, + {0x4bc828cf09a41783, "SystemNative_FreeEnviron", nullptr}, {0x4c4ddfc64007b3d8, "SystemNative_GetHostName", nullptr}, {0x4c865a5faaa699d9, "SystemNative_Open", nullptr}, {0x4cb0abad20b660da, "AndroidCryptoNative_DsaSizeSignature", nullptr}, @@ -365,6 +372,7 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x5054abbd2a816def, "SystemNative_FSync", nullptr}, {0x50b366b9079ed438, "SystemNative_OpenDir", nullptr}, {0x518a82c4baeba9f3, "SystemNative_GetPeerName", nullptr}, + {0x52efc90a9cdf8e01, "SystemNative_MkFifo", nullptr}, {0x53405b468622bb06, "SystemNative_MAdvise", nullptr}, {0x534a064c11a1da14, "SystemNative_Sync", nullptr}, {0x536599a0b4941c95, "SystemNative_InterfaceNameToIndex", nullptr}, @@ -395,20 +403,23 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x6111615e66a35dfb, "SystemNative_EnumerateInterfaceAddresses", nullptr}, {0x6197b24597638a4d, "SystemNative_SchedSetAffinity", nullptr}, {0x623531712908fe66, "SystemNative_INotifyRemoveWatch", nullptr}, - {0x624bfe137e6b5d39, "SystemNative_GetUid", nullptr}, {0x635933f4cff8a8a9, "AndroidCryptoNative_Aes192Cbc", nullptr}, {0x63c8ebedf5349f0e, "AndroidCryptoNative_DesCfb8", nullptr}, {0x641f5aa5faefc192, "CryptoNative_EvpDigestOneShot", nullptr}, {0x64c72180e4345ad8, "AndroidCryptoNative_CipherSetNonceLength", nullptr}, {0x6515d6c9d0d546d6, "SystemNative_HandleNonCanceledPosixSignal", nullptr}, {0x65a79b2aefb681e1, "SystemNative_CreateSocketEventBuffer", nullptr}, + {0x6632872520cf1856, "SystemNative_LoadLibrary", nullptr}, {0x67ddf0b252c19629, "BrotliDecoderVersion", nullptr}, + {0x6ac693dcf9d7c4c2, "SystemNative_GetLoadLibraryError", nullptr}, {0x6b10f070ae0146d4, "AndroidCryptoNative_CipherCreate", nullptr}, {0x6b233bbc205939bf, "AndroidCryptoNative_SSLStreamHandshake", nullptr}, {0x6bdc893ef8be99e7, "SystemNative_GetIPSocketAddressSizes", nullptr}, {0x6c75d5288ddd4b4a, "AndroidCryptoNative_DesEcb", nullptr}, {0x6c9f2e6d12a317a2, "AndroidCryptoNative_Aes256Ccm", nullptr}, {0x6ccc11e6813e7f89, "SystemNative_Close", nullptr}, + {0x6ce645aa9c1da3f1, "SystemNative_SetWindowSize", nullptr}, + {0x6ce88a9602bd3bf2, "SystemNative_GetBootTimeTicks", nullptr}, {0x6d1e60bdbeb87aa9, "SystemNative_SetIPv4Address", nullptr}, {0x6d5016f1bf6782cb, "AndroidCryptoNative_RsaVerificationPrimitive", nullptr}, {0x6d9db217f987fc7e, "SystemNative_Socket", nullptr}, @@ -451,7 +462,6 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x82521dc7a3e0a884, "AndroidCryptoNative_Aes256Cfb8", nullptr}, {0x839c5b2482c5e130, "CryptoNative_ErrPeekLastError", nullptr}, {0x86178ff6f2ff90f4, "SystemNative_PlatformSupportsDualModeIPv4PacketInfo", nullptr}, - {0x866adbddc378eff0, "SystemNative_GetNodeName", nullptr}, {0x866d289872995b56, "AndroidCryptoNative_X509StoreEnumerateCertificates", nullptr}, {0x86b09bf921350f8c, "SystemNative_Log", nullptr}, {0x87c7d4815a4fd057, "CryptoNative_EvpSha1", nullptr}, @@ -480,15 +490,14 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x91f6249923fc7ca4, "BrotliDecoderErrorString", nullptr}, {0x923761c06621fc21, "AndroidCryptoNative_SSLStreamCreate", nullptr}, {0x92a62b67d38387f0, "BrotliGetDictionary", nullptr}, - {0x92e082bf3648fbb0, "SystemNative_GetUnixName", nullptr}, {0x93b73b2af8e2f32b, "CryptoNative_HmacCreate", nullptr}, {0x93bd1d78b75cda99, "SystemNative_GetTcpGlobalStatistics", nullptr}, - {0x9421d81b17d2fe3e, "SystemNative_CloseNetworkChangeListenerSocket", nullptr}, {0x94663f3d60f11d38, "SystemNative_ReadEvents", nullptr}, {0x94e89a01440d3e20, "SystemNative_Sysctl", nullptr}, {0x95940b764538e429, "CryptoNative_EvpMd5", nullptr}, {0x96e077416ca46a87, "SystemNative_SetIPv4MulticastOption", nullptr}, {0x96f19c02d0adebc0, "CompressionNative_DeflateReset", nullptr}, + {0x972ca1612e79b321, "SystemNative_GetDefaultSearchOrderPseudoHandle", nullptr}, {0x97405b82e3c52c1a, "SystemNative_GetSignalForBreak", nullptr}, {0x97d308df1fc75bdd, "SystemNative_GetHostEntryForName", nullptr}, {0x99427666e7af4fb2, "SystemNative_WaitIdAnyExitedNoHangNoWait", nullptr}, @@ -505,8 +514,8 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x9dca3a00eb020c26, "SystemNative_Kill", nullptr}, {0x9e86fd86c120034b, "BrotliEncoderSetParameter", nullptr}, {0x9f2c58763a4a0204, "AndroidCryptoNative_CipherDestroy", nullptr}, + {0x9f49fe6c41cc0f4b, "AndroidCryptoNative_AeadCipherFinalEx", nullptr}, {0x9fef6788420c40ee, "SystemNative_ConfigureTerminalForChildProcess", nullptr}, - {0xa01aafb6e5b405db, "SystemNative_MemSet", nullptr}, {0xa0a607a66d45fb2a, "AndroidCryptoNative_SSLStreamVerifyHostname", nullptr}, {0xa123cb29f5f736e7, "SystemNative_ReceiveMessage", nullptr}, {0xa22a5b5aa58c39d1, "SystemNative_GetNumRoutes", nullptr}, @@ -524,18 +533,21 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xaa07629dc820e22a, "SystemNative_EnablePosixSignalHandling", nullptr}, {0xabc01085229fb24a, "AndroidCryptoNative_SSLGetSupportedProtocols", nullptr}, {0xac60de4d530c2c96, "AndroidCryptoNative_DsaSign", nullptr}, + {0xad0dfe04eb0152bd, "SystemNative_CreateThread", nullptr}, {0xad747aacfdb6b0c0, "AndroidCryptoNative_RsaUpRef", nullptr}, {0xadb79f95f46c8971, "SystemNative_PReadV", nullptr}, {0xae39a18202281ac3, "AndroidCryptoNative_EcKeyGetCurveName", nullptr}, {0xaec79fea71aa6d7a, "SystemNative_FLock", nullptr}, {0xaed9a241cf99cd55, "BrotliDecoderIsFinished", nullptr}, {0xaef741e4859af385, "SystemNative_GetSpaceInfoForMountPoint", nullptr}, + {0xaf21e7be03c2fb61, "SystemNative_Exit", nullptr}, {0xaf42ab86d7ae7234, "CryptoNative_EvpDigestUpdate", nullptr}, {0xafa04d18f40b1bab, "SystemNative_GetActiveUdpListeners", nullptr}, {0xb02f9b90348112d6, "SystemNative_SysConf", nullptr}, {0xb06f79e2fa5fec2d, "SystemNative_GetIPv6Address", nullptr}, {0xb0b0531f400704f1, "SystemNative_GetAddressFamily", nullptr}, {0xb0ef04e06fbb3240, "SystemNative_Dup", nullptr}, + {0xb138b853c7a4a4a8, "SystemNative_CanGetHiddenFlag", nullptr}, {0xb17e57a6eb07b615, "AndroidCryptoNative_EcKeyCreateByKeyParameters", nullptr}, {0xb19a7e97cdc0b913, "AndroidCryptoNative_Aes256Ecb", nullptr}, {0xb209c10b8961d087, "SystemNative_Receive", nullptr}, @@ -568,9 +580,11 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xc3b018f07b7eb078, "SystemNative_Listen", nullptr}, {0xc443fe50f5f9caec, "BrotliDecoderDecompress", nullptr}, {0xc5172279d0dd8ce4, "CryptoNative_EvpSha512", nullptr}, + {0xc5326cd95646b911, "SystemNative_FUTimens", nullptr}, {0xc5a55c1ea92b8dad, "SystemNative_PRead", nullptr}, {0xc5a7ec27a7306804, "AndroidCryptoNative_Des3Cfb8", nullptr}, {0xc5c6b0f531797660, "AndroidCryptoNative_GetDsaParameters", nullptr}, + {0xc643198ec90f44b7, "SystemNative_MkNod", nullptr}, {0xc6a7ac7c8d82da0c, "AndroidCryptoNative_RsaPrivateDecrypt", nullptr}, {0xc8e10aa226d34595, "AndroidCryptoNative_X509StoreEnumerateTrustedCertificates", nullptr}, {0xc97ff652fd643526, "SystemNative_SetRawSockOpt", nullptr}, @@ -595,7 +609,7 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xd4c4c2bec6908797, "SystemNative_CopyFile", nullptr}, {0xd51a39cf7f84a49d, "AndroidCryptoNative_EcKeyCreateByExplicitParameters", nullptr}, {0xd585c80f41abb13d, "SystemNative_LowLevelMonitor_Release", nullptr}, - {0xd643031866d820ad, "SystemNative_PosixFAllocate", nullptr}, + {0xd692f9150ac3480d, "SystemNative_LogError", nullptr}, {0xd71c4eaf80ea218b, "SystemNative_SNPrintF", nullptr}, {0xd7fa29bcafe538c2, "SystemNative_FcntlSetFD", nullptr}, {0xd87251da5bbfe12d, "SystemNative_LowLevelMonitor_Signal_Release", nullptr}, @@ -607,9 +621,11 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xdbafc90d9a1f18ba, "SystemNative_Pipe", nullptr}, {0xdbb2bd51375f6815, "SystemNative_GetRLimit", nullptr}, {0xdd0a4092f77abe2e, "CompressionNative_DeflateInit2_", nullptr}, + {0xddb231fe8665bdce, "SystemNative_GetDeviceIdentifiers", nullptr}, {0xdf32dc1e6afdd53c, "AndroidCryptoNative_X509ChainGetErrorCount", nullptr}, {0xdf55a952b5b68eb0, "SystemNative_SetDelayedSigChildConsoleConfigurationHandler", nullptr}, {0xdf9869ddc8cc3e5e, "SystemNative_Send", nullptr}, + {0xdf9b606ab10c66da, "SystemNative_SearchPath_TempDirectory", nullptr}, {0xdfc9137d2a3eb69e, "SystemNative_ShmOpen", nullptr}, {0xe0c2779cc1f345e5, "SystemNative_GetSystemTimeAsTicks", nullptr}, {0xe0e1dc5c7f1c62d1, "SystemNative_GetRawSockOpt", nullptr}, @@ -618,13 +634,13 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xe1e68596154c4a01, "AndroidCryptoNative_DeleteGlobalReference", nullptr}, {0xe23a89bf78db12b6, "SystemNative_Rename", nullptr}, {0xe23e9d9421fe669c, "BrotliDecoderCreateInstance", nullptr}, + {0xe2ff891a5773274d, "SystemNative_FChflags", nullptr}, {0xe313344977efd173, "BrotliEncoderMaxCompressedSize", nullptr}, {0xe31ff77ee993301b, "AndroidCryptoNative_SSLStreamRelease", nullptr}, {0xe4b4ef9a27c8a0c5, "SystemNative_DrainAutoreleasePool", nullptr}, {0xe5870c0ed57dc802, "SystemNative_SetKeypadXmit", nullptr}, {0xe5dcd5cc2901be3e, "AndroidCryptoNative_GetECCurveParameters", nullptr}, {0xe667c4f469004ea0, "AndroidCryptoNative_Aes256Cfb128", nullptr}, - {0xe789ce4ba0d52f26, "SystemNative_GetProcessArchitecture", nullptr}, {0xe80622add45b97ef, "SystemNative_GetUnixVersion", nullptr}, {0xe80f5b39f5d56291, "SystemNative_Bind", nullptr}, {0xe8a2a4e48b7bcc3b, "SystemNative_SendFile", nullptr}, @@ -638,13 +654,15 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xf0ecd4416f62acfa, "SystemNative_EnumerateGatewayAddressesForInterface", nullptr}, {0xf10b31d4d66b80dd, "SystemNative_LowLevelMonitor_Wait", nullptr}, {0xf12df5fb4b6069c4, "SystemNative_MUnmap", nullptr}, + {0xf1671aab17cc18d5, "SystemNative_FreeLibrary", nullptr}, {0xf247211e6759476f, "SystemNative_GetPort", nullptr}, + {0xf3471f94b386b762, "SystemNative_GetGroupName", nullptr}, {0xf3905b32da336a2e, "SystemNative_GetUnixRelease", nullptr}, {0xf3f61096a5089cfc, "SystemNative_DisablePosixSignalHandling", nullptr}, {0xf4a597d0067676a3, "SystemNative_ChMod", nullptr}, - {0xf53f1d374aef4b21, "SystemNative_GetUsableSize", nullptr}, {0xf5786a949a070824, "SystemNative_CreateNetworkChangeListenerSocket", nullptr}, {0xf60a1dfd974a7e55, "AndroidCryptoNative_Aes192Cfb8", nullptr}, + {0xf60b6d0d58338d19, "SystemNative_Abort", nullptr}, {0xf636f6f74c59be39, "SystemNative_FcntlSetIsNonBlocking", nullptr}, {0xf6fb8a01c3c2e832, "SystemNative_FStat", nullptr}, {0xf71a65bf13d06e36, "AndroidCryptoNative_SSLStreamShutdown", nullptr}, @@ -926,8 +944,9 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x8de5b3d, "SystemNative_GetSid", nullptr}, {0x92bf2d9, "AndroidCryptoNative_EcKeyGetSize", nullptr}, {0xaa46d20, "SystemNative_SNPrintF", nullptr}, + {0xaa7c86e, "SystemNative_Exit", nullptr}, {0xb6a80bd, "SystemNative_SetAddressFamily", nullptr}, - {0xb823d16, "SystemNative_GetUid", nullptr}, + {0xbdd984d, "SystemNative_SetWindowSize", nullptr}, {0xcc59904, "CryptoNative_HmacDestroy", nullptr}, {0xd5ca844, "SystemNative_CreateSocketEventPort", nullptr}, {0xd98d741, "SystemNative_Kill", nullptr}, @@ -964,18 +983,21 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x22011e2b, "SystemNative_SetLingerOption", nullptr}, {0x224ebd71, "SystemNative_Listen", nullptr}, {0x2253b591, "BrotliGetTransforms", nullptr}, + {0x226eec4d, "SystemNative_Abort", nullptr}, {0x229f73d4, "AndroidCryptoNative_RsaUpRef", nullptr}, {0x22bbb587, "AndroidCryptoNative_SSLStreamGetPeerCertificate", nullptr}, {0x2304e65b, "SystemNative_SetRLimit", nullptr}, {0x23cfcfb0, "BrotliTransformDictionaryWord", nullptr}, {0x260a3e8d, "CompressionNative_DeflateInit2_", nullptr}, - {0x262314e4, "SystemNative_CloseNetworkChangeListenerSocket", nullptr}, {0x289b5430, "SystemNative_Log", nullptr}, + {0x28d95a99, "SystemNative_CanGetHiddenFlag", nullptr}, {0x28f3db4b, "SystemNative_ShmUnlink", nullptr}, {0x2af6aa40, "SystemNative_Access", nullptr}, {0x2b117055, "BrotliDecoderDecompress", nullptr}, {0x2b7293c5, "SystemNative_GetTimestamp", nullptr}, + {0x2b747a9c, "SystemNative_MkNod", nullptr}, {0x2bc9ff5e, "AndroidCryptoNative_SSLStreamGetProtocol", nullptr}, + {0x2c4415fd, "AndroidCryptoNative_AeadCipherFinalEx", nullptr}, {0x2c467430, "AndroidCryptoNative_GetECCurveParameters", nullptr}, {0x2d21ad97, "SystemNative_GetReadDirRBufferSize", nullptr}, {0x2d6e4a1c, "AndroidCryptoNative_X509StoreRemoveCertificate", nullptr}, @@ -984,9 +1006,11 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x2ff73621, "CryptoNative_ErrReasonErrorString", nullptr}, {0x30af09b7, "AndroidCryptoNative_DecodeRsaSubjectPublicKeyInfo", nullptr}, {0x31120969, "SystemNative_Malloc", nullptr}, + {0x3374b950, "SystemNative_GetLoadLibraryError", nullptr}, {0x349c5a8f, "SystemNative_GetNetworkInterfaces", nullptr}, {0x354aa58f, "AndroidCryptoNative_DsaKeyCreateByExplicitParameters", nullptr}, {0x363c0010, "CryptoNative_EvpDigestUpdate", nullptr}, + {0x367eee31, "AndroidCryptoNative_SSLStreamIsLocalCertificateUsed", nullptr}, {0x38575bc5, "SystemNative_GetUnixRelease", nullptr}, {0x388a31d4, "SystemNative_PathConf", nullptr}, {0x3a238b9f, "AndroidCryptoNative_RsaVerificationPrimitive", nullptr}, @@ -1023,6 +1047,7 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x493888ee, "CompressionNative_Crc32", nullptr}, {0x494ef6d4, "SystemNative_GetIPv4MulticastOption", nullptr}, {0x496f1885, "SystemNative_GetSocketErrorOption", nullptr}, + {0x49c2af32, "SystemNative_GetBootTimeTicks", nullptr}, {0x49c81782, "SystemNative_MkDir", nullptr}, {0x4a4ef46f, "SystemNative_FcntlGetFD", nullptr}, {0x4b78d330, "CryptoNative_HmacCurrent", nullptr}, @@ -1037,7 +1062,6 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x4f6c3726, "SystemNative_FcntlGetIsNonBlocking", nullptr}, {0x50309413, "SystemNative_GetPeerUserName", nullptr}, {0x50e88639, "CryptoNative_HmacUpdate", nullptr}, - {0x513d0a9e, "SystemNative_GetUnixName", nullptr}, {0x514e739b, "AndroidCryptoNative_EcKeyCreateByExplicitParameters", nullptr}, {0x52590509, "AndroidCryptoNative_Aes128Cbc", nullptr}, {0x526c9f90, "SystemNative_GetNumRoutes", nullptr}, @@ -1045,7 +1069,6 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x5600bd0d, "AndroidCryptoNative_SSLStreamCreate", nullptr}, {0x561fb6ff, "SystemNative_FStat", nullptr}, {0x56993aa9, "SystemNative_SetKeypadXmit", nullptr}, - {0x577cf918, "SystemNative_GetNodeName", nullptr}, {0x57bdcc46, "SystemNative_Open", nullptr}, {0x581adfc6, "SystemNative_GetSignalForBreak", nullptr}, {0x5906e1ba, "SystemNative_Close", nullptr}, @@ -1054,8 +1077,8 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x5989ad17, "SystemNative_GetIcmpv4GlobalStatistics", nullptr}, {0x599921d3, "SystemNative_SysConf", nullptr}, {0x59b67f4d, "AndroidCryptoNative_SSLGetSupportedProtocols", nullptr}, + {0x59e712d5, "SystemNative_MkdTemp", nullptr}, {0x5a492732, "SystemNative_FcntlSetFD", nullptr}, - {0x5b75d3ae, "SystemNative_PosixFAllocate", nullptr}, {0x5ccc38dd, "AndroidCryptoNative_SSLStreamGetPeerCertificates", nullptr}, {0x5e9ef1a2, "SystemNative_GetAtOutOfBandMark", nullptr}, {0x5eb4f827, "SystemNative_LockFileRegion", nullptr}, @@ -1122,13 +1145,15 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x84662605, "CompressionNative_Deflate", nullptr}, {0x8526c9e8, "SystemNative_SetRawSockOpt", nullptr}, {0x8574b133, "AndroidCryptoNative_Aes192Ecb", nullptr}, + {0x88a7558d, "SystemNative_GetDefaultSearchOrderPseudoHandle", nullptr}, {0x8bdaf06c, "SystemNative_GetWindowSize", nullptr}, {0x8bfcd7ba, "CompressionNative_Inflate", nullptr}, {0x8d38b733, "SystemNative_LSeek", nullptr}, - {0x8e969bff, "SystemNative_GetProcessArchitecture", nullptr}, {0x8f4e59f1, "SystemNative_ReadStdin", nullptr}, {0x909e12ee, "SystemNative_SearchPath", nullptr}, {0x910b7740, "SystemNative_GetFormatInfoForMountPoint", nullptr}, + {0x913a3d68, "SystemNative_GetDeviceIdentifiers", nullptr}, + {0x9216d936, "SystemNative_GetGroupName", nullptr}, {0x94477030, "AndroidCryptoNative_Aes256Ccm", nullptr}, {0x95e99740, "AndroidCryptoNative_SSLStreamInitialize", nullptr}, {0x960d4fc0, "SystemNative_GetDefaultTimeZone", nullptr}, @@ -1143,7 +1168,7 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x996952b3, "AndroidCryptoNative_CipherFinalEx", nullptr}, {0x9a005080, "SystemNative_Bind", nullptr}, {0x9a84ffd3, "AndroidCryptoNative_ChaCha20Poly1305", nullptr}, - {0x9adb0570, "AndroidCryptoNative_X509ChainSupportsRevocationOptions", nullptr}, + {0x9abfce84, "SystemNative_GetEnviron", nullptr}, {0x9bda7eb1, "SystemNative_ReadProcessStatusInfo", nullptr}, {0x9cd6cae8, "AndroidCryptoNative_SSLStreamRelease", nullptr}, {0x9d102d58, "CompressionNative_InflateEnd", nullptr}, @@ -1153,7 +1178,10 @@ static PinvokeEntry dotnet_pinvokes[] = { {0x9e717f20, "SystemNative_LChflagsCanSetHiddenFlag", nullptr}, {0x9f47b32d, "SystemNative_ShmOpen", nullptr}, {0xa0db1858, "SystemNative_GetEnv", nullptr}, + {0xa1295a9f, "SystemNative_MkFifo", nullptr}, + {0xa1bec9da, "SystemNative_LogError", nullptr}, {0xa1d774fc, "BrotliEncoderHasMoreOutput", nullptr}, + {0xa2430b33, "SystemNative_SearchPath_TempDirectory", nullptr}, {0xa25daa0e, "BrotliSetDictionaryData", nullptr}, {0xa2d2f390, "SystemNative_TryChangeSocketEventRegistration", nullptr}, {0xa4636764, "AndroidCryptoNative_X509ChainCreateContext", nullptr}, @@ -1173,6 +1201,8 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xab3d1641, "AndroidCryptoNative_DesEcb", nullptr}, {0xabe6739f, "BrotliGetDictionary", nullptr}, {0xacc26fa4, "AndroidCryptoNative_SSLStreamCreateWithCertificates", nullptr}, + {0xacc28460, "SystemNative_GetProcAddress", nullptr}, + {0xad7fbde5, "SystemNative_FUTimens", nullptr}, {0xae443204, "SystemNative_GetSockOpt", nullptr}, {0xae449ad1, "BrotliDecoderIsUsed", nullptr}, {0xafb02e71, "BrotliEncoderMaxCompressedSize", nullptr}, @@ -1185,6 +1215,7 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xb2985645, "AndroidCryptoNative_X509StoreEnumerateCertificates", nullptr}, {0xb4110b14, "AndroidCryptoNative_DsaGenerateKey", nullptr}, {0xb427959c, "SystemNative_FLock", nullptr}, + {0xb439ebdb, "AndroidCryptoNative_RegisterRemoteCertificateValidationCallback", nullptr}, {0xb444f04a, "SystemNative_Accept", nullptr}, {0xb448a24a, "SystemNative_SymLink", nullptr}, {0xb4e5c37d, "SystemNative_UTimensat", nullptr}, @@ -1207,12 +1238,14 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xbb92466f, "SystemNative_AlignedAlloc", nullptr}, {0xbd658356, "CryptoNative_ErrErrorStringN", nullptr}, {0xbdbf2140, "SystemNative_SchedGetAffinity", nullptr}, + {0xbec8a3f2, "SystemNative_FChflags", nullptr}, {0xbf4eeb78, "AndroidCryptoNative_GetBigNumBytes", nullptr}, {0xbf9766c3, "AndroidCryptoNative_SSLStreamHandshake", nullptr}, {0xbfa0ce53, "SystemNative_GetPlatformSignalNumber", nullptr}, {0xbfaad12d, "BrotliDecoderSetParameter", nullptr}, {0xc090b1d3, "CryptoNative_EvpSha512", nullptr}, {0xc0d66913, "SystemNative_GetUnixVersion", nullptr}, + {0xc11dec94, "SystemNative_FAllocate", nullptr}, {0xc1243135, "AndroidCryptoNative_Aes128Gcm", nullptr}, {0xc1e4e6f6, "AndroidCryptoNative_BigNumToBinary", nullptr}, {0xc25ffc33, "BrotliEncoderCompressStream", nullptr}, @@ -1222,12 +1255,14 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xc475f41c, "AndroidCryptoNative_X509StoreContainsCertificate", nullptr}, {0xc4ac1723, "AndroidCryptoNative_Aes256Cbc", nullptr}, {0xc55548f2, "SystemNative_HandleNonCanceledPosixSignal", nullptr}, + {0xc57b40fa, "SystemNative_LoadLibrary", nullptr}, {0xc6d5929c, "SystemNative_LowLevelMonitor_TimedWait", nullptr}, {0xc6f2fb9e, "AndroidCryptoNative_X509ChainSetCustomTrustStore", nullptr}, {0xc717b16e, "CryptoNative_EvpMdCtxDestroy", nullptr}, {0xc746b70c, "AndroidCryptoNative_DsaSign", nullptr}, {0xc7f0668d, "CompressionNative_DeflateReset", nullptr}, {0xc83527e0, "CryptoNative_HmacReset", nullptr}, + {0xc89ccd22, "SystemNative_SchedGetCpu", nullptr}, {0xc8cce896, "SystemNative_GetSocketType", nullptr}, {0xc8e06b20, "AndroidCryptoNative_X509ChainGetCertificates", nullptr}, {0xc9b017c8, "AndroidCryptoNative_EcKeyCreateByOid", nullptr}, @@ -1236,6 +1271,7 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xcb746e5c, "SystemNative_SetIPv4MulticastOption", nullptr}, {0xcb85cd8e, "AndroidCryptoNative_EcdhDeriveKey", nullptr}, {0xccc0dd15, "SystemNative_RegisterForSigChld", nullptr}, + {0xcdfb627d, "SystemNative_FreeLibrary", nullptr}, {0xce91e293, "SystemNative_GetGroupList", nullptr}, {0xcf9bcc75, "AndroidCryptoNative_Aes256Gcm", nullptr}, {0xcfa9e6f1, "AndroidCryptoNative_GetDsaParameters", nullptr}, @@ -1244,7 +1280,6 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xd24d4849, "SystemNative_Socket", nullptr}, {0xd298c3b3, "SystemNative_Write", nullptr}, {0xd378ba49, "CryptoNative_EvpMd5", nullptr}, - {0xd380af35, "SystemNative_GetUsableSize", nullptr}, {0xd473c64c, "SystemNative_SetReceiveTimeout", nullptr}, {0xd4b91180, "SystemNative_ForkAndExecProcess", nullptr}, {0xd6d7b4fb, "AndroidCryptoNative_X509ChainGetCertificateCount", nullptr}, @@ -1274,12 +1309,12 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xe4a78efb, "SystemNative_SetPriority", nullptr}, {0xe4dba4f6, "SystemNative_GetCwd", nullptr}, {0xe4f87d25, "AndroidCryptoNative_SSLStreamVerifyHostname", nullptr}, + {0xe50c82b4, "SystemNative_CreateThread", nullptr}, {0xe58ed8fe, "SystemNative_PlatformSupportsDualModeIPv4PacketInfo", nullptr}, {0xe5ef37b3, "AndroidCryptoNative_DsaSignatureFieldSize", nullptr}, {0xe770cb3f, "SystemNative_CopyFile", nullptr}, {0xe7a9a106, "CompressionNative_InflateInit2_", nullptr}, {0xe7bd8dd1, "AndroidCryptoNative_EcKeyCreateByKeyParameters", nullptr}, - {0xe7edaa92, "SystemNative_MemSet", nullptr}, {0xe890cf58, "AndroidCryptoNative_EcDsaSign", nullptr}, {0xe8b2ec8d, "BrotliDecoderErrorString", nullptr}, {0xe972fbd9, "SystemNative_GetEGid", nullptr}, @@ -1308,6 +1343,7 @@ static PinvokeEntry dotnet_pinvokes[] = { {0xf57828fb, "SystemNative_IsATty", nullptr}, {0xf6141499, "AndroidCryptoNative_X509ChainBuild", nullptr}, {0xf629d20f, "SystemNative_Shutdown", nullptr}, + {0xf6b01c6b, "SystemNative_FreeEnviron", nullptr}, {0xf6bfedad, "SystemNative_ReadEvents", nullptr}, {0xf91cf365, "AndroidCryptoNative_Aes128Ccm", nullptr}, {0xf94a4828, "SystemNative_GetEUid", nullptr}, @@ -1330,4 +1366,4 @@ constexpr hash_t system_security_cryptography_native_android_library_hash = 0x93 #endif constexpr size_t internal_pinvokes_count = 237; -constexpr size_t dotnet_pinvokes_count = 410; +constexpr size_t dotnet_pinvokes_count = 428; From 8dc92611ed118bd5ab0aa3ff28761988cb9ee263 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Mon, 27 Feb 2023 15:48:59 -0500 Subject: [PATCH 3/5] [ci] Run nunit tests with stable .NET version (#7826) Attempt to improve desktop test execution reliability by running our test assemblies with a stable version of .NET by default. The default value of the `useDotNet` yaml template parameters have been flipped as part of continued efforts to remove classic test runs. .NET 7.0 SDK provisioning has been updated to install the latest GA version now that it is stable. --- .../automation/azure-pipelines-nightly.yaml | 1 + build-tools/automation/azure-pipelines.yaml | 21 ++++++++------- .../yaml-templates/apk-instrumentation.yaml | 2 +- .../yaml-templates/build-windows.yaml | 2 +- .../run-localization-tests.yaml | 1 - .../yaml-templates/run-nunit-tests.yaml | 26 ++++++++++++++++--- .../run-timezoneinfo-tests.yaml | 1 + .../automation/yaml-templates/variables.yaml | 4 +-- 8 files changed, 40 insertions(+), 18 deletions(-) diff --git a/build-tools/automation/azure-pipelines-nightly.yaml b/build-tools/automation/azure-pipelines-nightly.yaml index 89b55d11a86..cc6168b0f35 100644 --- a/build-tools/automation/azure-pipelines-nightly.yaml +++ b/build-tools/automation/azure-pipelines-nightly.yaml @@ -142,6 +142,7 @@ stages: extraBuildArgs: /p:TestAvdApiLevel=$(avdApiLevel) /p:TestAvdAbi=$(avdAbi) /p:TestAvdType=$(avdType) artifactSource: bin/Test$(XA.Build.Configuration)/Mono.Android_Tests-Signed.apk artifactFolder: Default + useDotNet: false - task: MSBuild@1 displayName: shut down emulator diff --git a/build-tools/automation/azure-pipelines.yaml b/build-tools/automation/azure-pipelines.yaml index 2e060009042..ef8c0138fbe 100644 --- a/build-tools/automation/azure-pipelines.yaml +++ b/build-tools/automation/azure-pipelines.yaml @@ -132,6 +132,7 @@ stages: testResultsFiles: TestResult-Xamarin.Android.JcwGen_Tests-$(ApkTestConfiguration).xml artifactSource: bin/Test$(ApkTestConfiguration)/Xamarin.Android.JcwGen_Tests-Signed.apk artifactFolder: Default + useDotNet: false - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -142,6 +143,7 @@ stages: artifactSource: bin/Test$(ApkTestConfiguration)/Xamarin.Android.JcwGen_Tests-Signed.apk artifactFolder: FastDev_Assemblies_Dexes extraBuildArgs: /p:AndroidFastDeploymentType=Assemblies:Dexes + useDotNet: false - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -151,6 +153,7 @@ stages: testResultsFiles: TestResult-Xamarin.Android.Locale_Tests-$(ApkTestConfiguration).xml artifactSource: bin/Test$(ApkTestConfiguration)/Xamarin.Android.Locale_Tests-Signed.apk artifactFolder: Default + useDotNet: false - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -161,6 +164,7 @@ stages: extraBuildArgs: /p:AotAssemblies=True artifactSource: bin/Test$(ApkTestConfiguration)/Xamarin.Android.Locale_Tests-Signed.apk artifactFolder: Aot + useDotNet: false - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -171,6 +175,7 @@ stages: extraBuildArgs: /p:AotAssemblies=True /p:AndroidEnableProfiledAot=true artifactSource: bin/Test$(ApkTestConfiguration)/Xamarin.Android.Locale_Tests-Signed.apk artifactFolder: Profiled-Aot + useDotNet: false - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -180,6 +185,7 @@ stages: testResultsFiles: TestResult-Xamarin.Android.EmbeddedDSO_Test.nunit-$(ApkTestConfiguration).xml artifactSource: bin/Test$(ApkTestConfiguration)/Xamarin.Android.EmbeddedDSO_Test-Signed.apk artifactFolder: Default + useDotNet: false - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -189,6 +195,7 @@ stages: testResultsFiles: TestResult-apkdiff-Xamarin.Forms_Performance_Integration-Signed-$(ApkTestConfiguration).xml artifactSource: bin/Test$(ApkTestConfiguration)/Xamarin.Forms_Performance_Integration-Signed.apk artifactFolder: Default + useDotNet: false - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -199,6 +206,7 @@ stages: extraBuildArgs: /p:AotAssemblies=true artifactSource: bin/Test$(ApkTestConfiguration)/Xamarin.Forms_Performance_Integration-Signed.apk artifactFolder: Aot + useDotNet: false - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -209,6 +217,7 @@ stages: extraBuildArgs: /p:AotAssemblies=True /p:AndroidEnableProfiledAot=true artifactSource: bin/Test$(ApkTestConfiguration)/Xamarin.Forms_Performance_Integration-Signed.apk artifactFolder: Profiled-Aot + useDotNet: false - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -219,6 +228,7 @@ stages: extraBuildArgs: /p:BundleAssemblies=true artifactSource: bin/Test$(ApkTestConfiguration)/Xamarin.Forms_Performance_Integration-Signed.apk artifactFolder: Bundle + useDotNet: false - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -228,6 +238,7 @@ stages: testResultsFiles: TestResult-apkdiff-com.companyname.vsandroidapp-Signed-$(ApkTestConfiguration).xml artifactSource: bin/Test$(ApkTestConfiguration)/com.companyname.vsandroidapp-Signed.apk artifactFolder: Default + useDotNet: false - task: MSBuild@1 displayName: shut down emulator @@ -347,7 +358,6 @@ stages: testResultsFiles: TestResult-Mono.Android.NET_Tests-$(XA.Build.Configuration).xml artifactSource: bin/Test$(XA.Build.Configuration)/$(DotNetTargetFramework)-android/Mono.Android.NET_Tests-Signed.aab artifactFolder: $(DotNetTargetFramework)-$(XA.Build.Configuration) - useDotNet: true - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -358,7 +368,6 @@ stages: testResultsFiles: TestResult-Mono.Android.NET_Tests-Debug.xml artifactSource: bin/Test$(XA.Build.Configuration)/$(DotNetTargetFramework)-android/Mono.Android.NET_Tests-Signed.apk artifactFolder: $(DotNetTargetFramework)-Debug - useDotNet: true - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -369,7 +378,6 @@ stages: extraBuildArgs: -p:TestsFlavor=NoAab -p:AndroidPackageFormat=apk artifactSource: bin/Test$(XA.Build.Configuration)/$(DotNetTargetFramework)-android/Mono.Android.NET_Tests-Signed.apk artifactFolder: $(DotNetTargetFramework)-NoAab - useDotNet: true - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -380,7 +388,6 @@ stages: extraBuildArgs: -p:TestsFlavor=Interpreter -p:UseInterpreter=True artifactSource: bin/Test$(XA.Build.Configuration)/$(DotNetTargetFramework)-android/Mono.Android.NET_Tests-Signed.aab artifactFolder: $(DotNetTargetFramework)-Interpreter - useDotNet: true - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -391,7 +398,6 @@ stages: extraBuildArgs: -p:TestsFlavor=NoAot -p:RunAOTCompilation=false artifactSource: bin/Test$(XA.Build.Configuration)/$(DotNetTargetFramework)-android/Mono.Android.NET_Tests-Signed.aab artifactFolder: $(DotNetTargetFramework)-NoAot - useDotNet: true - template: yaml-templates/apk-instrumentation.yaml parameters: @@ -402,7 +408,6 @@ stages: extraBuildArgs: -p:TestsFlavor=AotLlvm -p:EnableLLVM=true -p:AndroidEnableProfiledAot=false artifactSource: bin/Test$(XA.Build.Configuration)/$(DotNetTargetFramework)-android/Mono.Android.NET_Tests-Signed.aab artifactFolder: $(DotNetTargetFramework)-AotLlvm - useDotNet: true - task: MSBuild@1 displayName: shut down emulator @@ -497,7 +502,6 @@ stages: - template: yaml-templates/run-nunit-tests.yaml parameters: - useDotNet: true testRunTitle: MSBuildDeviceIntegration Smoke - macOS testAssembly: $(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/MSBuildDeviceIntegration/$(DotNetStableTargetFramework)/MSBuildDeviceIntegration.dll dotNetTestExtraArgs: --filter "TestCategory = SmokeTests $(DotNetNUnitCategories)" @@ -546,7 +550,6 @@ stages: - template: yaml-templates/run-nunit-tests.yaml parameters: - useDotNet: true testRunTitle: Xamarin.Android.Build.Tests - Linux .NET 6 Smoke Tests testAssembly: $(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/$(DotNetStableTargetFramework)/Xamarin.Android.Build.Tests.dll dotNetTestExtraArgs: --filter "TestCategory = SmokeTests $(DotNetNUnitCategories)" @@ -739,7 +742,6 @@ stages: - template: yaml-templates/run-nunit-tests.yaml parameters: - useDotNet: true testRunTitle: WearOS On Device - macOS testAssembly: $(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/MSBuildDeviceIntegration/$(DotNetStableTargetFramework)/MSBuildDeviceIntegration.dll dotNetTestExtraArgs: --filter "TestCategory = WearOS" @@ -805,6 +807,7 @@ stages: testResultsFiles: TestResult-Xamarin.Android.Bcl_Tests.nunit-$(XA.Build.Configuration).xml artifactSource: bin/Test$(XA.Build.Configuration)/Xamarin.Android.Bcl_Tests-Signed.apk artifactFolder: Default + useDotNet: false - task: PublishTestResults@2 displayName: publish Xamarin.Android.Bcl-Tests-XUnit results diff --git a/build-tools/automation/yaml-templates/apk-instrumentation.yaml b/build-tools/automation/yaml-templates/apk-instrumentation.yaml index 028df889d7b..354ca060758 100644 --- a/build-tools/automation/yaml-templates/apk-instrumentation.yaml +++ b/build-tools/automation/yaml-templates/apk-instrumentation.yaml @@ -9,7 +9,7 @@ parameters: testResultsFormat: NUnit artifactSource: "" artifactFolder: "" - useDotNet: false + useDotNet: true condition: succeeded() steps: diff --git a/build-tools/automation/yaml-templates/build-windows.yaml b/build-tools/automation/yaml-templates/build-windows.yaml index 4de0eb8b73c..626b75095de 100644 --- a/build-tools/automation/yaml-templates/build-windows.yaml +++ b/build-tools/automation/yaml-templates/build-windows.yaml @@ -116,6 +116,7 @@ stages: - template: run-nunit-tests.yaml parameters: + useDotNet: false testRunTitle: Smoke MSBuild Tests - Windows Build Tree testAssembly: $(System.DefaultWorkingDirectory)\bin\Test$(XA.Build.Configuration)\net472\Xamarin.Android.Build.Tests.dll testResultsFile: TestResult-SmokeMSBuildTests-WinBuildTree-$(XA.Build.Configuration).xml @@ -123,7 +124,6 @@ stages: - template: run-nunit-tests.yaml parameters: - useDotNet: true testRunTitle: Smoke MSBuild Tests - Windows Dotnet Build testAssembly: $(System.DefaultWorkingDirectory)\bin\Test$(XA.Build.Configuration)\$(DotNetStableTargetFramework)\Xamarin.Android.Build.Tests.dll testResultsFile: TestResult-SmokeMSBuildTests-WinDotnetBuild-$(XA.Build.Configuration).xml diff --git a/build-tools/automation/yaml-templates/run-localization-tests.yaml b/build-tools/automation/yaml-templates/run-localization-tests.yaml index 1ed205cf539..2376c0e3dfb 100644 --- a/build-tools/automation/yaml-templates/run-localization-tests.yaml +++ b/build-tools/automation/yaml-templates/run-localization-tests.yaml @@ -36,7 +36,6 @@ jobs: parameters: testRunTitle: LocalizationTests On Device - macOS testAssembly: $(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/MSBuildDeviceIntegration/$(DotNetStableTargetFramework)/MSBuildDeviceIntegration.dll - useDotNet: true dotNetTestExtraArgs: --filter "Name~CheckLocalizationIsCorrectNode${{ parameters.node_id }}" testResultsFile: TestResult-LocalizationTests-Node${{ parameters.node_id }}-$(XA.Build.Configuration).xml diff --git a/build-tools/automation/yaml-templates/run-nunit-tests.yaml b/build-tools/automation/yaml-templates/run-nunit-tests.yaml index c3a7ed29c28..95d49d08506 100644 --- a/build-tools/automation/yaml-templates/run-nunit-tests.yaml +++ b/build-tools/automation/yaml-templates/run-nunit-tests.yaml @@ -6,12 +6,15 @@ parameters: testResultsFile: TestResult.xml nunitConsoleExtraArgs: '' dotNetTestExtraArgs: '' - useDotNet: false + useDotNet: true + useDotNetPreview: false workers: $(NUnit.NumberOfTestWorkers) condition: succeeded() + timeoutInMinutes: 0 + retryCountOnTaskFailure: 0 steps: -- ${{ if eq(parameters.useDotNet, false) }}: +- ${{ if and(eq(parameters.useDotNet, false), eq(parameters.useDotNetPreview, false)) }}: - powershell: | Write-Host '##vso[task.setvariable variable=TestResultsFormat]NUnit' if ([Environment]::OSVersion.Platform -eq "Unix") { @@ -28,7 +31,7 @@ steps: condition: ${{ parameters.condition }} continueOnError: true -- ${{ if eq(parameters.useDotNet, true) }}: +- ${{ if and(eq(parameters.useDotNet, true), eq(parameters.useDotNetPreview, true)) }}: - powershell: Write-Host '##vso[task.setvariable variable=TestResultsFormat]VSTest' - template: run-dotnet-preview.yaml parameters: @@ -43,6 +46,21 @@ steps: displayName: run ${{ parameters.testRunTitle }} condition: ${{ parameters.condition }} +- ${{ if and(eq(parameters.useDotNet, true), eq(parameters.useDotNetPreview, false)) }}: + - task: DotNetCoreCLI@2 + inputs: + command: test + projects: ${{ parameters.testAssembly }} + arguments: >- + ${{ parameters.dotNetTestExtraArgs }} -- NUnit.NumberOfTestWorkers=${{ parameters.workers }} + publishTestResults: true + testRunTitle: ${{ parameters.testRunTitle }} + displayName: run ${{ parameters.testRunTitle }} + condition: ${{ parameters.condition }} + continueOnError: true + timeoutInMinutes: ${{ parameters.timeoutInMinutes }} + retryCountOnTaskFailure: ${{ parameters.retryCountOnTaskFailure }} + - template: kill-processes.yaml - task: PublishTestResults@2 @@ -50,4 +68,4 @@ steps: testResultsFormat: $(TestResultsFormat) testResultsFiles: ${{ parameters.testResultsFile }} testRunTitle: ${{ parameters.testRunTitle }} - condition: ${{ parameters.condition }} + condition: and(${{ parameters.condition }}, or(ne('${{ parameters.useDotNet }}', 'true'), eq('${{ parameters.useDotNetPreview }}', 'true'))) diff --git a/build-tools/automation/yaml-templates/run-timezoneinfo-tests.yaml b/build-tools/automation/yaml-templates/run-timezoneinfo-tests.yaml index baa624c70cd..3f96affb8bf 100644 --- a/build-tools/automation/yaml-templates/run-timezoneinfo-tests.yaml +++ b/build-tools/automation/yaml-templates/run-timezoneinfo-tests.yaml @@ -34,6 +34,7 @@ jobs: - template: run-nunit-tests.yaml parameters: + useDotNet: false testRunTitle: TimeZoneInfoTests On Device - macOS testAssembly: $(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/MSBuildDeviceIntegration/net472/MSBuildDeviceIntegration.dll nunitConsoleExtraArgs: --where "test == Xamarin.Android.Build.Tests.DeploymentTest.CheckTimeZoneInfoIsCorrectNode${{ parameters.node_id }}" diff --git a/build-tools/automation/yaml-templates/variables.yaml b/build-tools/automation/yaml-templates/variables.yaml index 1c5899f879c..5f49d1afd0f 100644 --- a/build-tools/automation/yaml-templates/variables.yaml +++ b/build-tools/automation/yaml-templates/variables.yaml @@ -18,9 +18,9 @@ variables: - name: NUnit.NumberOfTestWorkers value: 4 - name: DotNetSdkVersion - value: 7.0.1xx + value: 7.0 - name: DotNetSdkQuality - value: preview + value: GA - name: GitHub.Token value: $(github--pat--vs-mobiletools-engineering-service2) - name: HostedMacImage From 61767a03fb9571ff2abdc0524ce4f1e27055a5cb Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 27 Feb 2023 16:58:33 -0600 Subject: [PATCH 4/5] Bump to dotnet/installer/main@e3ab0b5 8.0.100-preview.2.23123.10 (#7813) Changes: https://github.com/dotnet/installer/compare/f05478b...e3ab0b5 Changes: https://github.com/dotnet/runtime/compare/fe4760c...ff7c19f Changes: https://github.com/dotnet/emsdk/compare/fd5a0d1...d7ff0aa Updates: * Microsoft.Dotnet.Sdk.Internal: from 8.0.100-preview.2.23107.13 to 8.0.100-preview.2.23123.10 * Microsoft.NET.ILLink.Tasks: from 8.0.0-preview.2.23106.6 to 8.0.0-preview.2.23123.4 * Microsoft.NETCore.App.Ref: from 8.0.0-preview.2.23106.6 to 8.0.0-preview.2.23123.4 * Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100-preview.2: from 8.0.0-preview.2.23081.1 to 8.0.0-preview.2.23113.1 ~~ Other changes ~~ * Revert "[Microsoft.Android.Sdk.ILLink] target `net7.0` temporarily (#7803)" This reverts commit 7ba7dd499b8e03c68838d33a008583ed51caad53. We should be able to build ILLink steps for `net8.0` going forward. * Add `@(PackageReference)` to `Mono.Cecil` Context: https://github.com/dotnet/runtime/blob/fb13c2cf6eaf69b53773e94674772f217fa39416/src/coreclr/tools/aot/Mono.Linker.Tests/Mono.Linker.Tests.csproj#L22 `Microsoft.NET.ILLink` no longer has an implicit dependency on `Mono.Cecil`. * Update BuildReleaseArm64XFormsDotNet.apkdesc Fixes the failure: apkdiff: File 'assemblies/System.Collections.Concurrent.dll' has changed by 1,032 bytes (8.93 %). This exceeds the threshold of 5.00 % Co-authored-by: Jonathan Peppers --- eng/Version.Details.xml | 18 +-- eng/Versions.props | 10 +- .../Microsoft.Android.Sdk.ILLink.csproj | 3 +- .../BuildReleaseArm64XFormsDotNet.apkdesc | 110 +++++++++--------- 4 files changed, 71 insertions(+), 70 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 33b4096ba6d..548edd16819 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,20 +1,20 @@ - + https://github.com/dotnet/installer - dec120944450abb58bc07a2fcdae2f4383bfd6bf + e3ab0b5b8c29d8d882ab1bfe6a5a99a703622c7e - - https://github.com/dotnet/linker - c790896f128957acd2999208f44f09ae1e826c8c + + https://github.com/dotnet/runtime + ff7c19f266c835e3694a088c4a9e4e5a1ffb1b74 - + https://github.com/dotnet/runtime - 9529803ae29c2804880c6bd8ca710b8c037cb498 + ff7c19f266c835e3694a088c4a9e4e5a1ffb1b74 - + https://github.com/dotnet/emsdk - 0fe864fc71191ff4ee18e59ef0af2929ca367a11 + d7ff0aa47c680be543905cc1410e2f62b54dfefe diff --git a/eng/Versions.props b/eng/Versions.props index 926781e3a0a..c8776a79cd2 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,13 +1,13 @@ - 8.0.100-alpha.1.23080.11 - 8.0.100-1.23067.1 - 8.0.0-alpha.1.23080.2 + 8.0.100-preview.2.23123.10 + 8.0.0-preview.2.23123.4 + 8.0.0-preview.2.23123.4 7.0.0-beta.22103.1 7.0.0-beta.22103.1 - 8.0.0-alpha.1.23077.4 - $(MicrosoftNETWorkloadEmscriptenCurrentManifest80100alpha1Version) + 8.0.0-preview.2.23113.1 + $(MicrosoftNETWorkloadEmscriptenCurrentManifest80100preview2Version) 7.0.100-rc.1.22410.7 diff --git a/src/Microsoft.Android.Sdk.ILLink/Microsoft.Android.Sdk.ILLink.csproj b/src/Microsoft.Android.Sdk.ILLink/Microsoft.Android.Sdk.ILLink.csproj index 81a86470d19..fcb1091f3da 100644 --- a/src/Microsoft.Android.Sdk.ILLink/Microsoft.Android.Sdk.ILLink.csproj +++ b/src/Microsoft.Android.Sdk.ILLink/Microsoft.Android.Sdk.ILLink.csproj @@ -1,12 +1,13 @@  - $(DotNetStableTargetFramework) + $(DotNetTargetFramework) ILLINK false $(MicrosoftAndroidSdkOutDir) + diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc index afcd83a9d39..b3fc11fd0e4 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc @@ -5,136 +5,136 @@ "Size": 3568 }, "assemblies/_Microsoft.Android.Resource.Designer.dll": { - "Size": 1942 + "Size": 1940 }, "assemblies/FormsViewGroup.dll": { "Size": 7313 }, "assemblies/Java.Interop.dll": { - "Size": 66786 + "Size": 66563 }, "assemblies/Mono.Android.dll": { - "Size": 444703 + "Size": 444617 }, "assemblies/Mono.Android.Runtime.dll": { - "Size": 5895 + "Size": 5897 }, "assemblies/mscorlib.dll": { - "Size": 3857 + "Size": 3866 }, "assemblies/netstandard.dll": { - "Size": 5567 + "Size": 5579 }, "assemblies/rc.bin": { "Size": 1182 }, "assemblies/System.Collections.Concurrent.dll": { - "Size": 10529 + "Size": 11561 }, "assemblies/System.Collections.dll": { - "Size": 15258 + "Size": 15271 }, "assemblies/System.Collections.NonGeneric.dll": { - "Size": 7487 + "Size": 7499 }, "assemblies/System.ComponentModel.dll": { - "Size": 1964 + "Size": 1973 }, "assemblies/System.ComponentModel.Primitives.dll": { - "Size": 2579 + "Size": 2595 }, "assemblies/System.ComponentModel.TypeConverter.dll": { - "Size": 6069 + "Size": 6081 }, "assemblies/System.Console.dll": { - "Size": 6610 + "Size": 6623 }, "assemblies/System.Core.dll": { - "Size": 1982 + "Size": 1992 }, "assemblies/System.Diagnostics.TraceSource.dll": { - "Size": 6580 + "Size": 6591 }, "assemblies/System.dll": { - "Size": 2338 + "Size": 2347 }, "assemblies/System.Drawing.dll": { - "Size": 2023 + "Size": 2032 }, "assemblies/System.Drawing.Primitives.dll": { - "Size": 11996 + "Size": 12010 }, "assemblies/System.IO.Compression.dll": { - "Size": 16847 + "Size": 16858 }, "assemblies/System.IO.IsolatedStorage.dll": { - "Size": 9957 + "Size": 10011 }, "assemblies/System.Linq.dll": { - "Size": 19441 + "Size": 19453 }, "assemblies/System.Linq.Expressions.dll": { - "Size": 164128 + "Size": 164141 }, "assemblies/System.Net.Http.dll": { - "Size": 65982 + "Size": 66153 }, "assemblies/System.Net.Primitives.dll": { - "Size": 22441 + "Size": 22487 }, "assemblies/System.Net.Requests.dll": { - "Size": 3620 + "Size": 3630 }, "assemblies/System.ObjectModel.dll": { - "Size": 8144 + "Size": 8154 }, "assemblies/System.Private.CoreLib.dll": { - "Size": 808708 + "Size": 814216 }, "assemblies/System.Private.DataContractSerialization.dll": { - "Size": 192356 + "Size": 192370 }, "assemblies/System.Private.Uri.dll": { - "Size": 42878 + "Size": 42897 }, "assemblies/System.Private.Xml.dll": { - "Size": 216193 + "Size": 216180 }, "assemblies/System.Private.Xml.Linq.dll": { - "Size": 16662 + "Size": 16673 }, "assemblies/System.Runtime.dll": { - "Size": 2763 + "Size": 2774 }, "assemblies/System.Runtime.InteropServices.dll": { - "Size": 3753 + "Size": 3760 }, "assemblies/System.Runtime.Serialization.dll": { - "Size": 1943 + "Size": 1950 }, "assemblies/System.Runtime.Serialization.Formatters.dll": { - "Size": 2509 + "Size": 2517 }, "assemblies/System.Runtime.Serialization.Primitives.dll": { - "Size": 3791 + "Size": 3802 }, "assemblies/System.Security.Cryptography.dll": { - "Size": 7766 + "Size": 7781 }, "assemblies/System.Text.RegularExpressions.dll": { - "Size": 156677 + "Size": 157123 }, "assemblies/System.Xml.dll": { - "Size": 1833 + "Size": 1839 }, "assemblies/System.Xml.Linq.dll": { - "Size": 1856 + "Size": 1864 }, "assemblies/UnnamedProject.dll": { "Size": 5294 }, "assemblies/Xamarin.AndroidX.Activity.dll": { - "Size": 5870 + "Size": 5867 }, "assemblies/Xamarin.AndroidX.AppCompat.AppCompatResources.dll": { "Size": 6117 @@ -146,7 +146,7 @@ "Size": 6592 }, "assemblies/Xamarin.AndroidX.CoordinatorLayout.dll": { - "Size": 16404 + "Size": 16408 }, "assemblies/Xamarin.AndroidX.Core.dll": { "Size": 96738 @@ -158,16 +158,16 @@ "Size": 39951 }, "assemblies/Xamarin.AndroidX.Legacy.Support.Core.UI.dll": { - "Size": 5923 + "Size": 5924 }, "assemblies/Xamarin.AndroidX.Lifecycle.Common.dll": { "Size": 6391 }, "assemblies/Xamarin.AndroidX.Lifecycle.LiveData.Core.dll": { - "Size": 6459 + "Size": 6462 }, "assemblies/Xamarin.AndroidX.Lifecycle.ViewModel.dll": { - "Size": 3067 + "Size": 3068 }, "assemblies/Xamarin.AndroidX.Loader.dll": { "Size": 12473 @@ -176,7 +176,7 @@ "Size": 84804 }, "assemblies/Xamarin.AndroidX.SavedState.dll": { - "Size": 4866 + "Size": 4870 }, "assemblies/Xamarin.AndroidX.SwipeRefreshLayout.dll": { "Size": 10389 @@ -188,10 +188,10 @@ "Size": 528450 }, "assemblies/Xamarin.Forms.Platform.Android.dll": { - "Size": 337828 + "Size": 337831 }, "assemblies/Xamarin.Forms.Platform.dll": { - "Size": 11084 + "Size": 11080 }, "assemblies/Xamarin.Forms.Xaml.dll": { "Size": 60774 @@ -200,28 +200,28 @@ "Size": 40158 }, "classes.dex": { - "Size": 3141008 + "Size": 3127152 }, "lib/arm64-v8a/libmono-component-marshal-ilgen.so": { "Size": 93552 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 379320 + "Size": 379152 }, "lib/arm64-v8a/libmonosgen-2.0.so": { - "Size": 3090760 + "Size": 3106808 }, "lib/arm64-v8a/libSystem.IO.Compression.Native.so": { "Size": 723840 }, "lib/arm64-v8a/libSystem.Native.so": { - "Size": 94328 + "Size": 94280 }, "lib/arm64-v8a/libSystem.Security.Cryptography.Native.Android.so": { - "Size": 155056 + "Size": 154904 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 333720 + "Size": 333760 }, "META-INF/android.support.design_material.version": { "Size": 12 @@ -1976,5 +1976,5 @@ "Size": 341228 } }, - "PackageSize": 7828228 + "PackageSize": 7820036 } \ No newline at end of file From d447bffd22a8369e7c3baa268c0e7a95da490644 Mon Sep 17 00:00:00 2001 From: Jonathan Pobst Date: Mon, 27 Feb 2023 17:46:13 -0600 Subject: [PATCH 5/5] [ci] Use AZDO built-in parallelization strategy. (#7804) [Previously](https://github.com/xamarin/xamarin-android/pull/6360), we split our `MSBuildIntegration` unit tests to run across multiple CI test agents. While a huge improvement, there are a few downsides to the approach we went with at the time: - The number of agents is hardcoded by copy/pasting steps in the CI YAML. - The tests must be manually load-balanced across agents with `[Category ("Node-X")]` in code which is cumbersome and hard to keep updated. As we are at the point where our tests have expanded well past the 1 hour target we are faced with needing to increase our parallelization. First, we can remove the YAML duplication by using AZDO's built-in `parallel` strategy, allowing us to control the number of agents to use with a single number: ```yaml - job: strategy: parallel: 4 ``` This leaves us the issue of automatically splitting our tests among an unknown number of test agents. A clever solution is [provided in the AZDO docs](https://learn.microsoft.com/en-us/azure/devops/pipelines/test/parallel-testing-any-test-runner?view=azure-devops): - Use `dotnet test --list-tests` to find all the tests - Use a script to calculate which tests the agent should run, based on `$(System.JobPositionInPhase)` and `$(System.TotalJobsInPhase)` - Pass those test names into `dotnet test` as a filter Unfortunately there are issues with the provided approach: - `dotnet test --list-tests` is not compatible with `--filter` so you have to run *all* tests in the test assembly which is not desirable for us. (https://github.com/dotnet/sdk/issues/8643) - Passing test names (including test parameters) on the command line hits limitations with escaping certain characters and argument limits. So the approach is good, but we have to do all the work ourselves. Enter [dotnet-test-slicer](https://github.com/jpobst/dotnet-test-slicer). This dotnet global tool: - Uses the `NUnit.Engine` NuGet package to find all tests in a test assembly using the desired filter query. - Slices the test list for the current test agent. - Outputs the desired tests into an NUnit-specific `.runsettings` file that can be passed to `dotnet test --settings foo.runsettings`, bypassing command line arguments. Voila! Now we can automatically scale our test agents up or down as needed by changing a single variable in our YAML file. Limitation: The tests are sliced in a round robin fashion. This can produce uneven results if test durations are uneven. A future optimization would be to store approximate test durations so tests can be load balanced more intelligently. --- build-tools/automation/azure-pipelines.yaml | 116 +------------ .../install-dotnet-test-slicer.yaml | 15 ++ .../setup-test-environment.yaml | 4 + .../stage-msbuild-emulator-tests.yaml | 152 ++++++++++++++++++ .../Tests/AotProfileTests.cs | 2 +- .../Tests/BundleToolTests.cs | 2 +- .../Tests/DebuggingTest.cs | 6 +- .../Tests/DeleteBinObjTest.cs | 2 +- .../Tests/DeploymentTest.cs | 2 +- .../Tests/InstallAndRunTests.cs | 2 +- .../Tests/InstallTests.cs | 2 +- .../Tests/InstantRunTest.cs | 2 +- .../Tests/MonoAndroidExportTest.cs | 2 +- .../Tests/PerformanceTest.cs | 1 - .../Tests/SystemApplicationTests.cs | 2 +- .../Tests/UncaughtExceptionTests.cs | 2 +- .../Tests/XASdkDeployTests.cs | 4 +- 17 files changed, 191 insertions(+), 127 deletions(-) create mode 100644 build-tools/automation/yaml-templates/install-dotnet-test-slicer.yaml create mode 100644 build-tools/automation/yaml-templates/stage-msbuild-emulator-tests.yaml diff --git a/build-tools/automation/azure-pipelines.yaml b/build-tools/automation/azure-pipelines.yaml index ef8c0138fbe..33a502ee5af 100644 --- a/build-tools/automation/azure-pipelines.yaml +++ b/build-tools/automation/azure-pipelines.yaml @@ -652,116 +652,12 @@ stages: nunit_categories: $(DotNetNUnitCategories) & TestCategory != SmokeTests target_framework: $(DotNetStableTargetFramework) provisionatorChannel: ${{ parameters.provisionatorChannel }} - -- stage: msbuilddevice_tests - displayName: MSBuild Emulator Tests - dependsOn: mac_build - condition: and(succeeded(), or(eq(variables['RunAllTests'], true), contains(dependencies.mac_build.outputs['mac_build_create_installers.TestConditions.TestAreas'], 'MSBuildDevice'))) - jobs: - # Check - "Xamarin.Android (macOS > Tests > MSBuild+Emulator One .NET #N)" - - template: yaml-templates/run-msbuild-device-tests.yaml - parameters: - node_id: 1 - job_name: mac_dotnetdevice_tests_1 - job_suffix: One .NET - nunit_categories: $(DotNetNUnitCategories) - target_framework: $(DotNetStableTargetFramework) - provisionatorChannel: ${{ parameters.provisionatorChannel }} - - - template: yaml-templates/run-msbuild-device-tests.yaml - parameters: - node_id: 2 - job_name: mac_dotnetdevice_tests_2 - job_suffix: One .NET - nunit_categories: $(DotNetNUnitCategories) - target_framework: $(DotNetStableTargetFramework) - provisionatorChannel: ${{ parameters.provisionatorChannel }} - - - template: yaml-templates/run-msbuild-device-tests.yaml - parameters: - node_id: 3 - job_name: mac_dotnetdevice_tests_3 - job_suffix: One .NET - nunit_categories: $(DotNetNUnitCategories) - target_framework: $(DotNetStableTargetFramework) - provisionatorChannel: ${{ parameters.provisionatorChannel }} - - - template: yaml-templates/run-msbuild-device-tests.yaml - parameters: - node_id: 4 - job_name: mac_dotnetdevice_tests_4 - job_suffix: One .NET - nunit_categories: $(DotNetNUnitCategories) - target_framework: $(DotNetStableTargetFramework) - provisionatorChannel: ${{ parameters.provisionatorChannel }} - - - job: wear_tests - displayName: macOS > Tests > WearOS - timeoutInMinutes: 180 - cancelTimeoutInMinutes: 2 - strategy: - matrix: - Android30-x86: - avdApiLevel: 30 - avdAbi: x86 - avdType: android-wear - deviceName: wear_square - pool: - vmImage: $(HostedMacImage) - workspace: - clean: all - steps: - - template: yaml-templates/setup-test-environment.yaml - parameters: - configuration: $(XA.Build.Configuration) - - - template: yaml-templates/run-xaprepare.yaml - parameters: - displayName: install required brew tools and prepare java.interop - arguments: --s=Required --auto-provision=yes --auto-provision-uses-sudo=yes - - - template: yaml-templates/run-xaprepare.yaml - parameters: - displayName: install emulator - arguments: --s=EmulatorTestDependencies - - - script: echo "##vso[task.setvariable variable=Java8SdkDirectory]$JAVA_HOME_8_X64" - displayName: set Java8SdkDirectory - - - task: DownloadPipelineArtifact@2 - inputs: - artifactName: $(TestAssembliesArtifactName) - downloadPath: $(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration) - - - task: MSBuild@1 - displayName: install and launch emulator - inputs: - solution: tests/Mono.Android-Tests/Mono.Android-Tests.csproj - configuration: $(XA.Build.Configuration) - msbuildArguments: /t:InstallAvdImage;AcquireAndroidTarget /p:TestDeviceName=$(deviceName) /p:TestAvdApiLevel=$(avdApiLevel) /p:TestAvdAbi=$(avdAbi) /p:TestAvdType=$(avdType) /bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/install-emulator-$(avdApiLevel).binlog - - - template: yaml-templates/run-nunit-tests.yaml - parameters: - testRunTitle: WearOS On Device - macOS - testAssembly: $(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/MSBuildDeviceIntegration/$(DotNetStableTargetFramework)/MSBuildDeviceIntegration.dll - dotNetTestExtraArgs: --filter "TestCategory = WearOS" - testResultsFile: TestResult-WearOS--$(XA.Build.Configuration).xml - - - task: MSBuild@1 - displayName: shut down emulator - inputs: - solution: tests/Mono.Android-Tests/Mono.Android-Tests.csproj - configuration: $(XA.Build.Configuration) - msbuildArguments: /t:AcquireAndroidTarget,ReleaseAndroidTarget /p:TestDeviceName=$(deviceName) /p:TestAvdApiLevel=$(avdApiLevel) /p:TestAvdAbi=$(avdAbi) /p:TestAvdType=$(avdType) /bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/shutdown-emulator.binlog - condition: always() - - - template: yaml-templates/upload-results.yaml - parameters: - configuration: $(XA.Build.Configuration) - artifactName: Test Results - Emulator $(avdApiLevel)-$(avdAbi)-$(avdType) - macOS - - - template: yaml-templates/fail-on-issue.yaml - + +- template: yaml-templates/stage-msbuild-emulator-tests.yaml + parameters: + provisionatorChannel: ${{ parameters.provisionatorChannel }} + stageCondition: and(succeeded(), or(eq(variables['RunAllTests'], true), contains(dependencies.mac_build.outputs['mac_build_create_installers.TestConditions.TestAreas'], 'MSBuildDevice'))) + nunit_categories: '& cat != DotNetIgnore & cat != HybridAOT & cat != MkBundle & cat != MonoSymbolicate & cat != PackagesConfig & cat != StaticProject & cat != SystemApplication' - stage: bcl_tests displayName: BCL Emulator Tests diff --git a/build-tools/automation/yaml-templates/install-dotnet-test-slicer.yaml b/build-tools/automation/yaml-templates/install-dotnet-test-slicer.yaml new file mode 100644 index 00000000000..0073fa34537 --- /dev/null +++ b/build-tools/automation/yaml-templates/install-dotnet-test-slicer.yaml @@ -0,0 +1,15 @@ +parameters: + version: '0.1.0-alpha1' + condition: succeeded() + continueOnError: true + +steps: +- powershell: dotnet tool uninstall dotnet-test-slicer -g + displayName: uninstall dotnet-test-slicer + ignoreLASTEXITCODE: true + condition: ${{ parameters.condition }} + +- script: dotnet tool update dotnet-test-slicer --version ${{ parameters.version }} --add-source https://api.nuget.org/v3/index.json -g + displayName: install dotnet-test-slicer ${{ parameters.version }} + condition: ${{ parameters.condition }} + continueOnError: ${{ parameters.continueOnError }} diff --git a/build-tools/automation/yaml-templates/setup-test-environment.yaml b/build-tools/automation/yaml-templates/setup-test-environment.yaml index 727499dc2b6..63dbd94e598 100644 --- a/build-tools/automation/yaml-templates/setup-test-environment.yaml +++ b/build-tools/automation/yaml-templates/setup-test-environment.yaml @@ -7,6 +7,7 @@ parameters: updateVS: false jdkTestFolder: $(JAVA_HOME_11_X64) remove_dotnet: false + installTestSlicer: false steps: - checkout: self @@ -101,3 +102,6 @@ steps: arguments: -t:ExtractWorkloadPacks -c ${{ parameters.configuration }} -v:n -bl:${{ parameters.xaSourcePath }}/bin/Test${{ parameters.configuration }}/extract-workloads.binlog - template: install-apkdiff.yaml + +- ${{ if eq(parameters.installTestSlicer, true) }}: + - template: install-dotnet-test-slicer.yaml diff --git a/build-tools/automation/yaml-templates/stage-msbuild-emulator-tests.yaml b/build-tools/automation/yaml-templates/stage-msbuild-emulator-tests.yaml new file mode 100644 index 00000000000..2438d9af305 --- /dev/null +++ b/build-tools/automation/yaml-templates/stage-msbuild-emulator-tests.yaml @@ -0,0 +1,152 @@ +# Runs MSBuild tests against a device running on macOS + +parameters: + job_name: 'mac_dotnetdevice_tests' + agent_count: 6 + nunit_categories: $(DotNetNUnitCategories) + target_framework: $(DotNetStableTargetFramework) + provisionatorChannel: latest + stageCondition: succeeded() + jobCondition: succeeded() + +stages: +- stage: msbuilddevice_tests + displayName: MSBuild Emulator Tests + dependsOn: mac_build + condition: ${{ parameters.stageCondition }} + jobs: + - job: ${{ parameters.job_name }} + strategy: + parallel: ${{ parameters.agent_count }} + displayName: "macOS > Tests > MSBuild+Emulator" + condition: ${{ parameters.jobCondition }} + pool: + vmImage: $(HostedMacImage) + timeoutInMinutes: 90 + cancelTimeoutInMinutes: 5 + workspace: + clean: all + steps: + - template: setup-test-environment.yaml + parameters: + provisionClassic: false + provisionatorChannel: ${{ parameters.provisionatorChannel }} + installTestSlicer: true + + - template: run-xaprepare.yaml + parameters: + displayName: install emulator + arguments: --s=EmulatorTestDependencies --android-sdk-platforms="19,21,26,32,33" + + - task: DownloadPipelineArtifact@2 + inputs: + artifactName: $(TestAssembliesArtifactName) + downloadPath: $(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration) + + - pwsh: | + dotnet-test-slicer ` + --test-assembly="$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/MSBuildDeviceIntegration/${{ parameters.target_framework }}/MSBuildDeviceIntegration.dll" ` + --test-filter="cat != TimeZoneInfo & cat != Localization ${{ parameters.nunit_categories }}" ` + --slice-number=$(System.JobPositionInPhase) ` + --total-slices=$(System.TotalJobsInPhase) ` + --outfile="$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/MSBuildDeviceIntegration/${{ parameters.target_framework }}/MSBuildDeviceIntegration.runsettings" + displayName: Slice unit tests + + - task: MSBuild@1 + displayName: start emulator + inputs: + solution: tests/Mono.Android-Tests/Mono.Android-Tests.csproj + configuration: $(XA.Build.Configuration) + msbuildArguments: /t:AcquireAndroidTarget /bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/start-emulator.binlog + + - template: run-nunit-tests.yaml + parameters: + useDotNet: true + testRunTitle: MSBuildDeviceIntegration On Device - macOS-$(System.JobPositionInPhase) + testAssembly: $(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/MSBuildDeviceIntegration/${{ parameters.target_framework }}/MSBuildDeviceIntegration.dll + dotNetTestExtraArgs: --settings "$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/MSBuildDeviceIntegration/${{ parameters.target_framework }}/MSBuildDeviceIntegration.runsettings" + testResultsFile: TestResult-MSBuildDeviceIntegration-${{ parameters.job_name }}-$(System.JobPositionInPhase)-$(XA.Build.Configuration).xml + + - task: MSBuild@1 + displayName: shut down emulator + inputs: + solution: tests/Mono.Android-Tests/Mono.Android-Tests.csproj + configuration: $(XA.Build.Configuration) + msbuildArguments: >- + /t:AcquireAndroidTarget,ReleaseAndroidTarget + /bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/shutdown-emulator.binlog + condition: always() + + - template: upload-results.yaml + parameters: + artifactName: Test Results - MSBuild With Emulator - macOS-$(System.JobPositionInPhase) + + - template: fail-on-issue.yaml + + - job: wear_tests + displayName: macOS > Tests > WearOS + timeoutInMinutes: 180 + cancelTimeoutInMinutes: 2 + strategy: + matrix: + Android30-x86: + avdApiLevel: 30 + avdAbi: x86 + avdType: android-wear + deviceName: wear_square + pool: + vmImage: $(HostedMacImage) + workspace: + clean: all + steps: + - template: setup-test-environment.yaml + parameters: + configuration: $(XA.Build.Configuration) + + - template: run-xaprepare.yaml + parameters: + displayName: install required brew tools and prepare java.interop + arguments: --s=Required --auto-provision=yes --auto-provision-uses-sudo=yes + + - template: run-xaprepare.yaml + parameters: + displayName: install emulator + arguments: --s=EmulatorTestDependencies + + - script: echo "##vso[task.setvariable variable=Java8SdkDirectory]$JAVA_HOME_8_X64" + displayName: set Java8SdkDirectory + + - task: DownloadPipelineArtifact@2 + inputs: + artifactName: $(TestAssembliesArtifactName) + downloadPath: $(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration) + + - task: MSBuild@1 + displayName: install and launch emulator + inputs: + solution: tests/Mono.Android-Tests/Mono.Android-Tests.csproj + configuration: $(XA.Build.Configuration) + msbuildArguments: /t:InstallAvdImage;AcquireAndroidTarget /p:TestDeviceName=$(deviceName) /p:TestAvdApiLevel=$(avdApiLevel) /p:TestAvdAbi=$(avdAbi) /p:TestAvdType=$(avdType) /bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/install-emulator-$(avdApiLevel).binlog + + - template: run-nunit-tests.yaml + parameters: + testRunTitle: WearOS On Device - macOS + testAssembly: $(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/MSBuildDeviceIntegration/$(DotNetStableTargetFramework)/MSBuildDeviceIntegration.dll + dotNetTestExtraArgs: --filter "TestCategory = WearOS" + testResultsFile: TestResult-WearOS--$(XA.Build.Configuration).xml + + - task: MSBuild@1 + displayName: shut down emulator + inputs: + solution: tests/Mono.Android-Tests/Mono.Android-Tests.csproj + configuration: $(XA.Build.Configuration) + msbuildArguments: /t:AcquireAndroidTarget,ReleaseAndroidTarget /p:TestDeviceName=$(deviceName) /p:TestAvdApiLevel=$(avdApiLevel) /p:TestAvdAbi=$(avdAbi) /p:TestAvdType=$(avdType) /bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/shutdown-emulator.binlog + condition: always() + + - template: upload-results.yaml + parameters: + configuration: $(XA.Build.Configuration) + artifactName: Test Results - Emulator $(avdApiLevel)-$(avdAbi)-$(avdType) - macOS + + - template: fail-on-issue.yaml + diff --git a/tests/MSBuildDeviceIntegration/Tests/AotProfileTests.cs b/tests/MSBuildDeviceIntegration/Tests/AotProfileTests.cs index 3ca51ac00a2..151ece0ba6c 100644 --- a/tests/MSBuildDeviceIntegration/Tests/AotProfileTests.cs +++ b/tests/MSBuildDeviceIntegration/Tests/AotProfileTests.cs @@ -6,7 +6,7 @@ namespace Xamarin.Android.Build.Tests { - [Category ("UsesDevice"), Category ("AOT"), Category ("ProfiledAOT"), Category ("Node-3")] + [Category ("UsesDevice"), Category ("AOT"), Category ("ProfiledAOT")] public class AotProfileTests : DeviceTest { diff --git a/tests/MSBuildDeviceIntegration/Tests/BundleToolTests.cs b/tests/MSBuildDeviceIntegration/Tests/BundleToolTests.cs index 8242981e58e..1c94a4bc95a 100644 --- a/tests/MSBuildDeviceIntegration/Tests/BundleToolTests.cs +++ b/tests/MSBuildDeviceIntegration/Tests/BundleToolTests.cs @@ -11,7 +11,7 @@ namespace Xamarin.Android.Build.Tests { [TestFixture] [TestFixtureSource(nameof(FixtureArgs))] - [Category ("Node-1"), Category ("XamarinBuildDownload")] + [Category ("XamarinBuildDownload")] public class BundleToolTests : DeviceTest { static readonly object[] FixtureArgs = { diff --git a/tests/MSBuildDeviceIntegration/Tests/DebuggingTest.cs b/tests/MSBuildDeviceIntegration/Tests/DebuggingTest.cs index 878cfdf6dcd..89afd11dae3 100755 --- a/tests/MSBuildDeviceIntegration/Tests/DebuggingTest.cs +++ b/tests/MSBuildDeviceIntegration/Tests/DebuggingTest.cs @@ -46,7 +46,6 @@ int FindTextInFile (string file, string text) } [Test] - [Category ("Node-3")] public void ApplicationRunsWithoutDebugger ([Values (false, true)] bool isRelease, [Values (false, true)] bool extractNativeLibs, [Values (false, true)] bool useEmbeddedDex) { AssertHasDevices (); @@ -84,7 +83,6 @@ public void ApplicationRunsWithoutDebugger ([Values (false, true)] bool isReleas } [Test] - [Category ("Node-3")] public void ClassLibraryMainLauncherRuns ([Values (true, false)] bool preloadAssemblies) { AssertHasDevices (); @@ -169,7 +167,7 @@ public void ClassLibraryMainLauncherRuns ([Values (true, false)] bool preloadAss }; #pragma warning restore 414 - [Test, Category ("Debugger"), Category ("Node-4")] + [Test, Category ("Debugger")] [TestCaseSource (nameof (DebuggerCustomAppTestCases))] [Retry(5)] public void CustomApplicationRunsWithDebuggerAndBreaks (bool embedAssemblies, string fastDevType, bool activityStarts) @@ -347,7 +345,7 @@ public override void OnCreate () }; #pragma warning restore 414 - [Test, Category ("SmokeTests"), Category ("Debugger"), Category ("Node-4")] + [Test, Category ("SmokeTests"), Category ("Debugger")] [TestCaseSource (nameof(DebuggerTestCases))] [Retry (5)] public void ApplicationRunsWithDebuggerAndBreaks (bool embedAssemblies, string fastDevType, bool allowDeltaInstall, string username, string debugType) diff --git a/tests/MSBuildDeviceIntegration/Tests/DeleteBinObjTest.cs b/tests/MSBuildDeviceIntegration/Tests/DeleteBinObjTest.cs index aeee3a0150d..85cecea4c96 100644 --- a/tests/MSBuildDeviceIntegration/Tests/DeleteBinObjTest.cs +++ b/tests/MSBuildDeviceIntegration/Tests/DeleteBinObjTest.cs @@ -6,7 +6,7 @@ namespace Xamarin.Android.Build.Tests { [TestFixture] - [Category ("DotNetIgnore"), Category ("Node-1")] // .csproj files are legacy projects that won't build under dotnet + [Category ("DotNetIgnore")] // .csproj files are legacy projects that won't build under dotnet public class DeleteBinObjTest : DeviceTest { const string BaseUrl = "https://github.com/dellis1972/xamarin-android-unittest-files/blob/main/"; diff --git a/tests/MSBuildDeviceIntegration/Tests/DeploymentTest.cs b/tests/MSBuildDeviceIntegration/Tests/DeploymentTest.cs index 688814fccf1..17e6982a6ea 100644 --- a/tests/MSBuildDeviceIntegration/Tests/DeploymentTest.cs +++ b/tests/MSBuildDeviceIntegration/Tests/DeploymentTest.cs @@ -20,7 +20,7 @@ namespace Xamarin.Android.Build.Tests { [TestFixture] - [Category ("UsesDevice"), Category ("Node-2")] + [Category ("UsesDevice")] [NonParallelizable] public class DeploymentTest : DeviceTest { diff --git a/tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs b/tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs index f1ab011b0ee..74054ded00c 100644 --- a/tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs +++ b/tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs @@ -8,7 +8,7 @@ namespace Xamarin.Android.Build.Tests { [TestFixture] - [Category ("UsesDevice"), Category ("Node-2")] + [Category ("UsesDevice")] public class InstallAndRunTests : DeviceTest { static ProjectBuilder builder; diff --git a/tests/MSBuildDeviceIntegration/Tests/InstallTests.cs b/tests/MSBuildDeviceIntegration/Tests/InstallTests.cs index 7161e21b5f2..582f5d0a1c1 100644 --- a/tests/MSBuildDeviceIntegration/Tests/InstallTests.cs +++ b/tests/MSBuildDeviceIntegration/Tests/InstallTests.cs @@ -12,7 +12,7 @@ namespace Xamarin.Android.Build.Tests { [TestFixture] - [Category ("Commercial"), Category ("UsesDevice"), Category ("Node-1")] + [Category ("Commercial"), Category ("UsesDevice")] public class InstallTests : DeviceTest { string GetContentFromAllOverrideDirectories (string packageName, bool useRunAsCommand = true) diff --git a/tests/MSBuildDeviceIntegration/Tests/InstantRunTest.cs b/tests/MSBuildDeviceIntegration/Tests/InstantRunTest.cs index 6605cba3a8d..daeccc6d9aa 100644 --- a/tests/MSBuildDeviceIntegration/Tests/InstantRunTest.cs +++ b/tests/MSBuildDeviceIntegration/Tests/InstantRunTest.cs @@ -7,7 +7,7 @@ namespace Xamarin.Android.Build.Tests { [TestFixture] - [Category ("Commercial"), Category ("UsesDevice"), Category ("Node-3")] + [Category ("Commercial"), Category ("UsesDevice")] public class InstantRunTest : DeviceTest { [Test] diff --git a/tests/MSBuildDeviceIntegration/Tests/MonoAndroidExportTest.cs b/tests/MSBuildDeviceIntegration/Tests/MonoAndroidExportTest.cs index 115c608077f..3b55b461388 100644 --- a/tests/MSBuildDeviceIntegration/Tests/MonoAndroidExportTest.cs +++ b/tests/MSBuildDeviceIntegration/Tests/MonoAndroidExportTest.cs @@ -12,7 +12,7 @@ namespace Xamarin.Android.Build.Tests { [TestFixture] - [Category ("UsesDevice"), Category ("Node-1")] + [Category ("UsesDevice")] public class MonoAndroidExportTest : DeviceTest { #pragma warning disable 414 static object [] MonoAndroidExportTestCases = new object [] { diff --git a/tests/MSBuildDeviceIntegration/Tests/PerformanceTest.cs b/tests/MSBuildDeviceIntegration/Tests/PerformanceTest.cs index 4c4dea9ead0..e7e811eea17 100644 --- a/tests/MSBuildDeviceIntegration/Tests/PerformanceTest.cs +++ b/tests/MSBuildDeviceIntegration/Tests/PerformanceTest.cs @@ -11,7 +11,6 @@ namespace Xamarin.Android.Build.Tests { [TestFixture] - [Category ("Node-2")] public class PerformanceTest : DeviceTest { const int Retry = 2; diff --git a/tests/MSBuildDeviceIntegration/Tests/SystemApplicationTests.cs b/tests/MSBuildDeviceIntegration/Tests/SystemApplicationTests.cs index aec87827786..63f4eeb5db5 100644 --- a/tests/MSBuildDeviceIntegration/Tests/SystemApplicationTests.cs +++ b/tests/MSBuildDeviceIntegration/Tests/SystemApplicationTests.cs @@ -11,7 +11,7 @@ namespace Xamarin.Android.Build.Tests { [TestFixture] - [Category ("Commercial"), Category ("UsesDevice"), Category ("Node-1")] + [Category ("Commercial"), Category ("UsesDevice")] public class SystemApplicationTests : DeviceTest { // All Tests here require the emulator to be started with -writable-system diff --git a/tests/MSBuildDeviceIntegration/Tests/UncaughtExceptionTests.cs b/tests/MSBuildDeviceIntegration/Tests/UncaughtExceptionTests.cs index 167c60238d2..cbd646f55c8 100644 --- a/tests/MSBuildDeviceIntegration/Tests/UncaughtExceptionTests.cs +++ b/tests/MSBuildDeviceIntegration/Tests/UncaughtExceptionTests.cs @@ -8,7 +8,7 @@ namespace Xamarin.Android.Build.Tests { [TestFixture] - [Category ("UsesDevice"), Category ("Node-3")] + [Category ("UsesDevice")] public class UncaughtExceptionTests : DeviceTest { class LogcatLine diff --git a/tests/MSBuildDeviceIntegration/Tests/XASdkDeployTests.cs b/tests/MSBuildDeviceIntegration/Tests/XASdkDeployTests.cs index aeb8ea6764d..ea14979cc75 100644 --- a/tests/MSBuildDeviceIntegration/Tests/XASdkDeployTests.cs +++ b/tests/MSBuildDeviceIntegration/Tests/XASdkDeployTests.cs @@ -16,7 +16,7 @@ namespace Xamarin.Android.Build.Tests { [TestFixture] - [Category ("UsesDevice"), Category ("SmokeTests"), Category ("WearOS"), Category ("Node-3")] + [Category ("UsesDevice"), Category ("SmokeTests"), Category ("WearOS")] public class XASdkDeployTests : DeviceTest { static object [] DotNetInstallAndRunSource = new object [] { @@ -209,7 +209,7 @@ public void SupportDesugaringStaticInterfaceMethods () } [Test] - [Category ("Debugger"), Category ("Node-4")] + [Category ("Debugger")] public void DotNetDebug ([Values("net6.0-android", "net7.0-android")] string targetFramework) { AssertCommercialBuild ();