/* * 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. */ package org.apache.pig.piggybank.test.evaluation.util.apachelogparser; import junit.framework.TestCase; import org.apache.pig.data.DefaultTupleFactory; import org.apache.pig.data.Tuple; import org.apache.pig.piggybank.evaluation.util.apachelogparser.DateExtractor; import org.junit.Test; public class TestDateExtractor extends TestCase { private Tuple input=DefaultTupleFactory.getInstance().newTuple(1); @Test public void testInstantiation() { assertNotNull(new DateExtractor()); } @Test public void testDefaultFormatters() throws Exception { DateExtractor dayExtractor = new DateExtractor(); // test that GMT conversion moves the day input.set(0, "20/Sep/2008:23:53:04 -0600"); assertEquals("2008-09-21", dayExtractor.exec(input)); // test that if the string is already in GMT, nothing moves input.set(0, "20/Sep/2008:23:53:04 -0000"); assertEquals("2008-09-20", dayExtractor.exec(input)); } @Test public void testMZFormatters() throws Exception { DateExtractor extractor = new DateExtractor("dd/MMM/yyyy:HH:mm:ss Z", "yyyy-MM-dd", "PST"); input.set(0, "20/Sep/2008:23:53:04 -0700"); assertEquals("2008-09-20", extractor.exec(input)); } @Test public void testFailureThenSuccess() throws Exception { DateExtractor dayExtractor = new DateExtractor(); input.set(0,"dud"); assertEquals(null, dayExtractor.exec(input)); input.set(0,"20/Sep/2008:23:53:04 -0000"); assertEquals("2008-09-20", dayExtractor.exec(input)); } @Test public void testPassedOutputFormatter() throws Exception { DateExtractor dayExtractor = new DateExtractor("MM-dd-yyyy"); input.set(0,"20/Sep/2008:23:53:04 -0000"); assertEquals("09-20-2008", dayExtractor.exec(input)); } @Test public void testPassedInputOutputFormatter() throws Exception { DateExtractor dayExtractor = new DateExtractor("dd/MMM/yyyy:HH:mm:ss", "MM~dd~yyyy"); input.set(0,"20/Sep/2008:23:53:04"); assertEquals("09~20~2008", dayExtractor.exec(input)); } @Test public void testPassedOutputInputFormatterYear() throws Exception { DateExtractor dayExtractor = new DateExtractor("dd/MMM/yyyy:HH:mm:ss", "yyyy"); input.set(0,"20/Sep/2008:23:53:04"); assertEquals("2008", dayExtractor.exec(input)); } @Test public void testPassedOutputFormatterYear() throws Exception { DateExtractor dayExtractor = new DateExtractor("yyyy"); input.set(0, "20/Sep/2008:23:53:04 -0600"); assertEquals("2008", dayExtractor.exec(input)); } }