/**
* Licensed to Cloudera, Inc. under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. Cloudera, Inc. 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.
*/
package com.cloudera.flume.handlers.text;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.junit.Assert;
import org.junit.Test;
import com.cloudera.flume.core.Event;
/**
* Unit tests for default Apache Access Log format.
*/
public class TestApacheInputFormat {
String test1 = "209.62.54.130 - - [21/Jun/2009:05:06:17 -0400] \"GET / HTTP/1.0\" 301 -";
String test2 = "209.62.54.130 - - [21/Jun/2009:05:06:18 -0400] \"GET /reports/39/issues/ HTTP/1.0\" 200 16663";
String test3 = "72.51.41.47 - - [21/Jun/2009:05:07:17 -0400] \"GET / HTTP/1.0\" 301 -";
String test4 = "66.249.71.16 - - [28/Jun/2009:05:06:48 -0400] \"GET /debian/dists/hardy/contrib/source/?C=S;O=A HTTP/1.1\" 200 1366 \"-\" \"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\"";
String test5 = "207.218.231.170 - - [28/Jun/2009:05:07:33 -0400] \"GET / HTTP/1.0\" 200 3421 \"-\" \"Pingdom.com_bot_version_1.4_(http://www.pingdom.com/)\"";
@Test
public void testRegex() {
Pattern p = ApacheAccessLogFormat.APACHE_PAT;
Matcher m1 = p.matcher(test1);
Assert.assertTrue(m1.matches());
for (int i = 0; i <= m1.groupCount(); i++) {
System.out.println(m1.group(i));
}
Matcher m2 = p.matcher(test5);
Assert.assertTrue(m2.matches());
for (int i = 0; i <= m2.groupCount(); i++) {
System.out.println(m2.group(i));
}
}
@Test
public void testApacheFormat() {
ApacheAccessLogFormat fmt = new ApacheAccessLogFormat();
Event e1 = fmt.extract(test1);
System.out.println(e1);
e1.toString().contains("client : 209.62.54.130");
e1.toString().contains("req_result : 301");
Event e2 = fmt.extract(test2);
System.out.println(e2);
e2.toString().contains("client : 209.62.54.130");
e2.toString().contains("req_result : 200");
e2.toString().contains("req_size: 16663");
Event e3 = fmt.extract(test3);
System.out.println(e3);
e3.toString().contains("client : 75.51.41.47");
e3.toString().contains("req_result : 301");
e3.toString().contains("req_size: -");
Event e4 = fmt.extract(test4);
System.out.println(e4);
e4.toString().contains("browser : Mozilla/5.0");
e4.toString().contains("client : 207.218.231.170");
e4.toString().contains("req_size: 1366");
Event e5 = fmt.extract(test5);
System.out.println(e5);
e5.toString().contains("browser : Pingdom.com_bot_version_1.4_");
e5.toString().contains("req_result : 200");
e5.toString().contains("req_size: 3421");
}
}