[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