hi all,

I'm trying to parallelize our tellurium tests, and am running into
frequent cases where requests through the connector give me:

Exception : com.thoughtworks.selenium.SeleniumException:
The_server_localhost_failed_to_respond_with_a_valid_HTTP_response.:
java.lang.NullPointerException
        at
org.codehaus.groovy.runtime.callsite.GetEffectivePojoFieldSite.acceptGetProperty(GetEffectivePojoFieldSite.java:
43)
        at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:
237)
        at
org.tellurium.connector.CustomSelenium.getActiveSeleniumSession(CustomSelenium.groovy:
76)

Is there anything that needs to be done for the selenium connector to
be thread-safe?  Does it need synchronizaiton, or are lower levels in
the stack already synchronized?

My use-case is this:

I have multiple dslContexts, each of which represents a webapp (I have
2)  that is being manipulated during a test.  Setup is being done
through a TestNG listener, which establishes the DslContexts, does
connectUrl() on them, etc.  Then my testcase begins.

As mentioned, I get frequent SeleniumExceptions when trying to use
parallel="methods" while executing.

>From looking at the code, I see the the connector isn't synchronized,
nor is the CustomSelenium object.  It also would seem to me that this:

    // Get the active Selenium RC session
    def CustomSelenium getActiveSeleniumSession(){
      DefaultSelenium sel =
com.thoughtworks.selenium.grid.tools.ThreadSafeSeleniumSessionStorage.session()
      CommandProcessor processor = sel.commandProcessor
      CustomSelenium csel = new CustomSelenium(processor)
/*
      if(this.userExtension != null &&
this.userExtension.trim().length() > 0){
        File userExt = new File(this.userExtension);
//        processor.setExtensionJs(userExt.getAbsolutePath())
        processor.setExtensionJs(this.userExtension)
        println "Add user-extensions.js found at given path: " +
userExt.getAbsolutePath() + " to Command Processor";
      }
 */
      csel.customClass = this.customClass
      csel.passCommandProcessor(processor)

      return csel
    }


would have to be thread-safe or the csel object returned back may not
always be correct -- ie: CustomSelenium would have to be protected
like DefaultSelenium is, right?

thanks!
Jason

-- 
You received this message because you are subscribed to the Google Groups 
"tellurium-users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/tellurium-users?hl=en.

Reply via email to