Skip to content

Commit

Permalink
Add CI tests (nextcloud#21)
Browse files Browse the repository at this point in the history
  • Loading branch information
marcelklehr committed May 20, 2021
1 parent ecfc8c5 commit ee37317
Show file tree
Hide file tree
Showing 20 changed files with 311 additions and 60 deletions.
117 changes: 117 additions & 0 deletions .github/workflows/backgroundjob-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
name: Background job test

on:
pull_request:
push:

env:
APP_NAME: recognize

jobs:
php:
runs-on: ubuntu-latest

strategy:
# do not stop on another job's failure
fail-fast: false
matrix:
php-versions: ['7.3']
databases: ['sqlite', 'mysql', 'pgsql']
server-versions: ['stable20', 'stable21']

name: Test classify job on ${{ matrix.databases }}-${{ matrix.server-versions }}

env:
MYSQL_PORT: 4444
PGSQL_PORT: 4445

services:
mysql:
image: mariadb
ports:
- 4444:3306/tcp
env:
MYSQL_ROOT_PASSWORD: rootpassword
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5
postgres:
image: postgres
ports:
- 4445:5432/tcp
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: rootpassword
POSTGRES_DB: nextcloud
options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5

steps:
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 14.x

- name: Checkout server
uses: actions/checkout@v2
with:
repository: nextcloud/server
ref: ${{ matrix.server-versions }}

- name: Checkout submodules
shell: bash
run: |
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@v1
with:
php-version: ${{ matrix.php-versions }}
tools: phpunit
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_mysql, pdo_sqlite, pgsql, pdo_pgsql, gd, zip

- name: Checkout app
uses: actions/checkout@v2
with:
path: apps/${{ env.APP_NAME }}

- name: Install app
working-directory: apps/${{ env.APP_NAME }}
run: |
composer install --ignore-platform-req=php
make all
- name: Set up Nextcloud and install app
if: ${{ matrix.databases != 'pgsql'}}
run: |
sleep 25
mkdir data
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$MYSQL_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
./occ app:enable -vvv -f ${{ env.APP_NAME }}
php -S localhost:8080 &
- name: Set up Nextcloud and install app
if: ${{ matrix.databases == 'pgsql'}}
run: |
sleep 25
mkdir data
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$PGSQL_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
./occ app:enable -vvv -f ${{ env.APP_NAME }}
php -S localhost:8080 &
- name: Install
run: |
./occ app:enable -vvv ${{ env.APP_NAME }}
- name: Upload photos
run: |
for filename in apps/${{ env.APP_NAME }}/test/res/*; do
curl -u 'admin:password' -T "$filename" 'http://localhost:8080/remote.php/webdav/'
done
- name: Run cron
run: |
php cron.php
- name: Check log
run: |
tail -50 data/nextcloud.log
113 changes: 113 additions & 0 deletions .github/workflows/command-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
name: Command test

on:
pull_request:
push:

env:
APP_NAME: recognize

jobs:
php:
runs-on: ubuntu-latest

strategy:
# do not stop on another job's failure
fail-fast: false
matrix:
php-versions: ['7.3']
databases: ['sqlite', 'mysql', 'pgsql']
server-versions: ['stable20', 'stable21']

name: Test classify command on ${{ matrix.databases }}-${{ matrix.server-versions }}

env:
MYSQL_PORT: 4444
PGSQL_PORT: 4445

services:
mysql:
image: mariadb
ports:
- 4444:3306/tcp
env:
MYSQL_ROOT_PASSWORD: rootpassword
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5
postgres:
image: postgres
ports:
- 4445:5432/tcp
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: rootpassword
POSTGRES_DB: nextcloud
options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5

steps:
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 14.x

- name: Checkout server
uses: actions/checkout@v2
with:
repository: nextcloud/server
ref: ${{ matrix.server-versions }}

- name: Checkout submodules
shell: bash
run: |
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@v1
with:
php-version: ${{ matrix.php-versions }}
tools: phpunit
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_mysql, pdo_sqlite, pgsql, pdo_pgsql, gd, zip

- name: Checkout app
uses: actions/checkout@v2
with:
path: apps/${{ env.APP_NAME }}

- name: Install app
working-directory: apps/${{ env.APP_NAME }}
run: |
composer install --ignore-platform-req=php
make all
- name: Set up Nextcloud and install app
if: ${{ matrix.databases != 'pgsql'}}
run: |
sleep 25
mkdir data
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$MYSQL_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
./occ app:enable -vvv -f ${{ env.APP_NAME }}
php -S localhost:8080 &
- name: Set up Nextcloud and install app
if: ${{ matrix.databases == 'pgsql'}}
run: |
sleep 25
mkdir data
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$PGSQL_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
./occ app:enable -vvv -f ${{ env.APP_NAME }}
php -S localhost:8080 &
- name: Install
run: |
./occ app:enable -vvv ${{ env.APP_NAME }}
- name: Upload photos
run: |
for filename in apps/${{ env.APP_NAME }}/test/res/*; do
curl -u 'admin:password' -T "$filename" 'http://localhost:8080/remote.php/webdav/'
done
- name: Run classifier
run: |
./occ recognize:classify
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ composer-no-dev:
composer install --no-dev

install-binaries:
mkdir bin
curl -sL "https://nodejs.org/dist/$(node_version)/node-$(node_version)-linux-arm64.tar.gz" | tar -xzf - node-$(node_version)-linux-arm64/bin/node --to-stdout > bin/node-$(node_version)-linux-arm64
curl -sL "https://nodejs.org/dist/$(node_version)/node-$(node_version)-linux-armv7l.tar.gz" | tar -xzf - node-$(node_version)-linux-armv7l/bin/node --to-stdout > bin/node-$(node_version)-linux-armv7l
curl -sL "https://nodejs.org/dist/$(node_version)/node-$(node_version)-linux-x64.tar.gz" | tar -xzf - node-$(node_version)-linux-x64/bin/node --to-stdout > bin/node-$(node_version)-linux-x64
Expand Down
4 changes: 1 addition & 3 deletions lib/Command/Classify.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
}

$output->writeln('Classifying photos of user '.$user);
$this->classifier->classifyParallel($images, $processors);
return $this->classifier->classifyParallel($images, $processors, $output);
}


Expand All @@ -109,8 +109,6 @@ protected function execute(InputInterface $input, OutputInterface $output): int
$output->writeln($ex->getMessage());
return 1;
}

return 0;
}

/**
Expand Down
Loading

0 comments on commit ee37317

Please sign in to comment.