Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 17 additions & 14 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -221,28 +221,31 @@ performance-test: ## Run performance tests
$(CONTAINER_CLITOOL) run -v ${PWD}:/home/nginx/$(CONTAINER_VOLUME_FLAGS) --rm nginx-agent-benchmark:1.0.0

integration-test:
PACKAGES_REPO=${OSS_PACKAGES_REPO} INSTALL_FROM_REPO=${INSTALL_FROM_REPO} PACKAGE_NAME=${PACKAGE_NAME} BASE_IMAGE=${BASE_IMAGE} IMAGE_PATH=$(IMAGE_PATH) TAG=${IMAGE_TAG} \
OS_VERSION=${OS_VERSION} OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} DOCKERFILE_PATH=$(DOCKERFILE_PATH) \
PACKAGES_REPO=${OSS_PACKAGES_REPO} INSTALL_FROM_REPO=${INSTALL_FROM_REPO} PACKAGE_NAME=${PACKAGE_NAME} BASE_IMAGE=${BASE_IMAGE} IMAGE_PATH=${IMAGE_PATH} TAG=${IMAGE_TAG} \
OS_VERSION=${OS_VERSION} OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} DOCKERFILE_PATH=${DOCKERFILE_PATH} \
${GOTEST} -v ./test/integration/install
PACKAGES_REPO=${OSS_PACKAGES_REPO} INSTALL_FROM_REPO=${INSTALL_FROM_REPO} PACKAGE_NAME=${PACKAGE_NAME} BASE_IMAGE=${BASE_IMAGE} BUILD_TARGET="install-agent-local" IMAGE_PATH=$(IMAGE_PATH) TAG=${IMAGE_TAG} \
OS_VERSION=${OS_VERSION} OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} DOCKERFILE_PATH=$(DOCKERFILE_PATH) \
PACKAGES_REPO=${OSS_PACKAGES_REPO} INSTALL_FROM_REPO=${INSTALL_FROM_REPO} PACKAGE_NAME=${PACKAGE_NAME} BASE_IMAGE=${BASE_IMAGE} BUILD_TARGET="install-agent-local" IMAGE_PATH=${IMAGE_PATH} TAG=${IMAGE_TAG} \
OS_VERSION=${OS_VERSION} OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} DOCKERFILE_PATH=${DOCKERFILE_PATH} \
${GOTEST} -v ./test/integration/api
PACKAGES_REPO=${OSS_PACKAGES_REPO} INSTALL_FROM_REPO=${INSTALL_FROM_REPO} PACKAGE_NAME=${PACKAGE_NAME} BASE_IMAGE=${BASE_IMAGE} BUILD_TARGET="install-agent-local" IMAGE_PATH=$(IMAGE_PATH) TAG=${IMAGE_TAG} \
OS_VERSION=${OS_VERSION} OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} DOCKERFILE_PATH=$(DOCKERFILE_PATH) \
PACKAGES_REPO=${OSS_PACKAGES_REPO} INSTALL_FROM_REPO=${INSTALL_FROM_REPO} PACKAGE_NAME=${PACKAGE_NAME} BASE_IMAGE=${BASE_IMAGE} BUILD_TARGET="install-agent-local" IMAGE_PATH=${IMAGE_PATH} TAG=${IMAGE_TAG} \
OS_VERSION=${OS_VERSION} OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} DOCKERFILE_PATH=${DOCKERFILE_PATH} \
${GOTEST} -v ./test/integration/features
PACKAGES_REPO=${OSS_PACKAGES_REPO} INSTALL_FROM_REPO=${INSTALL_FROM_REPO} PACKAGE_NAME=${PACKAGE_NAME} BASE_IMAGE=${BASE_IMAGE} BUILD_TARGET="install-agent-local" IMAGE_PATH=$(IMAGE_PATH) TAG=${IMAGE_TAG} \
OS_VERSION=${OS_VERSION} OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} DOCKERFILE_PATH=$(DOCKERFILE_PATH) \
PACKAGES_REPO=${OSS_PACKAGES_REPO} INSTALL_FROM_REPO=${INSTALL_FROM_REPO} PACKAGE_NAME=${PACKAGE_NAME} BASE_IMAGE=${BASE_IMAGE} BUILD_TARGET="install-agent-local" IMAGE_PATH=${IMAGE_PATH} TAG=${IMAGE_TAG} \
OS_VERSION=${OS_VERSION} OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} DOCKERFILE_PATH=${DOCKERFILE_PATH} \
${GOTEST} -v ./test/integration/grpc
PACKAGES_REPO=${OSS_PACKAGES_REPO} INSTALL_FROM_REPO=${INSTALL_FROM_REPO} PACKAGE_NAME=${PACKAGE_NAME} BASE_IMAGE=${BASE_IMAGE} BUILD_TARGET="install-agent-local" IMAGE_PATH=${IMAGE_PATH} TAG=${IMAGE_TAG} \
OS_VERSION=${OS_VERSION} OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} DOCKERFILE_PATH=${DOCKERFILE_PATH} \
${GOTEST} -v ./test/integration/upgrade

