| /** @file | |
| A brief file description | |
| @section license License | |
| 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. | |
| */ | |
| /*************************************************************************** | |
| LogAccessTest.cc | |
| ***************************************************************************/ | |
| /*------------------------------------------------------------------------- | |
| Ok, the name of the game here is to generate 'random' data, with strings | |
| of varying length, so that we can use these accessor objects to test the | |
| hell out the logging system without relying on the rest of the proxy to | |
| provide the data. | |
| We'll use the random(3) number generator, which returns pseudo-random | |
| numbers in the range from 0 to (2^31)-1. The period is 16^((2^31)-1). | |
| srandom(3) is used to seed the random number generator. | |
| -------------------------------------------------------------------------*/ | |
| #include <assert.h> | |
| #include <stdio.h> | |
| #include "LogAccessTest.h" | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| LogAccessTest::LogAccessTest() {} | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| LogAccessTest::~LogAccessTest() {} | |
| /*------------------------------------------------------------------------- | |
| The marshalling routines ... | |
| -------------------------------------------------------------------------*/ | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_client_host_ip(char *buf) | |
| { | |
| IpEndpoint lo; | |
| ats_ip4_set(&lo, INADDR_LOOPBACK); | |
| return marshal_ip(buf, &lo.sa); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_client_auth_user_name(char *buf) | |
| { | |
| static char const *str = "major tom"; | |
| int len = LogAccess::strlen(str); | |
| if (buf) { | |
| marshal_str(buf, str, len); | |
| } | |
| return len; | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_client_req_text(char *buf) | |
| { | |
| static char const *str = "GET http://www.foobar.com/ HTTP/1.0"; | |
| int len = LogAccess::strlen(str); | |
| if (buf) { | |
| marshal_str(buf, str, len); | |
| } | |
| return len; | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_client_req_http_method(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 1; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_client_req_url(char *buf) | |
| { | |
| static char const *str = "http://www.foobar.com/"; | |
| int len = LogAccess::strlen(str); | |
| if (buf) { | |
| marshal_str(buf, str, len); | |
| } | |
| return len; | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_client_req_http_version(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 2; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_client_req_header_len(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 3; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_client_req_content_len(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 4; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_client_finish_status_code(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 5; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_proxy_resp_content_type(char *buf) | |
| { | |
| static char const *str = "text/html"; | |
| int len = LogAccess::strlen(str); | |
| if (buf) { | |
| marshal_str(buf, str, len); | |
| } | |
| return len; | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_proxy_resp_reason_phrase(char *buf) | |
| { | |
| static char const *str = "Unknown reason"; | |
| int len = LogAccess::strlen(str); | |
| if (buf) { | |
| marshal_str(buf, str, len); | |
| } | |
| return len; | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_proxy_resp_squid_len(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 100; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_proxy_resp_content_len(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 6; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_proxy_resp_status_code(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 7; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_proxy_resp_header_len(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 8; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_proxy_finish_status_code(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 9; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_cache_result_code(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 10; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_cache_miss_hit(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 10; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_proxy_req_header_len(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 11; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_proxy_req_content_len(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 12; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_proxy_hierarchy_route(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 13; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_server_host_ip(char *buf) | |
| { | |
| IpEndpoint lo; | |
| ats_ip4_set(&lo, INADDR_LOOPBACK); | |
| return marshal_ip(buf, &lo.sa); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_server_host_name(char *buf) | |
| { | |
| static char const *str = "www.foobar.com"; | |
| int len = LogAccess::strlen(str); | |
| if (buf) { | |
| marshal_str(buf, str, len); | |
| } | |
| return len; | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_server_resp_status_code(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 15; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_server_resp_content_len(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 16; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_server_resp_header_len(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 17; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_transfer_time_ms(char *buf) | |
| { | |
| if (buf) { | |
| int64_t val = 18; | |
| marshal_int(buf, val); | |
| } | |
| return sizeof(int64_t); | |
| } | |
| /*------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------*/ | |
| int | |
| LogAccessTest::marshal_http_header_field(char *header_symbol, char *field, char *buf) | |
| { | |
| return 0; // STUB | |
| } |