modified command line args to psuedoparadyn
[dyninst.git] / visi / test / client1.C
1 /* $Log: client1.C,v $
2 /* Revision 1.7  1995/06/02 21:02:11  newhall
3 /* changed type of metric and focus handles to u_int
4 /*
5  * Revision 1.6  1994/06/08  17:34:31  newhall
6  * *** empty log message ***
7  *
8  * Revision 1.5  1994/04/13  21:21:40  newhall
9  * *** empty log message ***
10  *
11  * Revision 1.4  1994/03/26  04:37:01  newhall
12  * change all floats to double
13  * */
14 #include <stdio.h>
15 #include <stdlib.h>
16 #include "visi.xdr.CLNT.h"
17
18 #define TESTMETRIC      "blah,blah blah,metric 3,metric 4,last metric"
19 #define TESTRESOURCE    "resource1/blah1/foo1,resource2/foo2,resource3"
20
21
22 main(int argc,char *argv[]){
23
24 int i=0;
25 int fd,pid;
26 visualizationUser *vup;
27 char **arg_list;
28 char temp[128], temp2[128];
29 int wch;
30
31 int done;
32 metricType *metrics;
33 metricType_Array mets;
34 resourceType *resources;
35 resourceType_Array res;
36 dataValue   *data;
37 dataValue_Array blah;
38 int mId,rId,bNum,nval;
39 double num,num2;
40 int nMets,nRes;
41 double bWidth;
42
43
44   if(argc < 2){
45     fprintf(stdout,"incorrect num arguments: client1 server_executable\n");
46     exit(-1);
47   }
48   fprintf(stderr,"in client\n");
49   arg_list = new char*[argc+1];
50   arg_list[i++] = strdup(argv[1]);
51   if(argc > 2){ 
52     sprintf(temp,"%s",TESTMETRIC);
53     arg_list[i++] = strdup(temp);
54     sprintf(temp,"%s",TESTRESOURCE);
55     arg_list[i++] = strdup(temp);
56   }
57   arg_list[i++] = 0;
58
59
60   fprintf(stderr,"in client before RPCprocessCreate\n");
61   fd = RPCprocessCreate(&pid, "localhost", "", argv[1],arg_list);
62   if (fd < 0) {
63     perror("process Create");
64     exit(-1);
65   }
66
67   
68   fprintf(stderr,"in client before new visualizationUser\n");
69   vup = new visualizationUser(fd,NULL,NULL);
70
71   done = 0;
72   while(!done){
73
74       // check for upcall
75       // these don't do anything yet 
76       if(RPC_readReady(fd))
77         vup->awaitResponce(-1);
78
79       wch = -1;
80       while((wch < 0) || (wch > 7)){
81         fprintf(stdout,"\n---------------------------------------------\n");
82         fprintf(stdout,"enter number of operation to perform:\n");
83         fprintf(stdout,"---------------------------------------------\n");
84         fprintf(stdout,"0:data values  1:fold    2:invalid m/r  3:add m/r\n");
85         fprintf(stdout,"4:new m/r      5:phase       6:print    7:quit\n");
86         fprintf(stdout,"---------------------------------------------\n\n");
87         scanf("%d",&wch);
88       }
89       switch(wch){
90         case 0:
91             fprintf(stdout,"\nSend Data values to server process:\n");   
92             fprintf(stdout,"enter number of dataValues\n");
93             scanf("%d",&nval);
94             data = (dataValue *)malloc(sizeof(dataValue)*nval);
95             for(i=0;i<nval;i++){
96               fprintf(stdout,"enter metricId (int)\n");   
97               scanf("%d",&data[i].metricId);
98               fprintf(stdout,"enter resourceId (int)\n");   
99               scanf("%d",&data[i].resourceId);
100               fprintf(stdout,"enter bucketNum (int)\n");   
101               scanf("%d",&data[i].bucketNum);
102               fprintf(stdout,"enter data value (double)\n");   
103               scanf("%lf",&num);
104               data[i].data = num;
105             }
106
107             blah.data = data;
108             blah.count = nval;
109             vup->Data(blah);
110             free(data);
111             break;
112         case 1:
113             fprintf(stdout,"\nFold:\n");   
114             fprintf(stdout,"enter new bucket width value (double)\n");
115             scanf("%lf",&num);
116             vup->Fold(num);
117             break;
118         case 2:
119             fprintf(stdout,"\nInvalidate Metric and Resources:\n");   
120             fprintf(stdout,"enter metricId (int)\n");   
121             scanf("%d",&mId);
122             fprintf(stdout,"enter resourceId (int)\n");   
123             scanf("%d",&rId);
124             vup->InvalidMR(mId,rId);
125             break;
126         case 3:
127             fprintf(stdout,"\nAdd Metrics and Resorces:\n");   
128             fprintf(stdout,"enter number of metrics (int)\n");
129             scanf("%d",&nMets);
130             metrics = (metricType *)malloc(sizeof(metricType)*nMets);
131             for(i=0;i<nMets;i++){
132              fprintf(stdout,"enter metric name (string), Id (int), units (string), and aggregate(0 or 1)\n");
133              scanf("%s%d%s%d",temp,&metrics[i].Id,temp2,&metrics[i].aggregate);
134              metrics[i].name = strdup(temp);
135              metrics[i].units = strdup(temp2);
136             }
137             mets.count = nMets;
138             mets.data = metrics;
139             fprintf(stdout,"enter number of resources  (int)\n");
140             scanf("%d",&nRes);
141             resources = (resourceType *)malloc(sizeof(resourceType)*nRes);
142             for(i=0;i<nRes;i++){
143              fprintf(stdout,"enter resources name (string), Id (int)\n");
144              scanf("%s%d",temp,&resources[i].Id);
145              resources[i].name = strdup(temp);
146             }
147             res.count = nRes;
148             res.data = resources;
149             fprintf(stdout,"enter numBuckets (int)\n");
150             scanf("%d",&bNum);
151             fprintf(stdout,"enter bucket width (double)\n");
152             scanf("%lf",&bWidth);
153             vup->AddMetricsResources(mets,res,bWidth,bNum);
154             for(i=0;i<nMets;i++){
155               free(metrics[i].name);
156               free(metrics[i].units);
157             }
158             for(i=0;i<nRes;i++){
159               free(resources[i].name);
160             }
161             free(metrics);
162             free(resources);
163             break;
164         case 4:
165             fprintf(stdout,"\nNew Metrics and Resorces: not currently supported\n");   
166             fprintf(stdout,"enter number of metrics (int)\n");
167             scanf("%d",&nMets);
168             metrics = (metricType *)malloc(sizeof(metricType)*nMets);
169             for(i=0;i<nMets;i++){
170              fprintf(stdout,"enter metric name(string), Id (int), units(string), and aggregate (int 0 or 1)\n");
171              scanf("%s%d%s%d",temp,&metrics[i].Id,temp2,&metrics[i].aggregate);
172              metrics[i].name = strdup(temp);
173              metrics[i].units = strdup(temp2);
174             }
175             mets.count = nMets;
176             mets.data = metrics;
177             fprintf(stdout,"enter number of resources (int)\n");
178             scanf("%d",&nRes);
179             resources = (resourceType *)malloc(sizeof(resourceType)*nRes);
180             for(i=0;i<nRes;i++){
181              fprintf(stdout,"enter resources name (string), Id (int)\n");
182              scanf("%s%d",temp,&resources[i].Id);
183              resources[i].name = strdup(temp);
184             }
185             res.count = nRes;
186             res.data = resources;
187             vup->NewMetricsResources(mets,res);
188             for(i=0;i<nMets;i++){
189               free(metrics[i].name);
190               free(metrics[i].units);
191             }
192             for(i=0;i<nRes;i++){
193               free(resources[i].name);
194             }
195             free(metrics);
196             free(resources);
197             break;
198         case 5:
199             fprintf(stdout,"\nPhase:\n");   
200             fprintf(stdout,"enter phase name(string), begin(double), end(doulbe)\n"); 
201             scanf("%s%lf%lf",temp,&num,&num2);
202             vup->Phase(num,num2,temp);
203             break;
204         case 6:
205             vup->Phase(3.4,4.5,"blah");
206             break;
207         case 7:
208             done = 1;
209             break;
210       }
211
212   }
213   for(i=0;i<argc;i++)
214     free(arg_list[i]);
215   delete [] arg_list;
216   delete(vup);
217
218 }