summaryrefslogtreecommitdiffstats
path: root/fluent-bit/tests/internal/http_client.c
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/tests/internal/http_client.c')
-rw-r--r--fluent-bit/tests/internal/http_client.c478
1 files changed, 0 insertions, 478 deletions
diff --git a/fluent-bit/tests/internal/http_client.c b/fluent-bit/tests/internal/http_client.c
deleted file mode 100644
index a37daa35..00000000
--- a/fluent-bit/tests/internal/http_client.c
+++ /dev/null
@@ -1,478 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-
-#include <fluent-bit/flb_info.h>
-#include <fluent-bit/flb_mem.h>
-#include <fluent-bit/flb_error.h>
-#include <fluent-bit/flb_socket.h>
-#include <fluent-bit/flb_http_client.h>
-
-#include "flb_tests_internal.h"
-
-struct test_ctx {
- struct flb_upstream *u;
- struct flb_connection *u_conn;
- struct flb_config *config;
-};
-
-struct test_ctx* test_ctx_create()
-{
- struct test_ctx *ret_ctx = NULL;
-
- ret_ctx = flb_malloc(sizeof(struct test_ctx));
- if (!TEST_CHECK(ret_ctx != NULL)) {
- flb_errno();
- TEST_MSG("flb_malloc(test_ctx) failed");
- return NULL;
- }
- ret_ctx->u = NULL;
- ret_ctx->u_conn = NULL;
-
- ret_ctx->config = flb_config_init();
- if(!TEST_CHECK(ret_ctx->config != NULL)) {
- TEST_MSG("flb_config_init failed");
- flb_free(ret_ctx);
- return NULL;
- }
-
- ret_ctx->u = flb_upstream_create(ret_ctx->config, "127.0.0.1", 80, 0, NULL);
- if (!TEST_CHECK(ret_ctx->u != NULL)) {
- TEST_MSG("flb_upstream_create failed");
- flb_config_exit(ret_ctx->config);
- flb_free(ret_ctx);
- return NULL;
- }
-
- ret_ctx->u_conn = flb_calloc(1, sizeof(struct flb_connection));
- if(!TEST_CHECK(ret_ctx->u_conn != NULL)) {
- flb_errno();
- TEST_MSG("flb_malloc(flb_connection) failed");
- flb_upstream_destroy(ret_ctx->u);
- flb_config_exit(ret_ctx->config);
- flb_free(ret_ctx);
- return NULL;
- }
-
- ret_ctx->u_conn->upstream = ret_ctx->u;
-
- return ret_ctx;
-}
-
-int test_ctx_destroy(struct test_ctx* ctx)
-{
- if (!TEST_CHECK(ctx != NULL)) {
- return -1;
- }
- if (ctx->u_conn) {
- flb_free(ctx->u_conn);
- }
- if (ctx->u) {
- flb_upstream_destroy(ctx->u);
- }
- if (ctx->config) {
- flb_config_exit(ctx->config);
- }
-
- flb_free(ctx);
- return 0;
-}
-
-void test_http_buffer_increase()
-{
- int ret;
- size_t s;
- struct test_ctx *ctx;
- struct flb_http_client *c;
- struct flb_http_response *resp;
-
- ctx = test_ctx_create();
- if (!TEST_CHECK(ctx != NULL)) {
- exit(EXIT_FAILURE);
- }
-
- /* Create HTTP client instance */
- c = flb_http_client(ctx->u_conn, FLB_HTTP_GET, "/", NULL, 0,
- "127.0.0.1", 80, NULL, 0);
- TEST_CHECK(c != NULL);
-
- /* Do buffer tests */
- resp = &c->resp;
- TEST_CHECK(resp->data_len == 0);
- TEST_CHECK(resp->data_size == FLB_HTTP_DATA_SIZE_MAX);
- TEST_CHECK(resp->data_size_max == FLB_HTTP_DATA_SIZE_MAX);
-
- /* Invalid size */
- ret = flb_http_buffer_size(c, 1);
- TEST_CHECK(ret == -1);
-
- /* Increase max size to 8KB */
- flb_http_buffer_size(c, 8192);
-
- /* Request to allocate +4KB */
- ret = flb_http_buffer_increase(c, 4096, &s);
- TEST_CHECK(ret == 0);
- TEST_CHECK(s == 4096);
-
- /* Request to allocate 1 byte, it should fail */
- ret = flb_http_buffer_increase(c, 1, &s);
- TEST_CHECK(ret == -1);
-
- /* Test unlimited */
- flb_http_buffer_size(c, 0);
- ret = flb_http_buffer_increase(c, 1, &s);
- TEST_CHECK(ret == 0 && s == 1);
-
- /* Payload test */
- memcpy(c->resp.data, "00abc11def22ghi__PAYLOAD__8yz9900", 33);
- c->resp.data[33] = '\0';
- c->resp.data_len = 33;
- c->resp.payload = c->resp.data + 15;
- c->resp.payload_size = 11;
-
- ret = flb_http_buffer_increase(c, 819200, &s);
- TEST_CHECK(ret == 0);
-
- ret = strncmp(c->resp.payload, "__PAYLOAD__", 11);
- TEST_CHECK(ret == 0);
-
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
-}
-
-void test_http_add_get_header()
-{
- struct test_ctx *ctx;
- struct flb_http_client *c;
- flb_sds_t ret_str;
- char *ua = "Fluent-Bit";
- char *host = "127.0.0.1:80";
- int ret;
-
- ctx = test_ctx_create();
- if (!TEST_CHECK(ctx != NULL)) {
- exit(EXIT_FAILURE);
- }
-
- /* Create HTTP client instance */
- c = flb_http_client(ctx->u_conn, FLB_HTTP_GET, "/", NULL, 0,
- "127.0.0.1", 80, NULL, 0);
- if(!TEST_CHECK(c != NULL)) {
- TEST_MSG("flb_http_client failed");
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- /* Check User-Agent */
- ret = flb_http_add_header(c, "User-Agent", 10, ua, strlen(ua));
- TEST_CHECK(ret == 0);
-
- ret_str = flb_http_get_header(c, "User-Agent", 10);
- if (!TEST_CHECK(ret_str != NULL)) {
- TEST_MSG("flb_http_get_header failed");
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- if (!TEST_CHECK(flb_sds_cmp(ret_str, ua, strlen(ua)) == 0)) {
- TEST_MSG("strcmp failed. got=%s expect=%s", ret_str, ua);
- }
- flb_sds_destroy(ret_str);
-
-
- /* Check Host */
- ret_str = flb_http_get_header(c, "Host", 4);
- if (!TEST_CHECK(ret_str != NULL)) {
- TEST_MSG("flb_http_get_header failed");
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- if (!TEST_CHECK(flb_sds_cmp(ret_str, host, strlen(host)) == 0)) {
- TEST_MSG("strcmp failed. got=%s expect=%s", ret_str, host);
- }
-
- flb_sds_destroy(ret_str);
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
-}
-
-void test_http_set_keepalive()
-{
- struct test_ctx *ctx;
- struct flb_http_client *c;
- flb_sds_t ret_str;
- int ret;
-
- ctx = test_ctx_create();
- if (!TEST_CHECK(ctx != NULL)) {
- exit(EXIT_FAILURE);
- }
-
- /* Create HTTP client instance */
- c = flb_http_client(ctx->u_conn, FLB_HTTP_GET, "/", NULL, 0,
- "127.0.0.1", 80, NULL, 0);
- if(!TEST_CHECK(c != NULL)) {
- TEST_MSG("flb_http_client failed");
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- /* Set keepalive header */
- ret = flb_http_set_keepalive(c);
- TEST_CHECK(ret == 0);
-
- ret_str = flb_http_get_header(c, FLB_HTTP_HEADER_CONNECTION,
- strlen(FLB_HTTP_HEADER_CONNECTION));
- if (!TEST_CHECK(ret_str != NULL)) {
- TEST_MSG("flb_get_header failed");
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- /* Compare */
- if (!TEST_CHECK(flb_sds_cmp(ret_str, FLB_HTTP_HEADER_KA, strlen(FLB_HTTP_HEADER_KA)) == 0)) {
- TEST_MSG("strcmp failed. got=%s expect=%s", ret_str, FLB_HTTP_HEADER_KA);
- }
- flb_sds_destroy(ret_str);
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
-}
-
-void test_http_strip_port_from_host()
-{
- struct test_ctx *ctx;
- struct flb_http_client *c;
- flb_sds_t ret_str;
- char *host_port = "127.0.0.1:80";
- char *host = "127.0.0.1";
- int ret;
-
- ctx = test_ctx_create();
- if (!TEST_CHECK(ctx != NULL)) {
- exit(EXIT_FAILURE);
- }
-
- /* Create HTTP client instance */
- c = flb_http_client(ctx->u_conn, FLB_HTTP_GET, "/", NULL, 0,
- "127.0.0.1", 80, NULL, 0);
- if(!TEST_CHECK(c != NULL)) {
- TEST_MSG("flb_http_client failed");
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- /* Check Host. It should contain port number */
- ret_str = flb_http_get_header(c, "Host", 4);
- if (!TEST_CHECK(ret_str != NULL)) {
- TEST_MSG("flb_http_get_header failed");
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- if (!TEST_CHECK(flb_sds_cmp(ret_str, host_port, strlen(host_port)) == 0)) {
- TEST_MSG("strcmp failed. got=%s expect=%s", ret_str, host_port);
- }
- flb_sds_destroy(ret_str);
-
-
- ret = flb_http_strip_port_from_host(c);
- TEST_CHECK(ret == 0);
-
- /* Check Host. Port number should be removed. */
- ret_str = flb_http_get_header(c, "Host", 4);
- if (!TEST_CHECK(ret_str != NULL)) {
- TEST_MSG("flb_http_get_header failed");
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- if (!TEST_CHECK(flb_sds_cmp(ret_str, host, strlen(host)) == 0)) {
- TEST_MSG("strcmp failed. got=%s expect=%s", ret_str, host);
- }
-
- flb_sds_destroy(ret_str);
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
-}
-
-void test_http_encoding_gzip()
-{
- struct test_ctx *ctx;
- struct flb_http_client *c;
- flb_sds_t ret_str;
- char *gzip = "gzip";
- int ret;
-
- ctx = test_ctx_create();
- if (!TEST_CHECK(ctx != NULL)) {
- exit(EXIT_FAILURE);
- }
-
- /* Create HTTP client instance */
- c = flb_http_client(ctx->u_conn, FLB_HTTP_GET, "/", NULL, 0,
- "127.0.0.1", 80, NULL, 0);
- if(!TEST_CHECK(c != NULL)) {
- TEST_MSG("flb_http_client failed");
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- /* Check encoding. It should be error */
- ret_str = flb_http_get_header(c, FLB_HTTP_HEADER_CONTENT_ENCODING,
- strlen(FLB_HTTP_HEADER_CONTENT_ENCODING));
- if (!TEST_CHECK(ret_str == NULL)) {
- TEST_MSG("Got encoding? Header:%s", ret_str);
- flb_sds_destroy(ret_str);
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- ret = flb_http_set_content_encoding_gzip(c);
- TEST_CHECK(ret == 0);
-
- /* Check Encoding */
- ret_str = flb_http_get_header(c, FLB_HTTP_HEADER_CONTENT_ENCODING,
- strlen(FLB_HTTP_HEADER_CONTENT_ENCODING));
- if (!TEST_CHECK(ret_str != NULL)) {
- TEST_MSG("flb_http_get_header failed");
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- if (!TEST_CHECK(flb_sds_cmp(ret_str, gzip, strlen(gzip)) == 0)) {
- TEST_MSG("strcmp failed. got=%s expect=%s", ret_str, gzip);
- }
-
- flb_sds_destroy(ret_str);
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
-}
-
-void test_http_add_basic_auth_header()
-{
- struct test_ctx *ctx;
- struct flb_http_client *c;
- flb_sds_t ret_str;
- char *expect = "Basic dXNlcjpwYXNzd29yZA=="; /* user:password in base64 */
- char *auth = FLB_HTTP_HEADER_AUTH;
- const char *user = "user";
- char *passwd = "password";
- int ret;
-
- ctx = test_ctx_create();
- if (!TEST_CHECK(ctx != NULL)) {
- exit(EXIT_FAILURE);
- }
-
- /* Create HTTP client instance */
- c = flb_http_client(ctx->u_conn, FLB_HTTP_GET, "/", NULL, 0,
- "127.0.0.1", 80, NULL, 0);
- if(!TEST_CHECK(c != NULL)) {
- TEST_MSG("flb_http_client failed");
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- /* Check Autholization. It should be error. */
- ret_str = flb_http_get_header(c, auth, strlen(auth));
- if (!TEST_CHECK(ret_str == NULL)) {
- TEST_MSG("Got auth? Header:%s", ret_str);
- flb_sds_destroy(ret_str);
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- ret = flb_http_basic_auth(c, user, passwd);
- TEST_CHECK(ret == 0);
-
- /* Check Autholization. */
- ret_str = flb_http_get_header(c, auth, strlen(auth));
- if (!TEST_CHECK(ret_str != NULL)) {
- TEST_MSG("flb_http_get_header failed");
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- if (!TEST_CHECK(flb_sds_cmp(ret_str, expect, strlen(expect)) == 0)) {
- TEST_MSG("strcmp failed. got=%s expect=%s", ret_str, expect);
- }
-
- flb_sds_destroy(ret_str);
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
-}
-
-void test_http_add_proxy_auth_header()
-{
- struct test_ctx *ctx;
- struct flb_http_client *c;
- flb_sds_t ret_str;
- char *expect = "Basic dXNlcjpwYXNzd29yZA=="; /* user:password in base64 */
- char *auth = FLB_HTTP_HEADER_PROXY_AUTH;
- const char *user = "user";
- char *passwd = "password";
- int ret;
-
- ctx = test_ctx_create();
- if (!TEST_CHECK(ctx != NULL)) {
- exit(EXIT_FAILURE);
- }
-
- /* Create HTTP client instance */
- c = flb_http_client(ctx->u_conn, FLB_HTTP_GET, "/", NULL, 0,
- "127.0.0.1", 80, NULL, 0);
- if(!TEST_CHECK(c != NULL)) {
- TEST_MSG("flb_http_client failed");
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- /* Check autholization header. It should be error. */
- ret_str = flb_http_get_header(c, auth, strlen(auth));
- if (!TEST_CHECK(ret_str == NULL)) {
- TEST_MSG("Got auth? Header:%s", ret_str);
- flb_sds_destroy(ret_str);
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- ret = flb_http_proxy_auth(c, user, passwd);
- TEST_CHECK(ret == 0);
-
- /* Check autholization header. */
- ret_str = flb_http_get_header(c, auth, strlen(auth));
- if (!TEST_CHECK(ret_str != NULL)) {
- TEST_MSG("flb_http_get_header failed");
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
- exit(EXIT_FAILURE);
- }
-
- if (!TEST_CHECK(flb_sds_cmp(ret_str, expect, strlen(expect)) == 0)) {
- TEST_MSG("strcmp failed. got=%s expect=%s", ret_str, expect);
- }
-
- flb_sds_destroy(ret_str);
- flb_http_client_destroy(c);
- test_ctx_destroy(ctx);
-}
-
-TEST_LIST = {
- { "http_buffer_increase" , test_http_buffer_increase},
- { "add_get_header" , test_http_add_get_header},
- { "set_keepalive" , test_http_set_keepalive},
- { "strip_port_from_host" , test_http_strip_port_from_host},
- { "encoding_gzip" , test_http_encoding_gzip},
- { "add_basic_auth_header" , test_http_add_basic_auth_header},
- { "add_proxy_auth_header" , test_http_add_proxy_auth_header},
- { 0 }
-};