Author: agilliland
Date: Mon Apr 17 12:16:41 2006
New Revision: 394755

URL: http://svn.apache.org/viewcvs?rev=394755&view=rev
Log:
cleanup referer manager and enable referer unit test.


Modified:
    incubator/roller/branches/roller-newbackend/build.xml
    
incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateRefererManagerImpl.java
    
incubator/roller/branches/roller-newbackend/tests/org/roller/business/RefererManagerTest.java

Modified: incubator/roller/branches/roller-newbackend/build.xml
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/build.xml?rev=394755&r1=394754&r2=394755&view=diff
==============================================================================
--- incubator/roller/branches/roller-newbackend/build.xml (original)
+++ incubator/roller/branches/roller-newbackend/build.xml Mon Apr 17 12:16:41 
2006
@@ -829,6 +829,7 @@
                <include name="org/roller/business/FileManagerTest.class"/>
                <include name="org/roller/business/PlanetManagerTest.class"/>
                <include name="org/roller/business/BookmarkManagerTest.class"/>
+               <include name="org/roller/business/RefererManagerTest.class"/>
             </fileset>
         </batchtest>
     </junit>

Modified: 
incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateRefererManagerImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateRefererManagerImpl.java?rev=394755&r1=394754&r2=394755&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateRefererManagerImpl.java
 (original)
+++ 
incubator/roller/branches/roller-newbackend/src/org/roller/business/hibernate/HibernateRefererManagerImpl.java
 Mon Apr 17 12:16:41 2006
@@ -75,7 +75,7 @@
      * @see 
org.roller.pojos.RefererManager#storeReferer(org.roller.pojos.RefererData)
      */
     public void storeReferer(RefererData referer) throws RollerException {
-        strategy.storeAndCommit(referer);
+        strategy.store(referer);
     }
     
     
@@ -83,36 +83,17 @@
      * @see org.roller.pojos.RefererManager#removeReferer(java.lang.String)
      */
     public void removeReferer(String id) throws RollerException {
-        strategy.removeAndCommit(id, RefererData.class);
+        strategy.remove(id, RefererData.class);
     }
     
     
     // convenience method for removing a list of referers
     private void removeReferers(List referers) throws RollerException {
         
-        try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
-            // just go through the list and remove each auto ping
-            Iterator referer = referers.iterator();
-            while (referer.hasNext()) {
-                    this.strategy.remove((RefererData) referer.next());
-            }
-            
-            // commit changes
-            this.strategy.getSession().getTransaction().commit();
-        } catch (HibernateException ex) {
-            
-            try {
-                this.strategy.getSession().getTransaction().rollback();
-            } catch(HibernateException he) {
-                log.error("Error doing rollback", he);
-            }
-            
-            strategy.release();
-            
-            throw new RollerException(ex);
+        // just go through the list and remove each auto ping
+        Iterator referer = referers.iterator();
+        while (referer.hasNext()) {
+            this.strategy.remove((RefererData) referer.next());
         }
     }
     
@@ -126,9 +107,6 @@
             throw new RollerException("entryid is null");
         
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(RefererData.class);
             criteria.createAlias("weblogEntry","e");
@@ -151,9 +129,6 @@
             log.debug("clearReferrers");
         }
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Dialect currentDialect = 
((SessionFactoryImplementor)session.getSessionFactory()).getDialect();
             String reset = "update RefererData set dayHits=0";
@@ -182,9 +157,6 @@
             log.debug("clearReferrers");
         }
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Dialect currentDialect = 
((SessionFactoryImplementor)session.getSessionFactory()).getDialect();
             String reset = "update RefererData set dayHits=0 where 
