2019-06-17 21:08:17 +08:00
BEGIN {
if ( $ ENV { TEST_NGINX_CHECK_LEAK } ) {
$ SkipReason = "unavailable for the hup tests" ;
} else {
$ ENV { TEST_NGINX_USE_HUP } = 1 ;
undef $ ENV { TEST_NGINX_USE_STAP } ;
}
}
2019-09-10 09:42:55 +08:00
use t::APISIX 'no_plan' ;
2019-06-17 21:08:17 +08:00
repeat_each ( 1 ) ;
no_long_string ( ) ;
no_shuffle ( ) ;
no_root_location ( ) ;
run_tests ;
__DATA__
=== TEST 1 : sanity
- - - config
location / t {
content_by_lua_block {
local plugin = require ( "apisix.plugins.prometheus" )
local ok , err = plugin . check_schema ( { } )
if not ok then
ngx . say ( err )
end
ngx . say ( "done" )
}
}
- - - request
GET / t
- - - response_body
done
- - - no_error_log
[ error ]
=== TEST 2 : wrong value of key
- - - config
location / t {
content_by_lua_block {
local plugin = require ( "apisix.plugins.prometheus" )
local ok , err = plugin . check_schema ( {
invalid = "invalid"
} )
if not ok then
ngx . say ( err )
return
end
ngx . say ( "done" )
}
}
- - - request
GET / t
- - - response_body
invalid "additionalProperties" in docuement at pointer "#/invalid"
- - - no_error_log
[ error ]
=== TEST 3 : set it in route
- - - config
location / t {
content_by_lua_block {
local t = require ( "lib.test_admin" ) . test
local code , body = t ( '/apisix/admin/routes/1' ,
ngx . HTTP_PUT ,
[ [ {
"plugins" : {
"prometheus" : { }
} ,
"upstream" : {
"nodes" : {
"127.0.0.1:1980" : 1
} ,
"type" : "roundrobin"
} ,
"uri" : "/hello"
} ] ]
)
if code >= 300 then
ngx . status = code
end
ngx . say ( body )
}
}
- - - request
GET / t
- - - response_body
passed
- - - no_error_log
[ error ]
=== TEST 4 : fetch the prometheus metric data
- - - request
GET /apisix/ prometheus / metrics
- - - response_body_like
apisix_etcd_reachable 1
- - - no_error_log
[ error ]
=== TEST 5 : request from client ( all hit )
- - - pipelined_requests eval
[ "GET /hello" , "GET /hello" , "GET /hello" , "GET /hello" ]
- - - error_code eval
[ 200 , 200 , 200 , 200 ]
- - - no_error_log
[ error ]
=== TEST 6 : request from client ( part hit )
- - - pipelined_requests eval
[ "GET /hello1" , "GET /hello" , "GET /hello2" , "GET /hello" , "GET /hello" ]
- - - error_code eval
[ 404 , 200 , 404 , 200 , 200 ]
- - - no_error_log
[ error ]
=== TEST 7 : fetch the prometheus metric data
- - - request
GET /apisix/ prometheus / metrics
2019-06-19 12:41:38 +08:00
- - - response_body eval
2019-06-22 10:44:07 +08:00
qr/apisix_bandwidth\{type="egress",service="localhost"\} \d+/
2019-06-17 21:08:17 +08:00
- - - no_error_log
[ error ]
=== TEST 8 : set it in route ( with wrong property )
- - - config
location / t {
content_by_lua_block {
local t = require ( "lib.test_admin" ) . test
local code , body = t ( '/apisix/admin/routes/1' ,
ngx . HTTP_PUT ,
[ [ {
"plugins" : {
"prometheus" : {
"invalid_property" : 1
}
} ,
"upstream" : {
"nodes" : {
"127.0.0.1:1980" : 1
} ,
"type" : "roundrobin"
} ,
"uri" : "/hello"
} ] ]
)
if code >= 300 then
ngx . status = code
end
ngx . print ( body )
}
}
- - - request
GET / t
- - - error_code: 400
- - - response_body
{ "error_msg" : "failed to check the configuration of plugin prometheus err: invalid \"additionalProperties\" in docuement at pointer \"#\/invalid_property\"" }
- - - no_error_log
[ error ]
=== TEST 9 : set it in service ( with wrong property )
- - - config
location / t {
content_by_lua_block {
local t = require ( "lib.test_admin" ) . test
local code , body = t ( '/apisix/admin/services/1' ,
ngx . HTTP_PUT ,
[ [ {
"plugins" : {
"prometheus" : {
"invalid_property" : 1
}
} ,
"upstream" : {
"nodes" : {
"127.0.0.1:1980" : 1
} ,
"type" : "roundrobin"
}
} ] ]
)
if code >= 300 then
ngx . status = code
end
ngx . print ( body )
}
}
- - - request
GET / t
- - - error_code: 400
- - - response_body
{ "error_msg" : "failed to check the configuration of plugin prometheus err: invalid \"additionalProperties\" in docuement at pointer \"#\/invalid_property\"" }
- - - no_error_log
[ error ]
=== TEST 10 : set route without id in post body
- - - config
location / t {
content_by_lua_block {
local t = require ( "lib.test_admin" ) . test
local code , body = t ( '/apisix/admin/routes/1' ,
ngx . HTTP_PUT ,
[ [ {
"methods" : [ "GET" ] ,
"plugins" : {
"prometheus" : {
}
} ,
"upstream" : {
"nodes" : {
"127.0.0.1:1980" : 1
} ,
"type" : "roundrobin"
} ,
"uri" : "/hello"
} ] ]
)
if code >= 300 then
ngx . status = code
end
ngx . say ( body )
}
}
- - - request
GET / t
- - - response_body
passed
- - - no_error_log
[ error ]
=== TEST 11 : pipeline of client request
- - - pipelined_requests eval
[ "GET /hello" , "GET /not_found" , "GET /hello" , "GET /hello" ]
- - - error_code eval
[ 200 , 404 , 200 , 200 ]
- - - no_error_log
[ error ]
=== TEST 12 : fetch the prometheus metric data
- - - request
GET /apisix/ prometheus / metrics
2019-06-19 12:41:38 +08:00
- - - response_body eval
2019-06-22 10:44:07 +08:00
qr/apisix_bandwidth\{type="egress",service="localhost"\} \d+/
2019-06-17 21:08:17 +08:00
- - - no_error_log
[ error ]