You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2011/12/29 08:51:35 UTC

svn commit: r1225461 - in /incubator/lcf/trunk: framework/core/src/test/java/org/apache/manifoldcf/core/tests/ framework/core/src/test/resource/org/apache/manifoldcf/core/tests/ tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/

Author: kwright
Date: Thu Dec 29 07:51:34 2011
New Revision: 1225461

URL: http://svn.apache.org/viewvc?rev=1225461&view=rev
Log:
Add job save/delete logic to navigation test.  Part of CONNECTORS-339.

Modified:
    incubator/lcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/HTMLTester.java
    incubator/lcf/trunk/framework/core/src/test/resource/org/apache/manifoldcf/core/tests/VirtualBrowser.py
    incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/NavigationUI.java

Modified: incubator/lcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/HTMLTester.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/HTMLTester.java?rev=1225461&r1=1225460&r2=1225461&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/HTMLTester.java (original)
+++ incubator/lcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/HTMLTester.java Thu Dec 29 07:51:34 2011
@@ -148,6 +148,7 @@ public class HTMLTester
     currentIndentLevel = 0;
     virtualBrowserVarName = getNextVariableName();
     
+    emitLine("import time");
     emitLine("import sys");
     emitLine("sys.path.append(\".\")");
     emitLine("import VirtualBrowser");
@@ -202,7 +203,53 @@ public class HTMLTester
       emitLine(variableName + " = None");
     return new StringDescription(variableName);
   }
+
+  /** Create a string description for use later in the test.
+  *@param values are the intended values of the string description, concatenated together.
+  *@return the string description.
+  */
+  public StringDescription createStringDescription(StringDescription[] values)
+    throws Exception
+  {
+    String variableName = getNextVariableName();
+    if (values.length == 0)
+      emitLine(variableName + " = " + quotePythonString(""));
+    else
+    {
+      StringBuilder sb = new StringBuilder(variableName);
+      sb.append(" = ");
+      for (int i = 0; i < values.length ; i++)
+      {
+        if (i > 0)
+          sb.append(" + ");
+        sb.append(values[i].getVarName());
+      }
+      emitLine(sb.toString());
+    }
+    return new StringDescription(variableName);
+  }
+
+  /** Print a value.
+  */
+  public void printValue(StringDescription value)
+    throws Exception
+  {
+    emitLine("print >> sys.stderr, "+value.getVarName());
+  }
+  
+  /** Begin a loop.
+  */
+  public Loop beginLoop(int maxSeconds)
+    throws Exception
+  {
+    String variableName = getNextVariableName();
+    emitLine(variableName+" = time.time() + "+maxSeconds);
+    emitLine("while True:");
+    currentIndentLevel++;
+    return new Loop(variableName);
+  }
   
+    
   /** Open virtual browser window, and send it to a specified URL.
   *@param url is the desired URL.
   *@return the window handle.  Use this whenever a window argument is required later.
@@ -281,6 +328,28 @@ public class HTMLTester
       this.windowVar = windowVar;
     }
     
+    /** Check if a pattern is present or not.
+    *@return a StringDescription that in fact describes a boolean condition; true if present.
+    */
+    public StringDescription isPresent(StringDescription regularExpression)
+      throws Exception
+    {
+      String varName = getNextVariableName();
+      emitLine(varName + " = "+windowVar+".is_present("+regularExpression.getVarName()+")");
+      return new StringDescription(varName);
+    }
+
+    /** Check if a pattern is present or not.
+    *@return a StringDescription that in fact describes a boolean condition; true if not present.
+    */
+    public StringDescription isNotPresent(StringDescription regularExpression)
+      throws Exception
+    {
+      String varName = getNextVariableName();
+      emitLine(varName + " = not "+windowVar+".is_present("+regularExpression.getVarName()+")");
+      return new StringDescription(varName);
+    }
+    
     /** Look for a specific match in the current page data, and return the value of the specified group.
     *@return a description of the string found.  This can be used later in other commands to assess
     *  correctness of the page, or allow form data to be filled in.
@@ -350,6 +419,42 @@ public class HTMLTester
     }
   }
   
+  /** Loop object.
+  */
+  public class Loop
+  {
+    protected String loopVarName;
+    
+    public Loop(String loopVarName)
+    {
+      this.loopVarName = loopVarName;
+    }
+    
+    /** Break on condition being true.
+    */
+    public void breakWhenTrue(StringDescription condition)
+      throws Exception
+    {
+      emitLine("if "+condition.getVarName()+":");
+      currentIndentLevel++;
+      emitLine("break");
+      currentIndentLevel--;
+    }
+    
+    /** End the loop.
+    */
+    public void endLoop()
+      throws Exception
+    {
+      emitLine("time.sleep(1)");
+      emitLine("if time.time() >= "+loopVarName+":");
+      currentIndentLevel++;
+      emitLine("raise Exception('Loop timed out')");
+      currentIndentLevel--;
+      currentIndentLevel--;
+    }
+  }
+  
   /** Object representative of a virtual browser link.
   */
   public class Link

