| PGL: Overview |
|---|
| Web Polygraph |
PGL is a high level language that is used to describe Polygraph workloads. PGL is somewhat similar to many modern programming languages but is much ``simpler''. On the other hand, PGL is more rich and complex than a typical proxy configuration language. Our major objective in designing PGL was to have a language that allows to specify complex workloads in a ``natural'' way.
Main PGL features are:
Polyclt and polysrv interpret a configuration file written in PGL, create and configure the corresponding objects, and start the simulation. The configuration file is specified using --config and --cfg_dirs options.
In general, a workload is specified using these steps:
Define objects of interest, including Polygraph Robots and Servers. Set specific properties of each object.
Specify relationships between the objects. For example, instruct Robot R1 to use origin Servers S1 and S2.
Place Robots and Servers on specific hosts. In other words, specify which machine/address each Robot or Server is going to run on.
Decide which objects will be actually used for the simulation. Other objects will be simply ignored. Explicit use specification allows you to build a collection of useful objects and then just use an appropriate subset for a particular experiment.
If you want to check your configuration file or see how Polygraph interpreted your code, try pgl_test program in src/pgl directory. You will need to make tests in that directory first.
If needed, the steps may be reordered as long as all objects are defined when they are used.
Finally, here are a few facts that you should keep in mind when writing configuration files:
PGL is case sensitive.
There are no pointers, references, or ``pass by name'' parameters. A fresh copy of an object is created every time an object is passed to a function.
Polygraph interprets PGL; there is no compilation step.
It is desirable and usually possible to feed the same configuration file to all clients and servers.
Current implementation is not foolproof. If you are too smart or careless, Polygraph will not catch your configuration errors. Fortunately, in most cases you will get an assertion before the actual experiment begins.
$Id: overview.html,v 1.3 1999/08/24 20:24:16 rousskov Exp $