This commit was generated by cvs2svn to compensate for changes in r12269,
[u/mrichter/AliRoot.git] / SHUTTLE / test / TestMessage.C
1 void Compare(TList& a, TList& b) {
2
3         Assert(a.GetSize() == b.GetSize());
4
5         TIter iterA(&a);
6         TIter iterB(&b);
7         
8         AliDCSValue* valA;
9         AliDCSValue* valB;
10  
11         while ((valA = (AliDCSValue*) iterA.Next())) {
12                 valB = (AliDCSValue*) iterB.Next();
13                 
14                 cout<<valA->ToString()<<endl;
15                 cout<<valB->ToString()<<endl;
16
17                 Assert(valA->GetSimpleValue() == valB->GetSimpleValue());
18                 Assert(valA->GetTimeStamp() == valB->GetTimeStamp());
19         }
20         
21 }
22
23 void CompareStr(TList& a, TList& b) {
24
25         cout<<"A size: "<<a.GetSize()<<endl;
26         cout<<"B size: "<<b.GetSize()<<endl;
27
28         Assert(a.GetSize() == b.GetSize());
29
30         TIter iterA(&a);
31         TIter iterB(&b);
32
33         TObjString* valA;
34         TObjString* valB;
35
36         while ((valA = (TObjString*) iterA.Next())) {
37                 valB = (TObjString*) iterB.Next();
38          
39                 cout<<valA->String()<<endl;
40                 cout<<valB->String()<<endl;
41
42                 Assert(valA->String() == valB->String());
43         }
44 }
45
46 void PrintBuffer(const char* buffer, UInt_t size) {
47         
48         cout<<"BUFFER START"<<endl;
49
50         for (UInt_t k = 0; k < size; k ++) {
51                 cout<<" "<<(UInt_t) (UChar_t) buffer[k]<<" ";
52                 if (!(k + 1 % 50)) {
53                         cout<<endl;
54                 }
55         }
56         
57         cout<<endl<<"BUFFER END"<<endl;
58 }
59
60 void TestMessage() {
61
62         gSystem->Load("libSHUTTLE");
63
64         TTimeStamp currentTime;
65         TString requestString("value.int.something");
66
67         // Request Message
68         AliDCSMessage requestMsg;
69         requestMsg.CreateRequestMessage(AliDCSMessage::kAlias, 
70                 currentTime.GetSec(), currentTime.GetSec() + 10, 
71                 requestString.Data());
72         Assert(requestMsg.GetType() == AliDCSMessage::kRequest);
73         Assert(requestMsg.GetRequestType() == AliDCSMessage::kAlias);
74         Assert(requestMsg.GetStartTime() == currentTime.GetSec());
75         Assert(requestMsg.GetEndTime() == currentTime.GetSec() + 10);
76         Assert(requestMsg.GetRequestString() == requestString); 
77         requestMsg.StoreToBuffer();
78
79         AliDCSMessage newRequestMsg(requestMsg.GetMessage(),
80                 requestMsg.GetMessageSize());
81         newRequestMsg.LoadFromBuffer();
82
83         Assert(newRequestMsg.GetType() == AliDCSMessage::kRequest);
84         Assert(newRequestMsg.GetRequestType() == AliDCSMessage::kAlias);
85         Assert(newRequestMsg.GetStartTime() == currentTime.GetSec());
86         Assert(newRequestMsg.GetEndTime() == currentTime.GetSec() + 10);
87         Assert(newRequestMsg.GetRequestString() == requestString);
88
89
90         // Count Message
91         AliDCSMessage countMsg;
92         countMsg.CreateCountMessage(200);
93         
94         Assert(countMsg.GetType() == AliDCSMessage::kCount);
95         Assert(countMsg.GetCount() == 200);
96         countMsg.StoreToBuffer();
97
98         AliDCSMessage newCountMsg(countMsg.GetMessage(), 
99                 countMsg.GetMessageSize());
100         newCountMsg.LoadFromBuffer();
101
102         Assert(newCountMsg.GetType() == AliDCSMessage::kCount);
103         Assert(newCountMsg.GetCount() == 200);
104
105         // ResultSet Message
106
107         Int_t maxCount = 3;
108
109         // Bool
110         AliDCSMessage rsMsg;
111         rsMsg.CreateResultSetMessage(AliSimpleValue::kBool);
112
113         Assert(rsMsg.GetType() == AliDCSMessage::kResultSet);
114
115         TList values;
116         values.SetOwner(1);
117         values.Add(new AliDCSValue(kFALSE, currentTime.GetSec()));
118         values.Add(new AliDCSValue(kTRUE, currentTime.GetSec() + 1));
119         values.Add(new AliDCSValue(kFALSE, currentTime.GetSec()+ 200));
120
121         rsMsg.AddValue(*(AliDCSValue*) values.At(0));
122         rsMsg.AddValue(*(AliDCSValue*) values.At(1));
123         rsMsg.AddValue(*(AliDCSValue*) values.At(2));
124         rsMsg.StoreToBuffer();
125
126         PrintBuffer(rsMsg.GetMessage(), rsMsg.GetMessageSize());
127
128         AliDCSMessage nrsMsg(rsMsg.GetMessage(), rsMsg.GetMessageSize());
129         nrsMsg.LoadFromBuffer();
130
131         Assert(nrsMsg.GetType() == AliDCSMessage::kResultSet);
132         Assert(nrsMsg.GetSimpleValueType() == AliSimpleValue::kBool);
133
134         TList nvalues;
135         nvalues.SetOwner(1);
136         Assert(nrsMsg.GetValues(nvalues) == maxCount);
137
138         Compare(values, nvalues);
139
140         // Byte
141         AliDCSMessage rsMsg;
142         rsMsg.CreateResultSetMessage(AliSimpleValue::kByte);
143
144         Assert(rsMsg.GetType() == AliDCSMessage::kResultSet);
145
146         TList values;
147         values.SetOwner(1);
148         values.Add(new AliDCSValue((Char_t) 25, currentTime.GetSec()));
149         values.Add(new AliDCSValue((Char_t) 0, currentTime.GetSec() + 1));
150         values.Add(new AliDCSValue((Char_t) 255, currentTime.GetSec()+ 200));
151
152         rsMsg.AddValue(*(AliDCSValue*) values.At(0));
153         rsMsg.AddValue(*(AliDCSValue*) values.At(1));
154         rsMsg.AddValue(*(AliDCSValue*) values.At(2));
155         rsMsg.StoreToBuffer();
156
157         AliDCSMessage nrsMsg(rsMsg.GetMessage(), rsMsg.GetMessageSize());
158         nrsMsg.LoadFromBuffer();
159
160         Assert(nrsMsg.GetType() == AliDCSMessage::kResultSet);
161         Assert(nrsMsg.GetSimpleValueType() == AliSimpleValue::kByte);
162
163         TList nvalues;
164         nvalues.SetOwner(1);
165         Assert(nrsMsg.GetValues(nvalues) == maxCount);
166
167         Compare(values, nvalues);
168
169
170         // Int
171         AliDCSMessage rsMsg;
172         rsMsg.CreateResultSetMessage(AliSimpleValue::kInt);
173
174         Assert(rsMsg.GetType() == AliDCSMessage::kResultSet);
175
176         TList values;
177         values.SetOwner(1);
178         values.Add(new AliDCSValue(100, currentTime.GetSec()));
179         values.Add(new AliDCSValue(10, currentTime.GetSec() + 1));
180         values.Add(new AliDCSValue(666, currentTime.GetSec()+ 200));
181         
182         rsMsg.AddValue(*(AliDCSValue*) values.At(0));
183         rsMsg.AddValue(*(AliDCSValue*) values.At(1));
184         rsMsg.AddValue(*(AliDCSValue*) values.At(2));
185         rsMsg.StoreToBuffer();
186
187         AliDCSMessage nrsMsg(rsMsg.GetMessage(), rsMsg.GetMessageSize());
188         nrsMsg.LoadFromBuffer();
189
190         Assert(nrsMsg.GetType() == AliDCSMessage::kResultSet);
191         Assert(nrsMsg.GetSimpleValueType() == AliSimpleValue::kInt);
192
193         TList nvalues;
194         nvalues.SetOwner(1);
195         Assert(nrsMsg.GetValues(nvalues) == maxCount);
196
197         Compare(values, nvalues);
198         
199         // UInt
200         AliDCSMessage rsMsg;
201         rsMsg.CreateResultSetMessage(AliSimpleValue::kUInt);
202
203         Assert(rsMsg.GetType() == AliDCSMessage::kResultSet);
204
205         TList values;
206         values.SetOwner(1);
207         values.Add(new AliDCSValue((UInt_t) 1000, currentTime.GetSec()));
208         values.Add(new AliDCSValue((UInt_t) 104, currentTime.GetSec() + 1));
209         values.Add(new AliDCSValue((UInt_t) 6665, currentTime.GetSec()+ 200));
210
211         rsMsg.AddValue(*(AliDCSValue*) values.At(0));
212         rsMsg.AddValue(*(AliDCSValue*) values.At(1));
213         rsMsg.AddValue(*(AliDCSValue*) values.At(2));
214         rsMsg.StoreToBuffer();
215
216         AliDCSMessage nrsMsg(rsMsg.GetMessage(), rsMsg.GetMessageSize());
217         nrsMsg.LoadFromBuffer();
218
219         Assert(nrsMsg.GetType() == AliDCSMessage::kResultSet);
220         Assert(nrsMsg.GetSimpleValueType() == AliSimpleValue::kUInt);
221
222         TList nvalues;
223         nvalues.SetOwner(1);
224         Assert(nrsMsg.GetValues(nvalues) == maxCount);
225
226         Compare(values, nvalues); 
227
228         // Float
229         AliDCSMessage rsMsg;
230         rsMsg.CreateResultSetMessage(AliSimpleValue::kFloat);
231
232         Assert(rsMsg.GetType() == AliDCSMessage::kResultSet);
233
234         TList values;
235         values.SetOwner(1);
236         values.Add(new AliDCSValue((Float_t) 1000.55, currentTime.GetSec()));
237         values.Add(new AliDCSValue((Float_t) 10.4, currentTime.GetSec() + 1));
238         values.Add(new AliDCSValue((Float_t) 6665.1, currentTime.GetSec()+ 200));
239
240         rsMsg.AddValue(*(AliDCSValue*) values.At(0));
241         rsMsg.AddValue(*(AliDCSValue*) values.At(1));
242         rsMsg.AddValue(*(AliDCSValue*) values.At(2));
243         rsMsg.StoreToBuffer();
244
245         AliDCSMessage nrsMsg(rsMsg.GetMessage(), rsMsg.GetMessageSize());
246         nrsMsg.LoadFromBuffer();
247
248         Assert(nrsMsg.GetType() == AliDCSMessage::kResultSet);
249         Assert(nrsMsg.GetSimpleValueType() == AliSimpleValue::kFloat);
250
251         TList nvalues;
252         nvalues.SetOwner(1);
253         Assert(nrsMsg.GetValues(nvalues) == maxCount);
254
255         Compare(values, nvalues);
256
257         
258         // Error Message
259         TString errorString("This is an error string");
260
261         AliDCSMessage errorMsg;
262         errorMsg.CreateErrorMessage(AliDCSMessage::kUnknownAliasDPName, 
263                         errorString);           
264         Assert(errorMsg.GetType() == AliDCSMessage::kError);
265         Assert(errorMsg.GetErrorCode() == AliDCSMessage::kUnknownAliasDPName);
266         Assert(errorMsg.GetErrorString() == errorString); 
267         errorMsg.StoreToBuffer();
268
269         AliDCSMessage newErrorMsg(errorMsg.GetMessage(),
270                 errorMsg.GetMessageSize());
271         newErrorMsg.LoadFromBuffer();
272
273         Assert(newErrorMsg.GetType() == AliDCSMessage::kError);
274         Assert(newErrorMsg.GetErrorCode() 
275                 == AliDCSMessage::kUnknownAliasDPName);
276         Assert(newErrorMsg.GetErrorString() == errorString); 
277
278         // MultiRequest Message
279         TList requests;
280         requests.SetOwner(1);
281         requests.Add(new TObjString("alias1.test"));
282         requests.Add(new TObjString("alias2.test"));
283         requests.Add(new TObjString("alias3.test"));
284
285         AliDCSMessage multiMsg;
286         multiMsg.CreateMultiRequestMessage(AliDCSMessage::kAlias, 
287                         currentTime.GetSec(),
288                         currentTime.GetSec() + 10);
289         multiMsg.AddRequestString("alias1.test");       
290         multiMsg.AddRequestString("alias2.test");       
291         multiMsg.AddRequestString("alias3.test");       
292         
293         Assert(multiMsg.GetType() == AliDCSMessage::kMultiRequest);
294         Assert(multiMsg.GetRequestType() == AliDCSMessage::kAlias);
295         Assert(multiMsg.GetStartTime() == currentTime.GetSec());
296         Assert(multiMsg.GetEndTime() == currentTime.GetSec() + 10);
297         multiMsg.StoreToBuffer();       
298
299         PrintBuffer(multiMsg.GetMessage(), multiMsg.GetMessageSize());
300         
301         AliDCSMessage nmultiMsg(multiMsg.GetMessage(), 
302                 multiMsg.GetMessageSize());
303         nmultiMsg.LoadFromBuffer();
304         
305         Assert(nmultiMsg.GetType() == AliDCSMessage::kMultiRequest);
306         Assert(nmultiMsg.GetRequestType() == AliDCSMessage::kAlias);
307         Assert(nmultiMsg.GetStartTime() == currentTime.GetSec());
308         Assert(nmultiMsg.GetEndTime() == currentTime.GetSec() + 10); 
309
310         PrintBuffer(nmultiMsg.GetMessage(), nmultiMsg.GetMessageSize());
311         
312         TList nrequests;
313         nrequests.SetOwner(1);
314         nmultiMsg.GetRequestStrings(nrequests);
315         
316         CompareStr(requests, nrequests);
317 }
318