diff --git a/wlauto/workloads/googleplaybooks/com.arm.wlauto.uiauto.googleplaybooks.jar b/wlauto/workloads/googleplaybooks/com.arm.wlauto.uiauto.googleplaybooks.jar deleted file mode 100644 index d5464edc..00000000 Binary files a/wlauto/workloads/googleplaybooks/com.arm.wlauto.uiauto.googleplaybooks.jar and /dev/null differ diff --git a/wlauto/workloads/googleplaybooks/com.arm.wlauto.uiauto.googleplaybooks.uiautoapk b/wlauto/workloads/googleplaybooks/com.arm.wlauto.uiauto.googleplaybooks.uiautoapk new file mode 100644 index 00000000..93d7b54b Binary files /dev/null and b/wlauto/workloads/googleplaybooks/com.arm.wlauto.uiauto.googleplaybooks.uiautoapk differ diff --git a/wlauto/workloads/googleplaybooks/uiauto/app/build.gradle b/wlauto/workloads/googleplaybooks/uiauto/app/build.gradle new file mode 100644 index 00000000..7d2ecb63 --- /dev/null +++ b/wlauto/workloads/googleplaybooks/uiauto/app/build.gradle @@ -0,0 +1,35 @@ +apply plugin: 'com.android.application' + +def packageName = "com.arm.wlauto.uiauto.googleplaybooks" + +android { + compileSdkVersion 25 + buildToolsVersion "25.0.3" + defaultConfig { + applicationId "${packageName}" + minSdkVersion 18 + targetSdkVersion 25 + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + applicationVariants.all { variant -> + variant.outputs.each { output -> + output.outputFile = file("$project.buildDir/apk/${packageName}.apk") + } + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + compile 'com.android.support.test:runner:0.5' + compile 'com.android.support.test:rules:0.5' + compile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' + compile(name: 'uiauto', ext:'aar') +} + +repositories { + flatDir { + dirs 'libs' + } +} diff --git a/wlauto/workloads/googleplaybooks/uiauto/app/src/main/AndroidManifest.xml b/wlauto/workloads/googleplaybooks/uiauto/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..173a5846 --- /dev/null +++ b/wlauto/workloads/googleplaybooks/uiauto/app/src/main/AndroidManifest.xml @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/wlauto/workloads/googleplaybooks/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java b/wlauto/workloads/googleplaybooks/uiauto/app/src/main/java/com/arm/wlauto/uiauto/googleplaybooks/UiAutomation.java similarity index 83% rename from wlauto/workloads/googleplaybooks/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java rename to wlauto/workloads/googleplaybooks/uiauto/app/src/main/java/com/arm/wlauto/uiauto/googleplaybooks/UiAutomation.java index 3bf62a46..e70b0f5c 100755 --- a/wlauto/workloads/googleplaybooks/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java +++ b/wlauto/workloads/googleplaybooks/uiauto/app/src/main/java/com/arm/wlauto/uiauto/googleplaybooks/UiAutomation.java @@ -16,39 +16,44 @@ package com.arm.wlauto.uiauto.googleplaybooks; import android.os.Bundle; - -// Import the uiautomator libraries -import com.android.uiautomator.core.UiObject; -import com.android.uiautomator.core.UiObjectNotFoundException; -import com.android.uiautomator.core.UiSelector; -import com.android.uiautomator.core.UiWatcher; -import com.android.uiautomator.core.UiScrollable; - -import com.arm.wlauto.uiauto.UxPerfUiAutomation; -import com.arm.wlauto.uiauto.ApplaunchInterface; -import com.arm.wlauto.uiauto.UiAutoUtils; - -import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_ID; -import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_TEXT; -import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_DESC; - -import java.util.concurrent.TimeUnit; -import java.util.LinkedHashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Map.Entry; - +import android.support.test.runner.AndroidJUnit4; +import android.support.test.uiautomator.UiObject; +import android.support.test.uiautomator.UiObjectNotFoundException; +import android.support.test.uiautomator.UiSelector; +import android.support.test.uiautomator.UiWatcher; import android.util.Log; +import com.arm.wlauto.uiauto.ApplaunchInterface; +import com.arm.wlauto.uiauto.UiAutoUtils; +import com.arm.wlauto.uiauto.UxPerfUiAutomation; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.TimeUnit; + +import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_DESC; +import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_ID; +import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_TEXT; + +// Import the uiautomator libraries + +@RunWith(AndroidJUnit4.class) public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterface { private int viewTimeoutSecs = 10; private long viewTimeout = TimeUnit.SECONDS.toMillis(viewTimeoutSecs); - public void runUiAutomation() throws Exception { +@Test +public void runUiAutomation() throws Exception { // Override superclass value this.uiAutoTimeout = TimeUnit.SECONDS.toMillis(8); + initialize_instrumentation(); parameters = getParams(); String searchBookTitle = parameters.getString("search_book_title"); @@ -82,7 +87,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa unsetScreenOrientation(); } - + // Get application parameters and clear the initial run dialogues of the application launch. public void runApplicationInitialization() throws Exception { getPackageParameters(); @@ -92,21 +97,21 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa dismissSendBooksAsGiftsDialog(); dismissSync(); } - + // Sets the UiObject that marks the end of the application launch. public UiObject getLaunchEndObject() { - UiObject launchEndObject = new UiObject(new UiSelector() + UiObject launchEndObject = mDevice.findObject(new UiSelector() .className("android.widget.ImageButton")); return launchEndObject; } - + // Returns the launch command for the application. public String getLaunchCommand() { String launch_command; launch_command = UiAutoUtils.createLaunchCommand(parameters); return launch_command; } - + // Pass the workload parameters, used for applaunch public void setWorkloadParameters(Bundle workload_parameters) { parameters = workload_parameters; @@ -117,13 +122,13 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa // has been specified as a parameter, otherwise select `account`. private void chooseAccount(String account) throws Exception { UiObject accountPopup = - new UiObject(new UiSelector().textContains("Choose an account") + mDevice.findObject(new UiSelector().textContains("Choose an account") .className("android.widget.TextView")); if (accountPopup.exists()) { if ("None".equals(account)) { // If no account has been specified, pick the first entry in the list UiObject list = - new UiObject(new UiSelector().className("android.widget.ListView")); + mDevice.findObject(new UiSelector().className("android.widget.ListView")); UiObject first = list.getChild(new UiSelector().index(0)); if (!first.exists()) { // Some devices are not zero indexed. If 0 doesnt exist, pick 1 @@ -136,7 +141,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa } // Click OK to proceed UiObject ok = - new UiObject(new UiSelector().textContains("OK") + mDevice.findObject(new UiSelector().textContains("OK") .className("android.widget.Button") .enabled(true)); ok.clickAndWaitForNewWindow(); @@ -148,14 +153,14 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa // pick a random sample book. private void clearFirstRunDialogues() throws Exception { UiObject startButton = - new UiObject(new UiSelector().resourceId(packageID + "start_button")); + mDevice.findObject(new UiSelector().resourceId(packageID + "start_button")); // First try and skip the sample book selection if (startButton.exists()) { startButton.click(); } UiObject endButton = - new UiObject(new UiSelector().resourceId(packageID + "end_button")); + mDevice.findObject(new UiSelector().resourceId(packageID + "end_button")); // Click next button if it exists if (endButton.exists()) { endButton.click(); @@ -172,7 +177,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa private void dismissSendBooksAsGiftsDialog() throws Exception { UiObject gotIt = - new UiObject(new UiSelector().textContains("GOT IT!")); + mDevice.findObject(new UiSelector().textContains("GOT IT")); if (gotIt.exists()) { gotIt.click(); } @@ -180,7 +185,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa private void dismissSync() throws Exception { UiObject keepSyncOff = - new UiObject(new UiSelector().textContains("Keep sync off") + mDevice.findObject(new UiSelector().textContains("Keep sync off") .className("android.widget.Button")); if (keepSyncOff.exists()) { keepSyncOff.click(); @@ -190,21 +195,21 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa // Searches for a "free" or "purchased" book title in Google play private void searchForBook(final String bookTitle) throws Exception { UiObject search = - new UiObject(new UiSelector().resourceId(packageID + "menu_search")); + mDevice.findObject(new UiSelector().resourceId(packageID + "menu_search")); if (!search.exists()) { search = - new UiObject(new UiSelector().resourceId(packageID + "search_box_active_text_view")); + mDevice.findObject(new UiSelector().resourceId(packageID + "search_box_active_text_view")); } search.click(); UiObject searchText = - new UiObject(new UiSelector().textContains("Search") + mDevice.findObject(new UiSelector().textContains("Search") .className("android.widget.EditText")); searchText.setText(bookTitle); pressEnter(); UiObject resultList = - new UiObject(new UiSelector().resourceId("com.android.vending:id/search_results_list")); + mDevice.findObject(new UiSelector().resourceId("com.android.vending:id/search_results_list")); if (!resultList.waitForExists(viewTimeout)) { throw new UiObjectNotFoundException("Could not find \"search results list view\"."); } @@ -212,7 +217,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa // Create a selector so that we can search for siblings of the desired // book that contains a "free" or "purchased" book identifier UiObject label = - new UiObject(new UiSelector().fromParent(new UiSelector() + mDevice.findObject(new UiSelector().fromParent(new UiSelector() .description(String.format("Book: " + bookTitle)) .className("android.widget.TextView")) .resourceId("com.android.vending:id/li_label") @@ -239,7 +244,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa private void addToLibrary() throws Exception { UiObject add = - new UiObject(new UiSelector().textContains("ADD TO LIBRARY") + mDevice.findObject(new UiSelector().textContains("ADD TO LIBRARY") .className("android.widget.Button")); if (add.exists()) { // add to My Library and opens book by default @@ -253,7 +258,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa waitForPage(); UiObject navigationButton = - new UiObject(new UiSelector().description("Navigate up")); + mDevice.findObject(new UiSelector().description("Navigate up")); // Return to main app window pressBack(); @@ -274,9 +279,8 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa clickUiObject(BY_DESC, "Show navigation drawer"); // To correctly find the UiObject we need to specify the index also here UiObject myLibrary = - new UiObject(new UiSelector().className("android.widget.TextView") - .text("My library") - .index(3)); + mDevice.findObject(new UiSelector().className("android.widget.TextView") + .textMatches(".*[lL]ibrary")); myLibrary.clickAndWaitForNewWindow(uiAutoTimeout); logger.stop(); } @@ -291,7 +295,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa UiSelector bookSelector = new UiSelector().text(bookTitle) .className("android.widget.TextView"); - UiObject book = new UiObject(bookSelector); + UiObject book = mDevice.findObject(bookSelector); // Check that books are sorted by time added to library. This way we // can assume any newly downloaded books will be visible on the first // screen. @@ -301,7 +305,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa // cardsGrid until it has been fully downloaded. Wait for fully // downloaded books UiObject downloadComplete = - new UiObject(new UiSelector().fromParent(bookSelector) + mDevice.findObject(new UiSelector().fromParent(bookSelector) .description("100% downloaded")); if (!downloadComplete.waitForExists(maxWaitTime)) { throw new UiObjectNotFoundException( @@ -321,13 +325,13 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa @Override public boolean checkForCondition() { UiObject popUpDialogue = - new UiObject(new UiSelector().textStartsWith("You're on page") + mDevice.findObject(new UiSelector().textStartsWith("You're on page") .resourceId("android:id/message")); // Don't sync and stay on the current page if (popUpDialogue.exists()) { try { UiObject stayOnPage = - new UiObject(new UiSelector().text("Yes") + mDevice.findObject(new UiSelector().text("Yes") .className("android.widget.Button")); stayOnPage.click(); } catch (UiObjectNotFoundException e) { @@ -408,9 +412,12 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa hideDropDownMenu(); - UiObject clickable = new UiObject(new UiSelector().longClickable(true)); - if (!clickable.exists()){ - clickable = new UiObject(new UiSelector().resourceIdMatches(".*/main_page")); + UiObject clickable = mDevice.findObject(new UiSelector().longClickable(true)); + if (!clickable.exists()){ + clickable = mDevice.findObject(new UiSelector().resourceIdMatches(".*/main_page")); + } + if (!clickable.exists()){ + clickable = mDevice.findObject(new UiSelector().resourceIdMatches(".*/reader")); } logger.start(); @@ -418,7 +425,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa uiObjectPerformLongClick(clickable, 100); UiObject addNoteButton = - new UiObject(new UiSelector().resourceId(packageID + "add_note_button")); + mDevice.findObject(new UiSelector().resourceId(packageID + "add_note_button")); addNoteButton.click(); UiObject noteEditText = getUiObjectByResourceId(packageID + "note_edit_text", @@ -437,9 +444,12 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa String testTag = "note_remove"; ActionLogger logger = new ActionLogger(testTag, parameters); - UiObject clickable = new UiObject(new UiSelector().longClickable(true)); - if (!clickable.exists()){ - clickable = new UiObject(new UiSelector().resourceIdMatches(".*/main_page")); + UiObject clickable = mDevice.findObject(new UiSelector().longClickable(true)); + if (!clickable.exists()){ + clickable = mDevice.findObject(new UiSelector().resourceIdMatches(".*/main_page")); + } + if (!clickable.exists()){ + clickable = mDevice.findObject(new UiSelector().resourceIdMatches(".*/reader")); } logger.start(); @@ -447,7 +457,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa uiObjectPerformLongClick(clickable, 100); UiObject removeButton = - new UiObject(new UiSelector().resourceId(packageID + "remove_highlight_button")); + mDevice.findObject(new UiSelector().resourceId(packageID + "remove_highlight_button")); removeButton.click(); clickUiObject(BY_TEXT, "Remove", "android.widget.Button"); @@ -467,11 +477,11 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa getDropdownMenu(); UiObject search = - new UiObject(new UiSelector().resourceId(packageID + "menu_search")); + mDevice.findObject(new UiSelector().resourceId(packageID + "menu_search")); search.click(); UiObject searchText = - new UiObject(new UiSelector().resourceId(packageID + "search_src_text")); + mDevice.findObject(new UiSelector().resourceId(packageID + "search_src_text")); logger.start(); @@ -479,13 +489,13 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa pressEnter(); UiObject resultList = - new UiObject(new UiSelector().resourceId(packageID + "search_results_list")); + mDevice.findObject(new UiSelector().resourceId(packageID + "search_results_list")); if (!resultList.waitForExists(searchTimeout)) { throw new UiObjectNotFoundException("Could not find \"search results list view\"."); } UiObject searchWeb = - new UiObject(new UiSelector().text("Search web") + mDevice.findObject(new UiSelector().textMatches("Search web|SEARCH WEB") .className("android.widget.TextView")); if (!searchWeb.waitForExists(searchTimeout)) { throw new UiObjectNotFoundException("Could not find \"Search web view\"."); @@ -505,7 +515,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa // Check for lighting option button on newer versions UiObject lightingOptionsButton = - new UiObject(new UiSelector().resourceId(packageID + "lighting_options_button")); + mDevice.findObject(new UiSelector().resourceId(packageID + "lighting_options_button")); if (lightingOptionsButton.exists()) { lightingOptionsButton.click(); } @@ -515,7 +525,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa try { ActionLogger logger = new ActionLogger(testTag + "_" + style, parameters); UiObject pageStyle = - new UiObject(new UiSelector().description(style)); + mDevice.findObject(new UiSelector().description(style)); logger.start(); pageStyle.clickAndWaitForNewWindow(viewTimeout); @@ -549,9 +559,9 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa bookInfo.clickAndWaitForNewWindow(uiAutoTimeout); UiObject detailsPanel = - new UiObject(new UiSelector().resourceId("com.android.vending:id/item_details_panel")); + mDevice.findObject(new UiSelector().resourceId("com.android.vending:id/item_details_panel")); waitObject(detailsPanel, viewTimeoutSecs); - + logger.stop(); pressBack(); @@ -560,7 +570,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa // Helper for waiting on a page between actions private UiObject waitForPage() throws Exception { UiObject activityReader = - new UiObject(new UiSelector().resourceId(packageID + "activity_reader") + mDevice.findObject(new UiSelector().resourceId(packageID + "activity_reader") .childSelector(new UiSelector() .focusable(true))); // On some devices the object in the view hierarchy is found before it @@ -577,14 +587,14 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa // Helper for accessing the drop down menu private void getDropdownMenu() throws Exception { UiObject actionBar = - new UiObject(new UiSelector().resourceId(packageID + "action_bar")); + mDevice.findObject(new UiSelector().resourceId(packageID + "action_bar")); if (!actionBar.exists()) { tapDisplayCentre(); sleep(1); // Allow previous views to settle } - + UiObject card = - new UiObject(new UiSelector().resourceId(packageID + "cards") + mDevice.findObject(new UiSelector().resourceId(packageID + "cards") .className("android.view.ViewGroup")); if (card.exists()) { // On rare occasions tapping a certain word that appears in the centre @@ -598,7 +608,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa tapDisplay(x, y); sleep(1); } - + tapDisplay(x, y); sleep(1); // Allow previous views to settle } @@ -610,7 +620,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa private void hideDropDownMenu() throws Exception { UiObject actionBar = - new UiObject(new UiSelector().resourceId(packageID + "action_bar")); + mDevice.findObject(new UiSelector().resourceId(packageID + "action_bar")); if (actionBar.exists()) { tapDisplayCentre(); sleep(1); // Allow previous views to settle @@ -628,7 +638,7 @@ public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterfa } UiObject page = - new UiObject(new UiSelector().description(String.format("page " + Integer.toString(pagenum))) + mDevice.findObject(new UiSelector().description(String.format("page " + Integer.toString(pagenum))) .className("android.widget.TextView")); if (!page.exists()) { // Scroll up by swiping down diff --git a/wlauto/workloads/googleplaybooks/uiauto/build.gradle b/wlauto/workloads/googleplaybooks/uiauto/build.gradle new file mode 100644 index 00000000..d0aa7043 --- /dev/null +++ b/wlauto/workloads/googleplaybooks/uiauto/build.gradle @@ -0,0 +1,23 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.3.2' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/wlauto/workloads/googleplaybooks/uiauto/build.sh b/wlauto/workloads/googleplaybooks/uiauto/build.sh index 468663cf..0da43e6e 100755 --- a/wlauto/workloads/googleplaybooks/uiauto/build.sh +++ b/wlauto/workloads/googleplaybooks/uiauto/build.sh @@ -8,32 +8,33 @@ fi script_dir=`dirname $script_path` cd $script_dir -# Ensure build.xml exists before starting -if [[ ! -f build.xml ]]; then - echo 'Ant build.xml file not found! Check that you are in the right directory.' +# Ensure gradelw exists before starting +if [[ ! -f gradlew ]]; then + echo 'gradlew file not found! Check that you are in the right directory.' exit 9 fi -# Copy base classes from wlauto dist -class_dir=bin/classes/com/arm/wlauto/uiauto -base_classes=`python -c "import os, wlauto; print os.path.join(os.path.dirname(wlauto.__file__), 'common', 'android', '*.class')"` -mkdir -p $class_dir -cp $base_classes $class_dir +# Copy base class library from wlauto dist +libs_dir=app/libs +base_classes=`python -c "import os, wlauto; print os.path.join(os.path.dirname(wlauto.__file__), 'common', 'android', '*.aar')"` +mkdir -p $libs_dir +cp $base_classes $libs_dir # Build and return appropriate exit code if failed -ant build +# gradle build +./gradlew clean :app:assembleDebug exit_code=$? if [[ $exit_code -ne 0 ]]; then - echo "ERROR: 'ant build' exited with code $exit_code" + echo "ERROR: 'gradle build' exited with code $exit_code" exit $exit_code fi -# If successful move JAR file to workload folder (overwrite previous) -package=com.arm.wlauto.uiauto.googleplaybooks.jar +# If successful move APK file to workload folder (overwrite previous) +package=com.arm.wlauto.uiauto.googleplaybooks rm -f ../$package -if [[ -f bin/$package ]]; then - cp bin/$package .. +if [[ -f app/build/apk/$package.apk ]]; then + cp app/build/apk/$package.apk ../$package.uiautoapk else - echo 'ERROR: UiAutomator JAR could not be found!' + echo 'ERROR: UiAutomator apk could not be found!' exit 9 fi diff --git a/wlauto/workloads/googleplaybooks/uiauto/build.xml b/wlauto/workloads/googleplaybooks/uiauto/build.xml deleted file mode 100644 index 8771d5ab..00000000 --- a/wlauto/workloads/googleplaybooks/uiauto/build.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/wlauto/workloads/googleplaybooks/uiauto/gradle/wrapper/gradle-wrapper.jar b/wlauto/workloads/googleplaybooks/uiauto/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..13372aef Binary files /dev/null and b/wlauto/workloads/googleplaybooks/uiauto/gradle/wrapper/gradle-wrapper.jar differ diff --git a/wlauto/workloads/googleplaybooks/uiauto/gradle/wrapper/gradle-wrapper.properties b/wlauto/workloads/googleplaybooks/uiauto/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..760fcce7 --- /dev/null +++ b/wlauto/workloads/googleplaybooks/uiauto/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed May 03 15:42:44 BST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip diff --git a/wlauto/workloads/googleplaybooks/uiauto/gradlew b/wlauto/workloads/googleplaybooks/uiauto/gradlew new file mode 100755 index 00000000..9d82f789 --- /dev/null +++ b/wlauto/workloads/googleplaybooks/uiauto/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/wlauto/workloads/googleplaybooks/uiauto/gradlew.bat b/wlauto/workloads/googleplaybooks/uiauto/gradlew.bat new file mode 100644 index 00000000..aec99730 --- /dev/null +++ b/wlauto/workloads/googleplaybooks/uiauto/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/wlauto/workloads/googleplaybooks/uiauto/project.properties b/wlauto/workloads/googleplaybooks/uiauto/project.properties deleted file mode 100644 index ce39f2d0..00000000 --- a/wlauto/workloads/googleplaybooks/uiauto/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-18 diff --git a/wlauto/workloads/googleplaybooks/uiauto/settings.gradle b/wlauto/workloads/googleplaybooks/uiauto/settings.gradle new file mode 100644 index 00000000..e7b4def4 --- /dev/null +++ b/wlauto/workloads/googleplaybooks/uiauto/settings.gradle @@ -0,0 +1 @@ +include ':app'