From 454901d19a47405f6a7c712005a141946b71782d Mon Sep 17 00:00:00 2001 From: yseto Date: Fri, 26 Aug 2022 11:53:09 +0900 Subject: [PATCH] added test for plack --- mackerel-plugin-plack/rule.txt | 4 +++ mackerel-plugin-plack/test.sh | 37 +++++++++++++++++++++++ mackerel-plugin-plack/testdata/Dockerfile | 14 +++++++++ mackerel-plugin-plack/testdata/app.psgi | 20 ++++++++++++ mackerel-plugin-plack/testdata/cpanfile | 2 ++ 5 files changed, 77 insertions(+) create mode 100644 mackerel-plugin-plack/rule.txt create mode 100755 mackerel-plugin-plack/test.sh create mode 100644 mackerel-plugin-plack/testdata/Dockerfile create mode 100644 mackerel-plugin-plack/testdata/app.psgi create mode 100644 mackerel-plugin-plack/testdata/cpanfile diff --git a/mackerel-plugin-plack/rule.txt b/mackerel-plugin-plack/rule.txt new file mode 100644 index 000000000..ea89353f7 --- /dev/null +++ b/mackerel-plugin-plack/rule.txt @@ -0,0 +1,4 @@ +plack.workers.busy_workers >=0 +plack.workers.idle_workers >=0 +plack.req.requests >=0 +plack.bytes.bytes_sent >=0 diff --git a/mackerel-plugin-plack/test.sh b/mackerel-plugin-plack/test.sh new file mode 100755 index 000000000..663fc5b7b --- /dev/null +++ b/mackerel-plugin-plack/test.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +prog=$(basename "$0") +if ! [ -S /var/run/docker.sock ] +then + echo "$prog: there are no running docker" >&2 + exit 2 +fi + +cd "$(dirname "$0")" || exit +PATH=$(pwd):$PATH +plugin=$(basename "$(pwd)") +if ! which "$plugin" >/dev/null +then + echo "$prog: $plugin is not installed" >&2 + exit 2 +fi + +image=local/test-$plugin +port=5000 + +docker build -t $image testdata/ + +docker run --name "test-$plugin" -p $port:5000 -d $image +trap 'docker stop test-$plugin; docker rm test-$plugin; exit 1' 1 2 3 15 +sleep 10 + +# to store previous value to calculate a diff of metrics +$plugin -port $port >/dev/null 2>&1 +sleep 1 + +$plugin -port $port | graphite-metric-test -f rule.txt +status=$? + +docker stop "test-$plugin" +docker rm "test-$plugin" +exit $status diff --git a/mackerel-plugin-plack/testdata/Dockerfile b/mackerel-plugin-plack/testdata/Dockerfile new file mode 100644 index 000000000..c52818a90 --- /dev/null +++ b/mackerel-plugin-plack/testdata/Dockerfile @@ -0,0 +1,14 @@ +FROM perl:5.36 + +COPY . /usr/src/myapp +WORKDIR /usr/src/myapp + +RUN cpm install -v + +EXPOSE 5000 + +ENV PERL5LIB /usr/src/myapp/local/lib/perl5 +ENV PATH $PATH:/usr/src/myapp/local/bin/ + +CMD [ "plackup", "app.psgi" ] + diff --git a/mackerel-plugin-plack/testdata/app.psgi b/mackerel-plugin-plack/testdata/app.psgi new file mode 100644 index 000000000..2791122ee --- /dev/null +++ b/mackerel-plugin-plack/testdata/app.psgi @@ -0,0 +1,20 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use utf8; + +use Plack::Builder; + +builder { + enable "Plack::Middleware::ServerStatus::Lite", + path => '/server-status', + allow => [ '0.0.0.0/0' ], + counter_file => '/tmp/counter_file', + scoreboard => '/var/run/server'; + + sub { + [200, ["Content-Type" => "text/plain"], "ok"]; + } +}; + diff --git a/mackerel-plugin-plack/testdata/cpanfile b/mackerel-plugin-plack/testdata/cpanfile new file mode 100644 index 000000000..127182970 --- /dev/null +++ b/mackerel-plugin-plack/testdata/cpanfile @@ -0,0 +1,2 @@ +requires "Plack", ">= 1.0048"; +requires "Plack::Middleware::ServerStatus::Lite", "0.36";