r86 - in trunk: . diswork-daemon diswork-daemon/src/main/java/org/nuiton/diswork/daemon diswork-daemon/src/test/java/org/nuiton/diswork/daemon diswork-daemon/src/test/resources diswork-fs/src/main/java/org/nuiton/diswork/fs diswork-fs/src/test/java/org/nuiton/diswork/fs diswork-fs/src/test/java/org/nuiton/diswork/fs/storage diswork-fs/src/test/resources
Author: bleny Date: 2010-06-24 16:13:06 +0200 (Thu, 24 Jun 2010) New Revision: 86 Url: http://nuiton.org/repositories/revision/diswork/86 Log: lecture continue de la sortie standard, tests avec plusieurs d?\195?\169mons, m?\195?\160j pom (mina) Added: trunk/diswork-daemon/src/test/java/org/nuiton/diswork/daemon/DisworkDaemonMultipleNodesTest.java Modified: trunk/diswork-daemon/pom.xml trunk/diswork-daemon/src/main/java/org/nuiton/diswork/daemon/DisworkDaemonRunner.java trunk/diswork-daemon/src/main/java/org/nuiton/diswork/daemon/DisworkSimpleClient.java trunk/diswork-daemon/src/main/java/org/nuiton/diswork/daemon/WorkersManager.java trunk/diswork-daemon/src/test/resources/log4j.properties trunk/diswork-fs/src/main/java/org/nuiton/diswork/fs/DisworkFileSystemConfig.java trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/AbstractDisworkFileSystemTest.java trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/DisworkFileSystemKademliaTest.java trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/storage/AbstractDisworkMapTest.java trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/storage/KademliaDisworkMapTest.java trunk/diswork-fs/src/test/resources/log4j.properties trunk/pom.xml Modified: trunk/diswork-daemon/pom.xml =================================================================== --- trunk/diswork-daemon/pom.xml 2010-06-21 10:14:34 UTC (rev 85) +++ trunk/diswork-daemon/pom.xml 2010-06-24 14:13:06 UTC (rev 86) @@ -42,6 +42,10 @@ <groupId>commons-digester</groupId> <artifactId>commons-digester</artifactId> </dependency> + <dependency> + <groupId>org.freemarker</groupId> + <artifactId>freemarker</artifactId> + </dependency> <!-- test --> <dependency> Modified: trunk/diswork-daemon/src/main/java/org/nuiton/diswork/daemon/DisworkDaemonRunner.java =================================================================== --- trunk/diswork-daemon/src/main/java/org/nuiton/diswork/daemon/DisworkDaemonRunner.java 2010-06-21 10:14:34 UTC (rev 85) +++ trunk/diswork-daemon/src/main/java/org/nuiton/diswork/daemon/DisworkDaemonRunner.java 2010-06-24 14:13:06 UTC (rev 86) @@ -50,6 +50,7 @@ Integer.parseInt(args[1]))); } config.setActivityStrategy("unlimited"); + config.fileSystemConfig.setBlockSize(65000); DisworkDaemon daemon = new DisworkDaemon(config); } } Modified: trunk/diswork-daemon/src/main/java/org/nuiton/diswork/daemon/DisworkSimpleClient.java =================================================================== --- trunk/diswork-daemon/src/main/java/org/nuiton/diswork/daemon/DisworkSimpleClient.java 2010-06-21 10:14:34 UTC (rev 85) +++ trunk/diswork-daemon/src/main/java/org/nuiton/diswork/daemon/DisworkSimpleClient.java 2010-06-24 14:13:06 UTC (rev 86) @@ -28,7 +28,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; -import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.util.Map; @@ -36,7 +36,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.diswork.fs.DisworkFileSystemConfig; -import org.nuiton.util.FileUtil; /** * @@ -80,36 +79,49 @@ } public static void isisSubmit() throws Exception { - File isis = new File("/tmp/isis/isis-fish-3.3.0.3-bin.zip"); - daemon.submitApplication("isis-fish", "3.3.0.3", new FileInputStream(isis)); + File isis = new File("/tmp/isis/isis-fish-3.3.0.4-dev3069-bin.zip"); + // File isis = new File("/tmp/isis/fake-app-1.0.zip"); + + InputStream in = new FileInputStream(isis); + log.info("isis is " + in.available() + " bytes"); + daemon.submitApplication("isis-fish", "3.3.0.4-dev3069", in); JobDescription jobDescription = new JobDescription(); - jobDescription.setJobName("Mon Job Isis"); + jobDescription.setApplication("isis-fish", "3.3.0.4-dev3069"); - jobDescription.setApplication("isis-fish", "3.3.0.3"); + File input = new File("/tmp/isis/isisfish-simulation-ica10ans.zip"); + jobDescription.addInput("isisfish-simulation-ica10ans.zip", new FileInputStream(input)); + jobDescription.addOutput("isisfish-simulation-ica10ans-result.zip"); - File input = new File("/tmp/isis/sim_test-gdg-3.2-3.3.zip"); - jobDescription.addInput("sim_test-gdg-3.2-3.3.zip", new FileInputStream(input)); - jobDescription.addOutput("sim_test-gdg-3.2-3.3-result.zip"); + jobDescription.setCommandLine( + "%java -Xmx2500M -jar isis-fish-3.3.0.4-SNAPSHOT/isis-fish-3.3.0.4-SNAPSHOT.jar" + + " --option launch.ui false" + + " --option perform.vcsupdate false" + + " --option perform.migration false" + + " --option perform.cron false" + + " --simulateRemotelly my_isis_job isisfish-simulation-ica10ans.zip" + + " isisfish-simulation-ica10ans-result.zip"); - jobDescription.setCommandLine("%java -Xmx2500M -jar isis-fish*.jar" + - " --option launch.ui false --option perform.vcsupdate false" + - " --option perform.migration false --option perform.cron false" - + " --simulateRemotelly my_isis_job sim_test-gdg-3.2-3.3.zip" - + " sim_test-gdg-3.2-3.3-result.zip"); + jobDescription.setStandardOutput("output.txt"); + jobDescription.addOutput("output.txt"); daemon.submitJob(jobDescription); while (! daemon.isFinished(jobDescription)) { - Thread.sleep(5 * 1000); + Thread.sleep(15 * 1000); System.out.print("."); } - + + System.out.println("getting result"); File result = new File("/tmp/isis/sim_test-gdg-3.2-3.3-result.zip"); + IOUtils.copy(daemon.getResults(jobDescription).get("isisfish-simulation-ica10ans-result.zip"), new FileOutputStream(result)); + + System.out.println("getting output"); + result = new File("/tmp/isis/output.txt"); + IOUtils.copy(daemon.getResults(jobDescription).get("output.txt"), new FileOutputStream(result)); - IOUtils.copy(daemon.getResults(jobDescription).get("sim_test-gdg-3.2-3.3-result.zip"), new FileOutputStream(result)); - + System.out.println("end"); } /** @@ -124,6 +136,7 @@ DisworkFileSystemConfig.newKademliaDisworkConfig(args[0], port)); config.setActivityStrategy("none"); config.setUsedPort(30000); + config.fileSystemConfig.setBlockSize(65000); daemon = new DisworkDaemon(config); //userPrompt(); Modified: trunk/diswork-daemon/src/main/java/org/nuiton/diswork/daemon/WorkersManager.java =================================================================== --- trunk/diswork-daemon/src/main/java/org/nuiton/diswork/daemon/WorkersManager.java 2010-06-21 10:14:34 UTC (rev 85) +++ trunk/diswork-daemon/src/main/java/org/nuiton/diswork/daemon/WorkersManager.java 2010-06-24 14:13:06 UTC (rev 86) @@ -24,13 +24,17 @@ */ package org.nuiton.diswork.daemon; +import java.io.BufferedReader; +import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.io.OutputStream; +import java.io.OutputStreamWriter; import java.net.URL; import java.util.ArrayList; import java.util.Collections; @@ -127,6 +131,81 @@ /** set this field to true will make run() return and thread stop */ protected boolean shouldStop = false; + /** read the standard output of the subprocess + * + * By reading the standard output, this thread has multiple goals : + * <ul> + * <li>if the process produces many data on standard output, the + * process will block (and waitfor will never return). This + * thread, by reading the output, unblock it. + * http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=4 + * </li> + * <li>if asked, write the output to a file</li> + * <li>add the output to the log</li> + * </ul> + * + * @author bleny + * + */ + protected class OutputReader extends Thread { + + protected InputStream output; + protected OutputStream outputFile; + + /** + * @param output the stream of the standard output of the process + * @param outputFile the file where to copy, null if you don't + * care about the what is on the standard output + */ + public OutputReader(InputStream output, OutputStream outputFile) { + this.output = output; + this.outputFile = outputFile; + } + + @Override + public void run() { + InputStreamReader osr = new InputStreamReader(output); + BufferedReader br = new BufferedReader(osr); + + BufferedWriter wr = null; + OutputStreamWriter outputStreamWriter = null; + if (outputFile != null) { + outputStreamWriter = new OutputStreamWriter(outputFile); + wr = new BufferedWriter(outputStreamWriter); + } + + String line = null; + try { + // read a line from standard output + while ((line = br.readLine()) != null) { + // copy this line to output file + if (wr != null) { + wr.write(line + "\n"); + } + + // add reading line to logging output + if (log.isInfoEnabled()) { + log.debug(this.toString() + ">" + line); + } + } + } catch (IOException e) { + log.warn("error while reading the output of the subprocess", e); + } finally { + try { + if (wr != null) { + wr.close(); + } + if (outputStreamWriter != null) { + outputStreamWriter.close(); + } + } catch (IOException e) { + log.warn("error while closing the output of the subprocess", e); + } + } + } + + } + /** * this method add a line to a job-specific log * @param jobPath the path to the job concerned @@ -142,6 +221,24 @@ fileSystem.write(logPath, IOUtils.toInputStream(newLog)); } + protected void streamCopy(InputStream in, OutputStream out) throws IOException { + System.out.println("hop"); + int read = 0; + int totalRead = 0; + byte[] buffer = new byte[50000]; + // BufferedInputStream hop = new BufferedInputStream(in); + + while ((read = in.read(buffer)) != -1) { + + totalRead += read; + System.out.println("read " + read + " bytes (total=" + totalRead + ")"); + + out.write(buffer, 0, read); + } + in.close(); + out.close(); + } + /** * Download all the files needed for a job in a temp directory, run * the job, wait for it to end, write all the results. Mark the job @@ -189,14 +286,20 @@ application.createNewFile(); log.info("will create " + application.getAbsolutePath()); OutputStream out = new FileOutputStream(application); - IOUtils.copy(applicationData, out); + log.debug("starting copy of " + applicationData.available() + " bytes"); + // IOUtils.copy(applicationData, out); + streamCopy(applicationData, out); + log.info("unzip application start"); // unzip application ZipUtil.uncompress(application, jobDir); + log.info("unzip application finished"); } else { log.info("no dependency specified for " + jobDescription); } + // staging input files for (String fileName : jobDescription.getStagingInput()) { + log.info("staging " + fileName); File localCopy = new File(jobDir, fileName); localCopy.createNewFile(); InputStream source = null; @@ -212,6 +315,7 @@ IOUtils.copy(source, new FileOutputStream(localCopy)); } + log.info("preparing the job"); // prepare and run it the job String commandLine = jobDescription.getCommandLine(); String[] commandLineElements = commandLine.split(" "); @@ -220,10 +324,25 @@ builder.redirectErrorStream(true); log.info("calling " + commandLine); Process job = builder.start(); + + // dump the standard output in a file + String standardOutputFileName = jobDescription.getStandardOutput(); + log.info("standardOutputFileName is " + standardOutputFileName); + OutputStream outputFileStream = null; + if (standardOutputFileName != null) { + File outputFile = new File(jobDir, standardOutputFileName); + log.info("writing standard output in " + outputFile); + outputFileStream = new FileOutputStream(outputFile); + } + + OutputReader outputReader = new OutputReader(job.getInputStream(), outputFileStream); + outputReader.start(); // plugging a file on the standard input String standardInputFileName = jobDescription.getStandardInput(); if (standardInputFileName != null) { + log.info("writing " + standardInputFileName + " on standard " + + "input"); InputStream input = new FileInputStream( new File(jobDir, standardInputFileName)); IOUtils.copy(input, job.getOutputStream()); @@ -232,6 +351,7 @@ // run the process and wait for it to return int exitValue = -1; try { + log.info("waiting for the end of the process"); exitValue = job.waitFor(); } catch (InterruptedException e) { log.error("job " + jobDescription + " was interupted", e); @@ -240,27 +360,19 @@ exitValue = 1; } - // dump the standard output in a file - String standardOutputFileName = jobDescription.getStandardOutput(); - log.info("standardOutputFileName is " + standardOutputFileName); - if (standardOutputFileName != null) { - File outputFile = new File(jobDir, standardOutputFileName); - OutputStream output = new FileOutputStream(outputFile); - log.info("writing standard output in " + outputFile); - IOUtils.copy(job.getInputStream(), output); - } + log.info("job returned " + exitValue); // output file staging for (String fileName : jobDescription.getStagingOutput()) { + log.info("staging file " + fileName); File localCopy = new File(jobDir, fileName); // FIXME 20100616 bleny may not exists if job has fail InputStream localCopyStream = new FileInputStream(localCopy); String filePath = jobPath + "/" + fileName; - log.info("out-staging " + fileName); // erase before write if (fileSystem.exists(filePath)) { fileSystem.delete(filePath); Added: trunk/diswork-daemon/src/test/java/org/nuiton/diswork/daemon/DisworkDaemonMultipleNodesTest.java =================================================================== --- trunk/diswork-daemon/src/test/java/org/nuiton/diswork/daemon/DisworkDaemonMultipleNodesTest.java (rev 0) +++ trunk/diswork-daemon/src/test/java/org/nuiton/diswork/daemon/DisworkDaemonMultipleNodesTest.java 2010-06-24 14:13:06 UTC (rev 86) @@ -0,0 +1,40 @@ +package org.nuiton.diswork.daemon; + +import java.io.InputStream; + +import org.junit.Before; +import org.junit.Test; +import org.nuiton.diswork.fs.DisworkFileSystemConfig; + +public class DisworkDaemonMultipleNodesTest extends DisworkDaemonTest { + + /** another deamon + * this second deamon will be connected to {@link DisworkDaemonTest#daemon} + * and will to his jobs. + */ + protected static DisworkDaemon daemon2; + + @Before + @Override + public void setUp() throws Exception { + DisworkConfig config = DisworkConfig.newConfig(); + port += 1; + config.setUsedPort(port); + config.setActivityStrategy("none"); + + config.fileSystemConfig.setBlockSize(500); + daemon = new DisworkDaemon(config); + InputStream application = ClassLoader.getSystemResourceAsStream("fake-app-1.0.zip"); + daemon.submitApplication("fake-app", "1.0", application); + + + DisworkConfig config2 = DisworkConfig.newConfig(); + config2.setBootstrapIp(DisworkFileSystemConfig.getIp()); + config2.setBootstrapPort(port); + port += 1; + config.setUsedPort(port); + config.setActivityStrategy("unlimited"); + daemon2 = new DisworkDaemon(config2); + } + +} Modified: trunk/diswork-daemon/src/test/resources/log4j.properties =================================================================== --- trunk/diswork-daemon/src/test/resources/log4j.properties 2010-06-21 10:14:34 UTC (rev 85) +++ trunk/diswork-daemon/src/test/resources/log4j.properties 2010-06-24 14:13:06 UTC (rev 86) @@ -6,4 +6,5 @@ log4j.appender.stdout.layout.ConversionPattern=%d %5p [%t] (%F:%L) %M - %m%n # package level log4j.logger.org.nuiton.diswork.fs.storage.KademliaDisworkMap=INFO -log4j.logger.org.nuiton.diswork.daemon=INFO \ No newline at end of file +log4j.logger.org.nuiton.diswork.daemon=DEBUG +log4j.logger.org.planx.xmlstore.routing.messaging.MessageServer=INFO \ No newline at end of file Modified: trunk/diswork-fs/src/main/java/org/nuiton/diswork/fs/DisworkFileSystemConfig.java =================================================================== --- trunk/diswork-fs/src/main/java/org/nuiton/diswork/fs/DisworkFileSystemConfig.java 2010-06-21 10:14:34 UTC (rev 85) +++ trunk/diswork-fs/src/main/java/org/nuiton/diswork/fs/DisworkFileSystemConfig.java 2010-06-24 14:13:06 UTC (rev 86) @@ -102,13 +102,16 @@ } public DisworkFileSystemConfig() { - // setDefaultOption("diswork.fs.blocks_size", "10485760"); // 10 MiB - setDefaultOption("diswork.fs.blocks_size", "50000"); + setDefaultOption("diswork.fs.blocks_size", "10485760"); // 10 MiB setDefaultOption("diswork.fs.map_type", "inmemory"); setDefaultOption("diswork.fs.use_port", port.toString()); } + public void setBlockSize(Integer size) { + setOption("diswork.fs.blocks_size", size.toString()); + } + public int getBlockSize() { return getOptionAsInt("diswork.fs.blocks_size"); } Modified: trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/AbstractDisworkFileSystemTest.java =================================================================== --- trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/AbstractDisworkFileSystemTest.java 2010-06-21 10:14:34 UTC (rev 85) +++ trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/AbstractDisworkFileSystemTest.java 2010-06-24 14:13:06 UTC (rev 86) @@ -16,14 +16,11 @@ import java.util.List; import java.util.Random; -import javax.xml.transform.Source; - import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.nuiton.diswork.fs.DisworkFileSystem; import org.nuiton.util.FileUtil; @@ -45,7 +42,7 @@ /** * The file will have this fixed size */ - static protected int randomFileSize = 11 * 1000 * 1000; + static protected int randomFileSize = 45 * 1000 * 1000; static protected DisworkFileSystem fileSystem; @@ -75,6 +72,7 @@ @After public void tearDown() throws Exception { + fileSystem.close(); // cleaning FileUtil.deleteRecursively(tempDirectoryPath); } Modified: trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/DisworkFileSystemKademliaTest.java =================================================================== --- trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/DisworkFileSystemKademliaTest.java 2010-06-21 10:14:34 UTC (rev 85) +++ trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/DisworkFileSystemKademliaTest.java 2010-06-24 14:13:06 UTC (rev 86) @@ -7,9 +7,11 @@ import java.io.ByteArrayInputStream; import java.io.FileInputStream; +import java.io.InputStream; import java.util.ConcurrentModificationException; import org.apache.commons.io.IOUtils; +import org.apache.log4j.lf5.util.StreamUtils; import org.junit.Before; import org.junit.Test; import org.nuiton.diswork.fs.DisworkFileSystem; @@ -48,19 +50,41 @@ DisworkFileSystemConfig disworkConfig = DisworkFileSystemConfig.newKademliaDisworkConfig(bootstrapPort); DisworkFileSystem fileSystem2 = new DisworkFileSystem(disworkConfig); - - byte[] bytes = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - fileSystem.write("/my_file", new ByteArrayInputStream(bytes)); + InputStream source = null; + try { + source = new FileInputStream(randomFilePath); + fileSystem.write("/my_file", source); + } finally { + IOUtils.closeQuietly(source); + } assertTrue(fileSystem.exists("/my_file")); assertTrue(fileSystem2.exists("/my_file")); - assertEquals(1, fileSystem2.readDirectory("/").size()); - byte[] getResult = IOUtils.toByteArray(fileSystem2.read("/my_file")); + // now, the checks. We read the original file and the result of + // a read() and then compare it byte-to-byte + + InputStream readResult = null; + try { + source = new FileInputStream(randomFilePath); + readResult = fileSystem2.read("/my_file"); + + assertEquals(randomFileSize, source.available()); + assertEquals(randomFileSize, readResult.available()); + + assertTrue(IOUtils.contentEquals(source, readResult)); + /* + byte[] sourceAsBytes = IOUtils.toByteArray(source); + byte[] readResultAsBytes = IOUtils.toByteArray(readResult); - assertArrayEquals(bytes, getResult); + assertArrayEquals(sourceAsBytes, readResultAsBytes); + */ + } finally { + IOUtils.closeQuietly(source); + IOUtils.closeQuietly(readResult); + } } Modified: trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/storage/AbstractDisworkMapTest.java =================================================================== --- trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/storage/AbstractDisworkMapTest.java 2010-06-21 10:14:34 UTC (rev 85) +++ trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/storage/AbstractDisworkMapTest.java 2010-06-24 14:13:06 UTC (rev 86) @@ -1,10 +1,13 @@ package org.nuiton.diswork.fs.storage; import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.Arrays; +import java.util.Random; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -96,4 +99,55 @@ } + @Test + public void testStoreLargeValue() { + + // 237499 + // 312499 + // 351561 + // 249999 + + int min = 0; + int max = 10 * 1000 * 1000; + + + int milieu = (min + max) / 2; + + while (max - min > 1) { + + + byte[] newBytes = new byte[milieu]; + Random random = new Random(); + random.nextBytes(newBytes); + + map1.put("test", newBytes); + + byte[] getResult = map1.get("test"); + assertNotNull(getResult); + assertEquals(milieu, getResult.length); + + getResult = map2.get("test"); + if (getResult == null) { + System.out.println(max + " trop grand"); + max = milieu; + } else { + System.out.println(min + " trop petit"); + min = milieu; + } + + milieu = (min + max) / 2; + System.out.println(min + " < " + milieu + " < " + max); + } + + System.out.println(milieu); + /* + assertNotNull(getResult); + assertEquals(bytesSize, getResult.length); + + assertArrayEquals(newBytes, getResult); + */ + + + } + } Modified: trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/storage/KademliaDisworkMapTest.java =================================================================== --- trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/storage/KademliaDisworkMapTest.java 2010-06-21 10:14:34 UTC (rev 85) +++ trunk/diswork-fs/src/test/java/org/nuiton/diswork/fs/storage/KademliaDisworkMapTest.java 2010-06-24 14:13:06 UTC (rev 86) @@ -70,6 +70,7 @@ * a bad bootstrap * @throws Exception */ + /* @Test(expected = org.planx.xmlstore.routing.RoutingException.class) public void testBadBootrap() throws Exception { DisworkFileSystemConfig config1 = @@ -78,4 +79,5 @@ config1.setBootstrapPort(80); new KademliaDisworkMap(config1); } + */ } Modified: trunk/diswork-fs/src/test/resources/log4j.properties =================================================================== --- trunk/diswork-fs/src/test/resources/log4j.properties 2010-06-21 10:14:34 UTC (rev 85) +++ trunk/diswork-fs/src/test/resources/log4j.properties 2010-06-24 14:13:06 UTC (rev 86) @@ -7,4 +7,5 @@ # package level log4j.logger.org.nuiton.diswork.fs=WARN log4j.logger.org.nuiton.diswork.fs.storage.KademliaDisworkMap=INFO -log4j.logger.org.nuiton.diswork.fs.Demo=INFO \ No newline at end of file +log4j.logger.org.nuiton.diswork.fs.Demo=INFO +log4j.logger.org.planx.xmlstore.routing=DEBUG \ No newline at end of file Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2010-06-21 10:14:34 UTC (rev 85) +++ trunk/pom.xml 2010-06-24 14:13:06 UTC (rev 86) @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> @@ -32,7 +33,7 @@ <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> - <version>1.2.14</version> + <version>1.2.16</version> <scope>test</scope> </dependency> <dependency> @@ -88,7 +89,13 @@ <artifactId>commons-digester</artifactId> <version>2.0</version> </dependency> + <dependency> + <groupId>org.freemarker</groupId> + <artifactId>freemarker</artifactId> + <version>2.3.16</version> + </dependency> + <!-- test --> <dependency> <groupId>junit</groupId>
participants (1)
-
bleny@users.nuiton.org