Package com.agiletec.plugins.jpstats.aps.system.services.stats

Source Code of com.agiletec.plugins.jpstats.aps.system.services.stats.TestStatsManager

/*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
* This file is part of Entando software.
* Entando is a free software;
* You can redistribute it and/or modify it
* under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2.
*
* See the file License for the specific language governing permissions  
* and limitations under the License
*
*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
*/
package com.agiletec.plugins.jpstats.aps.system.services.stats;

import java.sql.SQLException;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesDataItem;

import com.agiletec.aps.system.exception.ApsSystemException;
import com.agiletec.aps.util.DateConverter;
import com.agiletec.plugins.jpstats.aps.ApsPluginBaseTestCase;
import com.agiletec.plugins.jpstats.aps.system.services.JpStatsSystemConstants;
import com.agiletec.plugins.jpstats.aps.util.CalendarConverter;
import com.agiletec.plugins.jpstats.aps.util.StatsDataBean;
import com.agiletec.plugins.jpstats.aps.util.TopContentsCDP;
import com.agiletec.plugins.jpstats.util.TestStatsUtils;

import de.laures.cewolf.DatasetProduceException;

public class TestStatsManager extends ApsPluginBaseTestCase {
 
  public void testAddStatsRecord() throws Throwable {
    String today = DateConverter.getFormattedDate(new Date(), "dd/MM/yyyy");
    Calendar start = CalendarConverter.getCalendarDay(today, 0, 0, 0, 0);
    Calendar end = Calendar.getInstance();
    end.add(Calendar.DAY_OF_YEAR, 1);
    try {
      TimeSeries ts = _statsManager.getHitsByInterval(start, end);
      TimeSeriesDataItem timeSeriesDataItem = (TimeSeriesDataItem) ts.getItems().get(0);
      assertEquals(0, timeSeriesDataItem.getValue().intValue());
      this._statsManager.addStatsRecord(this.createRecordForTest());
      TestStatsUtils.waitStatsThread();
      ts = _statsManager.getHitsByInterval(start, end);
      timeSeriesDataItem = (TimeSeriesDataItem) ts.getItems().get(0);
      assertEquals(1, timeSeriesDataItem.getValue().intValue());
    } catch (Throwable t) {
      throw t;
    } finally {
      this._statsManager.deleteStatsRecord(start.getTime(), end.getTime());
      TimeSeries ts = _statsManager.getHitsByInterval(start, end);
      TimeSeriesDataItem timeSeriesDataItem = (TimeSeriesDataItem) ts.getItems().get(0);
      assertEquals(0, timeSeriesDataItem.getValue().intValue());
    }
  }
 
  public void testGetHitsByInterval() throws Throwable {
    Calendar start = CalendarConverter.getCalendarDay("06/03/2007", 0, 0, 0, 0);
    Calendar end = CalendarConverter.getCalendarDay("07/03/2007", 23, 59, 59, 999);
    TimeSeries ts = _statsManager.getHitsByInterval(start, end);
    int days = ts.getItems().size();
    assertEquals(2, days);
    TimeSeriesDataItem timeSeriesDataItem = (TimeSeriesDataItem) ts.getItems().get(0);
    assertEquals(14,timeSeriesDataItem.getValue().intValue());
  }
 
  public void testGetAverageTimeSite() throws ApsSystemException, SQLException {
    Calendar start = CalendarConverter.getCalendarDay("10/03/2007", 0, 0, 0, 0);
    Calendar end = CalendarConverter.getCalendarDay("10/03/2007", 23, 59, 59, 999);
    String averageTimeSite = _statsManager.getAverageTimeSite(start, end);
    assertTrue(averageTimeSite.startsWith("0 days 00:00:0")); //derby results differ by 1 second from postgres results
  }
 
  public void testGetAverageTimePage() throws ApsSystemException, SQLException {
    Calendar start = CalendarConverter.getCalendarDay("10/03/2007", 0, 0, 0, 0);
    Calendar end = CalendarConverter.getCalendarDay("10/03/2007", 23, 59, 59, 999);
    String averageTimeSite = _statsManager.getAverageTimePage(start, end);
    assertTrue(averageTimeSite.startsWith("0 days 00:00:0")); //derby results differ by 1 second from postgres results
  }
 
