This topic contains 0 replies, has 1 voice, and was last updated by lev 7 years, 12 months ago.
Load Manager – Take 1 (more to come)
-
Load Manager tool
To reply questions like “Can my hardware handle 50 channels?” or “How many channels my hardware can take at most?, we have come up with initiative to create automatic (or semi automatic) tool.
To make resources validation task nice and easy, measurable and repeatable.In order to find the ’sweet spot’ for computing machine we need to load it with channels. And finding ‘sweet spot’ algorithm will be published only later on. Thus as first step a routine to load machine with various channels had been created. There are many ways to add channels programmatically. The method in here has been chosen to serve design needs of yet exposed parts pf code for ‘sweet spot’ search.
Entire initiative is work in progress, not complete and undergoing changes, same as any code in its Development phase.
However, the part of creating channels has been almost completed and can be used on its own to answer the above question “Can my hardware handle N channels?”
This first component of Load Manager tool, is offered below for trial spin by advanced and enthusiastic Iguana Users, willing to push the envelope and offer a feedback.
Following parts of this tool will be published as they become ready.
Before proceeding to installation, few words about asynchronous nature of HTTP calls execution. Given we send HTTP calls to iguanaServer.lua for execution, our code doesn’t wait for action requested in call to complete, but keep running forward as soon as HTTP call reply returns. Thus artificial delay had to be inserted to accommodate for this and allow correct update of application configuration. Channels built one by one in very slow pace. After they got built and it is time to apply actual load on channels, this delay has no meaning anymore. I agree, it is wrong way to compensate on asynchronous execution specifics. Another version, without this delay is almost completed, and will be available soon.
Installation instructions:
On Tester machine create 4 channels “From Translator to Channel”.
Remove test channels
Load Manager
HL7 Test data generator
X12 Test data generatorImport to each channel one Translator project, from attachments, respective to channel name as specified in zip file name.
_ .zip On Tested machine create two channels, and import respective projects. These projects have letter ‘R’ in their names.
HL7 Test data generator R
X12 Test data generator RPlease note that channel names need to be exactly as in names of zip files. Channel names cannot be changed.
Configure all channel Not to start automatically.
Configuration instructions (on Tester machine only.)
Configuration is done entirely in module LMConfig in Load Manager channel
No need to edit any other files, at all.— Test channels declaration. —
Declare which types of channels need to be created on TesteD machine. Also referred as ‘Remote’.
Matching Client/Server channels will be automatically created on TesteR machine. Also referred as ‘Local’.
Client/Server role of each machine is individual for every channel. It depends on choice of channels Components selected by User.
Specify first the Component you wish to test on TesteD machine. Only one component need to be specified. The ‘default’ configuration assumes and creates ‘From Channel’/’To Channel’ components to complete any of selected channels configuration.
No need to specify ‘From Channel’ or ’To Channel’ components. they will be added automatically to comlement selected for testing Component.
Matching channel on TesteR machine will be created automatically.
For example, to test sending HL7 messages out you would wish to test LLP Client type of channel.
If you specify ‘componentToTest’ to be iguanaServer.LLP_CLIENT (note that in configuration it will have no quotes around this value) then Load Manager will complete this channel by adding a From Queue Source component and will Not use Filter component. It will also create a matching channel From LLP Listener to Channel on Tester machine.
If you not happy with default channel Components choice and wish to have this channel to be say From Translator then declare ‘otherComponent = iguanaServer.FROM_TRANSLATOR’; and to use a specific Translator project with it, please declare otherComponentProject = ‘From_Translator.zip’ (or use any of your own zip files); and moreover, in order to use Filter component (with Filter’s own Translator project) declare ‘filterProject = ‘Filter.zip’.
If any of parameters:
componentToTest
componentToTestProject
filterProject
otherComponent
otherComponentProject
countOfChannels
testerProject
testDataGenerator…needs to be omitted because you don’t want to pass a value to it, then specify its value to be an empty string, e.g ” (two single quotes.)
If an empty string has been passed, then Load Manager will assume default behaviour.
If ‘filterProject’ script hasn’t been specified, then Filter component will not be used at all. FILTER is Optional on TESTED machine, not available at all on TESTER machine
If ‘otherComponent’ hasn’t been specified then channel will have To/From Channel component added, respectively to given channels Logic.
The ‘countOfChannels’ tells how many channels of this type you wish to have created.
The ‘testerProject’ is Translator project zip file to be used with matching channel on tester machine, e.g. to create X12 ACK with X12 Listener component, or a custom ACK with LLP Listener component (the last one, for HL7, is not implemented yet.)
The ‘testDataGenerator’ will allow to specify which Test Data Generator channel will be used with given channel (it is not implemented yet.)
Channel names for all of automatically created by Load Manager channels are mandatory and shall not be modified by a User. The only exception is ‘testDataGenerator’ channels name if User opt to use a custom channel. All of ‘testDataGenerator’ channels created by Load Manager shall not have their names modified.
Available values to use in channels declaration:
– iguanaServer.X12_LISTENER = “X12 Listener” –> it will create a ‘LLP Listener’ component for X12
– iguanaServer.X12_CLIENT = “X12 Client” –> it will create a ‘LLP Client’ component for X12
– iguanaServer.LLP_LISTENER –> “LLP Listener”
– iguanaServer.LLP_CLIENT –> “LLP Client”
– iguanaServer.FROM_HTTPS –> “From HTTPS”
– iguanaServer.TO_HTTPS –> “To HTTPS” – it will create and use a ‘To Translator’ Destination component
– iguanaServer.FROM_TRANSLATOR –> “From Translator”
– iguanaServer.TO_TRANSLATOR –> “To Translator”Example of some valid channel declarations:
LISTTOTEST ={
{
componentToTest = iguanaServer.FROM_HTTPS,
componentToTestProject = ‘From_HTTPS_Server_From_HTTPS.zip’,
filterProject = ‘Filter.zip’,
otherComponent = iguanaServer.TO_TRANSLATOR,
otherComponentProject = ‘To_Translator.zip’,
countOfChannels = 2,
testerProject = ‘From_HTTPS_Client_From_Translator.zip’,
testDataGenerator = ”
},
{
componentToTest = iguanaServer.TO_HTTPS,
componentToTestProject = ‘To_HTTPS_Client_To_Translator.zip’,
filterProject = ‘Filter.zip’,
otherComponent = iguanaServer.FROM_TRANSLATOR,
otherComponentProject = ‘From_Translator.zip’,
countOfChannels = 2,
testerProject = ‘From_HTTPS_Server_From_HTTPS.zip’,
testDataGenerator = ”
},
{
componentToTest = iguanaServer.FROM_HTTPS,
componentToTestProject = ‘From_HTTPS_Server_From_HTTPS.zip’,
filterProject = ‘Filter.zip’,
otherComponent = iguanaServer.TO_TRANSLATOR,
otherComponentProject = ‘To_Translator.zip’,
countOfChannels = 2,
testerProject = ‘From_HTTPS_Client_From_Translator.zip’,
testDataGenerator = ”
},
{
componentToTest = iguanaServer.TO_HTTPS,
componentToTestProject = ‘To_HTTPS_Client_To_Translator.zip’,
filterProject = ‘Filter.zip’,
otherComponent = iguanaServer.FROM_TRANSLATOR,
otherComponentProject = ‘From_Translator.zip’,
countOfChannels = 2,
testerProject = ‘From_HTTPS_Server_From_HTTPS.zip’,
testDataGenerator = ”
},{
componentToTest = iguanaServer.X12_LISTENER,
componentToTestProject = ‘x12_test_Listener_Acknowledgment.zip’,
filterProject = ‘Filter.zip’,
otherComponent = ”,
otherComponentProject = ”,
countOfChannels = 2,
testerProject = ”,
testDataGenerator = ”
},
{
componentToTest = iguanaServer.X12_CLIENT,
componentToTestProject = ‘Project.zip’,
filterProject = ‘Filter.zip’,
otherComponent = ”,
otherComponentProject = ”,
countOfChannels = 2,
testerProject = ‘x12_test_Listener_Acknowledgment.zip’,
testDataGenerator = ”
},{
componentToTest = iguanaServer.LLP_LISTENER,
componentToTestProject = ”, — ‘LLP custom ACK.zip’, –not implemented yet
filterProject = ‘Filter.zip’,
otherComponent = ”,
otherComponentProject = ”,
countOfChannels = 2,
testerProject = ‘Filter.zip’,
testDataGenerator = ”
},
{
componentToTest = iguanaServer.LLP_CLIENT,
componentToTestProject = ”,
filterProject = ‘Filter.zip’,
otherComponent = ”,
otherComponentProject = ”,
countOfChannels = 2,
testerProject = ”, — ‘LLP custom ACK.zip’, — will be used with LLP Listener on TESTING machine, not implemented yet
testDataGenerator = ”
},
{
componentToTest = iguanaServer.X12_LISTENER,
componentToTestProject = ‘x12_test_Listener_Acknowledgment.zip’,
filterProject = ‘Filter.zip’,
otherComponent = iguanaServer.TO_TRANSLATOR,
otherComponentProject = ‘To_Translator.zip’,
countOfChannels = 2,
testerProject = ”,
testDataGenerator = ”
},
{
componentToTest = iguanaServer.X12_CLIENT,
componentToTestProject = ‘Project.zip’,
filterProject = ‘Filter.zip’,
otherComponent = iguanaServer.FROM_TRANSLATOR,
otherComponentProject = ‘From_Translator.zip’,
countOfChannels = 2,
testerProject = ‘x12_test_Listener_Acknowledgment.zip’,
testDataGenerator = ”
},{
componentToTest = iguanaServer.LLP_LISTENER,
componentToTestProject = ”, — ‘LLP custom ACK.zip’, –not implemented yet
filterProject = ‘Filter.zip’,
otherComponent = iguanaServer.TO_TRANSLATOR,
otherComponentProject = ‘To_Translator.zip’,
countOfChannels = 2,
testerProject = ‘Filter.zip’,
testDataGenerator = ”
},
{
componentToTest = iguanaServer.LLP_CLIENT,
componentToTestProject = ”,
filterProject = ‘Filter.zip’,
otherComponent = iguanaServer.FROM_TRANSLATOR,
otherComponentProject = ‘From_Translator.zip’,
countOfChannels = 2,
testerProject = ”, — ‘LLP custom ACK.zip’, — will be used with LLP Listener on TESTING machine, not implemented yet
testDataGenerator = ”
}
}To create same type of tested channel with variety of translator projects, set VARIETY parameter to ‘true’; and add more channels of same type to LISTTOTEST.
For example:
LISTTOTEST ={
{
componentToTest = iguanaServer.LLP_LISTENER,
componentToTestProject = ”, — ‘LLP custom ACK.zip’, –not implemented yet
filterProject = ‘Filter1.zip’,
otherComponent = iguanaServer.TO_TRANSLATOR,
otherComponentProject = ‘To_Translator1.zip’,
countOfChannels = 1,
testerProject = ‘Filter.zip’,
testDataGenerator = ”
},
{
componentToTest = iguanaServer.LLP_LISTENER,
componentToTestProject = ”, — ‘LLP custom ACK.zip’, –not implemented yet
filterProject = ‘Filter2.zip’,
otherComponent = iguanaServer.TO_TRANSLATOR,
otherComponentProject = ‘To_Translator2.zip’,
countOfChannels = 2,
testerProject = ‘Filter.zip’,
testDataGenerator = ”
},
{
componentToTest = iguanaServer.LLP_LISTENER,
componentToTestProject = ”, — ‘LLP custom ACK.zip’, –not implemented yet
filterProject = ‘Filter1.zip’,
otherComponent = iguanaServer.TO_TRANSLATOR,
otherComponentProject = ‘To_Translator2.zip’,
countOfChannels = 1,
testerProject = ‘Filter.zip’,
testDataGenerator = ”
}
}Above example will create single channel using Filter1.zip and To_Translator1.zip projects;single channel using ‘Filter2.zip’ and ‘To_Translator2.zip’ projects;and single channel using ‘Filter1.zip’ and ‘To_Translator2.zip’ projects.
Given all of above project zip files located in Iguana home folder.Later on they will have option to be located in dedicated folder.
— Declare TesteR (AKA Local) and TesteD (AKA Remote) machines —–
— Configure URL/user/password/port for local monitoring instance of Iguana
— T(able)L(ocal)
TL = {
ip = ‘10.211.55.34’,
port = ‘5621’,
user=’admin’,
password=’password’,
HTTPport = ‘6546’}— Configure remote target Iguana, where you wish to add the test channels to.
— T(able)R(emote)
TR = {
ip = ‘10.211.55.23’,
port = ‘6543’,
user=’admin’,
password=’password’,
HTTPport = ‘6544’,
URLextension = ‘/lmagent’}Other configurable parameters explained in comments in module MLConfig. If in doubt about correct value, then try with default provided value.
— IMPORTANT NOTE about To/FromHTTP channels test data —
By default HTTP client channels (whether created on local or on remote machine) will start to generate test HTTP calls immediately as channels got created.
Test HTTP calls will be generated in indefinite loop.
The interval between messages can be configured by setting a different value to variable TOHTTPINTERVAL in Iguana Dashboard > Settings > Environment.
The change to TOHTTPINTERVAL need to be applied on machine generating test HTTP calls, or on both machines, if both do it.To see test HTTP calls in Iguana Logs, respective channels Logs Level need to be set to Debug: (1) Stop channel (2) Change Logs Level to Debug (3) Start channel.
— Test channels removal instructions
Run channel “Remove test channels” repeatedly, until all of of test channels got removed.
Attachments:
You must be logged in to view attached files.
You must be logged in to reply to this topic.