Firstsawyou commented on a change in pull request #2326:
URL: https://github.com/apache/apisix/pull/2326#discussion_r495535756
##########
File path: t/core/ctx.t
##########
@@ -155,3 +155,264 @@ GET /t?a=aaa
--- error_code: 500
--- error_log
invalid argument, expect string value
+
+
+
+=== TEST 7: add route and get `route_id`
+--- 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": {
+ "serverless-pre-function": {
+ "phase": "access",
+ "functions" : ["return function() ngx.log(ngx.ERR,
\"route_id: \", ngx.ctx.api_ctx.route_id) end"]
+ }
+ },
+ "upstream": {
+ "type": "roundrobin",
+ "nodes": {
+ "127.0.0.1:1980": 1
+ }
+ },
+ "uri": "/hello"
+ }]],
+ [[{
+ "node": {
+ "value": {
+ "methods": [
+ "GET"
+ ],
+ "uri": "/hello",
+ "plugins": {
+ "serverless-pre-function": {
+ "phase": "access",
+ "functions" : ["return function()
ngx.log(ngx.ERR, \"route_id: \", ngx.ctx.api_ctx.route_id) end"]
+ }
+ },
+ "upstream": {
+ "type": "roundrobin",
+ "nodes": {
+ "127.0.0.1:1980": 1
+ }
+ }
+ },
+ "key": "/apisix/routes/1"
+ },
+ "action": "set"
+ }]]
+ )
+
+ ngx.status = code
+ ngx.say(body)
+ }
+ }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 8: `url` exist and `route_id` is not empty
+--- request
+GET /hello
+--- response_body
+hello world
+--- error_log
+route_id: 1
+
+
+
+=== TEST 9: `url` does not exist and `route_id` is empty
+--- request
+GET /hello123
+--- error_code: 404
+--- no_error_log
+[error]
+
+
+
+=== TEST 10: create a service and `service_id` is 1
+--- 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,
+ [[{
+ "desc": "new_service"
+ }]],
+ [[{
+ "node": {
+ "value": {
+ "desc": "new_service"
+ },
+ "key": "/apisix/services/1"
+ },
+ "action": "set"
+ }]]
+ )
+
+ ngx.status = code
+ ngx.say(body)
+ }
+ }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 11: the route object not bind any service object
+--- 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": {
+ "serverless-pre-function": {
+ "phase": "access",
+ "functions" : ["return function() if
ngx.ctx.api_ctx.service_id then ngx.log(ngx.ERR, \"service_id: \",
ngx.ctx.api_ctx.service_id) end end"]
+ }
+ },
+ "upstream": {
+ "type": "roundrobin",
+ "nodes": {
+ "127.0.0.1:1980": 1
+ }
+ },
+ "uri": "/hello"
+ }]],
+ [[{
+ "node": {
+ "value": {
+ "methods": [
+ "GET"
+ ],
+ "uri": "/hello",
+ "plugins": {
+ "serverless-pre-function": {
+ "phase": "access",
+ "functions" : ["return function() if
ngx.ctx.api_ctx.service_id then ngx.log(ngx.ERR, \"service_id: \",
ngx.ctx.api_ctx.service_id) end end"]
+ }
+ },
+ "upstream": {
+ "type": "roundrobin",
+ "nodes": {
+ "127.0.0.1:1980": 1
+ }
+ }
+ },
+ "key": "/apisix/routes/1"
+ },
+ "action": "set"
+ }]]
+ )
+
+ ngx.status = code
+ ngx.say(body)
+ }
+ }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 12: service_id is empty
+--- request
+GET /hello
+--- response_body
+hello world
+--- no_error_log
+[error]
+
+
+
+=== TEST 13: update route and binding service_id
+--- 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"],
+ "service_id": 1,
+ "plugins": {
+ "serverless-pre-function": {
+ "phase": "access",
+ "functions" : ["return function() ngx.log(ngx.ERR,
\"service_id: \", ngx.ctx.api_ctx.service_id) end"]
+ }
+ },
+ "upstream": {
+ "type": "roundrobin",
+ "nodes": {
+ "127.0.0.1:1980": 1
+ }
+ },
+ "uri": "/hello"
+ }]],
+ [[{
+ "node": {
+ "value": {
+ "methods": [
+ "GET"
+ ],
+ "uri": "/hello",
+ "service_id": 1,
+ "plugins": {
+ "serverless-pre-function": {
+ "phase": "access",
+ "functions" : ["return function()
ngx.log(ngx.ERR, \"service_id: \", ngx.ctx.api_ctx.service_id) end"]
+ }
+ },
+ "upstream": {
+ "type": "roundrobin",
+ "nodes": {
+ "127.0.0.1:1980": 1
+ }
+ }
+ },
+ "key": "/apisix/routes/1"
+ },
+ "action": "set"
+ }]]
+ )
+
+ ngx.status = code
+ ngx.say(body)
+ }
+ }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 14: service_id is not empty
+--- request
+GET /hello
+--- response_body
+hello world
+--- error_log
+service_id: 1
Review comment:
The title here is not clear. I will revise it later.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]