Hi Kirk,

My goal is to push load onto the server and establish a baseline for
defined tests.  For example, if 20 users order a product (login, find
product, add to cart...etc), what happens to response times.  If that load
is doubled to 40, what happens at that point.  I will more than likely be
using multiple clients to push the load to the server(s).  I would like my
client to be able to push as much load to the server as possible.  When the
browser I'm using, JBrowserDriver, uses a seperate process/jvm that client
to load ratio goes down.  The reason I was inquiring about the browser as
the HTMLUnitDriver I tried was unable to find some of the elements that the
JBrowserDriver was.  Do you have any opinion on what I can review as a
replacement or approach?

Thanks  Mike.

On Sat, Jul 9, 2016 at 4:46 AM, [email protected] <
[email protected]> wrote:

> Hi,
>
> If your goal is to push load on the server, you are focusing on the wrong
> thing. How the browser behaves is mostly irrelevant. What you want is to
> apply a production level of pressure following a production like schedule
> on the server. If you’re goal is to test browser performance then JMeter is
> the wrong tool.
>
> Kind regards,
> Kirk Pepperdine
>
> > On Jul 8, 2016, at 10:30 PM, Deepak Shetty <[email protected]> wrote:
> >
> > sorry didnt see this - as far as I am aware most of the browser
> simulators
> > work using processes , not threads.
> > http://jmeter-plugins.org/wiki/WebDriverTutorial/ is probably a better
> fit
> > for JMeter but likely has the same issue that you see.
> >
> > Selenium Grid is *probably* the better tool if you really want browser
> > behavior (though my infortmation is outdated)
> >
> > On Fri, Jul 8, 2016 at 12:39 PM, Michael Logan <[email protected]>
> > wrote:
> >
> >> Reviewing the JBrowserDrive source code I can see this is launching the
> >> external process.
> >>
> >>
> >>
> https://github.com/MachinePublishers/jBrowserDriver/blob/master/src/com/machinepublishers/jbrowserdriver/JBrowserDriver.java
> >>
> >> Sorry for the confusion.  I started to use JBrowserDriver as it was
> able to
> >> handle the Ajax/non-accessible website.  Any opinion on another driver
> that
> >> is equiped to handle my website and doesn't launch an external process?
> >>
> >> On Fri, Jul 8, 2016 at 3:27 PM, Michael Logan <[email protected]>
> >> wrote:
> >>
> >>> I don't think I am.  Here is my code for creating the JBrowserDriver,
> >>> logging into the website, and then finally storing into the JMeter
> >> context
> >>> variables.
> >>>
> >>>
> >>> package gov.state;
> >>>
> >>> import
> org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
> >>> import java.io.Serializable;
> >>> import java.util.concurrent.TimeUnit;
> >>> import com.machinepublishers.jbrowserdriver.JBrowserDriver;
> >>> import org.apache.commons.lang.BooleanUtils;
> >>> import org.apache.jmeter.config.Arguments;
> >>> import org.apache.jmeter.samplers.SampleResult;
> >>> import org.openqa.selenium.*;
> >>> import org.openqa.selenium.support.ui.ExpectedConditions;
> >>> import org.openqa.selenium.support.ui.WebDriverWait;
> >>> import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
> >>>
> >>> public class InstantiateBrowser extends AbstractJavaSamplerClient
> >>> implements Serializable {
> >>>
> >>>    private static final long serialVersionUID = 5710042664127564753L;
> >>>    private JBrowserDriver driver;
> >>>    private String lastStep;
> >>>    public static String Username = "";
> >>>    public static String Password = "";
> >>>    public static boolean ErrorCapture = false;
> >>>    public static String ErrorDetailPath = "";
> >>>    public static String Host = "";
> >>>    public static String Directory = "";
> >>>    String executionTag;
> >>>
> >>>    @Override
> >>>    public Arguments getDefaultParameters() {
> >>>        //add arguments to the JMeter Java Sample page.
> >>>        Arguments defaultParameters = new Arguments();
> >>>        defaultParameters.addArgument("Username", "<<Username to
> use>>");
> >>>        defaultParameters.addArgument("Password", "<<Password to
> use>>");
> >>>        defaultParameters.addArgument("ErrorCapture","false");
> >>>        defaultParameters.addArgument("ErrorDetailPath", "The path to
> >> save
> >>> source and screenshots with a trailing slash.");
> >>>        defaultParameters.addArgument("TEBSHost","http://thissite.com
> ");
> >>>        defaultParameters.addArgument("TEBSDirectory", "appdirectory");
> >>>        return defaultParameters;
> >>>    }
> >>>
> >>>    public void setUp(JavaSamplerContext context) throws Exception {
> >>>        //set the execution tag for log statements
> >>>        executionTag = "ExecutionTimestamp::" + Common.GetTimeStamp();
> >>>
> >>>        //try to get the parameters that were passed in.
> >>>        try {
> >>>            Username = context.getParameter("Username");
> >>>            Password = context.getParameter("Password");
> >>>            ErrorCapture =
> >>> BooleanUtils.toBoolean(context.getParameter("ErrorCapture"));
> >>>            ErrorDetailPath = context.getParameter("ErrorDetailPath");
> >>>            Host = context.getParameter("TEBSHost");
> >>>            Directory = context.getParameter("TEBSDirectory");
> >>>        }
> >>>        catch (Exception ex) {
> >>>            Common.ExceptionToSysOut(executionTag, ex);
> >>>            Common.wl(executionTag, "Exception with parameters");
> >>>        }
> >>>
> >>>        //instantiate the browser
> >>>        try {
> >>>            driver = new JBrowserDriver();
> >>>        } catch (Exception ex) {
> >>>            Common.ExceptionToSysOut(executionTag, ex);
> >>>        }
> >>>
> >>>        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
> >>>    }
> >>>
> >>>    @Override
> >>>    public SampleResult runTest(JavaSamplerContext context) {
> >>>
> >>>        // Create the result
> >>>        SampleResult result = new SampleResult();
> >>>
> >>>        // start the timer
> >>>        result.sampleStart(); // start stopwatch
> >>>
> >>>        try {
> >>>
> >>>            //run setUp
> >>>            setUp(context);
> >>>
> >>>            //access the website
> >>>            driver.get(Host + "/" + Directory + "/login.jsp");
> >>>
> >>>            lastStep = "Trying to log in...";
> >>>
> >>>            driver.findElement(By.id("loginText")).clear();
> >>>            driver.findElement(By.id("loginText")).sendKeys(Username);
> >>>            driver.findElement(By.name("password")).clear();
> >>>            driver.findElement(By.name("password")).sendKeys(Password);
> >>>            driver.findElement(By.xpath("//button[contains(.,'Sign
> >>> In')]")).click();
> >>>
> >>>            //Validate that we see the session as logged in.
> >>>            WebElement elementLoggedIn = null;
> >>>            try {
> >>>                //Let's wait at most 20 seconds for the result to
> appear.
> >>>                elementLoggedIn = (new WebDriverWait(driver, 20))
> >>>
> >>>
> >>
> .until(ExpectedConditions.presenceOfElementLocated(By.xpath("//td[contains(.,'Logged
> >>> In As')]")));
> >>>                //if we have gotten to this point we can assume that
> >> login
> >>> was successful.
> >>>                //set the result to success
> >>>                result.setSuccessful(true);
> >>>                result.setResponseMessage("Verification Passed");
> >>>
> >>>                //grab the JMeter context and store the browser into
> >> memory
> >>>                org.apache.jmeter.threads.JMeterContext jmetercontext =
> >>> org.apache.jmeter.threads.JMeterContextService.getContext();
> >>>                org.apache.jmeter.threads.JMeterVariables vars =
> >>> jmetercontext.getVariables();
> >>>                //we are storing the driver as a variable named
> "browser"
> >>>                vars.putObject("browser", driver);
> >>>                jmetercontext.setVariables(vars);
> >>>            }
> >>>            catch (NoSuchElementException ex) {
> >>>                Common.wl(executionTag, "Element not found.");
> >>>                Common.ExceptionToSysOut(executionTag, ex);
> >>>                ErrorToDisk.WriteIt(driver, ErrorDetailPath,
> >>> "InstantiateBrowser", executionTag);
> >>>                result.setSuccessful(false);
> >>>                result.setResponseMessage(executionTag + "::Element Not
> >>> found 1." + Common.ExceptionToString(ex));
> >>>
> >>> result.setDataType(org.apache.jmeter.samplers.SampleResult.TEXT);
> >>>            }
> >>>            catch (Exception ex) {
> >>>                Common.wl(executionTag, "Unexpected exception");
> >>>                Common.ExceptionToSysOut(executionTag, ex);
> >>>                ErrorToDisk.WriteIt(driver, ErrorDetailPath,
> >>> "InstantiateBrowser", executionTag);
> >>>                result.setSuccessful(false);
> >>>                result.setResponseMessage(executionTag + "::Element Not
> >>> found 2." + Common.ExceptionToString(ex));
> >>>
> >>> result.setDataType(org.apache.jmeter.samplers.SampleResult.TEXT);
> >>>            }
> >>>
> >>>            //stop the clock
> >>>            result.sampleEnd();
> >>>
> >>>        } catch (Exception e) {
> >>>            \\remove for brevity
> >>>
> >>>        }
> >>>
> >>>        //return the result
> >>>        return result;
> >>>    }
> >>>
> >>>    @Override
> >>>    public void teardownTest(JavaSamplerContext context) {
> >>>        //driver.quit();
> >>>        super.teardownTest(context);
> >>>
> >>>    }
> >>>
> >>>
> >>>
> >>> }
> >>>
> >>> On Fri, Jul 8, 2016 at 3:00 PM, Deepak Shetty <[email protected]>
> wrote:
> >>>
> >>>> The sampler itself should run as the same java process - are you sure
> >> you
> >>>> arent launching processes from within the sampler ?
> >>>>
> >>>> On Fri, Jul 8, 2016 at 11:56 AM, Michael Logan <
> [email protected]
> >>>
> >>>> wrote:
> >>>>
> >>>>> Hi,
> >>>>>
> >>>>> I am trying to use the Java Request Sampler to test my website.  I am
> >>>>> noticing that my requests get started as another process, not as a
> >>>> thread
> >>>>> under the JMeter process.  Is this what is supposed to happen with a
> >>>> custom
> >>>>> Java Request Sampler?  My custom Java Request Sampler extends the
> >>>>> AbstractJavaSamplerClient
> >>>>>
> >>>>> Behavior during test run.
> >>>>> JMeter version 2.13 - I see an external java process for each user.
> >>>>> JMeter version 3.0 - I see an many more java processes, I shut-down
> >> the
> >>>>> test when I saw about 15 of them.
> >>>>>
> >>>>> Here is the outline of my test:
> >>>>> Thread Group (5 users, 35 second ramp up, 1 loop)
> >>>>> - Java Request Sampler (create the browser, log into a website, store
> >>>> the
> >>>>> browser in JMeter context)
> >>>>> - Runtime Controller (Runtime 480 seconds)
> >>>>> - - Java Request Sampler (do an action in the website)
> >>>>> - end Runtime Controller
> >>>>> - Java Request Sampler (log out of the application, close the driver)
> >>>>>
> >>>>> Is this normal behavior?  If so, how can I control those spawn Java
> >>>>> processes?  I do launch JMeter from the .bat file that specifies all
> >> the
> >>>>> JVM parameters.
> >>>>>
> >>>>> Thanks in advance for any help.
> >>>>>
> >>>>
> >>>
> >>>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to