2019-10-31 09:27:28 +08:00
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
2019-09-16 10:58:27 +08:00
use t::APISIX 'no_plan' ;
2021-06-09 19:23:40 +08:00
repeat_each ( 2 ) ;
2019-09-16 10:58:27 +08:00
no_long_string ( ) ;
no_shuffle ( ) ;
no_root_location ( ) ;
run_tests ;
__DATA__
2020-02-24 19:32:32 +08:00
=== TEST 1 : set route
2019-09-16 10:58:27 +08:00
- - - config
location / t {
content_by_lua_block {
local t = require ( "lib.test_admin" ) . test
local code , body = t ( '/apisix/admin/stream_routes/1' ,
ngx . HTTP_PUT ,
[ [ {
"remote_addr" : "127.0.0.1" ,
2020-02-24 19:32:32 +08:00
"server_port" : 1985 ,
2019-09-16 10:58:27 +08:00
"plugins" : {
"mqtt-proxy" : {
"protocol_name" : "MQTT" ,
"protocol_level" : 4 ,
"upstream" : {
2021-06-09 19:23:40 +08:00
"host" : "127.0.0.1" ,
2019-09-16 10:58:27 +08:00
"port" : 1995
}
}
}
} ] ]
)
if code >= 300 then
ngx . status = code
end
ngx . say ( body )
}
}
- - - request
GET / t
- - - response_body
passed
- - - no_error_log
[ error ]
=== TEST 2 : invalid header
- - - stream_enable
- - - stream_request eval
mmm
- - - error_log
Received unexpected MQTT packet type + flags
=== TEST 3 : hit route
- - - stream_enable
- - - stream_request eval
"\x10\x0f\x00\x04\x4d\x51\x54\x54\x04\x02\x00\x3c\x00\x03\x66\x6f\x6f"
- - - stream_response
hello world
- - - no_error_log
[ error ]
2020-02-24 19:32:32 +08:00
=== TEST 4 : set route ( wrong server port )
- - - config
location / t {
content_by_lua_block {
local t = require ( "lib.test_admin" ) . test
local code , body = t ( '/apisix/admin/stream_routes/1' ,
ngx . HTTP_PUT ,
[ [ {
"remote_addr" : "127.0.0.1" ,
"server_port" : 2000 ,
"plugins" : {
"mqtt-proxy" : {
"protocol_name" : "MQTT" ,
"protocol_level" : 4 ,
"upstream" : {
2021-06-09 19:23:40 +08:00
"host" : "127.0.0.1" ,
2020-02-24 19:32:32 +08:00
"port" : 1995
}
}
}
} ] ]
)
if code >= 300 then
ngx . status = code
end
ngx . say ( body )
}
}
- - - request
GET / t
- - - response_body
passed
- - - no_error_log
[ error ]
=== TEST 5 : failed to match route
- - - stream_enable
- - - stream_request eval
"\x10\x0f"
- - - stream_response
receive stream response error: connection reset by peer
- - - error_log
receive stream response error: connection reset by peer
- - - error_log
match ( ) : not hit any route
2021-06-09 19:23:40 +08:00
=== TEST 6 : check schema
- - - config
location / t {
content_by_lua_block {
local t = require ( "lib.test_admin" ) . test
local code , body = t ( '/apisix/admin/stream_routes/1' ,
ngx . HTTP_PUT ,
[ [ {
"remote_addr" : "127.0.0.1" ,
"server_port" : 1985 ,
"plugins" : {
"mqtt-proxy" : {
"protocol_name" : "MQTT" ,
"protocol_level" : 4 ,
"upstream" : {
"host" : "127.0.0.1"
}
}
}
} ] ]
)
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 stream plugin [mqtt-proxy]: property \"upstream\" validation failed: value should match only one schema, but matches none" }
=== TEST 7 : set route with host
- - - config
location / t {
content_by_lua_block {
local t = require ( "lib.test_admin" ) . test
local code , body = t ( '/apisix/admin/stream_routes/1' ,
ngx . HTTP_PUT ,
[ [ {
"remote_addr" : "127.0.0.1" ,
"server_port" : 1985 ,
"plugins" : {
"mqtt-proxy" : {
"protocol_name" : "MQTT" ,
"protocol_level" : 4 ,
"upstream" : {
"host" : "localhost" ,
"port" : 1995
}
}
}
} ] ]
)
if code >= 300 then
ngx . status = code
end
ngx . say ( body )
}
}
- - - request
GET / t
- - - response_body
passed
- - - no_error_log
[ error ]
=== TEST 8 : hit route
- - - stream_enable
- - - stream_request eval
"\x10\x0f\x00\x04\x4d\x51\x54\x54\x04\x02\x00\x3c\x00\x03\x66\x6f\x6f"
- - - stream_response
hello world
- - - no_error_log
[ error ]
=== TEST 9 : set route with invalid host
- - - config
location / t {
content_by_lua_block {
local t = require ( "lib.test_admin" ) . test
local code , body = t ( '/apisix/admin/stream_routes/1' ,
ngx . HTTP_PUT ,
[ [ {
"remote_addr" : "127.0.0.1" ,
"server_port" : 1985 ,
"plugins" : {
"mqtt-proxy" : {
"protocol_name" : "MQTT" ,
"protocol_level" : 4 ,
"upstream" : {
"host" : "loc" ,
"port" : 1995
}
}
}
} ] ]
)
if code >= 300 then
ngx . status = code
end
ngx . say ( body )
}
}
- - - request
GET / t
- - - response_body
passed
- - - no_error_log
[ error ]
=== TEST 10 : hit route
- - - stream_enable
- - - stream_request eval
"\x10\x0f\x00\x04\x4d\x51\x54\x54\x04\x02\x00\x3c\x00\x03\x66\x6f\x6f"
- - - error_log
failed to parse domain: loc , error: