This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git
The following commit(s) were added to refs/heads/main by this push:
new 9bcb83435 refactor(services/webdav): migrate to test planner for
webdav (#3379)
9bcb83435 is described below
commit 9bcb83435479e18e9ce90b606dba8bad0cb8019a
Author: yangxiaowei <[email protected]>
AuthorDate: Thu Nov 2 13:33:18 2023 +0900
refactor(services/webdav): migrate to test planner for webdav (#3379)
* refactor(services/webdav): migrate to test planner for webdav
* fix(services/webdav): user
* fix(services/webdav): nginx_with_redirect ENDPOINT
* feat(services/nexcloud): migrate test planner for nextcloud, owncloud
* fix(services): action for nextcloud, owncloud
* fix(services/webdav): nextcloud, owncloud move into webdav
* fix(fixtures): docker-compose for nextcloud, owncloud
* fix(fixtures): docker-compose for nextcloud, owncloud
* fix(services): webdav tcp > http
* fix(fixtures): docker-compose for nextcloud, owncloud
* fix(fixtures): docker-compose for nextcloud, owncloud
* fix(services/webdav): docker compose file move into webdav folder
* ci(test): Add health check for WebDAV docker compose config for nextcloud
and owncloud
* ci(test): Add health check for WebDAV docker compose config for nextcloud
and owncloud
* Update health check for nextcloud
Signed-off-by: Manjusaka <[email protected]>
* Update service file
Signed-off-by: Manjusaka <[email protected]>
---------
Signed-off-by: Manjusaka <[email protected]>
Co-authored-by: Manjusaka <[email protected]>
---
.github/services/webdav/nextcloud/action.yml | 35 ++++
.github/services/webdav/nginx/action.yml | 33 +++
.../webdav/nginx_with_empty_password/action.yml | 34 ++++
.../services/webdav/nginx_with_password/action.yml | 35 ++++
.../services/webdav/nginx_with_redirect/action.yml | 33 +++
.github/services/webdav/owncloud/action.yml | 35 ++++
.github/workflows/service_test_webdav.yml | 224 ---------------------
.../webdav/docker-compose-webdav-nextcloud.yml | 39 ++++
fixtures/webdav/docker-compose-webdav-owncloud.yml | 45 +++++
fixtures/webdav/health-check-nextcloud.sh | 21 ++
10 files changed, 310 insertions(+), 224 deletions(-)
diff --git a/.github/services/webdav/nextcloud/action.yml
b/.github/services/webdav/nextcloud/action.yml
new file mode 100644
index 000000000..16a0db4e7
--- /dev/null
+++ b/.github/services/webdav/nextcloud/action.yml
@@ -0,0 +1,35 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# 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 CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: nextcloud
+description: "Behavior test for nextcloud"
+
+runs:
+ using: "composite"
+ steps:
+ - name: Setup nextcloud
+ shell: bash
+ working-directory: fixtures/webdav
+ run: docker compose -f docker-compose-webdav-nextcloud.yml up -d --wait
+ - name: Setup
+ shell: bash
+ run: |
+ cat << EOF >> $GITHUB_ENV
+ OPENDAL_WEBDAV_ENDPOINT=http://127.0.0.1:8080/remote.php/webdav/
+ OPENDAL_WEBDAV_USERNAME=admin
+ OPENDAL_WEBDAV_PASSWORD=admin
+ EOF
diff --git a/.github/services/webdav/nginx/action.yml
b/.github/services/webdav/nginx/action.yml
new file mode 100644
index 000000000..0559a076d
--- /dev/null
+++ b/.github/services/webdav/nginx/action.yml
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# 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 CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: nginx
+description: "Behavior test for webdav in nginx"
+
+runs:
+ using: "composite"
+ steps:
+ - name: Setup webdav in nginx
+ shell: bash
+ working-directory: fixtures/webdav
+ run: docker compose -f docker-compose-webdav.yml up -d --wait
+ - name: Setup
+ shell: bash
+ run: |
+ cat << EOF >> $GITHUB_ENV
+ OPENDAL_WEBDAV_ENDPOINT=http://127.0.0.1:8080
+ EOF
diff --git a/.github/services/webdav/nginx_with_empty_password/action.yml
b/.github/services/webdav/nginx_with_empty_password/action.yml
new file mode 100644
index 000000000..655e22a53
--- /dev/null
+++ b/.github/services/webdav/nginx_with_empty_password/action.yml
@@ -0,0 +1,34 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# 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 CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: nginx_with_empty_password
+description: "Behavior test for nginx_with_empty_password in nginx"
+
+runs:
+ using: "composite"
+ steps:
+ - name: Setup webdav in nginx_with_empty_password
+ shell: bash
+ working-directory: fixtures/webdav
+ run: docker compose -f docker-compose-webdav-with-empty-passwd.yml up -d
--wait
+ - name: Setup
+ shell: bash
+ run: |
+ cat << EOF >> $GITHUB_ENV
+ OPENDAL_WEBDAV_ENDPOINT=http://127.0.0.1:8080
+ OPENDAL_WEBDAV_USERNAME=foo
+ EOF
diff --git a/.github/services/webdav/nginx_with_password/action.yml
b/.github/services/webdav/nginx_with_password/action.yml
new file mode 100644
index 000000000..c550cbba7
--- /dev/null
+++ b/.github/services/webdav/nginx_with_password/action.yml
@@ -0,0 +1,35 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# 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 CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: nginx_with_password
+description: "Behavior test for nginx_with_password in nginx"
+
+runs:
+ using: "composite"
+ steps:
+ - name: Setup webdav in nginx_with_password
+ shell: bash
+ working-directory: fixtures/webdav
+ run: docker compose -f docker-compose-webdav-with-auth.yml up -d --wait
+ - name: Setup
+ shell: bash
+ run: |
+ cat << EOF >> $GITHUB_ENV
+ OPENDAL_WEBDAV_ENDPOINT=http://127.0.0.1:8080
+ OPENDAL_WEBDAV_USERNAME=bar
+ OPENDAL_WEBDAV_PASSWORD=bar
+ EOF
diff --git a/.github/services/webdav/nginx_with_redirect/action.yml
b/.github/services/webdav/nginx_with_redirect/action.yml
new file mode 100644
index 000000000..2514964f4
--- /dev/null
+++ b/.github/services/webdav/nginx_with_redirect/action.yml
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# 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 CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: nginx_with_redirect
+description: "Behavior test for nginx_with_redirect in nginx"
+
+runs:
+ using: "composite"
+ steps:
+ - name: Setup webdav in nginx_with_redirect
+ shell: bash
+ working-directory: fixtures/webdav
+ run: docker compose -f docker-compose-webdav.yml up -d --wait
+ - name: Setup
+ shell: bash
+ run: |
+ cat << EOF >> $GITHUB_ENV
+ OPENDAL_WEBDAV_ENDPOINT=http://127.0.0.1:8081
+ EOF
diff --git a/.github/services/webdav/owncloud/action.yml
b/.github/services/webdav/owncloud/action.yml
new file mode 100644
index 000000000..df838bda3
--- /dev/null
+++ b/.github/services/webdav/owncloud/action.yml
@@ -0,0 +1,35 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# 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 CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: owncloud
+description: "Behavior test for owncloud"
+
+runs:
+ using: "composite"
+ steps:
+ - name: Setup owncloud
+ shell: bash
+ working-directory: fixtures/webdav
+ run: docker compose -f docker-compose-webdav-owncloud.yml up -d --wait
+ - name: Setup
+ shell: bash
+ run: |
+ cat << EOF >> $GITHUB_ENV
+ OPENDAL_WEBDAV_ENDPOINT=http://127.0.0.1:8080/remote.php/webdav/
+ OPENDAL_WEBDAV_USERNAME=admin
+ OPENDAL_WEBDAV_PASSWORD=admin
+ EOF
diff --git a/.github/workflows/service_test_webdav.yml
b/.github/workflows/service_test_webdav.yml
deleted file mode 100644
index 128932916..000000000
--- a/.github/workflows/service_test_webdav.yml
+++ /dev/null
@@ -1,224 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# 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 CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-name: Service Test WebDAV
-
-on:
- push:
- branches:
- - main
- pull_request:
- branches:
- - main
- paths:
- - "core/src/**"
- - "core/tests/**"
- - "!core/src/docs/**"
- - "!core/src/services/**"
- - "core/src/services/webdav/**"
- - ".github/workflows/service_test_webdav.yml"
- - "fixtures/webdav/**"
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
- cancel-in-progress: true
-
-jobs:
- nginx:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Setup Rust toolchain
- uses: ./.github/actions/setup
- with:
- need-nextest: true
-
- - name: Start nginx
- shell: bash
- working-directory: fixtures/webdav
- run: docker compose -f docker-compose-webdav.yml up -d
-
- - name: Test
- shell: bash
- working-directory: core
- run: cargo nextest run behavior --features tests
- env:
- OPENDAL_TEST: webdav
- OPENDAL_WEBDAV_ENDPOINT: http://127.0.0.1:8080
-
- nginx_with_password:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Setup Rust toolchain
- uses: ./.github/actions/setup
- with:
- need-nextest: true
-
- - name: Start nginx
- shell: bash
- working-directory: fixtures/webdav
- run: docker compose -f docker-compose-webdav-with-auth.yml up -d
-
- - name: Test with password
- shell: bash
- working-directory: core
- run: cargo nextest run behavior --features tests
- env:
- OPENDAL_TEST: webdav
- OPENDAL_WEBDAV_ENDPOINT: http://127.0.0.1:8080
- OPENDAL_WEBDAV_USERNAME: bar
- OPENDAL_WEBDAV_PASSWORD: bar
-
- nginx_with_empty_password:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Setup Rust toolchain
- uses: ./.github/actions/setup
- with:
- need-nextest: true
-
- - name: Start nginx
- shell: bash
- working-directory: fixtures/webdav
- run: docker compose -f docker-compose-webdav-with-empty-passwd.yml up
-d
-
- - name: Test empty password
- shell: bash
- working-directory: core
- run: cargo nextest run behavior --features tests
- env:
- OPENDAL_TEST: webdav
- OPENDAL_WEBDAV_ENDPOINT: http://127.0.0.1:8080
- OPENDAL_WEBDAV_USERNAME: foo
-
- nginx_with_redirect:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Setup Rust toolchain
- uses: ./.github/actions/setup
- with:
- need-nextest: true
-
- - name: Start nginx
- shell: bash
- working-directory: fixtures/webdav
- run: docker compose -f docker-compose-webdav.yml up -d
-
- - name: Test with redirect
- shell: bash
- working-directory: core
- run: |
- cargo nextest run behavior --features tests
- env:
- OPENDAL_TEST: webdav
- OPENDAL_WEBDAV_ENDPOINT: http://127.0.0.1:8081
-
- nextcloud:
- runs-on: ubuntu-latest
-
- services:
- nextcloud:
- image: nextcloud
- ports:
- - 8080:80
- env:
- SQLITE_DATABASE: nextcloud
- NEXTCLOUD_ADMIN_USER: admin
- NEXTCLOUD_ADMIN_PASSWORD: admin
- REDIS_HOST: redis
- options: >-
- --health-cmd="curl -f http://localhost"
- --health-interval=10s
- --health-timeout=5s
- --health-retries=5
-
- redis:
- image: redis
- options: >-
- --health-cmd "redis-cli ping"
- --health-interval 10s
- --health-timeout 5s
- --health-retries 5
-
- steps:
- - uses: actions/checkout@v4
- - name: Setup Rust toolchain
- uses: ./.github/actions/setup
- with:
- need-nextest: true
-
- - name: Test
- shell: bash
- working-directory: core
- run: |
- cargo test behavior -j=1
- env:
- OPENDAL_TEST: webdav
- OPENDAL_WEBDAV_ENDPOINT: http://127.0.0.1:8080/remote.php/webdav/
- OPENDAL_WEBDAV_USERNAME: admin
- OPENDAL_WEBDAV_PASSWORD: admin
-
- owncloud:
- runs-on: ubuntu-latest
-
- services:
- owncloud:
- image: owncloud/server
- ports:
- - 8080:8080
- env:
- ADMIN_USERNAME: admin
- ADMIN_PASSWORD: admin
- OWNCLOUD_DOMAIN: localhost:8080
- OWNCLOUD_TRUSTED_DOMAINS: localhost
- HTTP_PORT: 8080
- OWNCLOUD_REDIS_ENABLED: true
- OWNCLOUD_REDIS_HOST: redis
- options: >-
- --health-cmd "/usr/bin/healthcheck"
- --health-interval 10s
- --health-timeout 5s
- --health-retries 5
-
- redis:
- image: redis
- options: >-
- --health-cmd "redis-cli ping"
- --health-interval 10s
- --health-timeout 5s
- --health-retries 5
-
- steps:
- - uses: actions/checkout@v4
- - name: Setup Rust toolchain
- uses: ./.github/actions/setup
- with:
- need-nextest: true
-
- - name: Test
- shell: bash
- working-directory: core
- run: |
- cargo test behavior -j=1
- env:
- OPENDAL_TEST: webdav
- OPENDAL_WEBDAV_ENDPOINT: http://127.0.0.1:8080/remote.php/webdav/
- OPENDAL_WEBDAV_USERNAME: admin
- OPENDAL_WEBDAV_PASSWORD: admin
diff --git a/fixtures/webdav/docker-compose-webdav-nextcloud.yml
b/fixtures/webdav/docker-compose-webdav-nextcloud.yml
new file mode 100644
index 000000000..4cc031221
--- /dev/null
+++ b/fixtures/webdav/docker-compose-webdav-nextcloud.yml
@@ -0,0 +1,39 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# 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 CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+version: '3.8'
+
+services:
+ nextcloud:
+ image: nextcloud
+ ports:
+ - "8080:80"
+ volumes:
+ - ./health-check-nextcloud.sh:/health-check.sh
+ environment:
+ SQLITE_DATABASE: nextcloud
+ NEXTCLOUD_ADMIN_USER: admin
+ NEXTCLOUD_ADMIN_PASSWORD: admin
+ REDIS_HOST: redis
+ healthcheck:
+ test: ["CMD-SHELL", "bash", "-c", "/health-check.sh"]
+ interval: 10s
+ timeout: 5s
+ retries: 5
+
+ redis:
+ image: redis
diff --git a/fixtures/webdav/docker-compose-webdav-owncloud.yml
b/fixtures/webdav/docker-compose-webdav-owncloud.yml
new file mode 100644
index 000000000..1a942f442
--- /dev/null
+++ b/fixtures/webdav/docker-compose-webdav-owncloud.yml
@@ -0,0 +1,45 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# 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 CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+version: '3.8'
+
+services:
+ owncloud:
+ image: owncloud/server
+ ports:
+ - "8080:8080"
+ environment:
+ ADMIN_USERNAME: admin
+ ADMIN_PASSWORD: admin
+ OWNCLOUD_DOMAIN: localhost:8080
+ OWNCLOUD_TRUSTED_DOMAINS: localhost
+ HTTP_PORT: 8080
+ OWNCLOUD_REDIS_ENABLED: true
+ OWNCLOUD_REDIS_HOST: redis
+ healthcheck:
+ test: ["CMD", "/usr/bin/healthcheck"]
+ interval: 10s
+ timeout: 5s
+ retries: 5
+
+ redis:
+ image: redis
+ healthcheck:
+ test: ["CMD", "redis-cli", "ping"]
+ interval: 10s
+ timeout: 5s
+ retries: 5
diff --git a/fixtures/webdav/health-check-nextcloud.sh
b/fixtures/webdav/health-check-nextcloud.sh
new file mode 100755
index 000000000..28cdfaca5
--- /dev/null
+++ b/fixtures/webdav/health-check-nextcloud.sh
@@ -0,0 +1,21 @@
+# !/bin/bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# 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 CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+set +ex
+
+curl -sSf 'http://localhost/status.php' | grep '"installed":true' | grep
'"maintenance":false' | grep '"needsDbUpgrade":false' || exit 1
\ No newline at end of file