You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by Rodrigo Madera <ro...@gmail.com> on 2009/03/13 17:57:15 UTC

Ajax Push Testing

Hello there,

First of all, congratulations to the creators of this nice tool.
Outstanding!

Using JMeter, I'm testing a web server that uses Ajax Push, and this
is proving to be kind of tricky to do with JMeter.

Let me set up an example: a server that eats fruits. You send a
"regular" HTTP request and you request it to eat a fruit, using a
serialized JSON request object representing the parameters of the
fruit. As the server eats the requests, he will use Ajax Push to send
the results through a unique channel for the client.

Of course this is a silly example that can be implemented using
numerous trivial methods, but my intent is to demonstrate my case with
a simple analogy.

So let's look at a normal day's life of our beloved server:

1) Server: Ready for some juicy action...

2) Client -> Server:  HTTP Request: POST
/create/persistent/channel/and/keep/this/thing/open/will/ya
    (the server keeps the connection open and will send some stuff
here once the fruit requests come... basic Comet stuff)

3) Client -> Server: HTTP Request: GET
/actions/eat/some?request={json_stuff_here_about_the_fruit_to_eat}
    Server Response: OK Dude, I'll eat that and tell you when I'm done.
    This connection is then closed.

4) Server -> Client: <script>process({json_results_object_here});</script>
    The result is sent to the appropriate persistent connection.
    Since the server has devoured the fruit that was requested, he
sends a response to the persistent connection.
    Again, basic Comet stuff.


So from this typical Comet dialog we can see that it gets tricky to
test with conventional JMeter components.

So, after this lengthy introduction comes a simple question: Any
improvements/tests/successes with Ajax Push testing with JMeter?

If not, I'm willing to help you create the needed components for this
to happen. Of course, if nothing already is being made.

Thank you for your time,
Rodrigo Madera

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org


Re: Ajax Push Testing

Posted by Rodrigo Madera <ro...@gmail.com>.
Thank you for your response.

Since I was afraid JMeter wasn't ready for Ajax Push, I'm already
designing a solution that is exactly like you mentioned. JMeter will
be extended to allow such tests.

As soon as I have something I'll post it here.

Regards,
Rodrigo

On Mon, Mar 16, 2009 at 12:33 AM, Sonam Chauhan <so...@ce.com.au> wrote:
> Interesting question. JMeter's HTTP samplers (at least the ones I've
> used) wait for the HTTP request to complete, before passing the response
> on to the assertions logic.
>
> If you were modifying JMeter, perhaps you'd define a 'persistent
> channel' HTTP sampler called earlier in the test plan, and set a new
> 'use-persistent-channel' subelement in existing HTTP samplers (like the
> thread pool setting in the JDBC samplers).
>
> Otherwise, you could do this server-side with some sort of proxy that
> mediates persistent connectivity. The first JMeter request to the proxy
> establishes a persistent HTTP connection to the actual webserver. JMeter
> then makes follow-on requests to the proxy, which pipes them through the
> persistent connection.
>
> Regards,
> sonam
> -----Original Message-----
> From: Rodrigo Madera [mailto:rodrigo.madera@gmail.com]
> Sent: Saturday, 14 March 2009 3:57 AM
> To: jmeter-user@jakarta.apache.org
> Subject: Ajax Push Testing
>
> Hello there,
>
> First of all, congratulations to the creators of this nice tool.
> Outstanding!
>
> Using JMeter, I'm testing a web server that uses Ajax Push, and this
> is proving to be kind of tricky to do with JMeter.
>
> Let me set up an example: a server that eats fruits. You send a
> "regular" HTTP request and you request it to eat a fruit, using a
> serialized JSON request object representing the parameters of the
> fruit. As the server eats the requests, he will use Ajax Push to send
> the results through a unique channel for the client.
>
> Of course this is a silly example that can be implemented using
> numerous trivial methods, but my intent is to demonstrate my case with
> a simple analogy.
>
> So let's look at a normal day's life of our beloved server:
>
> 1) Server: Ready for some juicy action...
>
> 2) Client -> Server:  HTTP Request: POST
> /create/persistent/channel/and/keep/this/thing/open/will/ya
>    (the server keeps the connection open and will send some stuff
> here once the fruit requests come... basic Comet stuff)
>
> 3) Client -> Server: HTTP Request: GET
> /actions/eat/some?request={json_stuff_here_about_the_fruit_to_eat}
>    Server Response: OK Dude, I'll eat that and tell you when I'm done.
>    This connection is then closed.
>
> 4) Server -> Client:
> <script>process({json_results_object_here});</script>
>    The result is sent to the appropriate persistent connection.
>    Since the server has devoured the fruit that was requested, he
> sends a response to the persistent connection.
>    Again, basic Comet stuff.
>
>
> So from this typical Comet dialog we can see that it gets tricky to
> test with conventional JMeter components.
>
> So, after this lengthy introduction comes a simple question: Any
> improvements/tests/successes with Ajax Push testing with JMeter?
>
> If not, I'm willing to help you create the needed components for this
> to happen. Of course, if nothing already is being made.
>
> Thank you for your time,
> Rodrigo Madera
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>
>
> The information contained in this email and any attached files are strictly
> private and confidential. This email should be read by the intended addressee
> only.  If the recipient of this message is not the intended addressee, please
> call Corporate Express Australia Limited on +61 2 9335 0555 or Corporate Express
> New Zealand Limited on +64 9 279 2555 and promptly delete this email and any
> attachments.  The intended recipient of this email may only use, reproduce,
> disclose or distribute the information contained in this email and any attached
> files with Corporate Express' permission. If you are not the intended addressee,
> you are strictly prohibited from using, reproducing, disclosing or distributing
> the information contained in this email and any attached files.  Corporate
> Express advises that this email and any attached files should be scanned to
> detect viruses. Corporate Express accepts no liability for loss or damage
> (whether caused by negligence or not) resulting from the use of any attached
> files.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org


