feat(apisix): add Cloudron package
- Implements Apache APISIX packaging for Cloudron platform. - Includes Dockerfile, CloudronManifest.json, and start.sh. - Configured to use Cloudron's etcd addon. 🤖 Generated with Gemini CLI Co-Authored-By: Gemini <noreply@google.com>
This commit is contained in:
224
CloudronPackages/APISIX/apisix-source/t/cli/test_cmd.sh
Executable file
224
CloudronPackages/APISIX/apisix-source/t/cli/test_cmd.sh
Executable file
@@ -0,0 +1,224 @@
|
||||
#!/usr/bin/env 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.
|
||||
#
|
||||
|
||||
. ./t/cli/common.sh
|
||||
|
||||
git checkout conf/config.yaml
|
||||
|
||||
# check restart with old nginx.pid exist
|
||||
echo "-1" > logs/nginx.pid
|
||||
out=$(./bin/apisix start 2>&1 || true)
|
||||
if echo "$out" | grep "the old APISIX is still running"; then
|
||||
rm logs/nginx.pid
|
||||
echo "failed: should reject bad nginx.pid"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
./bin/apisix stop
|
||||
sleep 0.5
|
||||
rm logs/nginx.pid || true
|
||||
|
||||
# check no corresponding process
|
||||
make run
|
||||
oldpid=$(< logs/nginx.pid)
|
||||
make stop
|
||||
sleep 0.5
|
||||
echo $oldpid > logs/nginx.pid
|
||||
out=$(make run || true)
|
||||
if ! echo "$out" | grep "nginx.pid exists but there's no corresponding process with pid"; then
|
||||
echo "failed: should find no corresponding process"
|
||||
exit 1
|
||||
fi
|
||||
make stop
|
||||
echo "pass: no corresponding process"
|
||||
|
||||
# check running when run repeatedly
|
||||
out=$(make run; make run || true)
|
||||
if ! echo "$out" | grep "the old APISIX is still running"; then
|
||||
echo "failed: should find APISIX running"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
make stop
|
||||
echo "pass: check APISIX running"
|
||||
|
||||
# check customized config
|
||||
|
||||
git checkout conf/config.yaml
|
||||
|
||||
# start with not existed customized config
|
||||
make init
|
||||
|
||||
if ./bin/apisix start -c conf/not_existed_config.yaml; then
|
||||
echo "failed: apisix still start with invalid customized config.yaml"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# start with customized config
|
||||
echo "
|
||||
deployment:
|
||||
admin:
|
||||
admin_listen:
|
||||
port: 9180
|
||||
https_admin: true
|
||||
admin_api_mtls:
|
||||
admin_ssl_cert: '../t/certs/apisix_admin_ssl.crt'
|
||||
admin_ssl_cert_key: '../t/certs/apisix_admin_ssl.key'
|
||||
admin_key_required: true # Enable Admin API authentication by default for security.
|
||||
admin_key:
|
||||
-
|
||||
name: admin # admin: write access to configurations.
|
||||
key: edd1c9f034335f136f87ad84b625c8f1
|
||||
role: admin
|
||||
" > conf/customized_config.yaml
|
||||
|
||||
./bin/apisix start -c conf/customized_config.yaml
|
||||
|
||||
# check if .customized_config_path has been created
|
||||
if [ ! -e conf/.customized_config_path ]; then
|
||||
rm conf/customized_config.yaml
|
||||
echo ".customized_config_path should exits"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# check if the custom config is used
|
||||
code=$(curl -k -i -m 20 -o /dev/null -s -w %{http_code} https://127.0.0.1:9180/apisix/admin/routes -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1")
|
||||
if [ ! $code -eq 200 ]; then
|
||||
rm conf/customized_config.yaml
|
||||
echo "failed: customized config.yaml not be used"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
make stop
|
||||
|
||||
# check if .customized_config_path has been removed
|
||||
if [ -e conf/.customized_config_path ]; then
|
||||
rm conf/customized_config_path.yaml
|
||||
echo ".customized_config_path should be removed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# start with invalied config
|
||||
echo "abc" > conf/customized_config.yaml
|
||||
|
||||
if ./bin/apisix start -c conf/customized_config.yaml ; then
|
||||
rm conf/customized_config.yaml
|
||||
echo "start should be failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# check if apisix can be started use correctly default config. (https://github.com/apache/apisix/issues/9700)
|
||||
./bin/apisix start
|
||||
sleep 1
|
||||
admin_key=$(yq '.deployment.admin.admin_key[0].key' conf/config.yaml | sed 's/"//g')
|
||||
echo "look here" $admin_key
|
||||
code=$(curl -k -i -m 20 -o /dev/null -s -w %{http_code} http://127.0.0.1:9180/apisix/admin/routes -H "X-API-KEY: $admin_key")
|
||||
if [ ! $code -eq 200 ]; then
|
||||
rm conf/customized_config.yaml
|
||||
echo "failed: should use default config"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
make stop
|
||||
|
||||
# check if apisix can be started after multiple start failures. (https://github.com/apache/apisix/issues/9171)
|
||||
echo "
|
||||
deployment:
|
||||
admin:
|
||||
admin_listen:
|
||||
port: 9180
|
||||
https_admin: true
|
||||
admin_api_mtls:
|
||||
admin_ssl_cert: '../t/certs/apisix_admin_ssl.crt'
|
||||
admin_ssl_cert_key: '../t/certs/apisix_admin_ssl.key'
|
||||
etcd:
|
||||
host:
|
||||
- http://127.0.0.1:22379
|
||||
" > conf/customized_config.yaml
|
||||
|
||||
./bin/apisix start -c conf/customized_config.yaml || true
|
||||
./bin/apisix start -c conf/customized_config.yaml || true
|
||||
./bin/apisix start -c conf/customized_config.yaml || true
|
||||
|
||||
echo "
|
||||
deployment:
|
||||
admin:
|
||||
admin_listen:
|
||||
port: 9180
|
||||
https_admin: true
|
||||
admin_api_mtls:
|
||||
admin_ssl_cert: '../t/certs/apisix_admin_ssl.crt'
|
||||
admin_ssl_cert_key: '../t/certs/apisix_admin_ssl.key'
|
||||
admin_key_required: true # Enable Admin API authentication by default for security.
|
||||
admin_key:
|
||||
-
|
||||
name: admin # admin: write access to configurations.
|
||||
key: edd1c9f034335f136f87ad84b625c8f1
|
||||
role: admin
|
||||
" > conf/customized_config.yaml
|
||||
|
||||
./bin/apisix start -c conf/customized_config.yaml
|
||||
|
||||
code=$(curl -k -i -m 20 -o /dev/null -s -w %{http_code} https://127.0.0.1:9180/apisix/admin/routes -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1")
|
||||
if [ ! $code -eq 200 ]; then
|
||||
rm conf/customized_config.yaml
|
||||
echo "failed: should use default config"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm conf/customized_config.yaml
|
||||
echo "passed: test customized config successful"
|
||||
|
||||
# test quit command
|
||||
bin/apisix start
|
||||
|
||||
if ! ps -ef | grep "apisix" | grep "master process" | grep -v "grep"; then
|
||||
echo "apisix not started"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
bin/apisix quit
|
||||
|
||||
sleep 2
|
||||
|
||||
if ps -ef | grep "worker process is shutting down" | grep -v "grep"; then
|
||||
echo "all workers should exited"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "passed: test quit command successful"
|
||||
|
||||
# test reload command
|
||||
bin/apisix start
|
||||
|
||||
if ! ps -ef | grep "apisix" | grep "master process" | grep -v "grep"; then
|
||||
echo "apisix not started"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
bin/apisix reload
|
||||
|
||||
sleep 3
|
||||
|
||||
if ps -ef | grep "worker process is shutting down" | grep -v "grep"; then
|
||||
echo "old workers should exited"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "passed: test reload command successful"
|
Reference in New Issue
Block a user