  public void testGetNumPageSession() throws ApsSystemException, SQLException {
    Calendar start = CalendarConverter.getCalendarDay("06/03/2007", 0, 0, 0, 0);
    Calendar end = CalendarConverter.getCalendarDay("10/03/2007", 23, 59, 59, 999);
    int numPageSession = _statsManager.getNumPageSession(start, end);
    assertEquals(3, numPageSession);
  }
 
  public void testGetPageVisitedAsc() throws ApsSystemException, SQLException {
    Calendar start = CalendarConverter.getCalendarDay("06/03/2007", 0, 0, 0, 0);
    Calendar end = CalendarConverter.getCalendarDay("10/03/2007", 23, 59, 59, 999);
    Map<String, Integer> pageVisitedDesc = _statsManager.getTopPages(start, end);
    assertEquals(3, pageVisitedDesc.size());
    Object homepage = pageVisitedDesc.get("homepage");
    assertEquals(Integer.parseInt(homepage.toString()), 50);
    Object errorpage =pageVisitedDesc.get("errorpage");
    assertEquals(Integer.parseInt(errorpage.toString()), 4);
    Object risultati_della_ricerca =pageVisitedDesc.get("risultati_della_ricerca");
    assertEquals(Integer.parseInt(risultati_della_ricerca.toString()), 2);
  }
 
  public void testGetTopContents() throws ApsSystemException, SQLException, DatasetProduceException {
    Calendar start = CalendarConverter.getCalendarDay("06/03/2007", 0, 0, 0, 0);
    Calendar end = CalendarConverter.getCalendarDay("10/03/2007", 23, 59, 59, 999);
   
    Map<String, Integer> topContents = _statsManager.getTopContents(start, end);
    assertNotNull(topContents);
   
    start = CalendarConverter.getCalendarDay("06/03/2007", 0, 0, 0, 0);
    end = CalendarConverter.getCalendarDay("18/03/2007", 23, 59, 59, 999);
   
    topContents = _statsManager.getTopContents(start, end);
    assertEquals(4, topContents.size());
    assertEquals("17", topContents.get("una descrizione particolare").toString());
    StatsDataBean bean = new StatsDataBean();
    start = CalendarConverter.getCalendarDay("05/03/2007", 23, 59, 59, 999);
    end = CalendarConverter.getCalendarDay("30/03/2007", 23, 59, 59, 999);
    bean.setStart(start);
    bean.setEnd(end);
    TopContentsCDP topContentsCDP = new TopContentsCDP(_statsManager, bean);
    Object produceDataset = topContentsCDP.produceDataset(null);
    assertNotNull(produceDataset);
  }
 
  public void testCountIPByDateInterval() throws ApsSystemException, SQLException {
    Calendar start = CalendarConverter.getCalendarDay("06/03/2007", 0, 0, 0, 0);
    Calendar end = CalendarConverter.getCalendarDay("10/03/2007", 23, 59, 59, 999);
   
    int countIp =_statsManager.getIPByDateInterval(start, end);
    assertEquals(1, countIp);
  }
 
  public void testGetFirsrCalendarDay() {
    Calendar firstCalendarDay = _statsManager.getFirstCalendarDay();
    String now = DateConverter.getFormattedDate(firstCalendarDay.getTime(), JpStatsSystemConstants.DATE_FORMAT);
    assertEquals("26/02/2007", now);
  }
 
  private StatsRecord createRecordForTest() {
    StatsRecord statsRecord = new StatsRecord(Calendar.getInstance());
    statsRecord.setIp("127.0.0.1");
    statsRecord.setReferer("http://www.japsportal.org/japsportal/it/chi_siamo.wp");
    statsRecord.setSessionId("A3EFA0BC2E5FB24436609B5BE786EDCA");
    statsRecord.setRole("");
    statsRecord.setPageCode("chi_siamo");
    statsRecord.setLangcode("it");
    statsRecord.setUseragent("Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7");
    statsRecord.setBrowserLang("it-it,it;q=0.8,en-us;q=0.5,en;q=0.3");
    statsRecord.setContentId("ART124");
    return statsRecord;
  }
 
}
TOP

Related Classes of com.agiletec.plugins.jpstats.aps.system.services.stats.TestStatsManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.