1#!/usr/bin/perl
2
3use strict;
4use warnings;
5use lib 't/lib';
6
7use Test::Deep;
8use Test::Exception;
9use Test::More;
10use Test::NoWarnings;
11
12use FusionInventory::Test::Inventory;
13use FusionInventory::Agent::Task::Inventory::Virtualization::Xen;
14use FusionInventory::Agent::Tools::Virtualization;
15
16my %tests_xm_list = (
17    xm_list => [
18        {
19            NAME      => 'Fedora3',
20            SUBSYSTEM => 'xm',
21            STATUS    => STATUS_RUNNING,
22            VMTYPE    => 'xen',
23            MEMORY    => '128',
24            VCPU      => '1'
25        },
26        {
27            NAME      => 'Fedora4',
28            SUBSYSTEM => 'xm',
29            STATUS    => STATUS_OFF,
30            VMTYPE    => 'xen',
31            MEMORY    => '128',
32            VCPU      => '1'
33        },
34        {
35            NAME      => 'Mandrake2006',
36            SUBSYSTEM => 'xm',
37            STATUS    => STATUS_BLOCKED,
38            VMTYPE    => 'xen',
39            MEMORY    => '128',
40            VCPU      => '1'
41        },
42        {
43            NAME      => 'Mandrake10.2',
44            SUBSYSTEM => 'xm',
45            STATUS    => STATUS_OFF,
46            VMTYPE    => 'xen',
47            MEMORY    => '128',
48            VCPU      => '1'
49        },
50        {
51            NAME      => 'Suse9.2',
52            SUBSYSTEM => 'xm',
53            STATUS    => STATUS_OFF,
54            VMTYPE    => 'xen',
55            MEMORY    => '100',
56            VCPU      => '1'
57        }
58    ],
59    xm_list2 => [
60        {
61            NAME      => 'lvm0001',
62            SUBSYSTEM => 'xm',
63            STATUS    => STATUS_OFF,
64            VMTYPE    => 'xen',
65            MEMORY    => '4096',
66            VCPU      => '1'
67        },
68        {
69            NAME      => 'lvm0002',
70            SUBSYSTEM => 'xm',
71            STATUS    => STATUS_OFF,
72            VMTYPE    => 'xen',
73            MEMORY    => '16384',
74            VCPU      => '8'
75        },
76        {
77            NAME      => 'lvm0003',
78            SUBSYSTEM => 'xm',
79            STATUS    => STATUS_OFF,
80            VMTYPE    => 'xen',
81            MEMORY    => '16384',
82            VCPU      => '8'
83        },
84        {
85            NAME      => 'lvm0004',
86            SUBSYSTEM => 'xm',
87            STATUS    => STATUS_OFF,
88            VMTYPE    => 'xen',
89            MEMORY    => '16384',
90            VCPU      => '8'
91        },
92        {
93            NAME      => 'lvm0005',
94            SUBSYSTEM => 'xm',
95            STATUS    => STATUS_BLOCKED,
96            VMTYPE    => 'xen',
97            MEMORY    => '16384',
98            VCPU      => '2'
99        },
100        {
101            NAME      => 'lvm0006',
102            SUBSYSTEM => 'xm',
103            STATUS    => STATUS_OFF,
104            VMTYPE    => 'xen',
105            MEMORY    => '4096',
106            VCPU      => '2'
107        },
108        {
109            NAME      => 'lvm0007',
110            SUBSYSTEM => 'xm',
111            STATUS    => STATUS_OFF,
112            VMTYPE    => 'xen',
113            MEMORY    => '1024',
114            VCPU      => '1'
115        },
116        {
117            NAME      => 'lvm0008',
118            SUBSYSTEM => 'xm',
119            STATUS    => STATUS_OFF,
120            VMTYPE    => 'xen',
121            MEMORY    => '2048',
122            VCPU      => '1'
123        },
124        {
125            NAME      => 'lvm0009',
126            SUBSYSTEM => 'xm',
127            STATUS    => STATUS_OFF,
128            VMTYPE    => 'xen',
129            MEMORY    => '16384',
130            VCPU      => '4'
131        },
132        {
133            NAME      => 'lvm0010',
134            SUBSYSTEM => 'xm',
135            STATUS    => STATUS_RUNNING,
136            VMTYPE    => 'xen',
137            MEMORY    => '8192',
138            VCPU      => '4'
139        },
140        {
141            NAME      => 'lvm0011',
142            SUBSYSTEM => 'xm',
143            STATUS    => STATUS_OFF,
144            VMTYPE    => 'xen',
145            MEMORY    => '4096',
146            VCPU      => '32'
147        },
148        {
149            NAME      => 'lvm0012',
150            SUBSYSTEM => 'xm',
151            STATUS    => STATUS_OFF,
152            VMTYPE    => 'xen',
153            MEMORY    => '32768',
154            VCPU      => '24'
155        },
156        {
157            NAME      => 'lvm0013',
158            SUBSYSTEM => 'xm',
159            STATUS    => STATUS_OFF,
160            VMTYPE    => 'xen',
161            MEMORY    => '32768',
162            VCPU      => '24'
163        },
164        {
165            NAME      => 'lvm0014',
166            SUBSYSTEM => 'xm',
167            STATUS    => STATUS_OFF,
168            VMTYPE    => 'xen',
169            MEMORY    => '32768',
170            VCPU      => '16'
171        },
172        {
173            NAME      => 'lvm0015',
174            SUBSYSTEM => 'xm',
175            STATUS    => STATUS_BLOCKED,
176            VMTYPE    => 'xen',
177            MEMORY    => '16384',
178            VCPU      => '4'
179        },
180        {
181            NAME      => 'lvm0016',
182            SUBSYSTEM => 'xm',
183            STATUS    => STATUS_OFF,
184            VMTYPE    => 'xen',
185            MEMORY    => '8192',
186            VCPU      => '2'
187        },
188        {
189            NAME      => 'lvm0017',
190            SUBSYSTEM => 'xm',
191            STATUS    => STATUS_OFF,
192            VMTYPE    => 'xen',
193            MEMORY    => '16384',
194            VCPU      => '4'
195        },
196        {
197            NAME      => 'lvm0018',
198            SUBSYSTEM => 'xm',
199            STATUS    => STATUS_OFF,
200            VMTYPE    => 'xen',
201            MEMORY    => '32768',
202            VCPU      => '8'
203        },
204        {
205            NAME      => 'lvm0019',
206            SUBSYSTEM => 'xm',
207            STATUS    => STATUS_OFF,
208            VMTYPE    => 'xen',
209            MEMORY    => '16384',
210            VCPU      => '4'
211        },
212        {
213            NAME      => 'lvm0020',
214            SUBSYSTEM => 'xm',
215            STATUS    => STATUS_OFF,
216            VMTYPE    => 'xen',
217            MEMORY    => '16384',
218            VCPU      => '8'
219        },
220        {
221            NAME      => 'lvm0021',
222            SUBSYSTEM => 'xm',
223            STATUS    => STATUS_OFF,
224            VMTYPE    => 'xen',
225            MEMORY    => '16384',
226            VCPU      => '8'
227        },
228        {
229            NAME      => 'lvm0022',
230            SUBSYSTEM => 'xm',
231            STATUS    => STATUS_OFF,
232            VMTYPE    => 'xen',
233            MEMORY    => '8192',
234            VCPU      => '4'
235        },
236        {
237            NAME      => 'lvm0023',
238            SUBSYSTEM => 'xm',
239            STATUS    => STATUS_OFF,
240            VMTYPE    => 'xen',
241            MEMORY    => '4096',
242            VCPU      => '4'
243        },
244        {
245            NAME      => 'lvm0024',
246            SUBSYSTEM => 'xm',
247            STATUS    => STATUS_OFF,
248            VMTYPE    => 'xen',
249            MEMORY    => '32768',
250            VCPU      => '8'
251        },
252        {
253            NAME      => 'lvm0025',
254            SUBSYSTEM => 'xm',
255            STATUS    => STATUS_OFF,
256            VMTYPE    => 'xen',
257            MEMORY    => '2048',
258            VCPU      => '1'
259        },
260        {
261            NAME      => 'lvm0026',
262            SUBSYSTEM => 'xm',
263            STATUS    => STATUS_OFF,
264            VMTYPE    => 'xen',
265            MEMORY    => '16384',
266            VCPU      => '16'
267        },
268        {
269            NAME      => 'lvm0027',
270            SUBSYSTEM => 'xm',
271            STATUS    => STATUS_OFF,
272            VMTYPE    => 'xen',
273            MEMORY    => '16384',
274            VCPU      => '16'
275        },
276        {
277            NAME      => 'lvm0028',
278            SUBSYSTEM => 'xm',
279            STATUS    => STATUS_BLOCKED,
280            VMTYPE    => 'xen',
281            MEMORY    => '16384',
282            VCPU      => '4'
283        },
284        {
285            NAME      => 'lvm0029',
286            SUBSYSTEM => 'xm',
287            STATUS    => STATUS_OFF,
288            VMTYPE    => 'xen',
289            MEMORY    => '16384',
290            VCPU      => '4'
291        },
292        {
293            NAME      => 'lvm0030',
294            SUBSYSTEM => 'xm',
295            STATUS    => STATUS_BLOCKED,
296            VMTYPE    => 'xen',
297            MEMORY    => '16384',
298            VCPU      => '4'
299        },
300        {
301            NAME      => 'lvm0031',
302            SUBSYSTEM => 'xm',
303            STATUS    => STATUS_BLOCKED,
304            VMTYPE    => 'xen',
305            MEMORY    => '32768',
306            VCPU      => '12'
307        },
308        {
309            NAME      => 'lvm0032',
310            SUBSYSTEM => 'xm',
311            STATUS    => STATUS_OFF,
312            VMTYPE    => 'xen',
313            MEMORY    => '32768',
314            VCPU      => '16'
315        },
316        {
317            NAME      => 'lvm0033',
318            SUBSYSTEM => 'xm',
319            STATUS    => STATUS_BLOCKED,
320            VMTYPE    => 'xen',
321            MEMORY    => '4096',
322            VCPU      => '2'
323        },
324        {
325            NAME      => 'lvm0034',
326            SUBSYSTEM => 'xm',
327            STATUS    => STATUS_OFF,
328            VMTYPE    => 'xen',
329            MEMORY    => '32768',
330            VCPU      => '16'
331        },
332        {
333            NAME      => 'lvm0035',
334            SUBSYSTEM => 'xm',
335            STATUS    => STATUS_OFF,
336            VMTYPE    => 'xen',
337            MEMORY    => '4096',
338            VCPU      => '2'
339        },
340        {
341            NAME      => 'lvm0036',
342            SUBSYSTEM => 'xm',
343            STATUS    => STATUS_OFF,
344            VMTYPE    => 'xen',
345            MEMORY    => '24576',
346            VCPU      => '8'
347        },
348        {
349            NAME      => 'lvm0037',
350            SUBSYSTEM => 'xm',
351            STATUS    => STATUS_OFF,
352            VMTYPE    => 'xen',
353            MEMORY    => '4096',
354            VCPU      => '2'
355        },
356        {
357            NAME      => 'lvm0038',
358            SUBSYSTEM => 'xm',
359            STATUS    => STATUS_OFF,
360            VMTYPE    => 'xen',
361            MEMORY    => '8192',
362            VCPU      => '8'
363        },
364        {
365            NAME      => 'lvm0039',
366            SUBSYSTEM => 'xm',
367            STATUS    => STATUS_OFF,
368            VMTYPE    => 'xen',
369            MEMORY    => '16384',
370            VCPU      => '8'
371        },
372        {
373            NAME      => 'lvm0041',
374            SUBSYSTEM => 'xm',
375            STATUS    => STATUS_OFF,
376            VMTYPE    => 'xen',
377            MEMORY    => '4096',
378            VCPU      => '8'
379        },
380        {
381            NAME      => 'lvm0042',
382            SUBSYSTEM => 'xm',
383            STATUS    => STATUS_OFF,
384            VMTYPE    => 'xen',
385            MEMORY    => '4096',
386            VCPU      => '8'
387        },
388        {
389            NAME      => 'lvm0043',
390            SUBSYSTEM => 'xm',
391            STATUS    => STATUS_OFF,
392            VMTYPE    => 'xen',
393            MEMORY    => '16384',
394            VCPU      => '16'
395        },
396        {
397            NAME      => 'lvm0044',
398            SUBSYSTEM => 'xm',
399            STATUS    => STATUS_OFF,
400            VMTYPE    => 'xen',
401            MEMORY    => '1024',
402            VCPU      => '8'
403        },
404        {
405            NAME      => 'lvm0045',
406            SUBSYSTEM => 'xm',
407            STATUS    => STATUS_OFF,
408            VMTYPE    => 'xen',
409            MEMORY    => '16384',
410            VCPU      => '8'
411        },
412        {
413            NAME      => 'lvm0046',
414            SUBSYSTEM => 'xm',
415            STATUS    => STATUS_OFF,
416            VMTYPE    => 'xen',
417            MEMORY    => '16384',
418            VCPU      => '8'
419        },
420        {
421            NAME      => 'lvm0047',
422            SUBSYSTEM => 'xm',
423            STATUS    => STATUS_OFF,
424            VMTYPE    => 'xen',
425            MEMORY    => '65536',
426            VCPU      => '16'
427        },
428        {
429            NAME      => 'lvm0048',
430            SUBSYSTEM => 'xm',
431            STATUS    => STATUS_OFF,
432            VMTYPE    => 'xen',
433            MEMORY    => '12288',
434            VCPU      => '12'
435        },
436        {
437            NAME      => 'lvm0049',
438            SUBSYSTEM => 'xm',
439            STATUS    => STATUS_BLOCKED,
440            VMTYPE    => 'xen',
441            MEMORY    => '2048',
442            VCPU      => '2'
443        },
444        {
445            NAME      => 'lvm0050',
446            SUBSYSTEM => 'xm',
447            STATUS    => STATUS_RUNNING,
448            VMTYPE    => 'xen',
449            MEMORY    => '8192',
450            VCPU      => '4'
451        }
452    ],
453    xl_list => [
454        {
455            NAME      => 'vm1',
456            SUBSYSTEM => 'xm',
457            STATUS    => STATUS_BLOCKED,
458            VMTYPE    => 'xen',
459            MEMORY    => '20480',
460            VCPU      => '4'
461        },
462        {
463            NAME      => 'vm2',
464            SUBSYSTEM => 'xm',
465            STATUS    => STATUS_BLOCKED,
466            VMTYPE    => 'xen',
467            MEMORY    => '4096',
468            VCPU      => '2'
469        }
470    ],
471    xl_list2 => [
472        {
473            NAME      => 'SQL LUBSS227',
474            SUBSYSTEM => 'xm',
475            STATUS    => STATUS_BLOCKED,
476            VMTYPE    => 'xen',
477            MEMORY    => '1536',
478            VCPU      => '2'
479        },
480        {
481            NAME      => 'SQL LUBSS239',
482            SUBSYSTEM => 'xm',
483            STATUS    => STATUS_BLOCKED,
484            VMTYPE    => 'xen',
485            MEMORY    => '1024',
486            VCPU      => '1'
487        },
488        {
489            NAME      => 'SQL LUBSS237',
490            SUBSYSTEM => 'xm',
491            STATUS    => STATUS_RUNNING,
492            VMTYPE    => 'xen',
493            MEMORY    => '2048',
494            VCPU      => '4'
495        },
496        {
497            NAME      => 'SQL LUBSS235',
498            SUBSYSTEM => 'xm',
499            STATUS    => STATUS_BLOCKED,
500            VMTYPE    => 'xen',
501            MEMORY    => '2047',
502            VCPU      => '4'
503        },
504        {
505            NAME      => 'IIS LUBSIIS12',
506            SUBSYSTEM => 'xm',
507            STATUS    => STATUS_BLOCKED,
508            VMTYPE    => 'xen',
509            MEMORY    => '2048',
510            VCPU      => '4'
511        },
512        {
513            NAME      => 'SQL LUBSS245',
514            SUBSYSTEM => 'xm',
515            STATUS    => STATUS_BLOCKED,
516            VMTYPE    => 'xen',
517            MEMORY    => '1024',
518            VCPU      => '2'
519        },
520        {
521            NAME      => 'SQL LUBSS238',
522            SUBSYSTEM => 'xm',
523            STATUS    => STATUS_BLOCKED,
524            VMTYPE    => 'xen',
525            MEMORY    => '2048',
526            VCPU      => '2'
527        },
528        {
529            NAME      => 'SQL LUBSS242',
530            SUBSYSTEM => 'xm',
531            STATUS    => STATUS_RUNNING,
532            VMTYPE    => 'xen',
533            MEMORY    => '2000',
534            VCPU      => '4'
535        },
536        {
537            NAME      => 'SQL LUBSS218',
538            SUBSYSTEM => 'xm',
539            STATUS    => STATUS_BLOCKED,
540            VMTYPE    => 'xen',
541            MEMORY    => '2000',
542            VCPU      => '2'
543        },
544        {
545            NAME      => 'SQL REL LUBSS223',
546            SUBSYSTEM => 'xm',
547            STATUS    => STATUS_RUNNING,
548            VMTYPE    => 'xen',
549            MEMORY    => '6000',
550            VCPU      => '4'
551        },
552        {
553            NAME      => 'SQL LUBSS230',
554            SUBSYSTEM => 'xm',
555            STATUS    => STATUS_BLOCKED,
556            VMTYPE    => 'xen',
557            MEMORY    => '1535',
558            VCPU      => '4'
559        },
560        {
561            NAME      => 'SQL REL LUBSS215',
562            SUBSYSTEM => 'xm',
563            STATUS    => STATUS_BLOCKED,
564            VMTYPE    => 'xen',
565            MEMORY    => '3000',
566            VCPU      => '4'
567        },
568        {
569            NAME      => 'SQL REL LUBSS221',
570            SUBSYSTEM => 'xm',
571            STATUS    => STATUS_BLOCKED,
572            VMTYPE    => 'xen',
573            MEMORY    => '2048',
574            VCPU      => '4'
575        }
576    ]
577);
578
579
580my %tests_getUUID = (
581    'xm_list_-l_vmname' => '0004fb00-0006-0000-4acc-3678187fb85c',
582    'xl_list_-v_vmname' => '482e6c75-090e-4cf2-9c06-de39c824cbe4'
583);
584
585plan tests =>
586(2 * scalar keys %tests_xm_list) +
587(scalar keys %tests_getUUID)     +
5881;
589
590my $inventory = FusionInventory::Test::Inventory->new();
591
592foreach my $test (keys %tests_xm_list) {
593    my $file = "resources/virtualization/xm/$test";
594    my @machines = FusionInventory::Agent::Task::Inventory::Virtualization::Xen::_getVirtualMachines(file => $file);
595    cmp_deeply(\@machines, $tests_xm_list{$test}, "$test: parsing");
596    lives_ok {
597        $inventory->addEntry(section => 'VIRTUALMACHINES', entry => $_)
598        foreach @machines;
599    } "$test: registering";
600}
601
602foreach my $test (keys %tests_getUUID) {
603    my $file = "resources/virtualization/xm/$test";
604    my $uuid = FusionInventory::Agent::Task::Inventory::Virtualization::Xen::_getUUID(file => $file);
605    cmp_deeply($uuid, $tests_getUUID{$test}, $test);
606}
607