Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

android test app #121

Merged
merged 4 commits into from
Aug 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 72 additions & 7 deletions .github/workflows/android-appcenter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,20 @@ on:
push:
branches: [ main ]
paths:
- 'demo/android/OctopusDemo/**'
- '!demo/android/OctopusDemo/README.md'
- 'binding/android/OctopusTestApp/**'
- 'res/audio/**'
- '.github/workflows/android-appcenter.yml'

pull_request:
branches: [ main, 'v[0-9]+.[0-9]+' ]
paths:
- 'demo/android/OctopusDemo/**'
- '!demo/android/OctopusDemo/README.md'
- 'binding/android/OctopusTestApp/**'
- 'res/audio/**'
- '.github/workflows/android-appcenter.yml'

defaults:
run:
working-directory: demo/android/OctopusDemo
working-directory: binding/android/OctopusTestApp

jobs:
build:
Expand Down Expand Up @@ -50,6 +48,16 @@ jobs:
- name: Inject AccessKey
run: echo pvTestingAccessKey="${{secrets.PV_VALID_ACCESS_KEY}}" >> local.properties

- name: Inject Android keystore variables
run: |
echo storePassword="${{secrets.ANDROID_RELEASE_KEYSTORE_PASSWORD}}" >> local.properties
echo keyPassword="${{secrets.ANDROID_RELEASE_KEYSTORE_PASSWORD}}" >> local.properties
echo keyAlias=picovoice >> local.properties
echo storeFile=../picovoice.jks >> local.properties

- name: Setup Android keystore file
run: echo "${{secrets.ANDROID_RELEASE_KEYSTORE_FILE_B64}}" | base64 -d > picovoice.jks

- name: Build app
run: ./gradlew assembleDebug

Expand All @@ -61,7 +69,64 @@ jobs:
--token ${{secrets.APPCENTERAPITOKEN}}
--app "Picovoice/Octopus-Android"
--devices "Picovoice/android-min-max"
--app-path octopus-demo-app/build/outputs/apk/debug/octopus-demo-app-debug.apk
--app-path octopus-test-app/build/outputs/apk/debug/octopus-test-app-debug.apk
--test-series "octopus-android"
--locale "en_US"
--build-dir octopus-demo-app/build/outputs/apk/androidTest/debug
--build-dir octopus-test-app/build/outputs/apk/androidTest/debug

build-integ:
name: Run Android Integration Tests on AppCenter
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Set up Node.js LTS
uses: actions/setup-node@v3
with:
node-version: lts/*

- name: Install AppCenter CLI
run: npm install -g appcenter-cli

- name: set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'

- name: Copy test_resources
run: ./copy_test_resources.sh

- name: Inject AccessKey
run: echo pvTestingAccessKey="${{secrets.PV_VALID_ACCESS_KEY}}" >> local.properties

- name: Inject Android keystore variables
run: |
echo storePassword="${{secrets.ANDROID_RELEASE_KEYSTORE_PASSWORD}}" >> local.properties
echo keyPassword="${{secrets.ANDROID_RELEASE_KEYSTORE_PASSWORD}}" >> local.properties
echo keyAlias=picovoice >> local.properties
echo storeFile=../picovoice.jks >> local.properties

- name: Setup Android keystore file
run: echo "${{secrets.ANDROID_RELEASE_KEYSTORE_FILE_B64}}" | base64 -d > picovoice.jks

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Build app
run: ./gradlew assembleRelease

- name: Build androidTest
run: ./gradlew assembleReleaseAndroidTest -DtestBuildType=integ

- name: Run tests on AppCenter
run: appcenter test run espresso
--token ${{secrets.APPCENTERAPITOKEN}}
--app "Picovoice/Octopus-Android"
--devices "Picovoice/android-min-max"
--app-path octopus-test-app/build/outputs/apk/release/octopus-test-app-release.apk
--test-series "octopus-android"
--locale "en_US"
--build-dir octopus-test-app/build/outputs/apk/androidTest/release

18 changes: 14 additions & 4 deletions .github/workflows/android-perf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ on:

defaults:
run:
working-directory: demo/android/OctopusDemo
working-directory: binding/android/OctopusTestApp

jobs:
build:
Expand Down Expand Up @@ -62,6 +62,16 @@ jobs:
- name: Inject Number of Iterations
run: echo numTestIterations="30" >> local.properties

- name: Inject Android keystore variables
run: |
echo storePassword="${{secrets.ANDROID_RELEASE_KEYSTORE_PASSWORD}}" >> local.properties
echo keyPassword="${{secrets.ANDROID_RELEASE_KEYSTORE_PASSWORD}}" >> local.properties
echo keyAlias=picovoice >> local.properties
echo storeFile=../picovoice.jks >> local.properties

- name: Setup Android keystore file
run: echo "${{secrets.ANDROID_RELEASE_KEYSTORE_FILE_B64}}" | base64 -d > picovoice.jks

- name: Inject Index Performance Threshold
run: echo indexPerformanceThresholdSec="${{ matrix.indexPerformanceThresholdSec }}" >> local.properties

Expand All @@ -75,15 +85,15 @@ jobs:
run: ./gradlew assembleDebug

- name: Build androidTest
run: ./gradlew assembleAndroidTest
run: ./gradlew assembleAndroidTest -DtestBuildType=perf

- name: Run tests on AppCenter
run: appcenter test run espresso
--token ${{secrets.APPCENTERAPITOKEN}}
--app "Picovoice/Octopus-Android"
--devices "Picovoice/${{ matrix.device }}"
--app-path octopus-demo-app/build/outputs/apk/debug/octopus-demo-app-debug.apk
--app-path octopus-test-app/build/outputs/apk/debug/octopus-test-app-debug.apk
--test-series "octopus-android"
--locale "en_US"
--build-dir octopus-demo-app/build/outputs/apk/androidTest/debug
--build-dir octopus-test-app/build/outputs/apk/androidTest/debug

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
12 changes: 12 additions & 0 deletions binding/android/OctopusTestApp/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
*.iml
.gradle
/local.properties
/.idea/
.DS_Store
/build
/captures
.externalNativeBuild
release
test_resources
*.pv
*.wav
24 changes: 24 additions & 0 deletions binding/android/OctopusTestApp/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
ext {
defaultTargetSdkVersion = 31
}

buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.2.2'
}
}

allprojects {
repositories {
google()
mavenCentral()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}
17 changes: 17 additions & 0 deletions binding/android/OctopusTestApp/copy_test_resources.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
if [ ! -d "./octopus-test-app/src/androidTest/assets/test_resources/audio" ]
then
echo "Creating test audio samples directory..."
mkdir -p ./octopus-test-app/src/androidTest/assets/test_resources/audio
fi

echo "Copying test audio samples..."
cp ../../../res/audio/multiple_keywords*.wav ./octopus-test-app/src/androidTest/assets/test_resources/audio/

if [ ! -d "./octopus-test-app/src/androidTest/assets/test_resources/param" ]
then
echo "Creating octopus params directory..."
mkdir -p ./octopus-test-app/src/androidTest/assets/test_resources/param
fi

echo "Copying octopus params files..."
cp ../../../lib/common/param/octopus_params*.pv ./octopus-test-app/src/androidTest/assets/test_resources/param/
17 changes: 17 additions & 0 deletions binding/android/OctopusTestApp/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app"s APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#Wed Jul 19 13:57:31 PDT 2023
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
Loading