r1106 - in trunk/wikitty-publication/src: main/java/org/nuiton/wikitty/publication main/resources test/java/org/nuiton/wikitty/publication test/java/org/nuiton/wikitty/publication/externalize
Author: mfortun Date: 2011-08-03 16:46:33 +0200 (Wed, 03 Aug 2011) New Revision: 1106 Url: http://nuiton.org/repositories/revision/wikitty/1106 Log: *Add tests *corrections discovered with test Added: trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-test.properties Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/PropertiesExtended.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFallbackService.java trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/WikittyPublicationFallbackServiceTest.java trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalizeTest.java Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/PropertiesExtended.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/PropertiesExtended.java 2011-08-02 15:50:31 UTC (rev 1105) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/PropertiesExtended.java 2011-08-03 14:46:33 UTC (rev 1106) @@ -95,7 +95,9 @@ */ public void load(File file) throws FileNotFoundException, IOException { this.origin = file; - this.load(new FileReader(origin)); + FileReader fr = new FileReader(origin); + this.load(fr); + fr.close(); } /** @@ -109,7 +111,10 @@ * if file not found */ public void store() throws IOException { - this.store(new FileWriter(origin), ""); + FileWriter fs = new FileWriter(origin); + this.store(fs, ""); + fs.close(); + } } Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFallbackService.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFallbackService.java 2011-08-02 15:50:31 UTC (rev 1105) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFallbackService.java 2011-08-03 14:46:33 UTC (rev 1106) @@ -4,7 +4,8 @@ import java.util.Collection; import java.util.LinkedList; import java.util.List; - +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationConfig; import org.nuiton.wikitty.WikittyService; import org.nuiton.wikitty.WikittyServiceFactory; @@ -27,14 +28,18 @@ static public String WIKITTY_FALLBACK_PREFIX_KEY = "wikitty.fallback.prefix"; + static private Log log = LogFactory.getLog(WikittyPublicationFallbackService.class); + protected WikittyService mainService; protected WikittyService fallbackService; public WikittyPublicationFallbackService(WikittyService serv, ApplicationConfig config) { this.mainService = serv; + if(config != null){ fallbackService = WikittyServiceFactory.buildWikittyService(config, "wikitty." + config.getOption(WIKITTY_FALLBACK_PREFIX_KEY)); + } } public boolean isFallBack() { @@ -191,7 +196,12 @@ List<Wikitty> result = new LinkedList<Wikitty>(); - result.addAll(mainService.restore(securityToken, id)); + List<Wikitty> tempListResult = mainService.restore(securityToken, id); + for (Wikitty wikitty : tempListResult) { + if( wikitty !=null) { + result.add(wikitty); + } + } // can't trust result's size because result can contain null if (isFallBack()) { // prepare a list with wikitty id that have not been retrieve by the @@ -223,6 +233,8 @@ if (isFallBack()) { + + for (int i = 0; i < result.size(); i++) { /* @@ -234,7 +246,9 @@ int resultSizeExpected = currentCrit.getEndIndex() - currentCrit.getFirstIndex(); - if (currentResult.size() < resultSizeExpected) { + log.debug("Size expected"+ resultSizeExpected); + + if ( resultSizeExpected==-1 || currentResult.size() < resultSizeExpected ) { /* * if result empty, just put the result of the fallback's * requestresult @@ -300,6 +314,8 @@ List<String> allresult = new LinkedList<String>(); allresult.addAll(currentResult.getAll()); allresult.addAll(resultFallback.getAll()); + System.out.println(allresult.size()); + int number = currentResult.getNumFound() + resultFallback.getNumFound(); @@ -404,4 +420,22 @@ return result; } + public WikittyService getMainService() { + return mainService; + } + + public void setMainService(WikittyService mainService) { + this.mainService = mainService; + } + + public WikittyService getFallbackService() { + return fallbackService; + } + + public void setFallbackService(WikittyService fallbackService) { + this.fallbackService = fallbackService; + } + + + } Added: trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-test.properties =================================================================== --- trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-test.properties (rev 0) +++ trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-test.properties 2011-08-03 14:46:33 UTC (rev 1106) @@ -0,0 +1,56 @@ +### +# #%L +# Wikitty :: publication +# +# $Id: wikitty-publication-ws-default.properties 823 2011-04-20 14:45:47Z mfortun $ +# $HeadURL: http://svn.nuiton.org/svn/wikitty/trunk/wikitty-publication/src/main/resourc... $ +# %% +# Copyright (C) 2009 - 2010 CodeLutin, Benjamin Poussin +# %% +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Lesser Public License for more details. +# +# You should have received a copy of the GNU General Lesser Public +# License along with this program. If not, see +# <http://www.gnu.org/licenses/lgpl-3.0.html>. +# #L% +### + + +wikitty.storage.jdbc.queryfile=wikitty-jdbc-query.properties +wikitty.storage.jdbc.driver=org.h2.Driver +wikitty.storage.jdbc.host=jdbc:h2:file:${wikitty.data.directory}/data/db +wikitty.storage.jdbc.login=sa +wikitty.storage.jdbc.password= +wikitty.storage.jdbc.xadatasource=org.h2.jdbcx.JdbcDataSource +wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.URL=${wikitty.storage.jdbc.host} +wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.user=${wikitty.storage.jdbc.login} +wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.password=${wikitty.storage.jdbc.password} +wikitty.searchengine.solr.directory.data=${wikitty.data.directory}/data/solr +wikitty.searchengine.solr.directory.factory=solr.StandardDirectoryFactory +wikitty.WikittyService.components=org.nuiton.wikitty.services.WikittyServiceStorage,\ +org.nuiton.wikitty.services.WikittyServiceNotifier,\ +org.nuiton.wikitty.services.WikittyServiceCached,\ +org.nuiton.wikitty.services.WikittyServiceSecurity,\ +org.nuiton.wikitty.services.WikittyServiceAccessStat + +wikitty.WikittyServiceStorage.components=org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC,\ +org.nuiton.wikitty.jdbc.WikittyStorageJDBC,\ +org.nuiton.wikitty.storage.solr.WikittySearchEngineSolr +wikitty.service.cache.listenevents=false +wikitty.service.cache.allwaysRestoreCopies=false +wikitty.service.event.propagate=false +wikitty.service.event.listen=false +wikitty.service.accessstat.extensions=WikittyPubText,WikittyPubData +wikitty.addon.export.threadnumber=1 +wikitty.addon.export.directory=${wikitty.data.directory}/export +wikitty.addon.export.publicurl=file://${wikitty.data.directory}/export/ +wikitty.WikittyServiceAccessStat.components=\ +org.nuiton.wikitty.services.WikittyServiceAccessStat$AccessStatStorageLog Modified: trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/WikittyPublicationFallbackServiceTest.java =================================================================== --- trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/WikittyPublicationFallbackServiceTest.java 2011-08-02 15:50:31 UTC (rev 1105) +++ trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/WikittyPublicationFallbackServiceTest.java 2011-08-03 14:46:33 UTC (rev 1106) @@ -1,29 +1,334 @@ package org.nuiton.wikitty.publication; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import junit.framework.Assert; + +import org.apache.commons.io.FileUtils; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.nuiton.util.ApplicationConfig; +import org.nuiton.util.ArgumentsParserException; +import org.nuiton.util.FileUtil; +import org.nuiton.wikitty.WikittyConfigOption; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.WikittyServiceFactory; +import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.entities.WikittyImpl; +import org.nuiton.wikitty.entities.WikittyLabelHelper; +import org.nuiton.wikitty.entities.WikittyLabelImpl; +import org.nuiton.wikitty.publication.entities.WikittyPubDataHelper; +import org.nuiton.wikitty.publication.entities.WikittyPubDataImpl; +import org.nuiton.wikitty.publication.entities.WikittyPubTextHelper; +import org.nuiton.wikitty.publication.entities.WikittyPubTextImpl; +import org.nuiton.wikitty.publication.synchro.WikittyPublicationFileSystem; +import org.nuiton.wikitty.publication.synchro.WikittyPublicationSynchronize; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.Search; + public class WikittyPublicationFallbackServiceTest { + protected File tempHome; + protected WikittyProxy proxyOnMain; + protected WikittyProxy proxyOnFallBack; + protected WikittyProxy proxy; + protected Map<String, Wikitty> onMain; + protected Map<String, Wikitty> onFallBack; + protected Map<String, Wikitty> onBoth; + private Criteria allCrit; + + @Before + public void init() throws IOException, ArgumentsParserException { + allCrit = Search.query().keyword("*").criteria(); + + if (!FileUtils.getTempDirectory().exists()) { + FileUtils.getTempDirectory().mkdir(); + } + + tempHome = new File(FileUtils.getTempDirectory().getCanonicalFile() + + File.separator + "WikittyPublicationFallbackServiceTest"); + + if (tempHome.exists()) { + FileUtil.deleteRecursively(tempHome); + + } + tempHome.mkdir(); + + File starts = new File(tempHome.getAbsolutePath() + File.separator + + "sub"); + if (starts.exists()) { + FileUtil.deleteRecursively(starts); + } + starts.mkdir(); + + // then initialise application config for wikitty proxy on service FS + ApplicationConfig configFS = new ApplicationConfig(); + configFS.setOption(WikittyPublicationSynchronize.IS_RECURSION_OPTION, + "true"); + configFS.setOption( + WikittyConfigOption.WIKITTY_WIKITTYSERVICE_COMPONENTS.getKey(), + WikittyPublicationFileSystem.class.getName()); + + String url = "file:///" + tempHome.getAbsolutePath() + "#sub"; + + configFS.setOption(WikittyConfigOption.WIKITTY_SERVER_URL.getKey(), url); + + ApplicationConfig configLocal = new ApplicationConfig( + "wikitty-publication-ws-test.properties"); + + // configLocal = WikittyPublicationConfig.getConfig(); + + String bdDir = tempHome + File.separator + "bd"; + + configLocal.setOption("wikitty.data.directory", bdDir); + configLocal.parse(null); + // create two service + proxyOnMain = new WikittyProxy( + WikittyServiceFactory.buildWikittyService(configLocal)); + + proxyOnFallBack = new WikittyProxy( + WikittyServiceFactory.buildWikittyService(configFS)); + // initialize fall back service + WikittyPublicationFallbackService fallback = new WikittyPublicationFallbackService( + proxyOnMain.getWikittyService(), null); + fallback.setFallbackService(proxyOnFallBack.getWikittyService()); + proxy = new WikittyProxy(fallback); + + onMain = new HashMap<String, Wikitty>(); + onBoth = new HashMap<String, Wikitty>(); + onFallBack = new HashMap<String, Wikitty>(); + + // create wikitty for the test + for (int i = 0; i < 10; i++) { + + Wikitty pubTextMain = new WikittyImpl(); + Wikitty pubTextFall = new WikittyImpl(); + + pubTextMain + .addExtension(WikittyPubTextImpl.extensionWikittyPubText); + pubTextFall + .addExtension(WikittyPubTextImpl.extensionWikittyPubText); + + WikittyPubTextHelper.setContent(pubTextMain, "content_main_" + i); + WikittyPubTextHelper.setFileExtension(pubTextMain, "js"); + WikittyPubTextHelper.setMimeType(pubTextMain, + "application/javascript"); + WikittyPubTextHelper.setName(pubTextMain, "pubtextOnMain_" + i); + + WikittyPubTextHelper.setContent(pubTextFall, "content_fall_" + i); + WikittyPubTextHelper.setFileExtension(pubTextFall, "js"); + WikittyPubTextHelper.setMimeType(pubTextFall, + "application/javascript"); + WikittyPubTextHelper.setName(pubTextFall, "pubtextOnFall_" + i); + + pubTextMain.addExtension(WikittyLabelImpl.extensions); + pubTextFall.addExtension(WikittyLabelImpl.extensions); + + WikittyLabelHelper.addLabels(pubTextMain, "sub"); + WikittyLabelHelper.addLabels(pubTextFall, "sub"); + + onFallBack.put(pubTextFall.getId(), pubTextFall); + onMain.put(pubTextMain.getId(), pubTextMain); + + } + + for (int i = 0; i < 5; i++) { + + Wikitty pubTextMain = new WikittyImpl(); + + pubTextMain + .addExtension(WikittyPubTextImpl.extensionWikittyPubText); + + WikittyPubTextHelper.setContent(pubTextMain, "content_onBoth_" + i); + WikittyPubTextHelper.setFileExtension(pubTextMain, "js"); + WikittyPubTextHelper.setMimeType(pubTextMain, + "application/javascript"); + WikittyPubTextHelper.setName(pubTextMain, "pubtextOnboth_" + i); + + pubTextMain.addExtension(WikittyLabelImpl.extensions); + + WikittyLabelHelper.addLabels(pubTextMain, "sub"); + + onBoth.put(pubTextMain.getId(), pubTextMain); + + } + + } + + /** + * delete directory after test + */ + @After + public void afterTest() { + // remove directory + FileUtil.deleteRecursively(tempHome); + } + + /** + * + */ + @Test + public void testServiceCreated() { + Assert.assertNotNull(proxyOnFallBack); + Assert.assertNotNull(proxyOnMain); + Assert.assertNotNull(proxy); + + Assert.assertTrue(((WikittyPublicationFallbackService) proxy + .getWikittyService()).isFallBack()); + } + + public void putAllWikittyOnServices() { + + List<Wikitty> listFall = new LinkedList<Wikitty>(); + listFall.addAll(onFallBack.values()); + listFall.addAll(onBoth.values()); + + proxyOnFallBack.storeWikitty(listFall); + + List<Wikitty> listmain = new LinkedList<Wikitty>(); + listmain.addAll(onMain.values()); + listmain.addAll(onBoth.values()); + + proxyOnMain.storeWikitty(listmain); + + } + + @Test + public void testSimpleFind() { + putAllWikittyOnServices(); + + int numfound = proxy.findAllByCriteria(allCrit).getNumFound(); + + int totalOnBoth = onBoth.size() + onMain.size() + onFallBack.size(); + + Assert.assertEquals(totalOnBoth, numfound); + } + + @Test + public void testMainServiceIsMoreImportantOne() { + putAllWikittyOnServices(); + + String id = (String) onBoth.keySet().toArray()[1]; + + Assert.assertNotNull(id); + + String originalContent; + + Wikitty wikittFromFall = proxyOnFallBack.restore(id); + + originalContent = WikittyPubTextHelper.getContent(wikittFromFall); + + Wikitty wikitty = proxy.restore(id); + + Assert.assertEquals(originalContent, + WikittyPubTextHelper.getContent(wikitty)); + + String newContent = "newContentOnlyOnFallBack"; + + WikittyPubTextHelper.setContent(wikittFromFall, newContent); + + proxyOnFallBack.store(wikittFromFall); + + wikitty = proxy.restore(id); + + Assert.assertEquals(originalContent, + WikittyPubTextHelper.getContent(wikitty)); + } + + @Test + public void testMainServiceIsMoreImportantTwo() { + putAllWikittyOnServices(); + + String id = (String) onBoth.keySet().toArray()[1]; + + Assert.assertNotNull(id); + + String originalContent; + + Wikitty wikittFromFall = proxyOnFallBack.restore(id); + + originalContent = WikittyPubTextHelper.getContent(wikittFromFall); + + // restore on main + Wikitty wikitty = proxyOnMain.restore(id); + + // check that content are the same + Assert.assertEquals(originalContent, + WikittyPubTextHelper.getContent(wikitty)); + + // write new content on wikitty + String newContent = "newContentOnlyOnFallBack"; + + WikittyPubTextHelper.setContent(wikitty, newContent); + + // Save the new version of the wikitty on main + proxyOnMain.store(wikitty); + + wikitty = proxy.restore(id); + // assert that we have the new content + Assert.assertEquals(newContent, + WikittyPubTextHelper.getContent(wikitty)); + + wikittFromFall = proxyOnFallBack.restore(id); + + // assert that new content is not inside fallback + Assert.assertNotSame(newContent, + WikittyPubTextHelper.getContent(wikittFromFall)); + } + + /** + * Test the save only appear on main + */ + @Test + public void testSave() { + putAllWikittyOnServices(); + + Wikitty wikitt = new WikittyImpl(); + + wikitt.addExtension(WikittyPubTextImpl.extensionWikittyPubText); + WikittyPubTextHelper.setContent(wikitt, "testSaveContent"); + WikittyPubTextHelper.setFileExtension(wikitt, "js"); + WikittyPubTextHelper.setMimeType(wikitt, "application/javascript"); + WikittyPubTextHelper.setName(wikitt, "testSave"); + + wikitt.addExtension(WikittyLabelImpl.extensions); + + WikittyLabelHelper.addLabels(wikitt, "sub"); + + proxy.store(wikitt); + + Assert.assertNull(proxyOnFallBack.restore(wikitt.getId())); + Assert.assertNotNull(proxyOnMain.restore(wikitt.getId())); + + } - - - /* - * Instancier un wikitty service sur FS et un sur cajo - * mettre des wikitty dans les deux différent 10-10, et 5 de plus en commun + /** + * Test save a wikitty that can be found on fallback + * test that the new version of the wikitty is on main * - * 1) test de l'affichage des 15 wikitty - * - * 2) test prévalence de ceux sur le premier - * - * 3) test de sauvegarde qui se mettent sur le premier - * - * 4) test des recherches limités qui se complétent - * - * 5) suppression - * - * 6) édition/sauvegarde d'un wikitty qui n'est pas sur le "main" au départ - * - * - * */ + @Test + public void testSaveWikittyFromFall() { + putAllWikittyOnServices(); + + String id = (String) onFallBack.keySet().toArray()[1]; + + // assert the object is in the right service + Assert.assertNotNull(proxyOnFallBack.restore(id)); + Assert.assertNull(proxyOnMain.restore(id)); + Assert.assertNotNull(proxy.restore(id)); + } + + } + + Modified: trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalizeTest.java =================================================================== --- trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalizeTest.java 2011-08-02 15:50:31 UTC (rev 1105) +++ trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalizeTest.java 2011-08-03 14:46:33 UTC (rev 1106) @@ -16,5 +16,7 @@ * */ + + }
participants (1)
-
mfortun@users.nuiton.org