official-image-integration-test:
PACKAGES_REPO=${OSS_PACKAGES_REPO} PACKAGE_NAME=${PACKAGE_NAME} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} BASE_IMAGE=${BASE_IMAGE} IMAGE_PATH=$(IMAGE_PATH) TAG=${TAG} ARCH=${OSARCH} OS_VERSION=${OS_VERSION} BUILD_TARGET="install" \
OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} DOCKERFILE_PATH=$(OFFICIAL_IMAGE_DOCKERFILE_PATH) \
PACKAGES_REPO=${OSS_PACKAGES_REPO} PACKAGE_NAME=${PACKAGE_NAME} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} BASE_IMAGE=${BASE_IMAGE} IMAGE_PATH=${IMAGE_PATH} TAG=${TAG} ARCH=${OSARCH} OS_VERSION=${OS_VERSION} BUILD_TARGET="install" \
OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} DOCKERFILE_PATH=${OFFICIAL_IMAGE_DOCKERFILE_PATH} \
${GOTEST} -v ./test/integration/features
PACKAGES_REPO=${OSS_PACKAGES_REPO} PACKAGE_NAME=${PACKAGE_NAME} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} BASE_IMAGE=${BASE_IMAGE} IMAGE_PATH=$(IMAGE_PATH) TAG=${TAG} ARCH=${OSARCH} OS_VERSION=${OS_VERSION} BUILD_TARGET="install" \
OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} DOCKERFILE_PATH=$(OFFICIAL_IMAGE_DOCKERFILE_PATH) \
PACKAGES_REPO=${OSS_PACKAGES_REPO} PACKAGE_NAME=${PACKAGE_NAME} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} BASE_IMAGE=${BASE_IMAGE} IMAGE_PATH=${IMAGE_PATH} TAG=${TAG} ARCH=${OSARCH} OS_VERSION=${OS_VERSION} BUILD_TARGET="install" \
OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} DOCKERFILE_PATH=${OFFICIAL_IMAGE_DOCKERFILE_PATH} \
${GOTEST} -v ./test/integration/grpc
PACKAGES_REPO=${OSS_PACKAGES_REPO} PACKAGE_NAME=${PACKAGE_NAME} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} BASE_IMAGE=${BASE_IMAGE} IMAGE_PATH=$(IMAGE_PATH) TAG=${TAG} ARCH=${OSARCH} OS_VERSION=${OS_VERSION} BUILD_TARGET="install" \
OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} DOCKERFILE_PATH=$(OFFICIAL_IMAGE_DOCKERFILE_PATH) \
PACKAGES_REPO=${OSS_PACKAGES_REPO} PACKAGE_NAME=${PACKAGE_NAME} CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} BASE_IMAGE=${BASE_IMAGE} IMAGE_PATH=${IMAGE_PATH} TAG=${TAG} ARCH=${OSARCH} OS_VERSION=${OS_VERSION} BUILD_TARGET="install" \
OS_RELEASE=${OS_RELEASE} CONTAINER_OS_TYPE=${CONTAINER_OS_TYPE} DOCKERFILE_PATH=${OFFICIAL_IMAGE_DOCKERFILE_PATH} \
${GOTEST} -v ./test/integration/api

test-performance-run: ## Run benchmark performance tests
Expand Down
12 changes: 0 additions & 12 deletions scripts/workflow/generate_results.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,9 @@ DURATION=$(echo "$END_SECONDS - $START_SECONDS" | bc)

MSG="" # individual test msg
FAIL_MSG="" # msg for entire job run
RESULT=""
HAS_FAILED=false
IS_RUNNING=false

load_job_status(){
if [ "$JOB_RESULT" == "success" ]; then
RESULT="pass"
elif [ "$JOB_RESULT" == "failure" ]; then
RESULT="fail"
else
RESULT="skip"
fi
}