Modified: incubator/lcf/trunk/framework/core/src/test/resource/org/apache/manifoldcf/core/tests/VirtualBrowser.py
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/core/src/test/resource/org/apache/manifoldcf/core/tests/VirtualBrowser.py?rev=1225461&r1=1225460&r2=1225461&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/core/src/test/resource/org/apache/manifoldcf/core/tests/VirtualBrowser.py (original)
+++ incubator/lcf/trunk/framework/core/src/test/resource/org/apache/manifoldcf/core/tests/VirtualBrowser.py Thu Dec 29 07:51:34 2011
@@ -784,6 +784,12 @@ class VirtualWindow:
 
     # Public part of interface
 
+    # Look for pattern
+    def is_present( self, regular_expression ):
+        reobject = re.compile( regular_expression )
+        mo = reobject.search( self.data )
+        return mo != None
+
     # Look for a specific match in the page data, and return the value of the specified group
     def find_match( self, regular_expression, group=0 ):
         reobject = re.compile( regular_expression )

Modified: incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/NavigationUI.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/NavigationUI.java?rev=1225461&r1=1225460&r2=1225461&view=diff
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/NavigationUI.java (original)
+++ incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/NavigationUI.java Thu Dec 29 07:51:34 2011
@@ -46,6 +46,7 @@ public class NavigationUI extends BaseUI
     HTMLTester.Selectbox selectbox;
     HTMLTester.Button button;
     HTMLTester.Radiobutton radiobutton;
+    HTMLTester.Loop loop;
     
     window = testerInstance.openMainWindow("http://localhost:8346/mcf-crawler-ui/index.jsp");
     
@@ -203,7 +204,7 @@ public class NavigationUI extends BaseUI
     // Add a record to the Paths list
     
     // MHL
-    /* Need a way of checking job status if we're going to save it and delete it, since it happens in background.
+    
     // Save the job
     window = testerInstance.findWindow(null);
     button = window.findButton(testerInstance.createStringDescription("Save this job"));
@@ -211,11 +212,21 @@ public class NavigationUI extends BaseUI
 
     // Delete the job
     window = testerInstance.findWindow(null);
-    HTMLTester.StringDescription jobID = window.findMatch(testerInstance.createStringDescription("<!--jobid=(.*?)-->"),1);
+    HTMLTester.StringDescription jobID = window.findMatch(testerInstance.createStringDescription("<!--jobid=(.*?)-->"),0);
+    testerInstance.printValue(jobID);
     link = window.findLink(testerInstance.createStringDescription("Delete this job"));
     link.click();
-    */
     
+    // Wait for the job to go away
+    loop = testerInstance.beginLoop(120);
+    window = testerInstance.findWindow(null);
+    link = window.findLink(testerInstance.createStringDescription("Manage jobs"));
+    link.click();
+    window = testerInstance.findWindow(null);
+    HTMLTester.StringDescription isJobNotPresent = window.isNotPresent(jobID);
+    testerInstance.printValue(isJobNotPresent);
+    loop.breakWhenTrue(isJobNotPresent);
+    loop.endLoop();
     
     // Delete the authority connection
     window = testerInstance.findWindow(null);