You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by sp...@apache.org on 2021/02/10 06:37:56 UTC

[apisix] branch master updated: test: split prometheus test case (#3563)

This is an automated email from the ASF dual-hosted git repository.

spacewander pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git


The following commit(s) were added to refs/heads/master by this push:
     new 0b6d35d  test: split prometheus test case (#3563)
0b6d35d is described below

commit 0b6d35d965ea1a33a2ba30c0f042b41abeed3381
Author: 罗泽轩 <sp...@gmail.com>
AuthorDate: Wed Feb 10 14:37:46 2021 +0800

    test: split prometheus test case (#3563)
    
    Fix #3561
    
    Signed-off-by: spacewander <sp...@gmail.com>
---
 t/plugin/prometheus.t  | 668 --------------------------------------------
 t/plugin/prometheus2.t | 730 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 730 insertions(+), 668 deletions(-)

diff --git a/t/plugin/prometheus.t b/t/plugin/prometheus.t
index 5ef4527..bd37270 100644
--- a/t/plugin/prometheus.t
+++ b/t/plugin/prometheus.t
@@ -809,671 +809,3 @@ qr/apisix_/
 qr/etcd/
 --- no_error_log
 [error]
-
-
-
-=== TEST 45: set route with key-auth enabled for consumer metrics
---- 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": {},
-                        "key-auth": {}
-                    },
-                    "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 46: pipeline of client request without api-key
---- pipelined_requests eval
-["GET /hello", "GET /hello", "GET /hello", "GET /hello"]
---- error_code eval
-[401, 401, 401, 401]
---- no_error_log
-[error]
-
-
-
-=== TEST 47: fetch the prometheus metric data: consumer is empty
---- request
-GET /apisix/prometheus/metrics
---- response_body eval
-qr/apisix_bandwidth\{type="egress",route="1",service="",consumer="",node="127.0.0.1"\} \d+/
---- no_error_log
-[error]
-
-
-
-=== TEST 48: set consumer for metics data collection
---- config
-    location /t {
-        content_by_lua_block {
-            local t = require("lib.test_admin").test
-            local code, body = t('/apisix/admin/consumers',
-                ngx.HTTP_PUT,
-                [[{
-                    "username": "jack",
-                    "plugins": {
-                        "key-auth": {
-                            "key": "auth-one"
-                        }
-                    }
-                }]],
-                [[{
-                    "node": {
-                        "value": {
-                            "username": "jack",
-                            "plugins": {
-                                "key-auth": {
-                                    "key": "auth-one"
-                                }
-                            }
-                        }
-                    },
-                    "action": "set"
-                }]]
-                )
-
-            ngx.status = code
-            ngx.say(body)
-        }
-    }
---- request
-GET /t
---- response_body
-passed
---- no_error_log
-[error]
-
-
-
-=== TEST 49: pipeline of client request with successfully authorized
---- pipelined_requests eval
-["GET /hello", "GET /hello", "GET /hello", "GET /hello"]
---- more_headers
-apikey: auth-one
---- error_code eval
-[200, 200, 200, 200]
---- no_error_log
-[error]
-
-
-
-=== TEST 50: fetch the prometheus metric data: consumer is jack
---- request
-GET /apisix/prometheus/metrics
---- response_body eval
-qr/apisix_http_status\{code="200",route="1",matched_uri="\/hello",matched_host="",service="",consumer="jack",node="127.0.0.1"\} \d+/
---- no_error_log
-[error]
-
-
-
-=== TEST 51: set route(id: 9)
---- config
-    location /t {
-        content_by_lua_block {
-            local t = require("lib.test_admin").test
-            local code, body = t('/apisix/admin/routes/9',
-                 ngx.HTTP_PUT,
-                 [[{
-                        "methods": ["GET"],
-                        "plugins": {
-                            "prometheus": {}
-                        },
-                        "upstream": {
-                            "nodes": {
-                                "127.0.0.1:1980": 1
-                            },
-                            "type": "roundrobin"
-                        },
-                        "hosts": ["foo.com", "bar.com"],
-                        "uris": ["/foo*", "/bar*"]
-                }]]
-                )
-
-            if code >= 300 then
-                ngx.status = code
-            end
-            ngx.say(body)
-        }
-    }
---- request
-GET /t
---- response_body
-passed
---- no_error_log
-[error]
-
-
-
-=== TEST 52: 404 Route Not Found
---- request
-GET /not_found
---- error_code: 404
---- response_body
-{"error_msg":"404 Route Not Found"}
---- no_error_log
-[error]
-
-
-
-=== TEST 53: fetch the prometheus metric data: 404 Route Not Found
---- request
-GET /apisix/prometheus/metrics
---- response_body eval
-qr/apisix_http_status\{code="404",route="",matched_uri="",matched_host="",service="localhost",consumer="",node=""\} \d+/
---- no_error_log
-[error]
-
-
-
-=== TEST 54: hit routes(uri = "/foo*", host = "foo.com")
---- request
-GET /foo1
---- more_headers
-Host: foo.com
---- error_code: 404
---- response_body eval
-qr/404 Not Found/
---- no_error_log
-[error]
-
-
-
-=== TEST 55: fetch the prometheus metric data: hit routes(uri = "/foo*", host = "foo.com")
---- request
-GET /apisix/prometheus/metrics
---- response_body eval
-qr/apisix_http_status\{code="404",route="9",matched_uri="\/foo\*",matched_host="foo.com",service="",consumer="",node="127.0.0.1"\} \d+/
---- no_error_log
-[error]
-
-
-
-=== TEST 56: hit routes(uri = "/bar*", host = "bar.com")
---- request
-GET /bar1
---- more_headers
-Host: bar.com
---- error_code: 404
---- response_body eval
-qr/404 Not Found/
---- no_error_log
-[error]
-
-
-
-=== TEST 57: fetch the prometheus metric data: hit routes(uri = "/bar*", host = "bar.com")
---- request
-GET /apisix/prometheus/metrics
---- response_body eval
-qr/apisix_http_status\{code="404",route="9",matched_uri="\/bar\*",matched_host="bar.com",service="",consumer="",node="127.0.0.1"\} \d+/
---- no_error_log
-[error]
-
-
-
-=== TEST 58: customize export uri, not found
---- yaml_config
-plugin_attr:
-    prometheus:
-        export_uri: /a
---- request
-GET /apisix/prometheus/metrics
---- error_code: 404
---- no_error_log
-[error]
-
-
-
-=== TEST 59: customize export uri, found
---- yaml_config
-plugin_attr:
-    prometheus:
-        export_uri: /a
---- request
-GET /a
---- error_code: 200
---- no_error_log
-[error]
-
-
-
-=== TEST 60: customize export uri, missing plugin, use default
---- yaml_config
-plugin_attr:
-    x:
-        y: z
---- request
-GET /apisix/prometheus/metrics
---- error_code: 200
---- no_error_log
-[error]
-
-
-
-=== TEST 61: customize export uri, missing attr, use default
---- yaml_config
-plugin_attr:
-    prometheus:
-        y: z
---- request
-GET /apisix/prometheus/metrics
---- error_code: 200
---- no_error_log
-[error]
-
-
-
-=== TEST 62: set sys plugins
---- config
-    location /t {
-        content_by_lua_block {
-            local t = require("lib.test_admin").test
-            local code, body = t('/apisix/admin/routes/9',
-                 ngx.HTTP_PUT,
-                 [[{
-                        "methods": ["GET"],
-                        "plugins": {
-                            "prometheus": {},
-                            "syslog": {
-			                    "host": "127.0.0.1",
-			                    "include_req_body": false,
-			                    "max_retry_times": 1,
-			                    "tls": false,
-			                    "retry_interval": 1,
-			                    "batch_max_size": 1000,
-			                    "buffer_duration": 60,
-			                    "port": 1000,
-			                    "name": "sys-logger",
-			                    "flush_limit": 4096,
-			                    "sock_type": "tcp",
-			                    "timeout": 3,
-			                    "drop_limit": 1048576,
-			                    "pool_size": 5
-		                    }                        
-                        },
-                        "upstream": {
-                            "nodes": {
-                                "127.0.0.1:1980": 1
-                            },
-                            "type": "roundrobin"
-                        },
-                        "uri": "/batch-process-metrics"
-                }]]
-                )
-
-            if code >= 300 then
-                ngx.status = code
-            end
-            ngx.say(body)
-        }
-    }
---- request
-GET /t
---- response_body
-passed
---- no_error_log
-[error]
-
-
-
-=== TEST 63: hit batch-process-metrics
---- request
-GET /batch-process-metrics
---- error_code: 404
-
-
-
-=== TEST 64: check sys logger metrics
---- request
-GET /apisix/prometheus/metrics
---- error_code: 200
---- response_body_like eval
-qr/apisix_batch_process_entries\{name="sys-logger",route_id="9",server_addr="127.0.0.1"\} \d+/
-
-
-
-=== TEST 65: set zipkin plugins
---- config
-    location /t {
-        content_by_lua_block {
-            local t = require("lib.test_admin").test
-            local code, body = t('/apisix/admin/routes/9',
-                 ngx.HTTP_PUT,
-                 [[{
-                        "methods": ["GET"],
-                        "plugins": {
-                            "prometheus": {},
-                            "zipkin": {
-                                "endpoint": "http://127.0.0.1:9447",
-                                "service_name": "APISIX",
-                                "sample_ratio": 1
-                            }                     
-                        },
-                        "upstream": {
-                            "nodes": {
-                                "127.0.0.1:1980": 1
-                            },
-                            "type": "roundrobin"
-                        },
-                        "uri": "/batch-process-metrics"
-                }]]
-                )
-
-            if code >= 300 then
-                ngx.status = code
-            end
-            ngx.say(body)
-        }
-    }
---- request
-GET /t
---- response_body
-passed
---- no_error_log
-[error]
-
-
-
-=== TEST 66: hit batch-process-metrics
---- request
-GET /batch-process-metrics
---- error_code: 404
-
-
-
-=== TEST 67: check zipkin log metrics
---- request
-GET /apisix/prometheus/metrics
---- error_code: 200
---- response_body_like eval
-qr/apisix_batch_process_entries\{name="zipkin_report",route_id="9",server_addr="127.0.0.1"\} \d+/
-
-
-
-=== TEST 68: set http plugins
---- config
-    location /t {
-        content_by_lua_block {
-            local t = require("lib.test_admin").test
-            local code, body = t('/apisix/admin/routes/9',
-                 ngx.HTTP_PUT,
-                 [[{
-                        "methods": ["GET"],
-                        "plugins": {
-                            "prometheus": {},
-                            "http-logger": {
-                                "inactive_timeout": 5,
-                                "include_req_body": false,
-                                "timeout": 3,
-                                "name": "http-logger",
-                                "retry_delay": 1,
-                                "buffer_duration": 60,
-                                "uri": "http://127.0.0.1:19080/report",
-                                "concat_method": "json",
-                                "batch_max_size": 1000,
-                                "max_retry_count": 0
-                            }                     
-                        },
-                        "upstream": {
-                            "nodes": {
-                                "127.0.0.1:1980": 1
-                            },
-                            "type": "roundrobin"
-                        },
-                        "uri": "/batch-process-metrics"
-                }]]
-                )
-
-            if code >= 300 then
-                ngx.status = code
-            end
-            ngx.say(body)
-        }
-    }
---- request
-GET /t
---- response_body
-passed
---- no_error_log
-[error]
-
-
-
-=== TEST 69: hit batch-process-metrics
---- request
-GET /batch-process-metrics
---- error_code: 404
-
-
-
-=== TEST 70: check http log metrics
---- request
-GET /apisix/prometheus/metrics
---- error_code: 200
---- response_body_like eval
-qr/apisix_batch_process_entries\{name="http-logger",route_id="9",server_addr="127.0.0.1"\} \d+/
-
-
-
-=== TEST 71: set tcp-logger plugins
---- config
-    location /t {
-        content_by_lua_block {
-            local t = require("lib.test_admin").test
-            local code, body = t('/apisix/admin/routes/10',
-                 ngx.HTTP_PUT,
-                 [[{
-                        "methods": ["GET"],
-                        "plugins": {
-                            "prometheus": {},
-                            "tcp-logger": {
-                                "host": "127.0.0.1",
-                                "include_req_body": false,
-                                "timeout": 1000,
-                                "name": "tcp-logger",
-                                "retry_delay": 1,
-                                "buffer_duration": 60,
-                                "port": 1000,
-                                "batch_max_size": 1000,
-                                "inactive_timeout": 5,
-                                "tls": false,
-                                "max_retry_count": 0
-                            }                    
-                        },
-                        "upstream": {
-                            "nodes": {
-                                "127.0.0.1:1980": 1
-                            },
-                            "type": "roundrobin"
-                        },
-                        "uri": "/batch-process-metrics-10"
-                }]]
-                )
-
-            if code >= 300 then
-                ngx.status = code
-            end
-            ngx.say(body)
-        }
-    }
---- request
-GET /t
---- response_body
-passed
---- no_error_log
-[error]
-
-
-
-=== TEST 72:  tigger metircs batch-process-metrics
---- request
-GET /batch-process-metrics-10
---- error_code: 404
-
-
-
-=== TEST 73: check tcp log metrics
---- request
-GET /apisix/prometheus/metrics
---- error_code: 200
---- response_body_like eval
-qr/apisix_batch_process_entries\{name="tcp-logger",route_id="10",server_addr="127.0.0.1"\} \d+/
-
-
-
-=== TEST 74: set udp-logger plugins
---- config
-    location /t {
-        content_by_lua_block {
-            local t = require("lib.test_admin").test
-            local code, body = t('/apisix/admin/routes/10',
-                 ngx.HTTP_PUT,
-                 [[{
-                        "methods": ["GET"],
-                        "plugins": {
-                            "prometheus": {},
-                            "udp-logger": {
-                                "host": "127.0.0.1",
-                                "port": 1000,
-                                "include_req_body": false,
-                                "timeout": 3,
-                                "batch_max_size": 1000,
-                                "name": "udp-logger",
-                                "inactive_timeout": 5,
-                                "buffer_duration": 60
-                            }                     
-                        },
-                        "upstream": {
-                            "nodes": {
-                                "127.0.0.1:1980": 1
-                            },
-                            "type": "roundrobin"
-                        },
-                        "uri": "/batch-process-metrics-10"
-                }]]
-                )
-
-            if code >= 300 then
-                ngx.status = code
-            end
-            ngx.say(body)
-        }
-    }
---- request
-GET /t
---- response_body
-passed
---- no_error_log
-[error]
-
-
-
-=== TEST 75:  tigger metircs batch-process-metrics
---- request
-GET /batch-process-metrics-10
---- error_code: 404
-
-
-
-=== TEST 76: check udp log metrics
---- request
-GET /apisix/prometheus/metrics
---- error_code: 200
---- response_body_like eval
-qr/apisix_batch_process_entries\{name="udp-logger",route_id="10",server_addr="127.0.0.1"\} \d+/
-
-
-
-=== TEST 77: set sls-logger plugins
---- config
-    location /t {
-        content_by_lua_block {
-            local t = require("lib.test_admin").test
-            local code, body = t('/apisix/admin/routes/10',
-                 ngx.HTTP_PUT,
-                 [[{
-                        "methods": ["GET"],
-                        "plugins": {
-                            "prometheus": {},
-                            "sls-logger": {
-                                "host": "127.0.0.1",
-                                "batch_max_size": 1000,
-                                "name": "sls-logger",
-                                "inactive_timeout": 5,
-                                "logstore": "your_logstore",
-                                "buffer_duration": 60,
-                                "port": 10009,
-                                "max_retry_count": 0,
-                                "retry_delay": 1,
-                                "access_key_id": "your_access_id",
-                                "access_key_secret": "your_key_secret",
-                                "timeout": 5000,
-                                "project": "your_project"
-                            }                      
-                        },
-                        "upstream": {
-                            "nodes": {
-                                "127.0.0.1:1980": 1
-                            },
-                            "type": "roundrobin"
-                        },
-                        "uri": "/batch-process-metrics-10"
-                }]]
-                )
-
-            if code >= 300 then
-                ngx.status = code
-            end
-            ngx.say(body)
-        }
-    }
---- request
-GET /t
---- response_body
-passed
---- no_error_log
-[error]
-
-
-
-=== TEST 78:  tigger metircs batch-process-metrics
---- request
-GET /batch-process-metrics-10
---- error_code: 404
-
-
-
-=== TEST 79: check sls-logger metrics
---- request
-GET /apisix/prometheus/metrics
---- error_code: 200
---- response_body_like eval
-qr/apisix_batch_process_entries\{name="sls-logger",route_id="10",server_addr="127.0.0.1"\} \d+/
diff --git a/t/plugin/prometheus2.t b/t/plugin/prometheus2.t
new file mode 100644
index 0000000..10f6c33
--- /dev/null
+++ b/t/plugin/prometheus2.t
@@ -0,0 +1,730 @@
+#
+# 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.
+#
+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};
+    }
+}
+
+use t::APISIX 'no_plan';
+
+repeat_each(1);
+no_long_string();
+no_shuffle();
+no_root_location();
+run_tests;
+
+__DATA__
+
+=== TEST 1: set route with key-auth enabled for consumer metrics
+--- 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": {},
+                        "key-auth": {}
+                    },
+                    "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 2: pipeline of client request without api-key
+--- pipelined_requests eval
+["GET /hello", "GET /hello", "GET /hello", "GET /hello"]
+--- error_code eval
+[401, 401, 401, 401]
+--- no_error_log
+[error]
+
+
+
+=== TEST 3: fetch the prometheus metric data: consumer is empty
+--- request
+GET /apisix/prometheus/metrics
+--- response_body eval
+qr/apisix_bandwidth\{type="egress",route="1",service="",consumer="",node=""\} \d+/
+--- no_error_log
+[error]
+
+
+
+=== TEST 4: set consumer for metics data collection
+--- config
+    location /t {
+        content_by_lua_block {
+            local t = require("lib.test_admin").test
+            local code, body = t('/apisix/admin/consumers',
+                ngx.HTTP_PUT,
+                [[{
+                    "username": "jack",
+                    "plugins": {
+                        "key-auth": {
+                            "key": "auth-one"
+                        }
+                    }
+                }]],
+                [[{
+                    "node": {
+                        "value": {
+                            "username": "jack",
+                            "plugins": {
+                                "key-auth": {
+                                    "key": "auth-one"
+                                }
+                            }
+                        }
+                    },
+                    "action": "set"
+                }]]
+                )
+
+            ngx.status = code
+            ngx.say(body)
+        }
+    }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 5: pipeline of client request with successfully authorized
+--- pipelined_requests eval
+["GET /hello", "GET /hello", "GET /hello", "GET /hello"]
+--- more_headers
+apikey: auth-one
+--- error_code eval
+[200, 200, 200, 200]
+--- no_error_log
+[error]
+
+
+
+=== TEST 6: fetch the prometheus metric data: consumer is jack
+--- request
+GET /apisix/prometheus/metrics
+--- response_body eval
+qr/apisix_http_status\{code="200",route="1",matched_uri="\/hello",matched_host="",service="",consumer="jack",node="127.0.0.1"\} \d+/
+--- no_error_log
+[error]
+
+
+
+=== TEST 7: set route(id: 9)
+--- config
+    location /t {
+        content_by_lua_block {
+            local t = require("lib.test_admin").test
+            local code, body = t('/apisix/admin/routes/9',
+                 ngx.HTTP_PUT,
+                 [[{
+                        "methods": ["GET"],
+                        "plugins": {
+                            "prometheus": {}
+                        },
+                        "upstream": {
+                            "nodes": {
+                                "127.0.0.1:1980": 1
+                            },
+                            "type": "roundrobin"
+                        },
+                        "hosts": ["foo.com", "bar.com"],
+                        "uris": ["/foo*", "/bar*"]
+                }]]
+                )
+
+            if code >= 300 then
+                ngx.status = code
+            end
+            ngx.say(body)
+        }
+    }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 8: set it in global rule
+--- config
+    location /t {
+        content_by_lua_block {
+            local t = require("lib.test_admin").test
+            local code, body = t('/apisix/admin/global_rules/1',
+                 ngx.HTTP_PUT,
+                 [[{
+                    "plugins": {
+                        "prometheus": {}
+                    }
+                }]]
+                )
+
+            if code >= 300 then
+                ngx.status = code
+            end
+            ngx.say(body)
+        }
+    }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 9: 404 Route Not Found
+--- request
+GET /not_found
+--- error_code: 404
+--- response_body
+{"error_msg":"404 Route Not Found"}
+--- no_error_log
+[error]
+
+
+
+=== TEST 10: fetch the prometheus metric data: 404 Route Not Found
+--- request
+GET /apisix/prometheus/metrics
+--- response_body eval
+qr/apisix_http_status\{code="404",route="",matched_uri="",matched_host="",service="localhost",consumer="",node=""\} \d+/
+--- no_error_log
+[error]
+
+
+
+=== TEST 11: hit routes(uri = "/foo*", host = "foo.com")
+--- request
+GET /foo1
+--- more_headers
+Host: foo.com
+--- error_code: 404
+--- response_body eval
+qr/404 Not Found/
+--- no_error_log
+[error]
+
+
+
+=== TEST 12: fetch the prometheus metric data: hit routes(uri = "/foo*", host = "foo.com")
+--- request
+GET /apisix/prometheus/metrics
+--- response_body eval
+qr/apisix_http_status\{code="404",route="9",matched_uri="\/foo\*",matched_host="foo.com",service="",consumer="",node="127.0.0.1"\} \d+/
+--- no_error_log
+[error]
+
+
+
+=== TEST 13: hit routes(uri = "/bar*", host = "bar.com")
+--- request
+GET /bar1
+--- more_headers
+Host: bar.com
+--- error_code: 404
+--- response_body eval
+qr/404 Not Found/
+--- no_error_log
+[error]
+
+
+
+=== TEST 14: fetch the prometheus metric data: hit routes(uri = "/bar*", host = "bar.com")
+--- request
+GET /apisix/prometheus/metrics
+--- response_body eval
+qr/apisix_http_status\{code="404",route="9",matched_uri="\/bar\*",matched_host="bar.com",service="",consumer="",node="127.0.0.1"\} \d+/
+--- no_error_log
+[error]
+
+
+
+=== TEST 15: customize export uri, not found
+--- yaml_config
+plugin_attr:
+    prometheus:
+        export_uri: /a
+--- request
+GET /apisix/prometheus/metrics
+--- error_code: 404
+--- no_error_log
+[error]
+
+
+
+=== TEST 16: customize export uri, found
+--- yaml_config
+plugin_attr:
+    prometheus:
+        export_uri: /a
+--- request
+GET /a
+--- error_code: 200
+--- no_error_log
+[error]
+
+
+
+=== TEST 17: customize export uri, missing plugin, use default
+--- yaml_config
+plugin_attr:
+    x:
+        y: z
+--- request
+GET /apisix/prometheus/metrics
+--- error_code: 200
+--- no_error_log
+[error]
+
+
+
+=== TEST 18: customize export uri, missing attr, use default
+--- yaml_config
+plugin_attr:
+    prometheus:
+        y: z
+--- request
+GET /apisix/prometheus/metrics
+--- error_code: 200
+--- no_error_log
+[error]
+
+
+
+=== TEST 19: set sys plugins
+--- config
+    location /t {
+        content_by_lua_block {
+            local t = require("lib.test_admin").test
+            local code, body = t('/apisix/admin/routes/9',
+                 ngx.HTTP_PUT,
+                 [[{
+                        "methods": ["GET"],
+                        "plugins": {
+                            "prometheus": {},
+                            "syslog": {
+			                    "host": "127.0.0.1",
+			                    "include_req_body": false,
+			                    "max_retry_times": 1,
+			                    "tls": false,
+			                    "retry_interval": 1,
+			                    "batch_max_size": 1000,
+			                    "buffer_duration": 60,
+			                    "port": 1000,
+			                    "name": "sys-logger",
+			                    "flush_limit": 4096,
+			                    "sock_type": "tcp",
+			                    "timeout": 3,
+			                    "drop_limit": 1048576,
+			                    "pool_size": 5
+		                    }                        
+                        },
+                        "upstream": {
+                            "nodes": {
+                                "127.0.0.1:1980": 1
+                            },
+                            "type": "roundrobin"
+                        },
+                        "uri": "/batch-process-metrics"
+                }]]
+                )
+
+            if code >= 300 then
+                ngx.status = code
+            end
+            ngx.say(body)
+        }
+    }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 20: hit batch-process-metrics
+--- request
+GET /batch-process-metrics
+--- error_code: 404
+
+
+
+=== TEST 21: check sys logger metrics
+--- request
+GET /apisix/prometheus/metrics
+--- error_code: 200
+--- response_body_like eval
+qr/apisix_batch_process_entries\{name="sys-logger",route_id="9",server_addr="127.0.0.1"\} \d+/
+
+
+
+=== TEST 22: set zipkin plugins
+--- config
+    location /t {
+        content_by_lua_block {
+            local t = require("lib.test_admin").test
+            local code, body = t('/apisix/admin/routes/9',
+                 ngx.HTTP_PUT,
+                 [[{
+                        "methods": ["GET"],
+                        "plugins": {
+                            "prometheus": {},
+                            "zipkin": {
+                                "endpoint": "http://127.0.0.1:9447",
+                                "service_name": "APISIX",
+                                "sample_ratio": 1
+                            }                     
+                        },
+                        "upstream": {
+                            "nodes": {
+                                "127.0.0.1:1980": 1
+                            },
+                            "type": "roundrobin"
+                        },
+                        "uri": "/batch-process-metrics"
+                }]]
+                )
+
+            if code >= 300 then
+                ngx.status = code
+            end
+            ngx.say(body)
+        }
+    }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 23: hit batch-process-metrics
+--- request
+GET /batch-process-metrics
+--- error_code: 404
+
+
+
+=== TEST 24: check zipkin log metrics
+--- request
+GET /apisix/prometheus/metrics
+--- error_code: 200
+--- response_body_like eval
+qr/apisix_batch_process_entries\{name="zipkin_report",route_id="9",server_addr="127.0.0.1"\} \d+/
+
+
+
+=== TEST 25: set http plugins
+--- config
+    location /t {
+        content_by_lua_block {
+            local t = require("lib.test_admin").test
+            local code, body = t('/apisix/admin/routes/9',
+                 ngx.HTTP_PUT,
+                 [[{
+                        "methods": ["GET"],
+                        "plugins": {
+                            "prometheus": {},
+                            "http-logger": {
+                                "inactive_timeout": 5,
+                                "include_req_body": false,
+                                "timeout": 3,
+                                "name": "http-logger",
+                                "retry_delay": 1,
+                                "buffer_duration": 60,
+                                "uri": "http://127.0.0.1:19080/report",
+                                "concat_method": "json",
+                                "batch_max_size": 1000,
+                                "max_retry_count": 0
+                            }                     
+                        },
+                        "upstream": {
+                            "nodes": {
+                                "127.0.0.1:1980": 1
+                            },
+                            "type": "roundrobin"
+                        },
+                        "uri": "/batch-process-metrics"
+                }]]
+                )
+
+            if code >= 300 then
+                ngx.status = code
+            end
+            ngx.say(body)
+        }
+    }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 26: hit batch-process-metrics
+--- request
+GET /batch-process-metrics
+--- error_code: 404
+
+
+
+=== TEST 27: check http log metrics
+--- request
+GET /apisix/prometheus/metrics
+--- error_code: 200
+--- response_body_like eval
+qr/apisix_batch_process_entries\{name="http-logger",route_id="9",server_addr="127.0.0.1"\} \d+/
+
+
+
+=== TEST 28: set tcp-logger plugins
+--- config
+    location /t {
+        content_by_lua_block {
+            local t = require("lib.test_admin").test
+            local code, body = t('/apisix/admin/routes/10',
+                 ngx.HTTP_PUT,
+                 [[{
+                        "methods": ["GET"],
+                        "plugins": {
+                            "prometheus": {},
+                            "tcp-logger": {
+                                "host": "127.0.0.1",
+                                "include_req_body": false,
+                                "timeout": 1000,
+                                "name": "tcp-logger",
+                                "retry_delay": 1,
+                                "buffer_duration": 60,
+                                "port": 1000,
+                                "batch_max_size": 1000,
+                                "inactive_timeout": 5,
+                                "tls": false,
+                                "max_retry_count": 0
+                            }                    
+                        },
+                        "upstream": {
+                            "nodes": {
+                                "127.0.0.1:1980": 1
+                            },
+                            "type": "roundrobin"
+                        },
+                        "uri": "/batch-process-metrics-10"
+                }]]
+                )
+
+            if code >= 300 then
+                ngx.status = code
+            end
+            ngx.say(body)
+        }
+    }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 29:  tigger metircs batch-process-metrics
+--- request
+GET /batch-process-metrics-10
+--- error_code: 404
+
+
+
+=== TEST 30: check tcp log metrics
+--- request
+GET /apisix/prometheus/metrics
+--- error_code: 200
+--- response_body_like eval
+qr/apisix_batch_process_entries\{name="tcp-logger",route_id="10",server_addr="127.0.0.1"\} \d+/
+
+
+
+=== TEST 31: set udp-logger plugins
+--- config
+    location /t {
+        content_by_lua_block {
+            local t = require("lib.test_admin").test
+            local code, body = t('/apisix/admin/routes/10',
+                 ngx.HTTP_PUT,
+                 [[{
+                        "methods": ["GET"],
+                        "plugins": {
+                            "prometheus": {},
+                            "udp-logger": {
+                                "host": "127.0.0.1",
+                                "port": 1000,
+                                "include_req_body": false,
+                                "timeout": 3,
+                                "batch_max_size": 1000,
+                                "name": "udp-logger",
+                                "inactive_timeout": 5,
+                                "buffer_duration": 60
+                            }                     
+                        },
+                        "upstream": {
+                            "nodes": {
+                                "127.0.0.1:1980": 1
+                            },
+                            "type": "roundrobin"
+                        },
+                        "uri": "/batch-process-metrics-10"
+                }]]
+                )
+
+            if code >= 300 then
+                ngx.status = code
+            end
+            ngx.say(body)
+        }
+    }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 32:  tigger metircs batch-process-metrics
+--- request
+GET /batch-process-metrics-10
+--- error_code: 404
+
+
+
+=== TEST 33: check udp log metrics
+--- request
+GET /apisix/prometheus/metrics
+--- error_code: 200
+--- response_body_like eval
+qr/apisix_batch_process_entries\{name="udp-logger",route_id="10",server_addr="127.0.0.1"\} \d+/
+
+
+
+=== TEST 34: set sls-logger plugins
+--- config
+    location /t {
+        content_by_lua_block {
+            local t = require("lib.test_admin").test
+            local code, body = t('/apisix/admin/routes/10',
+                 ngx.HTTP_PUT,
+                 [[{
+                        "methods": ["GET"],
+                        "plugins": {
+                            "prometheus": {},
+                            "sls-logger": {
+                                "host": "127.0.0.1",
+                                "batch_max_size": 1000,
+                                "name": "sls-logger",
+                                "inactive_timeout": 5,
+                                "logstore": "your_logstore",
+                                "buffer_duration": 60,
+                                "port": 10009,
+                                "max_retry_count": 0,
+                                "retry_delay": 1,
+                                "access_key_id": "your_access_id",
+                                "access_key_secret": "your_key_secret",
+                                "timeout": 5000,
+                                "project": "your_project"
+                            }                      
+                        },
+                        "upstream": {
+                            "nodes": {
+                                "127.0.0.1:1980": 1
+                            },
+                            "type": "roundrobin"
+                        },
+                        "uri": "/batch-process-metrics-10"
+                }]]
+                )
+
+            if code >= 300 then
+                ngx.status = code
+            end
+            ngx.say(body)
+        }
+    }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 35:  tigger metircs batch-process-metrics
+--- request
+GET /batch-process-metrics-10
+--- error_code: 404
+
+
+
+=== TEST 36: check sls-logger metrics
+--- request
+GET /apisix/prometheus/metrics
+--- error_code: 200
+--- response_body_like eval
+qr/apisix_batch_process_entries\{name="sls-logger",route_id="10",server_addr="127.0.0.1"\} \d+/