summaryrefslogtreecommitdiffstats
path: root/plugins/tests
AgeCommit message (Collapse)AuthorFilesLines
19 hoursadd proxy argument and improve dns cache usage (#2209)inqrphl1-3/+132
* add proxy argument and improve dns cache usage add proxy argument that useing the -x and --proxy argument. add it to the static curl config struct, command usage and help outputs of the cli. parse these argument together with the environment variables like http_proxy before setting the CURLOPT_PROXY in the curl configuration option. this is required, as there is no easy way to ascertain/get what the CURLOPT_PROXY that libcurl will use. by the point it is set by libcurl, we have no control over it anymore, and need it for the other steps in the configuration. if the CURLOPT_PROXY is set, skip the DNS cache population which would set the CURLOPT_RESOLVE. this is currently not perfect however. if a proxy is set with socks4 or socks5 scheme, the host should be resolving the hostname. * codespell, clang-format and hints fixes * add curl version and ssl enabelement macro checks might fix rocky linux 8 compilation issues. * add proxy_resolves_hostname, determined by proxy scheme leave the functions that print out an curl_easyoption, but dont use it. organize the code slightly, print out the final CURLOPT_PROXY and proxy_resolves_hostname flag on verbose mode, add comments * remove unused handle_curl_easyoption and format_curl_easyoption functions * fix typo in the proxy argument * fix typo with proxy scheme socks5a->socks5h * improve proxy environment parsing add another argument: --no-proxy , which is used when setting CURL_NOPROXY additionally parse all_proxy, ALL_PROXY, no_proxy and NO_PROXY environment variables in the correct order. set the curlopt_proxy and curlopt_noproxy of libcurl, and additionally save them in check_curl_working_state. add function determine_hostname_resolver, uses the working state and static config. it can tokenize the no_proxy variable and check for exact matches, but cannot determine subnet matches for ip addresses yet. * document proxy cli arguments clarify and add more examples of proxy environment variables and their behavior when multiple are specified, overriden etc. add single wildcard '*' checking for no_proxy to determine_hostname_resolver, special case per curlopt_noproxy documentation * check curlopt_noproxy before accessing it * switch argument from --no-proxy to --noproxy like curl cli * check if host name is a subdomain of an noproxy item * use strdup where destination working_state.curlopt_proxy may be NULL * add disclaimer about uppercase HTTP_PROXY * add subdomain checks for each item in the no_proxy, if the target host is a subdomain proxy wont resolve it add function ip_addr_inside_cidr, use it for checking possible cidr ranges given in the no_proxy * wip tests that work on local perl http/https server * wip tests that work on the live debian image * fix subnet definition * make apache2 listen on [::1] for ipv6 tests * remove squid certificate * rewrite ip_addr_inside_cidr, split ipv4 and ipv6 parsing path and copy them to a shared buffer later on for prefix check * Adapt tests for the squid sever, disable checking return code for socks 4/5 proxies. Squid does not support it, and we do not install a capable proxy for these schemes. * specify localhost acl and allow it through the proxy. used in check_curl tests * typo in comment * move function comments to header * fix failing tests * handle case where proxy is set as empty string * removed duplicate tests, corrected wrong comments * corrected some annotations * move docker apache subdomain setup files to /tools/subdomain1 * add a newline before dying in handle_curl_option_return_code * fix the -ssl better, now does not segfault on empty --ssl argument as well. --------- Co-authored-by: Ahmet Oeztuerk <Ahmet.Oeztuerk@consol.de>
2025-12-12check_curl redirection test improvementsAhmet Oeztuerk1-46/+20
previously, the fragment was sent in the request from client, and the server would parse and increment its value. the incremented value would be set in the redirected URI. this does not work as fragments are meaningless to servers and clients like check_curl strip them in their GET request. rewrite the fragment handling . if client sends a URI parameter with 'fragment' as its key, the server will set its value for its redirected URI. it will come up both as a parameter and the fragment at the end. use this new logic to rewrite the fragment redirection test. remove -p $http_port argument on tests for this endpoint, which was making https tests fail. correct the common test count from 75 to 95, as there are 20 total test assertions in the 8 times it uses the new endpoint. remove unused code on that endpoint as well
2025-12-11clairfy new check_curl testsAhmet Oeztuerk1-10/+24
use the parameters in the last redirected URI that that server returns HTTP OK to. matches the incrementation count of redirection_count from 0 to 3, as they also get incremented three times alongside it. add comments about what is happening in the test cases, no need to understand the endpoint completely
2025-12-10fix typosAhmet Oeztuerk1-4/+4
2025-12-09check_curl add tests for uri field parsingAhmet Oeztuerk1-1/+193
plugins/tests/check_curl.t forks and runs a http(s) server that responds to specific uri endpoints. Added another endpoint under /redirect_with_increment with dynamic redirection points. This endpoint will parse different parts of the uri that come after the path: parameters, query and the fragment. If applicable, seperate elements within each field are parsed into key/value pairs. value is incremented in redirected URI. Tests if check_url redirection logic retains different parts of the url when parsing the uri and building the new redirected URL. Current tests show that it ignores the fragment part.
2025-12-03Remove check_nt (#2195)Lorenz Kästle1-80/+0
check_nt was used to connect NSclient++ on windows, both the method and the target are pretty much dead. Therefor check_nt gets removed.
2025-09-15Run clang-format againLorenz Kästle2-19/+33
2025-09-15Fix/adapt testsLorenz Kästle1-2/+2
2025-09-13check_curl: test adaption and output adaptionLorenz Kästle1-44/+45
2025-09-08check_snmp: refactoring + fixesLorenz Kästle4-92/+326
This commit moves the state retention logic to check_snmp as it is only used there and I do not want it to be used at all, so it doesn't get a place in the lib. Otherwise this adapts tests and fixes the rate computing in the refactored version of check_snmp. Also fixes some bugs detected with the tests
2025-09-08snmp: fix complaint of snmpd about pathsLorenz Kästle1-1/+1
2025-03-30Address check_disk changes in testsLorenz Kästle1-32/+35
2025-03-18Refactor test_check_disk.cLorenz Kästle1-42/+44
2025-03-18Migrate disk tests from lib, toolLorenz Kästle2-0/+198
2024-11-10test_check_swap: declare verbose in tests for nowLorenz Kästle1-0/+2
2024-11-10test_check_swap: improvements and updates to unit test codeLorenz Kästle1-6/+4
2024-11-02Merge branch 'master' into check_swap_againLorenz Kästle2-4/+22
2024-07-30check_curl: fix relative redirects on non-standard portSven Nierlein2-4/+22
Having a webserver respond with a relative redirect as for ex. in `Location: /path/to.html` check_curl would use the wrong standard http/https port instead of crafting the absolute url using the given scheme/hostname and port. Adding a new test case for this for check_http and check_curl. check_http did it correct already, so no fix necessary there. before: %>./check_curl -H 127.0.0.1 -p 50493 -f follow -u /redirect_rel -s redirected -vvv **** HEADER **** HTTP/1.1 302 Found ... Location: /redirect2 ... * Seen redirect location /redirect2 ** scheme: (null) ** host: (null) ** port: (null) ** path: /redirect2 Redirection to http://127.0.0.1:80/redirect2 fixed: %>./check_curl -H 127.0.0.1 -p 50493 -f follow -u /redirect_rel -s redirected -vvv **** HEADER **** HTTP/1.1 302 Found ... Location: /redirect2 ... * Seen redirect location /redirect2 ** scheme: (null) ** host: (null) ** port: (null) ** path: /redirect2 Redirection to http://127.0.0.1:50493/redirect2 Signed-off-by: Sven Nierlein <sven@nierlein.de>
2024-01-04Fix testsRincewindsHat3-5/+4
2023-12-20Add test proc/meminfo file and corresponding testRincewindsHat2-2/+60
2023-12-20Implement first unit test for check_swapRincewindsHat2-0/+27
2023-10-03Fix some more typosRincewindsHat1-1/+1
2023-04-14Fix a lot of typos reported by codespellJan Wagner1-2/+2
2023-03-21check_procs: add a test for the newly added -X option.Christian Kujau1-2/+6
$ make test [...] perl -I .. -I .. ../test.pl No application (check_curl) found for test harness (check_curl.t) No application (check_snmp) found for test harness (check_snmp.t) ./t/check_procs.t ...... ok ./tests/check_nt.t ..... ok ./tests/check_procs.t .. ok All tests successful. Files=4, Tests=73, 8 wallclock secs ( 0.05 usr 0.02 sys + 0.38 cusr 0.22 csys = 0.67 CPU) Result: PASS Signed-off-by: Christian Kujau <lists@nerdbynature.de>
2023-02-06check_http: Implement special case test for zero size chunk onlyRincewindsHat1-1/+69
2023-01-07tests: fix chunked encoding test serverSven Nierlein2-20/+16
2023-01-07check_http/check_curl: add chunked encoding testSven Nierlein2-2/+34
2022-12-22check_snmp: always apply format when applying multiplierSven Nierlein1-1/+1
2022-12-22Improve tests for check_snmp & multiply optionRobert Bohne2-9/+19
2022-12-22add 'multiplier' to modify current valueWolfgang Nieder1-3/+9
2022-01-30sslutils: use chain from client certificatesTobias Wiese17-203/+537
sslutils used to load only the first certificate when it was given a client certificate file. Added tests for check_http to connect to a http server that expects a client certificate (simple and with chain). Signed-off-by: Tobias Wiese <tobias@tobiaswiese.com>
2021-11-17Merge pull request #1654 from wolfgangkarall/masterRincewindsHat1-1/+1
check_procs -- exchange needle and haystack in strstr() for proper st…
2021-11-17check_snmp: fix performance thresholds when using multiple oidsSven Nierlein1-3/+14
when using check_snmp with multiple oids it simply printed the unparsed content from -w/-c into the thresholds for each oid. So each oid contained the hole -w from all oids. ./check_snmp ... -o iso.3.6.1.2.1.25.1.3.0,iso.3.6.1.2.1.25.1.5.0 -w '1,2' -c '3,4' before: SNMP ... | HOST-RESOURCES-MIB::hrSystemInitialLoadDevice.0=393216;1,2;3,4 HOST-RESOURCES-MIB::hrSystemNumUsers.0=24;1,2;3,4 after: SNMP ... | HOST-RESOURCES-MIB::hrSystemInitialLoadDevice.0=393216;1;3 HOST-RESOURCES-MIB::hrSystemNumUsers.0=24;2;4 This also applies to fixed thresholds since check_snmp translates negative infinities from: '~:-1' to '@-1:~'
2021-11-01check_procs: add test for elapsed timeSven Nierlein2-2/+230
2021-11-01remove unused test fileSven Nierlein1-84/+0
Signed-off-by: Sven Nierlein <sven@nierlein.de>
2021-11-01check_procs: improve ps args autodetectionSven Nierlein1-4/+7
one of the first ps commands in the configure.ac is `axwo 'stat comm vsz rss user uid pid ppid args'` which works on most modern linux systems (checked debian 10/11 and centos 7/8). But this test misses the etime argument. Therefore `check_procs --metric=ELAPSED` does not work. To fix this, we simply do the same test including etime before that one. Signed-off-by: Sven Nierlein <sven@nierlein.de>
2021-05-20tests: ignore sigpipes in https test daemonSven Nierlein1-4/+8
check_http closes the connection after checking the certificate with -C. This leads to sigpipe errors when the ssl daemon wants to send a response and the daemon quits which makes the subsequent tests fail.
2021-05-20tests: increase startup sleepSven Nierlein2-4/+6
github action might fail from to time otherwise
2021-03-11fix check_curl crash if http header contains leading spacesSven Nierlein1-3/+13
check_curl crashes when a (broken) http server returns invalid http header with leading spaces or double colons. This PR adds a fix and a test case for this. Signed-off-by: Sven Nierlein <sven@nierlein.de>
2021-01-03check_procs -- update test data tooWolfgang Karall-Ahlborn1-1/+1
2020-05-15merge test changes from check_httpSven Nierlein1-10/+11
the example certificate has changed since.
2020-05-15tests: update expired test certificateSven Nierlein3-35/+53
the certificate used to test expired http checks is to old to be used with recent ssl libraries and results in: > SSL routines:SSL_CTX_use_certificate:ee key too small unfortunatly the error is only visible when setting $IO::Socket::SSL::DEBUG in the check_http.t file.
2019-04-04Merge branch 'master' into feature_check_curlAndreas Baumann4-94/+116
2019-02-19renew test certificatesSven Nierlein3-42/+58
Signed-off-by: Sven Nierlein <sven@nierlein.de>
2019-01-21tests: make check_snmp test more reliableSven Nierlein1-52/+58
The check_snmp rate tests depend on the exact amount of time spend between the plugin runs and will fail on busy machines, ex. the ci servers. Using faketime mitigates this issue and also removes all the sleeps. Signed-off-by: Sven Nierlein <sven@nierlein.de>
2018-10-22added some advanced tests for check_curlChristopher Odenbach1-19/+61
2018-10-22synched tests/check_http.t test changes (virtualhost) into tests/check_curl.tAndreas Baumann1-2/+39
2018-10-22fixed test outputs for status line checksAndreas Baumann1-4/+4
handling empty data in POST and PUT handling data upload (from -P <postdata>) also in PUT
2018-10-22made check_curl tests copies of check_http tests because they will differ ↵Andreas Baumann1-1/+418
slightly
2018-10-22check_curl: make check_curl use the same tests as check_httpSven Nierlein2-3/+7