Citrix ICA Protocol
I
am going to highlight some tips that can be helpful to performance test
engineers to effectively work on Citrix applications. By understanding
and implementing these points, script debug and test execution will be a lot
easier.
Citrix
products deliver applications across networks. Applications reside on the
Citrix server; access to those applications is delivered to remote machines
(the Citrix clients) via Citrix's ICA protocol. ICA supports a full GUI
interface of the server application on the client side.
Citrix
Server: Citrix Server works as a remote connection by users and allows multiple
users that allow multiple applications at the same time.
Citrix
provides server and desktop virtualization, networking,Software-as-a-services
(SaaS) and cloud computing technologies, including Xen open source products
VuGen
records GUI activity on the Citrix client and replays it to the Citrix server.
Currently, events are recorded in analog mode. That is,
objects are identified by their coordinate position, and not by a
context-sensitive name (e.g."OK_BUTTON"). For example, the parameters
of the
ctrx_mouse_click
function,
x_pos and
y_pos, specify the pixel coordinates of
the mouse click, found, say, within a window dialog's "OK" button.
Load
Runner does neatly attempt to get around some of these issues by giving the
load tester the ability to install agent processes on each of the Citrix
instances (Citrix virtual desktop agent). This gives visibility to sync
on items such as text and object information such as focus, visible, checked
and enabled. This will add 2MB per Citrix client, which is worth paying for
the extended object and sync visibility.
Citrix
is an environment, where u can published u r application in Citrix environment
to access through globally for secure purpose.
If
the application is deployed in Citrix then we have to use “Citrix ICA “protocol.
Before accessing the application we have to connect the Citrix through URL.
Step1:- Access the Citrix environment through URL
Step2:- provide credentials and select your
application in Citrix
Step3:- perform the business scenario against the
application and logoff from
the server
We have to use web http/html as well as Citrix
protocol for completing the above scenario. Why we have to go for web http/html
means to launch the Citrix, we have to use web browser so we can go for web http/html.
Further process we can use Citrix protocol.
***Number of vusers per Load Generator Machine:
A
Load Generator machine can run only a limited number of Citrix Vusers at the
same time. This is due to the graphic limitations of that machine. This limits
the performance load that be applied to the application. To solve this problem
and increase the number of vusers per machine -
1.
Open a terminal server session on that machine.
2.
Call this terminal server session as a new Virtual-user injector machine.
3.
Connect to this new virtual injector machine from controller. To connect, use
respective machine names e.g. Machine_001, Machine_002, etc (Or) respective IP
Addresses.
4.
Use these additional machines as Load Generators.
***Pre Requisites
to use Citrix protocol:
1. Install
ICA agent in Vugen & LG machines
2.
A Citrix VUser’s memory footprint is two to
three times a Web VUser’s memory footprint.
3.
Citrix transactions, Citrix windows and bitmap
functions in Load Runner take time to stabilize and hence we must not ignore
think time when replaying the script.
4. Use the keyboard as often as possible, avoid
using mouse clicks.
The API is divided into the various types of
client activity:
***Functions in Citrix Protocol
1. ctrx_nfuse_connect();
2.
ctrx_sync_on_window ();
3.
ctrx_sync_on_bitmap
4.
ctrx_sync_on_bitmap_change.
5.
ctrx_sync_on_bitmap_change
6. ctrx_mouse_click
();
7.
ctrx_type ();
8.
ctrx_key();
9.
ctrx_get_window_name
***Most commonly used citrx functions are
1. Ctrx_nfuse_connect ();
2. Ctrx_sync_on_window ();
3. Ctrx_mouse_click ();
4. Ctrx_type ()
5. Ctrx_key ()
6. Ctrx_get_window_name ();
7. Ctrx_sync_on_bitmap ();
8. Ctrx_get_text_location ()
9. Ctrx_get_text ();
***Lost in Citrix Error:
Citrix error where expected windows are not
appearing where they are supposed to or they are not the right ones.
1. Ctrx_get_window_name
2. Ctrx_get_window_position
--->Solution
•At
the top of the script initialize the variables
Char window_name[100]; long xpos,ypos,
width,height;
ctrx_get_window_name(window_name);
ctrx_get_window_position(window_name, &xpos, &ypos, &width,
&height);
lr_output_message("Window = %s. x=
%ld, y= %ld, width= %ld,
height = %ld", window_name, xpos, ypos,
width, height);
***Error handling functions and
challenges are:
1.
Ctrx_get_text(); Retrieves a text in
a rectangle
2. Synchronization issues
a.
synchronization with bit map
b.
text verification and capture
dynamic value from on screen
I. Ctrx_get_text: capture the on screen text & handle
the text verification point
II. Ctrx_get_bitmap_value : return a value of a bit map as a
string
***JAIN...!!!