[jboss-svn-commits] JBL Code SVN: r26371 - in labs/jbossrules/trunk/drools-guvnor: src/main/java/org/drools/guvnor/public and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue May 5 01:26:55 EDT 2009
Author: michael.neale at jboss.com
Date: 2009-05-05 01:26:55 -0400 (Tue, 05 May 2009)
New Revision: 26371
Modified:
labs/jbossrules/trunk/drools-guvnor/pom.xml
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/PackageDeploymentServlet.java
labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/PackageDeploymentServletTest.java
Log:
BRMS-107 test coverage mainly. Also implemented getLastModified override for good measure.
Modified: labs/jbossrules/trunk/drools-guvnor/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/pom.xml 2009-05-05 05:25:00 UTC (rev 26370)
+++ labs/jbossrules/trunk/drools-guvnor/pom.xml 2009-05-05 05:26:55 UTC (rev 26371)
@@ -68,15 +68,15 @@
</plugins>
</build>
-
-
- <profiles>
- <profile>
- <id>soa</id>
- <activation>
- <property>
- <name>soa</name>
- </property>
+
+
+ <profiles>
+ <profile>
+ <id>soa</id>
+ <activation>
+ <property>
+ <name>soa</name>
+ </property>
</activation>
<build>
<finalName>drools-guvnor</finalName>
@@ -146,8 +146,8 @@
</plugin>
</plugins>
</build>
-
- </profile>
+
+ </profile>
</profiles>
<dependencies>
@@ -377,6 +377,15 @@
<artifactId>svnkit</artifactId>
<scope>provided</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty-embedded</artifactId>
+ <version>6.1.15</version>
+ <scope>test</scope>
+ </dependency>
+
+
</dependencies>
</project>
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt 2009-05-05 05:25:00 UTC (rev 26370)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt 2009-05-05 05:26:55 UTC (rev 26371)
@@ -1 +1 @@
-5.0.1.SNAPSHOT 26353M
\ No newline at end of file
+5.0.1.SNAPSHOT 26353:26357M
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/PackageDeploymentServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/PackageDeploymentServlet.java 2009-05-05 05:25:00 UTC (rev 26370)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/PackageDeploymentServlet.java 2009-05-05 05:26:55 UTC (rev 26371)
@@ -19,6 +19,7 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.util.Locale;
import java.util.Date;
import java.text.SimpleDateFormat;
@@ -52,6 +53,18 @@
@Override
+ protected long getLastModified(HttpServletRequest request) {
+ PackageDeploymentURIHelper helper = null;
+ try {
+ helper = new PackageDeploymentURIHelper(request.getRequestURI());
+ FileManagerUtils fm = getFileManager();
+ return fm.getLastModified( helper.getPackageName(), helper.getVersion() );
+ } catch (UnsupportedEncodingException e) {
+ return super.getLastModified(request);
+ }
+ }
+
+ @Override
protected void doHead(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
if (request.getMethod().equals( "HEAD" )) {
Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/PackageDeploymentServletTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/PackageDeploymentServletTest.java 2009-05-05 05:25:00 UTC (rev 26370)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/PackageDeploymentServletTest.java 2009-05-05 05:26:55 UTC (rev 26371)
@@ -1,8 +1,7 @@
package org.drools.guvnor.server.files;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ByteArrayInputStream;
+import java.io.*;
+import java.util.Date;
import junit.framework.TestCase;
@@ -14,11 +13,27 @@
import org.drools.repository.PackageItem;
import org.drools.repository.RulesRepository;
import org.drools.util.DroolsStreamUtils;
+import org.drools.util.FileManager;
+import org.drools.io.ResourceFactory;
+import org.drools.io.ResourceChangeScannerConfiguration;
+import org.drools.agent.KnowledgeAgent;
+import org.drools.agent.KnowledgeAgentFactory;
+import org.drools.KnowledgeBase;
+import org.drools.definition.KnowledgePackage;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.ServletHolder;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.Header;
+import org.apache.commons.httpclient.methods.HeadMethod;
public class PackageDeploymentServletTest extends TestCase {
- public void testDoGetPackage() throws Exception {
+
+
+
+ public void testLoadingRules() throws Exception {
RulesRepository repo = new RulesRepository( TestEnvironmentSessionHelper.getSession( true ) );
ServiceImplementation impl = new ServiceImplementation();
@@ -133,7 +148,110 @@
assertEquals(lm, res.headers.get("Last-Modified"));
+ serv = new PackageDeploymentServlet();
+ req = new MockHTTPRequest("/package/testPDSGetPackage/LATEST.drl", null);
+ req.method = "HEAD";
+ out = new ByteArrayOutputStream();
+ res = new MockHTTPResponse(out);
+ serv.doHead(req, res);
+ assertTrue(res.headers.size() > 0);
+ assertEquals(lm, res.headers.get("Last-Modified"));
+ System.out.println(lm);
+
+
+ //
+ //now lets run it in a real server !
+ //
+ Server server = new Server(9000);
+
+ Context ctx = new Context(server, "/", Context.SESSIONS);
+
+
+
+
+ ctx.addServlet(new ServletHolder(new PackageDeploymentServlet()), "/package/*");
+
+
+ server.setStopAtShutdown(true);
+ server.start();
+
+ ResourceFactory.getResourceChangeNotifierService().start();
+ ResourceFactory.getResourceChangeScannerService().start();
+
+ ResourceChangeScannerConfiguration sconf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
+ sconf.setProperty( "drools.resource.scanner.interval", "1" );
+ ResourceFactory.getResourceChangeScannerService().configure( sconf );
+
+
+
+ String xml = "";
+ xml += "<change-set xmlns='http://drools.org/drools-5.0/change-set'";
+ xml += " xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'";
+ xml += " xs:schemaLocation='http://drools.org/drools-5.0/change-set drools-change-set-5.0.xsd' >";
+ xml += " <add> ";
+ xml += " <resource source='http://localhost:9000/package/testPDSGetPackage/LATEST.drl' type='DRL' />";
+ xml += " </add> ";
+ xml += "</change-set>";
+
+ FileManager fileManager = new FileManager();
+ fileManager.setUp();
+
+ File fxml = fileManager.newFile( "changeset.xml" );
+ Writer output = new BufferedWriter( new FileWriter( fxml ) );
+ output.write( xml );
+ output.close();
+
+
+ KnowledgeAgent ag = KnowledgeAgentFactory.newKnowledgeAgent("fii", KnowledgeAgentFactory.newKnowledgeAgentConfiguration());
+ ag.applyChangeSet( ResourceFactory.newUrlResource( fxml.toURI().toURL() ) );
+
+ KnowledgeBase kb = ag.getKnowledgeBase();
+ assertEquals(1, kb.getKnowledgePackages().size());
+ KnowledgePackage kp = kb.getKnowledgePackages().iterator().next();
+ assertTrue(kb.getKnowledgePackages().size() > 0);
+ assertEquals(1, kp.getRules().size());
+
+
+ //check the HEAD method
+ HttpClient client = new HttpClient();
+ HeadMethod hm = new HeadMethod("http://localhost:9000/package/testPDSGetPackage/LATEST.drl");
+ client.executeMethod(hm);
+ Header lastMod = hm.getResponseHeader("lastModified");
+ Thread.sleep(50);
+ long now = System.currentTimeMillis();
+ long before = Long.parseLong(lastMod.getValue());
+ assertTrue(before < now);
+
+
+ //now lets add a rule
+ asset = pkg.addAsset("someRule2", "");
+ asset.updateContent("when \n SampleFact() \n then \n System.err.println(43);");
+ asset.updateFormat(AssetFormats.DRL);
+ asset.checkin("");
+
+ assertNull(impl.buildPackage(pkg.getUUID(), null, true));
+
+
+
+ Thread.sleep(2000);
+
+
+ kb = ag.getKnowledgeBase();
+ assertEquals(1, kb.getKnowledgePackages().size());
+ kp = kb.getKnowledgePackages().iterator().next();
+
+ assertEquals(2, kp.getRules().size());
+
+
+
+
+
+ server.stop();
+
+
+
+
}
public void testScenarios() throws Exception {
More information about the jboss-svn-commits
mailing list