Skip to content

Integration Tests

Integration Tests #31

#
# Copyright 2023 Adobe. All rights reserved.
# This file is licensed to you under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. You may obtain a copy
# of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under
# the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
# OF ANY KIND, either express or implied. See the License for the specific language
# governing permissions and limitations under the License.
#
# Action to execute upstream integration tests - Edge Network (Konductor)
name: Integration Tests
on:
# `*` is a special character in YAML so you have to quote this string
# Avoiding start of hour and other common times to avoid conflicts with peak times
schedule:
# Run every weekday at 12:45 PM PDT (Daylight saving time) -> 7:45 PM UTC
# Add +1 hour when back in PST
- cron: '45 19 * * 1-5'
workflow_dispatch:
inputs:
branch:
description: 'The branch to use when running the integration tests'
required: false
default: 'main'
id:
description: '(Optional) The identifier for the run.'
required: false
tags-mobile-property-id:
type: string
description: '(Optional) The tags mobile property ID to use for the test. A default is used if not set.'
required: false
default: ''
edge-location-hint:
type: choice
description: '(Optional) The Edge location hint to set before each test.'
required: false
default: 'None'
options:
- 'or2'
- 'va6'
- 'irl1'
- 'ind1'
- 'jpn3'
- 'sgp3'
- 'aus3'
- 'EmptyString'
- 'Invalid'
- 'None'
jobs:
test-integration-upstream:
runs-on: ubuntu-latest
strategy:
matrix:
api-level: [29]
steps:
- name: Job run identifier ${{ github.event.inputs.id }}
run: |
if [ -z "${{ github.event.inputs.id }}" ]; then \
echo No job run identifier was set.
else
echo 'Job run identifier is:' ${{ inputs.id }}
fi;
- name: Delete unnecessary tools 🔧
uses: jlumbroso/[email protected]
with:
android: false # Don't remove Android tools
tool-cache: true # Remove image tool cache - rm -rf "$AGENT_TOOLSDIRECTORY"
dotnet: true # rm -rf /usr/share/dotnet
haskell: true # rm -rf /opt/ghc...
swap-storage: true # rm -f /mnt/swapfile (4GiB)
docker-images: false # Takes 16s, enable if needed in the future
large-packages: false # includes google-cloud-sdk and it's slow
# Set up KVM permissions to enable efficient Android emulator runs by modifying udev rules for universal access.
# From https:/android/nowinandroid/blob/main/.github/workflows/Build.yaml#L142
- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
ls /dev/kvm
- name: Checkout
uses: actions/[email protected]
with:
ref: ${{ github.event.inputs.branch }}
- name: Set up Java
uses: actions/[email protected]
with:
distribution: 'zulu'
java-version: 17
# - name: Gradle cache
# uses: gradle/actions/[email protected]
# - name: AVD cache
# uses: actions/[email protected]
# id: avd-cache
# with:
# path: |
# ~/.android/avd/*
# ~/.android/adb*
# key: avd-${{ matrix.api-level }}
# - name: create AVD and generate snapshot for caching
# if: steps.avd-cache.outputs.cache-hit != 'true'
# uses: reactivecircus/android-emulator-runner@f0d1ed2dcad93c7479e8b2f2226c83af54494915 # v2.32.0
# with:
# api-level: ${{ matrix.api-level }}
# arch: x86_64
# disk-size: 6000M
# heap-size: 600M
# force-avd-creation: false
# emulator-options: -no-metrics -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
# disable-animations: false
# script: echo "Generated AVD snapshot for caching."
- name: Run tests
uses: reactivecircus/android-emulator-runner@f0d1ed2dcad93c7479e8b2f2226c83af54494915 # v2.32.0
with:
api-level: ${{ matrix.api-level }}
arch: x86_64
disk-size: 6000M
heap-size: 600M
force-avd-creation: false
emulator-options: -no-metrics -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: |
mkdir -p logs # Ensure the 'logs' directory exists
adb logcat -c # clear logs
touch logs/emulator.log # create log file
chmod 777 logs/emulator.log # allow writing to log file
adb logcat >> logs/emulator.log & # pipe all logcat messages into log file as a background process
make upstream-integration-test TAGS_MOBILE_PROPERTY_ID=${{ github.event.inputs.tags-mobile-property-id }} EDGE_LOCATION_HINT=${{ github.event.inputs.edge-location-hint }}
- name: Upload Logcat Logs
if: always()
uses: actions/[email protected]
with:
name: logcat-logs
path: logs/emulator.log
# Potential workflow solutions on job failure
- name: On failure
if: ${{ failure() }}
run: |
echo 'Job used branch: ' ${{ github.event.inputs.branch }}. Please make sure this is the branch to run off of.