change stack size test to test arm device (#75814)
This commit is contained in:
parent
a3dd5aeaad
commit
815976a8e4
@ -45,12 +45,12 @@ const int kExitCodeSuccess = 0;
|
|||||||
final GetStackPointerCallback getStackPointer = () {
|
final GetStackPointerCallback getStackPointer = () {
|
||||||
// Makes sure we are running on an Android arm64 device.
|
// Makes sure we are running on an Android arm64 device.
|
||||||
if (!io.Platform.isAndroid)
|
if (!io.Platform.isAndroid)
|
||||||
throw 'This benchmark test can only be run on Android arm64 devices.';
|
throw 'This benchmark test can only be run on Android arm devices.';
|
||||||
final io.ProcessResult result = io.Process.runSync('getprop', <String>['ro.product.cpu.abi']);
|
final io.ProcessResult result = io.Process.runSync('getprop', <String>['ro.product.cpu.abi']);
|
||||||
if (result.exitCode != 0)
|
if (result.exitCode != 0)
|
||||||
throw 'Failed to retrieve CPU information.';
|
throw 'Failed to retrieve CPU information.';
|
||||||
if (!result.stdout.toString().contains('arm64'))
|
if (!result.stdout.toString().contains('armeabi'))
|
||||||
throw 'This benchmark test can only be run on Android arm64 devices.';
|
throw 'This benchmark test can only be run on Android arm devices.';
|
||||||
|
|
||||||
// Creates a block of memory to store the assembly code.
|
// Creates a block of memory to store the assembly code.
|
||||||
final ffi.Pointer<ffi.Void> region = mmap(ffi.nullptr, kMemorySize, kProtRead | kProtWrite,
|
final ffi.Pointer<ffi.Void> region = mmap(ffi.nullptr, kMemorySize, kProtRead | kProtWrite,
|
||||||
@ -64,10 +64,10 @@ final GetStackPointerCallback getStackPointer = () {
|
|||||||
region.cast<ffi.Uint8>().asTypedList(kMemorySize).setAll(
|
region.cast<ffi.Uint8>().asTypedList(kMemorySize).setAll(
|
||||||
kMemoryStartingIndex,
|
kMemoryStartingIndex,
|
||||||
<int>[
|
<int>[
|
||||||
// "mov x0, sp" in machine code: E0030091.
|
// "mov r0, sp" in machine code: 0D00A0E1.
|
||||||
0xe0, 0x03, 0x00, 0x91,
|
0x0d, 0x00, 0xa0, 0xe1,
|
||||||
// "ret" in machine code: C0035FD6.
|
// "bx lr" in machine code: 1EFF2FE1.
|
||||||
0xc0, 0x03, 0x5f, 0xd6
|
0x1e, 0xff, 0x2f, 0xe1
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -7,6 +7,6 @@ import 'package:flutter_devicelab/framework/adb.dart';
|
|||||||
import 'package:flutter_devicelab/framework/framework.dart';
|
import 'package:flutter_devicelab/framework/framework.dart';
|
||||||
|
|
||||||
Future<void> main() async {
|
Future<void> main() async {
|
||||||
deviceOperatingSystem = DeviceOperatingSystem.androidArm64;
|
deviceOperatingSystem = DeviceOperatingSystem.androidArm;
|
||||||
await task(createStackSizeTest());
|
await task(createStackSizeTest());
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ String _findMatchId(List<String> idList, String idPattern) {
|
|||||||
DeviceDiscovery get devices => DeviceDiscovery();
|
DeviceDiscovery get devices => DeviceDiscovery();
|
||||||
|
|
||||||
/// Device operating system the test is configured to test.
|
/// Device operating system the test is configured to test.
|
||||||
enum DeviceOperatingSystem { android, androidArm64 ,ios, fuchsia, fake }
|
enum DeviceOperatingSystem { android, androidArm, androidArm64 ,ios, fuchsia, fake }
|
||||||
|
|
||||||
/// Device OS to test on.
|
/// Device OS to test on.
|
||||||
DeviceOperatingSystem deviceOperatingSystem = DeviceOperatingSystem.android;
|
DeviceOperatingSystem deviceOperatingSystem = DeviceOperatingSystem.android;
|
||||||
@ -63,6 +63,8 @@ abstract class DeviceDiscovery {
|
|||||||
switch (deviceOperatingSystem) {
|
switch (deviceOperatingSystem) {
|
||||||
case DeviceOperatingSystem.android:
|
case DeviceOperatingSystem.android:
|
||||||
return AndroidDeviceDiscovery();
|
return AndroidDeviceDiscovery();
|
||||||
|
case DeviceOperatingSystem.androidArm:
|
||||||
|
return AndroidDeviceDiscovery(cpu: _AndroidCPU.arm);
|
||||||
case DeviceOperatingSystem.androidArm64:
|
case DeviceOperatingSystem.androidArm64:
|
||||||
return AndroidDeviceDiscovery(cpu: _AndroidCPU.arm64);
|
return AndroidDeviceDiscovery(cpu: _AndroidCPU.arm64);
|
||||||
case DeviceOperatingSystem.ios:
|
case DeviceOperatingSystem.ios:
|
||||||
@ -158,6 +160,7 @@ abstract class Device {
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum _AndroidCPU {
|
enum _AndroidCPU {
|
||||||
|
arm,
|
||||||
arm64,
|
arm64,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,6 +202,8 @@ class AndroidDeviceDiscovery implements DeviceDiscovery {
|
|||||||
switch (cpu) {
|
switch (cpu) {
|
||||||
case _AndroidCPU.arm64:
|
case _AndroidCPU.arm64:
|
||||||
return device.isArm64();
|
return device.isArm64();
|
||||||
|
case _AndroidCPU.arm:
|
||||||
|
return device.isArm();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -486,6 +491,11 @@ class AndroidDevice extends Device {
|
|||||||
return cpuInfo.contains('arm64');
|
return cpuInfo.contains('arm64');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<bool> isArm() async {
|
||||||
|
final String cpuInfo = await shellEval('getprop', const <String>['ro.product.cpu.abi']);
|
||||||
|
return cpuInfo.contains('armeabi');
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> _updateDeviceInfo() async {
|
Future<void> _updateDeviceInfo() async {
|
||||||
String info;
|
String info;
|
||||||
try {
|
try {
|
||||||
|
@ -503,6 +503,15 @@ class StartupTest {
|
|||||||
]);
|
]);
|
||||||
applicationBinaryPath = '$testDirectory/build/app/outputs/flutter-apk/app-profile.apk';
|
applicationBinaryPath = '$testDirectory/build/app/outputs/flutter-apk/app-profile.apk';
|
||||||
break;
|
break;
|
||||||
|
case DeviceOperatingSystem.androidArm:
|
||||||
|
await flutter('build', options: <String>[
|
||||||
|
'apk',
|
||||||
|
'-v',
|
||||||
|
'--profile',
|
||||||
|
'--target-platform=android-arm',
|
||||||
|
]);
|
||||||
|
applicationBinaryPath = '$testDirectory/build/app/outputs/flutter-apk/app-profile.apk';
|
||||||
|
break;
|
||||||
case DeviceOperatingSystem.androidArm64:
|
case DeviceOperatingSystem.androidArm64:
|
||||||
await flutter('build', options: <String>[
|
await flutter('build', options: <String>[
|
||||||
'apk',
|
'apk',
|
||||||
@ -1031,6 +1040,7 @@ class CompileTest {
|
|||||||
metrics.addAll(await getSizesFromIosApp(appPath));
|
metrics.addAll(await getSizesFromIosApp(appPath));
|
||||||
break;
|
break;
|
||||||
case DeviceOperatingSystem.android:
|
case DeviceOperatingSystem.android:
|
||||||
|
case DeviceOperatingSystem.androidArm:
|
||||||
options.insert(0, 'apk');
|
options.insert(0, 'apk');
|
||||||
options.add('--target-platform=android-arm');
|
options.add('--target-platform=android-arm');
|
||||||
options.add('--tree-shake-icons');
|
options.add('--tree-shake-icons');
|
||||||
@ -1081,6 +1091,7 @@ class CompileTest {
|
|||||||
options.insert(0, 'ios');
|
options.insert(0, 'ios');
|
||||||
break;
|
break;
|
||||||
case DeviceOperatingSystem.android:
|
case DeviceOperatingSystem.android:
|
||||||
|
case DeviceOperatingSystem.androidArm:
|
||||||
options.insert(0, 'apk');
|
options.insert(0, 'apk');
|
||||||
options.add('--target-platform=android-arm');
|
options.add('--target-platform=android-arm');
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user