modified command line args to psuedoparadyn
[dyninst.git] / visi / test / README
1 /* $Log: README,v $
2 /* Revision 1.3  1994/03/26 04:36:59  newhall
3 /* change all floats to double
4 /* */
5 directions to incorporate a visualization  (an example is in xtext.C)
6 -----------------------------------------
7 in main():
8 ---------
9 (1) call visiInit()
10
11 (2) register callback routines associated with certain Paradyn events
12     by calling RegistrationCallback():  these are routines written by the
13     visualization writer to be called by the visi_callback routine when 
14     the specified event occurs.  
15     the event types (type msgTag) are defined in ../src/error.h
16     
17     Callback routines should take one integer parameter.  This parameter
18     is only used for the DATAVALUES event, where it is the bucket number
19     of the next full set of data across all the valid metrics/resources
20     of the datagrid.    
21
22     Most of the work involved in integrating the visualization has to 
23     do with writing these callback routines.  In most cases this will
24     involve changing a callback routine in the X application that initially
25     read data from a file descriptor, to get data from the interface's
26     data structures:  in most cases this involves invoking dataGrid method
27     functions.  An example of a change to an existing call back routine
28     is the function "fd_input" in xtext.C.  
29
30     dataGrid method functions are defined in ~paradyn/core/visi/src/datagrid.h
31     visualization interface routines and global variables are in 
32       ~paradyn/core/visi/src/visualization.[Ch]
33
34 (3) optional: call StartVisi(argc,argv) with the args to main():  each 
35     visualization is started with two command line arguments--a metric 
36     list and a resource list.  For visualizations that do not invoke
37     the upcalls provided by the visi interface this is the only opportunity 
38     to start data collection.
39
40   Steps 3a and 3b: for handling upcalls to Paradyn side:
41   ------------------------------------------------------
42 (3a) create a widget associated with the upcall
43 (3b) use XtAddCallback to register your handler routine for events assoc.
44      with this widget
45
46 (4) register the paradyn file descriptor (returned by VisiInit) and 
47     the paradyn callback routine "visi_callback" with the appropriate
48     add application routine.  (ie. for Xt use XtAddApp)
49
50 (5) call Xt main loop
51
52
53 getting values out of the datagrid
54 ----------------------------------
55 information about metrics, resources, and data values can be obtained
56 by calling the visi_DataGrid method functions in ~paradyn/visi/h/datagrid.h
57
58 data values can be retrieved in one of two ways:
59  1) datagrid[metricNum][resourceNum][bucketNum] returns a single bucket value
60  2) datagrid[metricNum][resourceNum].Value() returns a ptr to an array of
61     bucket values
62
63
64 interface test programs
65 -----------------------
66
67 client2
68 -------
69     client2: is a pseudo visi-thread program
70     client2 is an interactive test which generates its own input values:
71       data values are generated a bucket at a time across all 
72       metrics/resources: this means that the DATAVALUES callback routine
73       will be called for each set of data values sent to the server 
74
75     to run client2 (with default parameters or with user supplied params):  
76     ---------------
77        client2 server_executable  
78        client2 server_executable numMetrics numResources numBuckets bucketWidth
79
80 client1
81 -------
82     client1: is a pseudo visi-thread program
83     client1 is an interactive test that requires user to add input values 
84     sample input for each option is in file "sample.input.client"
85     (entering the datavalues input choices in the same order that they
86     appear in the input file will test the triggering of the DATAVALUES
87     callback routine)
88
89     it has one command line argument which is a visualization to fork 
90     the client forks a server process  
91
92     to run client1 with xtext2:   client1 xtext2
93     to run client1 with xtext:    client1 xtext
94     to run client1 with server1:  client1 server1 m r
95
96     server and client both print output to stderr 
97     server's output is prefaced by @@@@
98     upcall output from server to client is preface by ##
99
100     a typical session starts with choosing "add m/r" option, followed
101     by the "data values" option to add send some initial data values
102
103     at this point the upcalls are not completely implemented--the call
104     is made, and a msg that it is made is printed to stderr, but no
105     action is invoked on the client side
106
107     also, options 4, 5 are not fully implemented and option 3 is only 
108     implemented for the initial metric and resource case--adding additional
109     metrics and resources to an existing data grid is not supported
110
111     option 6 is only useful for the server1 test program as a way to get
112     the server process to print datagrid values to stderr (for test programs
113     xtext and xtext2 datagrid values are printed to window as a result
114     of choosing fold and data values options)
115
116 xtext
117 -----
118     xtext includes examples of adding  callbacks to the Paradyn handler for
119     certain Paradyn events (DATAVALUES,FOLD,ADDMETRICSRESROURCES).  Also,
120     it includes an example of adding an upcall to Paradyn by creating a widget
121     which will invoke an upcall to Paradyn (ex. GetMetricsResources) 
122
123     code that was added to the original xtext application to add it to Paradyn
124     is surrounded by "///////////////////////////////" in xtext.C
125
126 xtext2
127 ------
128     is an extention to xtext that includes callbacks for all Paradyn events
129     and upcalls.
130
131 server1
132 -------
133     is a psuedo x application the tests all calls and upcalls in the 
134     visualization--Paradyn interface