TS-3780: Logs_xml: add logging field for incoming (interface) ip. TESTS
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/e3997919 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/e3997919 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/e3997919 Branch: refs/heads/master Commit: e39979197066c4e32cfee8dd6ca9301d4fbc02b3 Parents: 063cb57 Author: Zizhong Zhang <zizh...@linkedin.com> Authored: Mon Jul 20 22:45:16 2015 -0700 Committer: Zizhong Zhang <zizh...@linkedin.com> Committed: Mon Jul 20 22:45:16 2015 -0700 ---------------------------------------------------------------------- ci/tsqa/tests/test_custom_log.py | 71 +++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e3997919/ci/tsqa/tests/test_custom_log.py ---------------------------------------------------------------------- diff --git a/ci/tsqa/tests/test_custom_log.py b/ci/tsqa/tests/test_custom_log.py new file mode 100644 index 0000000..37573b7 --- /dev/null +++ b/ci/tsqa/tests/test_custom_log.py @@ -0,0 +1,71 @@ +''' +Test custom log field +''' + +# 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. + +import os +import requests +import time +import logging +import SocketServer +import random +import tsqa.test_cases +import helpers +import json + +log = logging.getLogger(__name__) + +class TestCustomLogField(helpers.EnvironmentCase): + ''' + Tests for a customed log field called hii + ''' + @classmethod + def setUpEnv(cls, env): + + cls.configs['remap.config'].add_line( + 'map / http://www.linkedin.com/ @action=deny' + ) + cls.log_file_name = 'test_log_field' + cls.configs['records.config']['CONFIG'].update({ + 'proxy.config.log.custom_logs_enabled': 1, + }) + + cls.log_file_path = os.path.join(cls.environment.layout.prefix, 'var/log/test_log_field.log') + cls.log_etc_file = os.path.join(cls.environment.layout.prefix, 'etc/trafficserver/logs_xml.config') + cls.configs['logs_xml.config'].add_line('<LogFormat><Name = "testlogfield"/><Format = "%<hii> %<hiih>"/></LogFormat>') + cls.configs['logs_xml.config'].add_line('<LogObject><Format = "testlogfield"/><Filename = "test_log_field"/><Mode = "ascii"/></LogObject>') + + def ip_to_hex(self, ipstr): + num_list = ipstr.split('.') + int_value = (int(num_list[0]) << 24) + (int(num_list[1]) << 16) + (int(num_list[2]) << 8) + (int(num_list[3])) + return hex(int_value).upper()[2:] + + def test_log_field(self): + random.seed() + times = 10 + for i in xrange(times): + request_ip = "127.%d.%d.%d" % (random.randint(1, 255), random.randint(1, 255), random.randint(1, 255)) + url = 'http://%s:%s' % (request_ip, self.configs['records.config']['CONFIG']['proxy.config.http.server_ports']) + r = requests.get(url) + #get the last line of the log file + time.sleep(10) + with open(self.log_file_path) as f: + for line in f: + pass + expected_line = "%s %s\n" % (request_ip, self.ip_to_hex(request_ip)) + self.assertEqual(line, expected_line)