3
0
mirror of https://github.com/rvalitov/zabbix-php-fpm.git synced 2023-11-05 03:30:27 +01:00

Feature: tests to support older Ubuntu 14 & 16 (#46)

This commit is contained in:
Ramil Valitov 2020-07-21 06:26:29 +03:00 committed by GitHub
parent c129bf941f
commit 6355c13658
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 144 additions and 20 deletions

View File

@ -3,6 +3,54 @@ language: bash
jobs:
include:
- os: linux
dist: trusty
name: "Zabbix 4.0 @ Ubuntu 14 trusty, PHP default"
arch: amd64
addons:
apt:
sources:
- sourceline: 'deb http://repo.zabbix.com/zabbix/4.0/ubuntu trusty main'
key_url: "https://repo.zabbix.com/zabbix-official-repo.key"
packages:
- ca-certificates
- curl
- grep
- sed
- gawk
- lsof
- jq
- libfcgi0ldbl
- unzip
- zabbix-agent
- zabbix-get
- php5-fpm
before_script:
- sudo curl -o /usr/local/bin/shunit2 https://raw.githubusercontent.com/kward/shunit2/master/shunit2
- os: linux
dist: xenial
name: "Zabbix 4.0 @ Ubuntu 16 xenial, PHP default"
arch: amd64
addons:
apt:
sources:
- sourceline: 'deb http://repo.zabbix.com/zabbix/4.0/ubuntu xenial main'
key_url: "https://repo.zabbix.com/zabbix-official-repo.key"
packages:
- ca-certificates
- curl
- grep
- sed
- gawk
- lsof
- jq
- libfcgi0ldbl
- unzip
- zabbix-agent
- zabbix-get
- php-fpm
before_script:
- sudo curl -o /usr/local/bin/shunit2 https://raw.githubusercontent.com/kward/shunit2/master/shunit2
- os: linux
dist: bionic
name: "Zabbix 4.0 @ Ubuntu 18 bionic, PHP default"

View File

@ -123,14 +123,25 @@ Please refer to [Wiki](https://github.com/rvalitov/zabbix-php-fpm/wiki/Installat
Please refer to [Wiki](https://github.com/rvalitov/zabbix-php-fpm/wiki/Testing-and-Troubleshooting).
# Compatibility
Should work with any version of PHP-FPM (starting with PHP 5.3.3), Zabbix 4.0.x and later.
Can work with any version of ISPConfig as long as you have a valid PHP-FPM status page configuration there.
Tested with:
- [Travis CI](https://travis-ci.com/rvalitov/zabbix-php-fpm)
- PHP 7.4, 7.3, 7.2, 7.1, 7.0
- Zabbix 5.0.1, 4.4.4, 4.2.5, 4.0.20, 4.0.16, 4.0.4
- Debian 10, 9
- Ubuntu 18
- CentOS 7
- ISPConfig v.3.1.14p2
### System requirements
- **PHP**. Should work with any version of PHP-FPM (starting with PHP 5.3.3)
- **Zabbix** 4.0.x and later.
- **ISPConfig**. Can work with any version of ISPConfig as long as you have a valid PHP-FPM status page configuration there.
- Minimal `bash` version 4.
- **OS**
- **Debian** 8 Jessie or newer
- **Ubuntu** 20 Focal, 18 Bionic, 16 Xenial, 14 Trusty. Other versions are supported if they are present in the [Zabbix repository](http://repo.zabbix.com/zabbix/4.0/ubuntu/dists/).
- **CentOS** 6 or newer
- **RHEL** 5 or newer
### Tested with:
- [**Travis CI**](https://travis-ci.com/rvalitov/zabbix-php-fpm)
- **PHP** 7.4, 7.3, 7.2, 7.1, 7.0
- **Zabbix** 5.0.1, 4.4.4, 4.2.5, 4.0.20, 4.0.16, 4.0.4
- **Debian** 10, 9
- **Ubuntu** 18 Bionic, 16 Xenial, 14 Trusty
- **CentOS** 7
- **ISPConfig** v.3.1.14p2

View File

@ -7,13 +7,53 @@ MAX_POOLS=3
MAX_PORTS=3
MIN_PORT=9000
function getPHPVersion() {
TEST_STRING=$1
PHP_VERSION=$(echo "$TEST_STRING" | grep -oP "(\d\.\d)")
if [[ -z "$PHP_VERSION" ]]; then
PHP_VERSION=$(echo "$TEST_STRING" | grep -oP "php(\d)" | grep -oP "(\d)")
fi
echo "$PHP_VERSION"
}
function getEtcPHPDirectory() {
LIST_OF_DIRS=(
"/etc/php/"
"/etc/php5/"
)
for PHP_TEST_DIR in "${LIST_OF_DIRS[@]}"; do
if [[ -d "$PHP_TEST_DIR" ]]; then
echo "$PHP_TEST_DIR"
return 0
fi
done
return 1
}
function getRunPHPDirectory() {
LIST_OF_DIRS=(
"/run/"
"/var/run/"
)
for PHP_TEST_DIR in "${LIST_OF_DIRS[@]}"; do
RESULT_DIR=$(find "$PHP_TEST_DIR" -name 'php*-fpm.sock' -type s -exec dirname {} \; 2>/dev/null | sort | head -n1)
if [[ -d "$RESULT_DIR" ]]; then
echo "$RESULT_DIR"
return 0
fi
done
return 1
}
copyPool() {
ORIGINAL_FILE=$1
POOL_NAME=$2
POOL_SOCKET=$3
POOL_TYPE=$4
POOL_DIR=$(dirname "${ORIGINAL_FILE}")
PHP_VERSION=$(echo "$POOL_DIR" | grep -oP "(\d\.\d)")
PHP_VERSION=$(getPHPVersion "$POOL_DIR")
NEW_POOL_FILE="$POOL_DIR/${POOL_NAME}.conf"
sudo cp "$ORIGINAL_FILE" "$NEW_POOL_FILE"
@ -31,7 +71,11 @@ copyPool() {
setupPool() {
POOL_FILE=$1
POOL_DIR=$(dirname "${POOL_FILE}")
PHP_VERSION=$(echo "$POOL_DIR" | grep -oP "(\d\.\d)")
PHP_VERSION=$(getPHPVersion "$POOL_DIR")
PHP_RUN_DIR=$(getRunPHPDirectory)
EXIT_CODE=$?
assertEquals "Failed to find PHP run directory" "0" "$EXIT_CODE"
#Delete all active pools except www.conf:
find "$POOL_DIR" -name '*.conf' -type f -not -name 'www.conf' -exec rm -rf {} \;
@ -44,7 +88,7 @@ setupPool() {
#Create new socket pools
for ((c = 1; c <= MAX_POOLS; c++)); do
POOL_NAME="socket$c"
POOL_SOCKET="/run/php/php${PHP_VERSION}-fpm-${POOL_NAME}.sock"
POOL_SOCKET="${PHP_RUN_DIR}php${PHP_VERSION}-fpm-${POOL_NAME}.sock"
copyPool "$POOL_FILE" "$POOL_NAME" "$POOL_SOCKET" "static"
done
@ -67,7 +111,11 @@ setupPool() {
}
setupPools() {
PHP_LIST=$(find /etc/php/ -name 'www.conf' -type f)
PHP_DIR=$(getEtcPHPDirectory)
EXIT_CODE=$?
assertEquals "Failed to find PHP directory" "0" "$EXIT_CODE"
PHP_LIST=$(find "$PHP_DIR" -name 'www.conf' -type f)
while IFS= read -r pool; do
if [[ -n $pool ]]; then
setupPool "$pool"
@ -76,17 +124,29 @@ setupPools() {
}
getNumberOfPHPVersions() {
PHP_COUNT=$(find /etc/php/ -name 'www.conf' -type f | wc -l)
PHP_DIR=$(getEtcPHPDirectory)
EXIT_CODE=$?
assertEquals "Failed to find PHP directory" "0" "$EXIT_CODE"
PHP_COUNT=$(find "$PHP_DIR" -name 'www.conf' -type f | wc -l)
echo "$PHP_COUNT"
}
getAnySocket() {
PHP_DIR=$(getEtcPHPDirectory)
EXIT_CODE=$?
assertEquals "Failed to find PHP directory" "0" "$EXIT_CODE"
PHP_RUN_DIR=$(getRunPHPDirectory)
EXIT_CODE=$?
assertEquals "Failed to find PHP run directory" "0" "$EXIT_CODE"
#Get any socket of PHP-FPM:
PHP_FIRST=$(find /etc/php/ -name 'www.conf' -type f | head -n1)
PHP_FIRST=$(find "$PHP_DIR" -name 'www.conf' -type f | sort | head -n1)
assertNotNull "Failed to get PHP conf" "$PHP_FIRST"
PHP_VERSION=$(echo "$PHP_FIRST" | grep -oP "(\d\.\d)")
assertNotNull "Failed to get PHP version" "$PHP_VERSION"
PHP_POOL=$(find /run/php/ -name "php${PHP_VERSION}*.sock" -type s | head -n1)
PHP_VERSION=$(getPHPVersion "$PHP_FIRST")
assertNotNull "Failed to get PHP version for $PHP_FIRST" "$PHP_VERSION"
PHP_POOL=$(find "$PHP_RUN_DIR" -name "php${PHP_VERSION}*.sock" -type s 2>/dev/null | sort | head -n1)
assertNotNull "Failed to get PHP${PHP_VERSION} socket" "$PHP_POOL"
echo "$PHP_POOL"
}
@ -107,7 +167,7 @@ oneTimeSetUp() {
#Install files:
sudo cp "$TRAVIS_BUILD_DIR/zabbix/zabbix_php_fpm_discovery.sh" "/etc/zabbix"
sudo cp "$TRAVIS_BUILD_DIR/zabbix/zabbix_php_fpm_status.sh" "/etc/zabbix"
sudo cp "$TRAVIS_BUILD_DIR/zabbix/userparameter_php_fpm.conf" "$(find /etc/zabbix/ -name 'zabbix_agentd*.d' -type d | head -n1)"
sudo cp "$TRAVIS_BUILD_DIR/zabbix/userparameter_php_fpm.conf" "$(find /etc/zabbix/ -name 'zabbix_agentd*.d' -type d | sort | head -n1)"
sudo chmod +x /etc/zabbix/zabbix_php_fpm_discovery.sh
sudo chmod +x /etc/zabbix/zabbix_php_fpm_status.sh

View File

@ -71,6 +71,11 @@ if [[ ! -f ${S_WHOAMI} ]]; then
exit 1
fi
if [[ "${BASH_VERSINFO:-0}" -lt 4 ]]; then
${S_ECHO} "This script requires bash version 4.x or newer. Older version detected."
exit 1
fi
STATUS_PATH="/php-fpm-status"
DEBUG_MODE=""
ACTIVE_USER=$(${S_WHOAMI})