RE: Ajax Push Testing

Posted by Sonam Chauhan <so...@ce.com.au>.
Interesting question. JMeter's HTTP samplers (at least the ones I've
used) wait for the HTTP request to complete, before passing the response
on to the assertions logic. 

If you were modifying JMeter, perhaps you'd define a 'persistent
channel' HTTP sampler called earlier in the test plan, and set a new
'use-persistent-channel' subelement in existing HTTP samplers (like the
thread pool setting in the JDBC samplers). 

Otherwise, you could do this server-side with some sort of proxy that
mediates persistent connectivity. The first JMeter request to the proxy
establishes a persistent HTTP connection to the actual webserver. JMeter
then makes follow-on requests to the proxy, which pipes them through the
persistent connection.

Regards,
sonam
-----Original Message-----
From: Rodrigo Madera [mailto:rodrigo.madera@gmail.com] 
Sent: Saturday, 14 March 2009 3:57 AM
To: jmeter-user@jakarta.apache.org
Subject: Ajax Push Testing

Hello there,

First of all, congratulations to the creators of this nice tool.
Outstanding!

Using JMeter, I'm testing a web server that uses Ajax Push, and this
is proving to be kind of tricky to do with JMeter.

Let me set up an example: a server that eats fruits. You send a
"regular" HTTP request and you request it to eat a fruit, using a
serialized JSON request object representing the parameters of the
fruit. As the server eats the requests, he will use Ajax Push to send
the results through a unique channel for the client.

Of course this is a silly example that can be implemented using
numerous trivial methods, but my intent is to demonstrate my case with
a simple analogy.

So let's look at a normal day's life of our beloved server:

1) Server: Ready for some juicy action...

2) Client -> Server:  HTTP Request: POST
/create/persistent/channel/and/keep/this/thing/open/will/ya
    (the server keeps the connection open and will send some stuff
here once the fruit requests come... basic Comet stuff)

3) Client -> Server: HTTP Request: GET
/actions/eat/some?request={json_stuff_here_about_the_fruit_to_eat}
    Server Response: OK Dude, I'll eat that and tell you when I'm done.
    This connection is then closed.

4) Server -> Client:
<script>process({json_results_object_here});</script>
    The result is sent to the appropriate persistent connection.
    Since the server has devoured the fruit that was requested, he
sends a response to the persistent connection.
    Again, basic Comet stuff.


So from this typical Comet dialog we can see that it gets tricky to
test with conventional JMeter components.

So, after this lengthy introduction comes a simple question: Any
improvements/tests/successes with Ajax Push testing with JMeter?

If not, I'm willing to help you create the needed components for this
to happen. Of course, if nothing already is being made.

Thank you for your time,
Rodrigo Madera

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org


The information contained in this email and any attached files are strictly
private and confidential. This email should be read by the intended addressee
only.  If the recipient of this message is not the intended addressee, please
call Corporate Express Australia Limited on +61 2 9335 0555 or Corporate Express
New Zealand Limited on +64 9 279 2555 and promptly delete this email and any
attachments.  The intended recipient of this email may only use, reproduce,
disclose or distribute the information contained in this email and any attached
files with Corporate Express' permission. If you are not the intended addressee,
you are strictly prohibited from using, reproducing, disclosing or distributing
the information contained in this email and any attached files.  Corporate
Express advises that this email and any attached files should be scanned to
detect viruses. Corporate Express accepts no liability for loss or damage
(whether caused by negligence or not) resulting from the use of any attached
files.

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org