format_logs_to_json(){
line="$1"
json="{"
Expand Down Expand Up @@ -110,6 +99,5 @@ format_results(){

# Main body of the script
{
load_job_status
format_results
}
6 changes: 3 additions & 3 deletions test/docker/nginx-official-image/deb/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ ARG CONTAINER_OS_TYPE
WORKDIR /agent
COPY ./build/${PACKAGE_NAME}.${CONTAINER_OS_TYPE} /agent/build/${PACKAGE_NAME}.${CONTAINER_OS_TYPE}

RUN apt-get update \
&& apt install --no-install-recommends --no-install-suggests --allow-downgrades -y /agent/build/${PACKAGE_NAME}.${CONTAINER_OS_TYPE} \
&& rm /agent/build/${PACKAGE_NAME}.${CONTAINER_OS_TYPE}
RUN apt-get update \
&& apt install --no-install-recommends --no-install-suggests --allow-downgrades -y /agent/build/${PACKAGE_NAME}.${CONTAINER_OS_TYPE} \
&& rm /agent/build/${PACKAGE_NAME}.${CONTAINER_OS_TYPE}

RUN unlink /var/log/nginx/access.log
RUN unlink /var/log/nginx/error.log
1 change: 0 additions & 1 deletion test/docker/nginx-oss/deb/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ RUN set -x \
lsb-release \
procps \
nginx

# Setup nginx agent repository
RUN curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null \
&& printf "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://${PACKAGES_REPO}/nginx-agent/${OS_RELEASE}/ `lsb_release -cs` agent\n" > /etc/apt/sources.list.d/nginx-agent.list
Expand Down
8 changes: 6 additions & 2 deletions test/docker/nginx-oss/rpm/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,15 @@ RUN if [ "$OS_VERSION" = "2" ] && [ "$OS_RELEASE" = "amazonlinux" ]; \
fi

RUN if [ "$OS_RELEASE" = "amazonlinux" ]; \
then yum install -y shadow-utils; \
then yum install -y shadow-utils && yum install -y findutils; \
fi

RUN if [ "$OS_RELEASE" = "centos" ] && [ "$OS_VERSION" = "7" ]; \
then yum install -y epel-release; \
fi

RUN if [ "$OS_RELEASE" = "rockylinux" ] && [ "$OS_VERSION" = "8" ]; \
then yum install -y findutils; \
fi

RUN if [ "$OS_RELEASE" = "redhatenterprise" ] && [ "$OS_VERSION" != "9" ]; \
Expand Down Expand Up @@ -87,7 +91,7 @@ FROM install-nginx as install-agent-local

ARG PACKAGE_NAME

RUN yum localinstall -y /agent/build/${PACKAGE_NAME}.rpm
RUN yum localinstall -y /agent/build/$PACKAGE_NAME.rpm


FROM install-nginx as install-agent-repo
Expand Down
49 changes: 49 additions & 0 deletions test/integration/upgrade/nginx-oss.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'"$bytes_sent" "$request_length" "$request_time" '
'"$gzip_ratio" $server_protocol ';

access_log /var/log/nginx/access.log main;

sendfile on;
keepalive_timeout 65;

server {
listen 8080;
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}

##
# Enable Metrics
##
location /api {
stub_status;
allow 127.0.0.1;
deny all;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
49 changes: 49 additions & 0 deletions test/integration/upgrade/nginx-plus.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'"$bytes_sent" "$request_length" "$request_time" '
'"$gzip_ratio" $server_protocol ';

access_log /var/log/nginx/access.log main;

sendfile on;
keepalive_timeout 65;

server {
listen 8080;
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}

##
# Enable Metrics
##
location /api/ {
api write=on;
allow 127.0.0.1;
deny all;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
57 changes: 57 additions & 0 deletions test/integration/upgrade/test_configs/nginx-agent.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#
# /etc/nginx-agent/nginx-agent.conf
#
# Configuration file for NGINX Agent.
#
# This file is to track NGINX Agent configuration values that are meant to be statically set. There
# are additional NGINX Agent configuration values that are set via the API and NGINX Agent install script
# which can be found in /var/lib/nginx-agent/agent-dynamic.conf.

log:
# set log level (panic, fatal, error, info, debug, trace; default "info")
level: info
# set log path. if empty, don't log to file.
path: /var/log/nginx-agent/
# data plane status message / 'heartbeat'
nginx:
# path of NGINX logs to exclude
exclude_logs: ""
socket: "unix:/var/run/nginx-agent/nginx.sock"

server:
host: 127.0.0.1
grpcPort: 9091
token: ""
tls:
enable: true
skip_verify: true

dataplane:
status:
# poll interval for data plane status - the frequency the NGINX Agent will query the dataplane for changes
poll_interval: 30s
# report interval for data plane status - the maximum duration to wait before syncing dataplane information if no updates have being observed
report_interval: 24h

metrics:
# specify the size of a buffer to build before sending metrics
bulk_size: 20
# specify metrics poll interval
report_interval: 1m
collection_interval: 15s
mode: aggregated

# OSS NGINX default config path
# path to aux file dirs can also be added
config_dirs: "/etc/nginx:/usr/local/etc/nginx:/usr/share/nginx/modules:/etc/nms"

# api:
# The port at which NGINX Agent accepts remote connections
# The API address and port allow for remote management of NGINX and NGINX Agent
#
# ~~~ WARNING ~~~
# Set API address to allow remote management
# host: 127.0.0.1
#
# Set this value to a secure port number to prevent information leaks.
# port: 8038
22 changes: 22 additions & 0 deletions test/integration/upgrade/test_configs/valid-v3-nginx-agent.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# /etc/nginx-agent/nginx-agent.conf

log:
level: info
path: /var/log/nginx-agent/

allowed_directories:
- /etc/nginx
- /usr/local/etc/nginx
- /usr/share/nginx/modules
- /etc/nms
- /var/log/nginx
- /etc/app_protect

command:
server:
host: 127.0.0.1
port: 443
auth:
token:
tls:
skip_verify: false
Loading
Loading