website=:site";
@@ -208,10 +180,8 @@
      * Apply ignoreWord/spam filters to all referers in system.
      */
     public void applyRefererFilters() throws RollerException {
+        
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(RefererData.class);
             
@@ -241,13 +211,11 @@
      * Apply ignoreWord/spam filters to all referers in website.
      */
     public void applyRefererFilters(WebsiteData website) throws 
RollerException {
+        
         if (null == website) throw new RollerException("website is null");
         if (null == website.getBlacklist()) return;
         
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(RefererData.class);
             
@@ -280,9 +248,6 @@
             String permalink) throws RollerException {
         
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(RefererData.class);
             criteria.add(Expression.conjunction()
@@ -304,9 +269,6 @@
             String refererUrl) throws RollerException {
         
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(RefererData.class);
             criteria.add(Expression.conjunction()
@@ -481,9 +443,6 @@
             throw new RollerException("website is null");
         
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(RefererData.class);
             criteria.add(Expression.eq("website",website));
@@ -504,9 +463,6 @@
             throw new RollerException("website is null");
         
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(RefererData.class);
             criteria.add(Expression.eq("website", website));
@@ -535,9 +491,6 @@
             throw new RollerException("Date is null");
         
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(RefererData.class);
             criteria.add(Expression.eq("website", website));
@@ -561,9 +514,6 @@
             throw new RollerException("entryid is null");
         
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(RefererData.class);
             criteria.createAlias("weblogEntry","e");
@@ -588,9 +538,6 @@
             throws RollerException {
         
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(RefererData.class);
             criteria.add(Expression.eq("website", website));
@@ -611,10 +558,8 @@
                                             String title,
                                             String excerpt)
             throws RollerException {
+        
         try {
-            // begin transaction
-            this.strategy.getSession().beginTransaction();
-            
             Session session = 
((HibernatePersistenceStrategy)strategy).getSession();
             Criteria criteria = session.createCriteria(RefererData.class);
             

Modified: 
incubator/roller/branches/roller-newbackend/tests/org/roller/business/RefererManagerTest.java
URL: 
http://svn.apache.org/viewcvs/incubator/roller/branches/roller-newbackend/tests/org/roller/business/RefererManagerTest.java?rev=394755&r1=394754&r2=394755&view=diff
==============================================================================
--- 
incubator/roller/branches/roller-newbackend/tests/org/roller/business/RefererManagerTest.java
 (original)
+++ 
incubator/roller/branches/roller-newbackend/tests/org/roller/business/RefererManagerTest.java
 Mon Apr 17 12:16:41 2006
@@ -1 +1 @@
-package org.roller.business; 

import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import junit.framework.Test;
import junit.framework.TestSuite;
 
import org.roller.RollerException;
import org.roller.model.PropertiesManager;
import org.roller.model.RefererManager;
import org.roller.model.Roller;
import org.roller.pojos.RefererData;
import org.roller.pojos.RollerPropertyData;
import org.roller.pojos.UserData;
import org.roller.pojos.WeblogEntryData;
import org.roller.pojos.WebsiteData;
import org.roller.util.DateUtil;
import org.roller.RollerTestBase;

/**
 * Test Roller Referer Management.
 */
public class RefererManagerTest extends RollerTestBase 
{
    RefererManager rmgr;
    //List refs;
    int count = 20;        
    String testDay;
    String origSpamWords;

    //------------------------------------------------------------------------
        public RefererManagerTest(String name) 
    {
                super(name);
        }
    
    //--------
 ----------------------------------------------------------------
        public static void main(String args[]) 
    {
                junit.textui.TestRunner.run(RefererManagerTest.class);
        }
    
    //------------------------------------------------------------------------
    public static Test suite() 
    {
        return new TestSuite(RefererManagerTest.class);
    }

    public void setUp() throws Exception
    {
        super.setUp();
        
        // add "spamtest" to refererSpamWords
        Roller mRoller = getRoller();
        PropertiesManager pmgr = mRoller.getPropertiesManager();
        RollerPropertyData spamprop = pmgr.getProperty("spam.blacklist");
        this.origSpamWords = spamprop.getValue();
        spamprop.setValue(spamprop.getValue() + ", spamtest");
        pmgr.store(spamprop);
        
        // Process count unique referers
        rmgr = getRoller().getRefererManager();
        Calendar lCalendar = Calendar.getInstance();
        lCalendar.setTime(new Date()
 );
        for (int i = 0; i < count; i++)
        {
            lCalendar.add(Calendar.DATE, -1);
            Timestamp day = new Timestamp(lCalendar.getTime().getTime());
            testDay = DateUtil.format8chars(day);
            
            /*
            MockRequest mock = new MockRequest(
                                DateUtil.format8chars(day),
                                "http://test"+i,
                                "http://test"+i,
                                null,
                                mWebsite
            );
            rmgr.processRequest(mock);
            */
            rmgr.processReferrer("http://test"+i, "http://test"+i, 
                    mWebsite.getHandle(), null, testDay);
            getRoller().commit();
            
            //testDay = mock.getDateString();
        }
    }

    public void tearDown() throws Exception
    {      
        List refs = rmgr.getReferers(mWebsite);
        // Remove all referers processes
   
      for (int i = 0; i < refs.size(); i++)
        {
            rmgr.removeReferer(((RefererData)refs.get(i)).getId());    
        }
        
        // Make sure all were removed
        refs = rmgr.getReferers(mWebsite);            
        assertEquals(0,refs.size());

        // reset refererSpamWords to original value
        Roller mRoller = getRoller();
        PropertiesManager pmgr = mRoller.getPropertiesManager();
        RollerPropertyData spamprop = pmgr.getProperty("spam.blacklist");
        spamprop.setValue(this.origSpamWords);
        pmgr.store(spamprop);
        
        super.tearDown();
    }
    
    //------------------------------------------------------------------------
    public void testGetReferersToDate() throws Exception
    {
        List referers = rmgr.getReferersToDate(mWebsite, testDay);
        assertEquals("Should be one Referer.", referers.size(), 1);
    }
    
    //--------------------------------------------------------------------
 ----
    public void testRefererProcessing() throws RollerException
    {
        List refs = rmgr.getReferers(mWebsite);            
        assertEquals("number of referers should equal count", count, 
refs.size());
        
        int hits = rmgr.getDayHits(mWebsite);
        assertEquals("There should be one fewer hits than referers", count, 
hits);         
    }
    
    /* Self-Referrer Denial is now caught by the RefererFilter -- Allen G
    public void testSelfRefererDenial() throws RollerException
    {
        // test against "self referrals"
        getRoller().begin(UserData.SYSTEM_USER);
        // create "direct" referer
        boolean isSpam = rmgr.processRequest(
            new MockRequest(
                "20020101",
                "direct",
                "http://test.com";,
                null, mWebsite
            )
        );
        getRoller().commit();
        assertFalse("is not spam", isSpam);
        int newRefCount = rmgr.getReferers(mWebsite)
 .size();
        
        // now create self-referer
        getRoller().begin(UserData.SYSTEM_USER);
        
        isSpam = rmgr.processRequest(
            new MockRequest(
                "20020202",
                "http://test.com/page/"; + mWebsite.getHandle(),
                "http://test.com";,
                null, mWebsite
            )
        );
        getRoller().commit();
        assertFalse("is not spam", isSpam);
        
        // number of referrers should not have changed
        List refs = rmgr.getReferers(mWebsite);            
        assertEquals("self referal not ignored", newRefCount, refs.size()); 
        
        // now create self-referer from editor page
        isSpam = rmgr.processRequest(
            new MockRequest(
                "20020202",
                "http://test.com/weblog.do";,
                "http://test.com";,
                null, mWebsite
            )
        );
        getRoller().commit();
        assertFalse("is not spa
 m", isSpam);
        
        // number of referrers should not have changed
        refs = rmgr.getReferers(mWebsite);            
        assertEquals("editor referal not ignored", newRefCount, refs.size()); 
    }
    */
    
    /**
     * Test to see if Referer Spam detection works.
     */
    /* Referrer spam detection now happens in the RefererFilter -- Allen G
    public void testSpamBlocking()
    {
        boolean isSpam = rmgr.processRequest(
            new MockRequest(
                "20040101",
                "http://www.spamtest.com";,
                "http://test.com";,
                null, mWebsite
            )
        );
        //assertTrue("failed to detect referer spam", isSpam);
    }
    */
    
    public void testApplyRefererFilters() throws Exception
    {
        List refs = rmgr.getReferers(mWebsite);
        assertEquals(count, refs.size());
        String origWords = null;
        
        Roller mRoller = getRoller();
        PropertiesManag
 er pmgr = mRoller.getPropertiesManager();
        RollerPropertyData spamprop = pmgr.getProperty("spam.blacklist");
        origWords = spamprop.getValue();
        spamprop.setValue(spamprop.getValue() + ", test");
        pmgr.store(spamprop);
        getRoller().commit();
        
        getRoller().getRefererManager().applyRefererFilters();
        getRoller().commit();
        
        refs = rmgr.getReferers(mWebsite);
        assertEquals(0, refs.size());

        spamprop = pmgr.getProperty("spam.blacklist");
        spamprop.setValue(origWords);
        pmgr.store(spamprop);
        getRoller().commit();
    }
    
    public void testApplyRefererFiltersWebsite() throws Exception
    {
        List refs = rmgr.getReferers(mWebsite);
        assertEquals(count, refs.size());
        String origWords = null;
        
        mWebsite = 
getRoller().getUserManager().retrieveWebsite(mWebsite.getId());
        origWords = mWebsite.getBlacklist();
        mWebsite.setBlac
 klist("test");
        mWebsite.save();
        getRoller().commit();
        
        getRoller().getRefererManager().applyRefererFilters();
        getRoller().commit();
        
        refs = rmgr.getReferers(mWebsite);
        assertEquals(0, refs.size());
    }
}

\ No newline at end of file
+package org.roller.business;

import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.roller.RollerException;
import org.roller.model.PropertiesManager;
import org.roller.model.RefererManager;
import org.roller.pojos.RollerPropertyData;
import org.roller.pojos.UserData;
import org.roller.pojos.WebsiteData;
import org.roller.util.DateUtil;
import org.roller.TestUtils;
import org.roller.model.RollerFactory;
import org.roller.model.UserManager;


/**
 * Test Roller Referer Management.
 */
public class RefererManagerTest extends TestCase {
    
    public static Log log = LogFactory.getLog(RefererManagerTest.class);
    
    UserData testUser = null;
    WebsiteData testWeblog = null;
    
    int count = 20;
    String testDay;
    String origSpa
 mWords;
    
    
    public RefererManagerTest(String name) {
        super(name);
    }
    
    
    public static Test suite() {
        return new TestSuite(RefererManagerTest.class);
    }
    
    
    /**
     * All tests in this suite require a user and a weblog.
     */
    public void setUp() throws Exception {
        
        try {
            testUser = TestUtils.setupUser("referTestUser");
            testWeblog = TestUtils.setupWeblog("referTestWeblog", testUser);
            
            // add "spamtest" to refererSpamWords
            PropertiesManager pmgr = 
RollerFactory.getRoller().getPropertiesManager();
            RollerPropertyData spamprop = pmgr.getProperty("spam.blacklist");
            this.origSpamWords = spamprop.getValue();
            spamprop.setValue(spamprop.getValue() + ", spamtest");
            pmgr.store(spamprop);
            
            // add a number of referers to play with
            RefererManager rmgr = RollerFactory.getRoll
 er().getRefererManager();
            Calendar lCalendar = Calendar.getInstance();
            lCalendar.setTime(new Date());
            for (int i = 0; i < count; i++) {
                lCalendar.add(Calendar.DATE, -1);
                Timestamp day = new Timestamp(lCalendar.getTime().getTime());
                testDay = DateUtil.format8chars(day);
                
                rmgr.processReferrer("http://test"+i, "http://test"+i,
                        testWeblog.getHandle(), null, testDay);
            }
            
            TestUtils.endSession(true);
            
        } catch (Exception ex){
            log.error(ex);
            throw new Exception("Test setup failed", ex);
        }
    }
    
    public void tearDown() throws Exception {
        
        try {
            // reset refererSpamWords to original value
            PropertiesManager pmgr = 
RollerFactory.getRoller().getPropertiesManager();
            RollerPropertyData spamprop = pmgr.getPro
 perty("spam.blacklist");
            spamprop.setValue(this.origSpamWords);
            pmgr.store(spamprop);
            
            TestUtils.teardownWeblog(testWeblog.getId());
            TestUtils.teardownUser(testUser.getId());
            
            TestUtils.endSession(true);
        } catch (Exception ex) {
            log.error(ex);
            throw new Exception("Test teardown failed", ex);
        }
    }
    
    
    public void testGetReferersToDate() throws Exception {
        
        RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
        
        List referers = rmgr.getReferersToDate(testWeblog, testDay);
        assertEquals("Should be one Referer.", referers.size(), 1);
    }
    
    
    public void testRefererProcessing() throws RollerException {
        
        RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
        
        List refs = rmgr.getReferers(testWeblog);
        assertEquals("number of refer
 ers should equal count", count, refs.size());
        
        int hits = rmgr.getDayHits(testWeblog);
        assertEquals("There should be one fewer hits than referers", count, 
hits);
    }
    
    
    public void testApplyRefererFilters() throws Exception {
        
        RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
        
        List refs = rmgr.getReferers(testWeblog);
        assertEquals(count, refs.size());
        
        PropertiesManager pmgr = 
RollerFactory.getRoller().getPropertiesManager();
        RollerPropertyData spamprop = pmgr.getProperty("spam.blacklist");
        String origWords = spamprop.getValue();
        spamprop.setValue(spamprop.getValue() + ", test");
        pmgr.store(spamprop);
        TestUtils.endSession(true);
        
        rmgr.applyRefererFilters();
        TestUtils.endSession(true);
        
        refs = rmgr.getReferers(testWeblog);
        assertEquals(0, refs.size());
        
        spamprop =
  pmgr.getProperty("spam.blacklist");
        spamprop.setValue(origWords);
        pmgr.store(spamprop);
        TestUtils.endSession(true);
    }
    
    
    public void testApplyRefererFiltersWebsite() throws Exception {
        
        RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
        
        List refs = rmgr.getReferers(testWeblog);
        assertEquals(count, refs.size());
        String origWords = null;
        
        UserManager umgr = RollerFactory.getRoller().getUserManager();
        testWeblog = umgr.retrieveWebsite(testWeblog.getId());
        origWords = testWeblog.getBlacklist();
        testWeblog.setBlacklist("test");
        umgr.storeWebsite(testWeblog);
        TestUtils.endSession(true);
        
        rmgr.applyRefererFilters();
        TestUtils.endSession(true);
        
        refs = rmgr.getReferers(testWeblog);
        assertEquals(0, refs.size());
    }
    
}

\ No newline at end of file


Reply via email to