Modified: roller/trunk/apps/weblogger/test/java/org/apache/roller/weblogger/business/MediaFileTest.java URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/test/java/org/apache/roller/weblogger/business/MediaFileTest.java?rev=797783&r1=797782&r2=797783&view=diff ============================================================================== --- roller/trunk/apps/weblogger/test/java/org/apache/roller/weblogger/business/MediaFileTest.java (original) +++ roller/trunk/apps/weblogger/test/java/org/apache/roller/weblogger/business/MediaFileTest.java Sat Jul 25 15:50:25 2009 @@ -19,6 +19,7 @@ package org.apache.roller.weblogger.business; +import java.io.File; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; @@ -31,6 +32,8 @@ import org.apache.commons.logging.LogFactory; import org.apache.roller.weblogger.TestUtils; import org.apache.roller.weblogger.WebloggerException; +import org.apache.roller.weblogger.business.jpa.JPAMediaFileManagerImpl; +import org.apache.roller.weblogger.config.WebloggerConfig; import org.apache.roller.weblogger.pojos.MediaFile; import org.apache.roller.weblogger.pojos.MediaFileDirectory; import org.apache.roller.weblogger.pojos.MediaFileFilter; @@ -40,10 +43,7 @@ import org.apache.roller.weblogger.pojos.Weblog; import org.apache.roller.weblogger.pojos.MediaFileFilter.MediaFileOrder; import org.apache.roller.weblogger.pojos.MediaFileFilter.SizeFilterType; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; +import org.apache.roller.weblogger.pojos.RuntimeConfigProperty; import org.junit.Test; /** @@ -52,51 +52,18 @@ public class MediaFileTest extends TestCase { public static Log log = LogFactory.getLog(MediaFileTest.class); - static final String runtimeEnv; + //static final String runtimeEnv; + + public final static String TEST_IMAGE = "/hawk.jpg"; public MediaFileTest() { - // TODO: create setup and teardown classes and move test user/weblgo to them after resolving the issue with teardown. - } - - public MediaFileTest(String name) { - super(name); - } - - static { - runtimeEnv = System.getProperty("runtime-environment"); - try { - classInit(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @BeforeClass - public static void classInit() throws Exception { } - @AfterClass - public static void classTearDown() { - } - - @Before - public void setUpApp() throws Exception { + public void setUp() throws Exception { + TestUtils.setupWeblogger(); } - @After public void tearDown() throws Exception { - /* - try { - TestUtils.teardownWeblog(testWeblog.getId()); - TestUtils.teardownUser(this.testUser.getUserName()); - TestUtils.endSession(true); - } catch (Exception ex) { - log.error(ex); - throw new Exception("Test teardown failed", ex); - } - */ - } /** @@ -197,6 +164,10 @@ catch (WebloggerException e) { assertTrue(true); } + + TestUtils.endSession(true); + TestUtils.teardownWeblog(testWeblog.getId()); + TestUtils.teardownUser(testUser.getUserName()); } /** @@ -238,6 +209,9 @@ MediaFileDirectory rootDirectory = mfMgr.getMediaFileRootDirectory(testWeblog); assertEquals(directory, rootDirectory); + TestUtils.endSession(true); + TestUtils.teardownWeblog(testWeblog.getId()); + TestUtils.teardownUser(testUser.getUserName()); } @@ -273,6 +247,10 @@ assertTrue(containsPath(directories, "/dir2")); assertTrue(containsPath(directories, "/dir3")); + + TestUtils.endSession(true); + TestUtils.teardownWeblog(testWeblog.getId()); + TestUtils.teardownUser(testUser.getUserName()); } /** @@ -327,7 +305,7 @@ mediaFile.setLength(3000); mediaFile.setDirectory(rootDirectory); mediaFile.setContentType("image/jpeg"); - mediaFile.setInputStream(getClass().getResourceAsStream("/test4.jpg")); + mediaFile.setInputStream(getClass().getResourceAsStream(TEST_IMAGE)); MediaFileTag tag1 = new MediaFileTag("tst4work", mediaFile); MediaFileTag tag2 = new MediaFileTag("tst4home", mediaFile); @@ -355,6 +333,10 @@ MediaFile mediaFile2 = mfMgr.getMediaFile(id); assertNull(mediaFile2); + + TestUtils.endSession(true); + TestUtils.teardownWeblog(testWeblog.getId()); + TestUtils.teardownUser(testUser.getUserName()); } /** @@ -384,7 +366,7 @@ mediaFile.setSharedForGallery(true); mediaFile.setLength(2000); mediaFile.setDirectory(rootDirectory); - mediaFile.setInputStream(getClass().getResourceAsStream("/test.jpg")); + mediaFile.setInputStream(getClass().getResourceAsStream(TEST_IMAGE)); mediaFile.setContentType("image/jpeg"); MediaFileTag tag1 = new MediaFileTag("work", mediaFile); @@ -406,6 +388,10 @@ assertEquals("test copyright text", mediaFile1.getCopyrightText()); assertTrue(mediaFile1.isSharedForGallery()); assertEquals(2000, mediaFile1.getLength()); + + TestUtils.endSession(true); + TestUtils.teardownWeblog(testWeblog.getId()); + TestUtils.teardownUser(testUser.getUserName()); } /** @@ -435,7 +421,7 @@ mediaFile.setSharedForGallery(true); mediaFile.setLength(2000); mediaFile.setDirectory(rootDirectory); - mediaFile.setInputStream(getClass().getResourceAsStream("/test.jpg")); + mediaFile.setInputStream(getClass().getResourceAsStream(TEST_IMAGE)); mediaFile.setContentType("image/jpeg"); MediaFileTag tag1 = new MediaFileTag("work", mediaFile); @@ -457,7 +443,7 @@ mediaFile1.setSharedForGallery(true); mediaFile1.setLength(3000); mediaFile1.setDirectory(rootDirectory); - mediaFile1.setInputStream(getClass().getResourceAsStream("/test.jpg")); + mediaFile1.setInputStream(getClass().getResourceAsStream(TEST_IMAGE)); mediaFile1.setContentType("image/jpeg"); MediaFileTag tag2 = new MediaFileTag("home", mediaFile1); @@ -479,7 +465,7 @@ mediaFile2.setSharedForGallery(true); mediaFile2.setLength(4000); mediaFile2.setDirectory(rootDirectory); - mediaFile2.setInputStream(getClass().getResourceAsStream("/test.jpg")); + mediaFile2.setInputStream(getClass().getResourceAsStream(TEST_IMAGE)); mediaFile2.setContentType("image/jpeg"); MediaFileTag tag3 = new MediaFileTag("home", mediaFile2); @@ -578,6 +564,10 @@ searchResults = mfMgr.searchMediaFiles(testWeblog, filter12); assertFalse(searchResults.isEmpty()); assertEquals(2, searchResults.size()); + + TestUtils.endSession(true); + TestUtils.teardownWeblog(testWeblog.getId()); + TestUtils.teardownUser(testUser.getUserName()); } /** @@ -607,7 +597,7 @@ mediaFile.setSharedForGallery(true); mediaFile.setLength(2000); mediaFile.setDirectory(rootDirectory); - mediaFile.setInputStream(getClass().getResourceAsStream("/test.jpg")); + mediaFile.setInputStream(getClass().getResourceAsStream(TEST_IMAGE)); mediaFile.setContentType("image/jpeg"); mfMgr.createMediaFile(testWeblog, mediaFile); assertNotNull(mediaFile.getId()); @@ -652,6 +642,10 @@ assertFalse(searchResults4.isEmpty()); assertEquals(1, searchResults4.size()); assertEquals("test_file14.jpg", searchResults4.get(0).getName()); + + TestUtils.endSession(true); + TestUtils.teardownWeblog(testWeblog.getId()); + TestUtils.teardownUser(testUser.getUserName()); } /** @@ -681,7 +675,7 @@ mediaFile.setSharedForGallery(true); mediaFile.setLength(2000); mediaFile.setDirectory(rootDirectory); - mediaFile.setInputStream(getClass().getResourceAsStream("/test.jpg")); + mediaFile.setInputStream(getClass().getResourceAsStream(TEST_IMAGE)); mediaFile.setContentType(contentTypes[i]); mfMgr.createMediaFile(testWeblog, mediaFile); assertNotNull(mediaFile.getId()); @@ -722,6 +716,10 @@ assertEquals("test_file0.jpg", searchResults3.get(0).getName()); assertEquals("test_file1.jpg", searchResults3.get(1).getName()); assertEquals("test_file2.jpg", searchResults3.get(2).getName()); + + TestUtils.endSession(true); + TestUtils.teardownWeblog(testWeblog.getId()); + TestUtils.teardownUser(testUser.getUserName()); } /** @@ -750,7 +748,7 @@ mediaFile.setSharedForGallery(false); mediaFile.setLength(3000); mediaFile.setDirectory(rootDirectory); - mediaFile.setInputStream(getClass().getResourceAsStream("/test5.jpg")); + mediaFile.setInputStream(getClass().getResourceAsStream(TEST_IMAGE)); mediaFile.setContentType("image/jpeg"); @@ -785,6 +783,10 @@ assertTrue(mediaFile2.isSharedForGallery()); assertNotNull(mediaFile2.getTags()); assertEquals(2, mediaFile2.getTags().size()); + + TestUtils.endSession(true); + TestUtils.teardownWeblog(testWeblog.getId()); + TestUtils.teardownUser(testUser.getUserName()); } /** @@ -818,7 +820,7 @@ mediaFile.setCopyrightText("test 6.1 copyright text"); mediaFile.setSharedForGallery(false); mediaFile.setLength(4000); - mediaFile.setInputStream(getClass().getResourceAsStream("/test6.jpg")); + mediaFile.setInputStream(getClass().getResourceAsStream(TEST_IMAGE)); mediaFile.setContentType("image/jpeg"); mfMgr.createMediaFile(testWeblog, mediaFile); @@ -829,7 +831,7 @@ mediaFile2.setCopyrightText("test 6.2 copyright text"); mediaFile2.setSharedForGallery(true); mediaFile2.setLength(4000); - mediaFile2.setInputStream(getClass().getResourceAsStream("/test6.jpg")); + mediaFile2.setInputStream(getClass().getResourceAsStream(TEST_IMAGE)); mediaFile2.setContentType("image/jpeg"); mfMgr.createMediaFile(testWeblog, mediaFile2); @@ -855,6 +857,10 @@ assertTrue(rootDirectory.hasMediaFile("test6_1.jpg")); assertTrue(rootDirectory.hasMediaFile("test6_2.jpg")); + + TestUtils.endSession(true); + TestUtils.teardownWeblog(testWeblog.getId()); + TestUtils.teardownUser(testUser.getUserName()); } /** @@ -889,7 +895,7 @@ mediaFile.setCopyrightText("test 7.1 copyright text"); mediaFile.setSharedForGallery(false); mediaFile.setLength(4000); - mediaFile.setInputStream(getClass().getResourceAsStream("/test7.jpg")); + mediaFile.setInputStream(getClass().getResourceAsStream(TEST_IMAGE)); mediaFile.setContentType("image/jpeg"); mfMgr.createMediaFile(testWeblog, mediaFile); @@ -900,7 +906,7 @@ mediaFile2.setCopyrightText("test 7.2 copyright text"); mediaFile2.setSharedForGallery(true); mediaFile2.setLength(4000); - mediaFile2.setInputStream(getClass().getResourceAsStream("/test7.jpg")); + mediaFile2.setInputStream(getClass().getResourceAsStream(TEST_IMAGE)); mediaFile2.setContentType("image/jpeg"); mfMgr.createMediaFile(testWeblog, mediaFile2); @@ -929,5 +935,70 @@ mediaFiles = rootDirectory.getMediaFiles(); assertEquals(0, mediaFiles.size()); + + TestUtils.endSession(true); + TestUtils.teardownWeblog(testWeblog.getId()); + TestUtils.teardownUser(testUser.getUserName()); + } + + public void testStorageUpgrade() throws Exception { + User testUser = null; + Weblog testWeblog1 = null; + Weblog testWeblog2 = null; + String oldmax = "4"; + PropertiesManager pmgr = WebloggerFactory.getWeblogger().getPropertiesManager(); + try { + // set dir max limit high so we won't bump into it + RuntimeConfigProperty prop = pmgr.getProperty("uploads.dir.maxsize"); + oldmax = prop.getValue(); + prop.setValue("20"); + pmgr.saveProperty(prop); + TestUtils.endSession(true); + + testUser = TestUtils.setupUser("mediaFileTestUser"); + testWeblog1 = TestUtils.setupWeblog("testblog1", testUser); + testWeblog2 = TestUtils.setupWeblog("testblog2", testUser); + + MediaFileManager mgr = WebloggerFactory.getWeblogger().getMediaFileManager(); + JPAMediaFileManagerImpl mmgr = (JPAMediaFileManagerImpl)mgr; + + assertTrue("Upgrade required",mmgr.isFileStorageUpgradeRequired()); + + mmgr.upgradeFileStorage(); + TestUtils.endSession(true); + + assertFalse("Upgrade required",mmgr.isFileStorageUpgradeRequired()); + + // now, let's check to see if migration was sucessful + + MediaFileDirectory root1 = mgr.getMediaFileRootDirectory(testWeblog1); + assertNotNull("testblog1's mediafile dir exists", root1); + assertNotNull(root1.getMediaFile("hawk.jpg")); + assertNotNull(root1.getMediaFile("nasa.jpg")); + assertNotNull(root1.getMediaFile("roller50-prop.png")); + + MediaFileDirectory root2 = mgr.getMediaFileRootDirectory(testWeblog2); + assertNotNull("testblog2's mediafile dir exists", root2); + assertNotNull(root2.getMediaFile("amsterdam.jpg")); + assertNotNull(root2.getMediaFile("p47-thunderbolt.jpg")); + assertNotNull(root2.getMediaFile("rollerwiki.png")); + + } finally { + + File statusFile = new File(WebloggerConfig.getProperty("uploads.dir") + + File.separator + JPAMediaFileManagerImpl.MIGRATIION_STATUS_FILENAME); + statusFile.delete(); + + // reset dir max to old value + RuntimeConfigProperty prop = pmgr.getProperty("uploads.dir.maxsize"); + prop.setValue(oldmax); + pmgr.saveProperty(prop); + + TestUtils.endSession(true); + TestUtils.teardownWeblog(testWeblog1.getId()); + TestUtils.teardownWeblog(testWeblog2.getId()); + TestUtils.teardownUser(testUser.getUserName()); + TestUtils.endSession(true); + } } }
Added: roller/trunk/apps/weblogger/testdata/WEB-INF/classes/hawk.jpg URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/testdata/WEB-INF/classes/hawk.jpg?rev=797783&view=auto ============================================================================== Binary file - no diff available. Propchange: roller/trunk/apps/weblogger/testdata/WEB-INF/classes/hawk.jpg ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Modified: roller/trunk/apps/weblogger/testdata/roller-custom.properties URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/testdata/roller-custom.properties?rev=797783&r1=797782&r2=797783&view=diff ============================================================================== --- roller/trunk/apps/weblogger/testdata/roller-custom.properties (original) +++ roller/trunk/apps/weblogger/testdata/roller-custom.properties Sat Jul 25 15:50:25 2009 @@ -1,17 +1,10 @@ -# Pluggable backend -#guice.backend.module=org.apache.roller.weblogger.business.jpa.PlanetModule - database.configurationType=jdbc - database.jdbc.driverClass=org.apache.derby.jdbc.ClientDriver database.jdbc.connectionURL=jdbc:derby://localhost:3219/roller database.jdbc.username=app database.jdbc.password=app - -hibernate.dialect=org.hibernate.dialect.DerbyDialect - -themes.dir=themes +#openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=INFO # we don't want to start with any folders/bookmarks for testing newuser.blogroll= @@ -19,20 +12,14 @@ # we don't want to start with any weblog categories for testing newuser.categories= +# put directories in ${build.tests} +themes.dir=themes search.index.dir=search-index +uploads.dir=uploadsdir +mediafiles.storage.dir=mediafiles - - -#database.jdbc.driverClass=com.mysql.jdbc.Driver -#database.jdbc.connectionURL=jdbc:mysql://localhost:3306/rollertest -#database.jdbc.username=scott -#database.jdbc.password=tiger -#hibernate.dialect=org.hibernate.dialect.MySQLDialect -#openjpa.jdbc.DBDictionary=mysql(SupportsSubselect=false, SearchStringEscape=\\\\) - -openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=INFO -#openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE - +# don't auto migrate during tests +uploads.migrate.auto=false # override tasks.enabled so we can add a test task tasks.enabled=ScheduledEntriesTask,ResetHitCountsTask,TurnoverReferersTask,PingQueueTask,TestTask @@ -43,3 +30,10 @@ tasks.TestTask.interval=1800 tasks.TestTask.leaseTime=300 +# logging +log4j.category.org.apache.roller=INFO + +# debug for new Roller 5.0 features: mediafile management +log4j.category.org.apache.roller.weblogger.business.jpa.JPAMediaFileManagerImpl=DEBUG +log4j.category.org.apache.roller.weblogger.business.FileContentManagerImpl=DEBUG + Added: roller/trunk/apps/weblogger/testdata/uploadsdir/testblog1/hawk.jpg URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/testdata/uploadsdir/testblog1/hawk.jpg?rev=797783&view=auto ============================================================================== Binary file - no diff available. Propchange: roller/trunk/apps/weblogger/testdata/uploadsdir/testblog1/hawk.jpg ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: roller/trunk/apps/weblogger/testdata/uploadsdir/testblog1/nasa.jpg URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/testdata/uploadsdir/testblog1/nasa.jpg?rev=797783&view=auto ============================================================================== Binary file - no diff available. Propchange: roller/trunk/apps/weblogger/testdata/uploadsdir/testblog1/nasa.jpg ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: roller/trunk/apps/weblogger/testdata/uploadsdir/testblog1/roller50-prop.png URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/testdata/uploadsdir/testblog1/roller50-prop.png?rev=797783&view=auto ============================================================================== Binary file - no diff available. Propchange: roller/trunk/apps/weblogger/testdata/uploadsdir/testblog1/roller50-prop.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: roller/trunk/apps/weblogger/testdata/uploadsdir/testblog2/amsterdam.jpg URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/testdata/uploadsdir/testblog2/amsterdam.jpg?rev=797783&view=auto ============================================================================== Binary file - no diff available. Propchange: roller/trunk/apps/weblogger/testdata/uploadsdir/testblog2/amsterdam.jpg ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: roller/trunk/apps/weblogger/testdata/uploadsdir/testblog2/p47-thunderbolt.jpg URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/testdata/uploadsdir/testblog2/p47-thunderbolt.jpg?rev=797783&view=auto ============================================================================== Binary file - no diff available. Propchange: roller/trunk/apps/weblogger/testdata/uploadsdir/testblog2/p47-thunderbolt.jpg ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: roller/trunk/apps/weblogger/testdata/uploadsdir/testblog2/rollerwiki.png URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/testdata/uploadsdir/testblog2/rollerwiki.png?rev=797783&view=auto ============================================================================== Binary file - no diff available. Propchange: roller/trunk/apps/weblogger/testdata/uploadsdir/testblog2/rollerwiki.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
