release-request-348230ef-823f-402e-b379-76791af4b533-for-aosp-emu-2.5-release-4333248 snap-temp-L07000000102159225
Change-Id: I550e45cacb413ec10489e773ab84cec12e62556b
diff --git a/build/masters/master.client.adt/builders.pyl b/build/masters/master.client.adt/builders.pyl
index 6814b2e..843f1ee 100644
--- a/build/masters/master.client.adt/builders.pyl
+++ b/build/masters/master.client.adt/builders.pyl
@@ -123,6 +123,18 @@
"branch": "all",
"name_identifier": "system-images",
},
+ "sys_image_oc_mr1_dev_poller": {
+ "gs_bucket": "android-build-emu-sysimage",
+ "gs_path": ["builds/git_oc-emu-dev-linux-sdk_gphone_x86-sdk_addon/",
+ "builds/git_oc-emu-dev-linux-sdk_google_atv_x86-sdk/",
+ "builds/git_oc-emu-dev-linux-sdk_gphone_x86_64-sdk_addon/",
+ "builds/git_oc-emu-dev-linux-sdk_gphone_x86-user/"],
+ "pollInterval": 577,
+ "type": "GSMultiPoller",
+ "project": "oc-mr1-emu-dev",
+ "branch": "all",
+ "name_identifier": "system-images",
+ },
"sys_image_master_poller": {
"gs_bucket": "android-build-emu-sysimage",
"gs_path": ["builds/git_master-linux-sdk_gphone_x86_64-sdk_addon/",
@@ -430,7 +442,7 @@
"type": "emu_scheduler",
},
"system_image_scheduler": {
- "project": ["master", "klp-emu-dev", "lmp-mr1-emu-dev", "mnc-emu-dev", "oc-emu-dev", "nyc-emu-dev", "nyc-mr1-emu-dev", "lmp-emu-dev", "gb-emu-dev",
+ "project": ["master", "klp-emu-dev", "lmp-mr1-emu-dev", "mnc-emu-dev", "oc-emu-dev", "oc-mr1-emu-dev","nyc-emu-dev", "nyc-mr1-emu-dev", "lmp-emu-dev", "gb-emu-dev",
"ics-mr1-emu-dev", "jb-emu-dev", "jb-mr1.1-emu-dev", "jb-mr2-emu-dev"],
"type": "emu_scheduler",
},
diff --git a/build/masters/master.client.adt/slave_logs/parser/parse_and_upload.py b/build/masters/master.client.adt/slave_logs/parser/parse_and_upload.py
index b66cc87..2f7ee96 100755
--- a/build/masters/master.client.adt/slave_logs/parser/parse_and_upload.py
+++ b/build/masters/master.client.adt/slave_logs/parser/parse_and_upload.py
@@ -81,6 +81,7 @@
'24':'nyc-emu-dev',
'25':'nyc-mr1-emu-dev',
'26':'oc-emu-dev',
+ '27':'oc-mr1-emu-dev',
}
def get_branches(builder, file_path, api):
diff --git a/build/masters/master.client.adt/slave_logs/parser/parse_and_upload_v2.py b/build/masters/master.client.adt/slave_logs/parser/parse_and_upload_v2.py
index 4ea696f..da4595a 100755
--- a/build/masters/master.client.adt/slave_logs/parser/parse_and_upload_v2.py
+++ b/build/masters/master.client.adt/slave_logs/parser/parse_and_upload_v2.py
@@ -55,6 +55,7 @@
'24': 'nyc-emu-dev',
'25': 'nyc-mr1-emu-dev',
'26': 'oc-emu-dev',
+ '27': 'oc-mr1-emu-dev',
}
def _get_branches(builder, file_path, api):
if builder.endswith('_CTS'):
diff --git a/build/scripts/slave/recipes/adt/adt.py b/build/scripts/slave/recipes/adt/adt.py
index 561c4df..e4618b1 100644
--- a/build/scripts/slave/recipes/adt/adt.py
+++ b/build/scripts/slave/recipes/adt/adt.py
@@ -98,6 +98,7 @@
'nyc-mr1-emu-dev': bootStep('NYC_MR1', '{"ori": "nyc-mr1"}'),
'nyc-emu-dev': bootStep('NYC', '{"ori": "nyc"}'),
'oc-emu-dev': bootStep('OC', '{"ori": "oc"}'),
+ 'oc-mr1-emu-dev': bootStep('OC_MR1', '{"ori": "oc-mr1"}'),
'lmp-emu-dev': bootStep('LMP', '{"ori": "lmp"}'),
'klp-emu-dev': bootStep('KLP', '{"ori": "klp"}'),
'gb-emu-dev': bootStep('GB', '{"ori": "gb"}'),
@@ -235,10 +236,7 @@
'--build-dir', build_dir],
env=env)
for emu_branch in emulator_branch_to_use:
- if 'emu-master-dev' in emu_branch or 'emu-2.4-release' in emu_branch:
- emulator_path = api.path.join(emu_branch, 'emulator', 'emulator')
- else:
- emulator_path = api.path.join(emu_branch, 'tools', 'emulator')
+ emulator_path = api.path.join(emu_branch, 'emulator', 'emulator')
emu_desc = "sdk emulator" if emu_branch not in emulator_branches else emu_branch
if not is_cts and not is_ui and not is_console and not is_avd:
step_data = bootSteps[step]
diff --git a/emu_test/config/boot_cfg.csv b/emu_test/config/boot_cfg.csv
index 2d6b8fc..0a4c235 100644
--- a/emu_test/config/boot_cfg.csv
+++ b/emu_test/config/boot_cfg.csv
@@ -2,6 +2,10 @@
API*,TAG*,ABI*,DEVICE,RAM,GPU,ORI,Ubuntu 12.04 HD Graphics 4000,Ubuntu 14.04 HD 4400,Ubuntu 14.04 Quadro 600,Ubuntu 15.04 Quadro K600,Win 7 32-bit HD 4400,Win 7 64-bit HD 4400,Win 8 64-bit Quadro 600,Win 8.1 64-bit Quadro 600,Win 10 64-bit Quadro 600,Mac 10.10.5 Intel HD 5000,Mac 10.10.5 Iris Pro,Mac 10.8.5 Intel HD 5000,Mac 10.11.1 Iris Pro
API P,google_apis,x86,Nexus 6P,2048,yes,master,P,P,P,P,P,P,P,P,P,P,P,P,P
API P,google_apis,x86_64,Nexus 6P,2048,yes,master,P,P,P,P,P,P,P,P,P,P,P,P,P
+API 27,android-tv,x86,Android TV (1080p),2048,yes,oc-mr1,P,P,P,P,P,P,P,P,P,P,P,P,P
+API 27,google_apis,x86,Nexus 6P,2048,yes,oc-mr1,P,P,P,P,P,P,P,P,P,P,P,P,P
+API 27,google_apis_playstore,x86,Nexus 6P,2048,yes,oc-mr1,P,P,P,P,P,P,P,P,P,P,P,P,P
+API 27,google_apis,x86_64,Nexus 6P,2048,yes,oc-mr1,P,P,P,P,P,P,P,P,P,P,P,P,P
API 26,android-tv,x86,Android TV (1080p),2048,yes,public,P,P,P,P,P,P,P,P,P,P,P,P,P
,google_apis,x86,Nexus 6P,2048,yes,public,P,P,P,P,P,P,P,P,P,P,P,P,P
,google_apis_playstore,x86,Nexus 6P,2048,yes,public,P,P,P,P,P,P,P,P,P,P,P,P,P
diff --git a/emu_test/dashboard/index.html b/emu_test/dashboard/index.html
index 15b54ae..70370ec 100644
--- a/emu_test/dashboard/index.html
+++ b/emu_test/dashboard/index.html
@@ -128,7 +128,7 @@
"Win_7_64-bit_HD_4400",
"Win_8.1_64-bit_Quadro_600",
"Win_8_64-bit_Quadro_600"];
- var apis = ["26", "25", "24", "23", "22", "21", "20", "19", "18", "17", "16", "15", "10"];
+ var apis = ["27", "26", "25", "24", "23", "22", "21", "20", "19", "18", "17", "16", "15", "10"];
var tags = ["default", "google_apis", "android-wear", "android-tv"];
var abis = ["x86", "x86_64", "armeabi-v7a", "arm64-v8a", "mips", "mips64"];
var gpus = ["mesa", "on", "off"];
diff --git a/emu_test/utils/android_cl_scan.py b/emu_test/utils/android_cl_scan.py
index 4e8c3d7..d9d46f0 100644
--- a/emu_test/utils/android_cl_scan.py
+++ b/emu_test/utils/android_cl_scan.py
@@ -108,6 +108,8 @@
return 'git_nyc-emu-dev', 'sdk_google_phone_x86-sdk_addon'
elif 'sys_image_oc_dev_poller' in poller:
return 'git_oc-emu-dev', 'sdk_gphone_x86-sdk_addon'
+ elif 'sys_image_oc_mr1_dev_poller' in poller:
+ return 'git_oc-mr1-emu-dev', 'sdk_gphone_x86-sdk_addon'
elif 'sys_image_nyc_mr1_dev_poller' in poller:
return 'git_nyc-mr1-emu-dev', 'sdk_google_phone_x86-sdk_addon'
elif 'sys_image_klp_poller' in poller:
diff --git a/emu_test/utils/download_unzip_image.py b/emu_test/utils/download_unzip_image.py
index ab6b120..6af7d2b 100644
--- a/emu_test/utils/download_unzip_image.py
+++ b/emu_test/utils/download_unzip_image.py
@@ -39,6 +39,8 @@
api = '25'
elif 'nyc' in branch_name:
api = '24'
+ elif 'oc-mr1' in branch_name:
+ api = '27'
elif 'oc' in branch_name:
api = '26'
elif 'lmp' in branch_name:
diff --git a/system_image_uitests/app/src/androidTest/java/com/android/devtools/systemimage/uitest/smoke/PlayStoreTest.java b/system_image_uitests/app/src/androidTest/java/com/android/devtools/systemimage/uitest/smoke/PlayStoreTest.java
index bd9cd08..cac7b50 100644
--- a/system_image_uitests/app/src/androidTest/java/com/android/devtools/systemimage/uitest/smoke/PlayStoreTest.java
+++ b/system_image_uitests/app/src/androidTest/java/com/android/devtools/systemimage/uitest/smoke/PlayStoreTest.java
@@ -83,9 +83,6 @@
final String application = "Google Translate";
if (testFramework.getApi() >= 24 && testFramework.isGoogleApiAndPlayImage()) {
- device.pressHome();
- device.findObject(new UiSelector().description("Apps")).clickAndWaitForNewWindow();
-
boolean playStoreInstalled = PlayStoreUtil.isPlayStoreInstalled(instrumentation);
if (playStoreInstalled) {
@@ -195,9 +192,6 @@
final String application = "Pocket Casts";
if (testFramework.getApi() >= 24 && testFramework.isGoogleApiAndPlayImage()) {
- device.pressHome();
- device.findObject(new UiSelector().description("Apps")).clickAndWaitForNewWindow();
-
boolean playStoreInstalled = PlayStoreUtil.isPlayStoreInstalled(instrumentation);
if (playStoreInstalled) {
diff --git a/system_image_uitests/app/src/main/java/com/android/devtools/systemimage/uitest/utils/PlayStoreUtil.java b/system_image_uitests/app/src/main/java/com/android/devtools/systemimage/uitest/utils/PlayStoreUtil.java
index aeb76ea..9fadba2 100644
--- a/system_image_uitests/app/src/main/java/com/android/devtools/systemimage/uitest/utils/PlayStoreUtil.java
+++ b/system_image_uitests/app/src/main/java/com/android/devtools/systemimage/uitest/utils/PlayStoreUtil.java
@@ -29,6 +29,8 @@
import java.util.concurrent.TimeUnit;
+import static org.junit.Assert.assertTrue;
+
/**
* Static utility methods pertaining to the Google Play Store
*/
@@ -44,20 +46,28 @@
*/
public static boolean isPlayStoreInstalled(Instrumentation instrumentation) throws Exception {
final UiDevice device = UiDevice.getInstance(instrumentation);
- final UiScrollable scrollable = new UiScrollable(new UiSelector().scrollable(true));
+ boolean isInstalled = false;
final String playStore = "Play Store";
device.pressHome();
- device.findObject(new UiSelector().description("Apps")).clickAndWaitForNewWindow();
-
- boolean isInstalled = new Wait().until(new Wait.ExpectedCondition() {
- @Override
- public boolean isTrue() throws UiObjectNotFoundException {
-
- scrollable.scrollIntoView(new UiSelector().text(playStore));
- return scrollable.getChild(new UiSelector().text(playStore)).exists();
- }
- });
+ if (SystemUtil.getApiLevel() <= 24) {
+ device.findObject(new UiSelector().description("Apps")).clickAndWaitForNewWindow();
+ final UiScrollable scrollable = new UiScrollable(new UiSelector().scrollable(true));
+ isInstalled = new Wait().until(new Wait.ExpectedCondition() {
+ @Override
+ public boolean isTrue() throws UiObjectNotFoundException {
+ scrollable.scrollIntoView(new UiSelector().text(playStore));
+ return scrollable.getChild(new UiSelector().text(playStore)).exists();
+ }
+ });
+ } else {
+ isInstalled = new Wait().until(new Wait.ExpectedCondition() {
+ @Override
+ public boolean isTrue() throws UiObjectNotFoundException {
+ return device.findObject(new UiSelector().text(playStore)).exists();
+ }
+ });
+ }
return isInstalled;
}
@@ -145,8 +155,13 @@
until(new Wait.ExpectedCondition() {
@Override
public boolean isTrue() throws UiObjectNotFoundException {
- return device.findObject(
- new UiSelector().description("Email or phone")).exists();
+ if (SystemUtil.getApiLevel() <= 24) {
+ return device.findObject(
+ new UiSelector().description("Email or phone")).exists();
+ } else {
+ return device.findObject(
+ new UiSelector().text("Email or phone")).exists();
+ }
}
});
@@ -155,8 +170,13 @@
until(new Wait.ExpectedCondition() {
@Override
public boolean isTrue() throws UiObjectNotFoundException {
- return device.findObject(
- new UiSelector().description("Sign in " + email)).exists();
+ if (SystemUtil.getApiLevel() <= 24) {
+ return device.findObject(
+ new UiSelector().description("Sign in " + email)).exists();
+ } else {
+ return device.findObject(
+ new UiSelector().text("Sign in " + email)).exists();
+ }
}
});
if (!needsPassword) {
@@ -170,7 +190,12 @@
logInWithPassword(instrumentation, password);
}
else {
- UiObject inputEmailField = device.findObject(new UiSelector().description("Email or phone"));
+ UiObject inputEmailField;
+ if (SystemUtil.getApiLevel() <= 24) {
+ inputEmailField = device.findObject(new UiSelector().description("Email or phone"));
+ } else {
+ inputEmailField = device.findObject(new UiSelector().text("Email or phone"));
+ }
inputEmailField.clearTextField();
inputEmailField.setText(email);
device.findObject(new UiSelector().description("NEXT")).clickAndWaitForNewWindow();
@@ -260,7 +285,12 @@
*/
private static void logInWithPassword(Instrumentation instrumentation, String password) throws Exception {
final UiDevice device = UiDevice.getInstance(instrumentation);
- UiObject inputPasswordField = device.findObject(new UiSelector().resourceId("password"));
+ UiObject inputPasswordField;
+ if (SystemUtil.getApiLevel() <= 24) {
+ inputPasswordField = device.findObject(new UiSelector().resourceId("password"));
+ } else {
+ inputPasswordField = device.findObject(new UiSelector().className("android.widget.EditText"));
+ }
inputPasswordField.clearTextField();
inputPasswordField.setText(password);
device.findObject(new UiSelector().description("NEXT")).clickAndWaitForNewWindow();
diff --git a/system_image_uitests/app/src/main/java/com/android/devtools/systemimage/uitest/watchers/PlayStoreConfirmationWatcher.java b/system_image_uitests/app/src/main/java/com/android/devtools/systemimage/uitest/watchers/PlayStoreConfirmationWatcher.java
index 3b2c183..963cd96 100644
--- a/system_image_uitests/app/src/main/java/com/android/devtools/systemimage/uitest/watchers/PlayStoreConfirmationWatcher.java
+++ b/system_image_uitests/app/src/main/java/com/android/devtools/systemimage/uitest/watchers/PlayStoreConfirmationWatcher.java
@@ -67,6 +67,13 @@
mDevice.findObject(new UiSelector().text("NEXT")).click();
condition = true;
}
+ isSuccess =
+ mDevice.findObject(new UiSelector().description("NEXT"))
+ .waitForExists(TimeUnit.MILLISECONDS.convert(3L, TimeUnit.SECONDS));
+ if (isSuccess) {
+ mDevice.findObject(new UiSelector().description("NEXT")).click();
+ condition = true;
+ }
}
catch (UiObjectNotFoundException e) {
throw new AssertionError("Failed to dismiss the play store confirmation popup dialogs");
diff --git a/system_image_uitests/app/src/main/java/com/android/devtools/systemimage/uitest/watchers/PlayStorePermissionsWatcher.java b/system_image_uitests/app/src/main/java/com/android/devtools/systemimage/uitest/watchers/PlayStorePermissionsWatcher.java
index e427224..79c40ce 100644
--- a/system_image_uitests/app/src/main/java/com/android/devtools/systemimage/uitest/watchers/PlayStorePermissionsWatcher.java
+++ b/system_image_uitests/app/src/main/java/com/android/devtools/systemimage/uitest/watchers/PlayStorePermissionsWatcher.java
@@ -53,6 +53,13 @@
mDevice.findObject(new UiSelector().text("ACCEPT")).click();
condition = true;
}
+ isSuccess =
+ mDevice.findObject(new UiSelector().description("I AGREE"))
+ .waitForExists(TimeUnit.MILLISECONDS.convert(10L, TimeUnit.SECONDS));
+ if (isSuccess) {
+ mDevice.findObject(new UiSelector().description("I AGREE")).click();
+ condition = true;
+ }
} catch (UiObjectNotFoundException e) {
throw new AssertionError("Failed to dismiss the play store permissions dialogs");
}