You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by Emilian Bold <em...@gmail.com> on 2017/08/30 08:44:17 UTC

Is there a high level explanation of the JMeter remote execute architecture?

Hello,

I am looking at two aspects in the JMeter codebase: RMI and serialization.

I don't believe I've ran into a document explaining the architecture
here, only documents explaining how to configure JMeter as an user.

So, about RMI, the way I see it you have two "channels":

* a control channel where the master starts/stops/provisions the slaves and
* a results channel where result data is streamed back (which is also
the most bandwidth intensive)

Is this correct? What other communications happen between the master and slave?

Regarding serialization: why is so much serialized?

I saw this line in RemoteStart

> testTree.add(testTree.getArray()[0], gui.getMainFrame());

and it makes no sense to me to serialize the main frame itself. Maybe
this is just done because MainFrame implements TestStateListener so
you actually just want to provide a TestStateListener?

I understand why you would send the model but why the whole GUI?

I feel there is some historic and architectural info I am missing
here. Where is the API boundary between the GUI, the model and the
engine?

--emi

Re: Is there a high level explanation of the JMeter remote execute architecture?

Posted by Emilian Bold <em...@gmail.com>.
> Yes, but the main issue is not serialization from client to server on test start, but the reverse side

Still, why is the MainFrame added to the test tree? All I could think
of is you need the TestStateListener which the MainFrame implements.

Do you need any Swing components on the slave side?

> But I think there should be better protocols than RMI now

Ideally something that needs a single standard port open (443 / HTTPS)
on the slave.

What kind of effort would such a migration imply?

--emi


On Wed, Aug 30, 2017 at 11:51 AM, Philippe Mouawad
<ph...@gmail.com> wrote:
> Hi Emilian,
> My answers inline.
>
> Regards
>
> On Wednesday, August 30, 2017, Emilian Bold <em...@gmail.com> wrote:
>
>> Hello,
>>
>> I am looking at two aspects in the JMeter codebase: RMI and serialization.
>>
>> I don't believe I've ran into a document explaining the architecture
>> here, only documents explaining how to configure JMeter as an user.
>>
>> So, about RMI, the way I see it you have two "channels":
>>
>> * a control channel where the master starts/stops/provisions the slaves and
>> * a results channel where result data is streamed back (which is also
>> the most bandwidth intensive)
>
>
> Correct understanding
>
>>
>> Is this correct? What other communications happen between the master and
>> slave?
>
>
> None I think about
>
>>
>> Regarding serialization: why is so much serialized?
>>
>> I saw this line in RemoteStart
>>
>> > testTree.add(testTree.getArray()[0], gui.getMainFrame());
>>
>> and it makes no sense to me to serialize the main frame itself. Maybe
>> this is just done because MainFrame implements TestStateListener so
>> you actually just want to provide a TestStateListener?
>
>
> Yes, but the main issue is not serialization from client to server on test
> start, but the reverse side
>
>>
>> I understand why you would send the model but why the whole GUI?
>
>
> Historical
>
>>
>> I feel there is some historic and architectural info I am missing
>> here. Where is the API boundary between the GUI, the model and the
>> engine?
>
>
> Should be created.
> But I think there should be better protocols than RMI now
>
>>
>> --emi
>>
>
>
> --
> Cordialement.
> Philippe Mouawad.

Re: Is there a high level explanation of the JMeter remote execute architecture?

Posted by Philippe Mouawad <ph...@gmail.com>.
Hi Emilian,
My answers inline.

Regards

On Wednesday, August 30, 2017, Emilian Bold <em...@gmail.com> wrote:

> Hello,
>
> I am looking at two aspects in the JMeter codebase: RMI and serialization.
>
> I don't believe I've ran into a document explaining the architecture
> here, only documents explaining how to configure JMeter as an user.
>
> So, about RMI, the way I see it you have two "channels":
>
> * a control channel where the master starts/stops/provisions the slaves and
> * a results channel where result data is streamed back (which is also
> the most bandwidth intensive)


Correct understanding

>
> Is this correct? What other communications happen between the master and
> slave?


None I think about

>
> Regarding serialization: why is so much serialized?
>
> I saw this line in RemoteStart
>
> > testTree.add(testTree.getArray()[0], gui.getMainFrame());
>
> and it makes no sense to me to serialize the main frame itself. Maybe
> this is just done because MainFrame implements TestStateListener so
> you actually just want to provide a TestStateListener?


Yes, but the main issue is not serialization from client to server on test
start, but the reverse side

>
> I understand why you would send the model but why the whole GUI?


Historical

>
> I feel there is some historic and architectural info I am missing
> here. Where is the API boundary between the GUI, the model and the
> engine?


Should be created.
But I think there should be better protocols than RMI now

>
> --emi
>


-- 
Cordialement.
Philippe Mouawad.