check_logfiles: 3.7.4.1
[omd.git] / t / 20-package_nagvis.t
blob245d57e9c73e8d31e3559004d37098eed732308c
1 #!/usr/bin/env perl
3 use warnings;
4 use strict;
5 use Test::More;
7 BEGIN {
8 use lib('t');
9 require TestUtils;
10 import TestUtils;
11 use FindBin;
12 use lib "$FindBin::Bin/lib/lib/perl5";
15 my $sitename = "testsite";
17 my $num_tests = 351;
18 if($ENV{NAGVIS_DEVEL}) {
19 $num_tests += 3;
22 my $has_thruk = 1;
23 if (! -e '/omd/sites/' . $sitename . '/etc/thruk') {
24 $num_tests -= 8;
25 $has_thruk = 0;
28 my $has_cmk = 1;
29 if (! -e '/omd/sites/' . $sitename . '/etc/check_mk') {
30 $num_tests -= 8;
31 $has_cmk = 0;
34 plan(tests => $num_tests);
36 ##################################################
37 # create our test site
38 my $response;
39 my $userId;
40 my $omd_bin = TestUtils::get_omd_bin();
41 my $site = TestUtils::create_test_site($sitename) or TestUtils::bail_out_clean("no further testing without site");
42 my $auth = 'OMD Monitoring Site '.$site.':omdadmin:omd';
43 my $orig_auth = $auth;
45 # create test host/service
46 TestUtils::prepare_obj_config('t/data/omd/testconf1', '/omd/sites/'.$site.'/etc/nagios/conf.d', $site);
48 # Developer test: Install NagVis into local hierarchy
49 if($ENV{NAGVIS_DEVEL}) {
50 TestUtils::test_command({ cmd => "/bin/bash -c 'cd /home/lm/git/nagvis ; SITE=testsite bash .f12'" });
53 my $version = site_nagvis_version($site);
55 ##################################################
56 # Check installation paths
57 site_thing_exists($site, 'etc/nagvis/maps');
58 site_thing_exists($site, 'etc/nagvis/geomap');
59 site_thing_exists($site, 'etc/nagvis/conf.d');
60 site_thing_exists($site, 'etc/nagvis/conf.d/omd.ini.php');
61 site_thing_exists($site, 'etc/nagvis/conf.d/urls.ini.php');
62 site_thing_exists($site, 'etc/nagvis/conf.d/demo.ini.php');
63 site_thing_exists($site, 'etc/nagvis/nagvis.ini.php');
64 site_thing_exists($site, 'share/nagvis/htdocs');
65 site_thing_exists($site, 'share/nagvis/htdocs');
66 site_thing_exists($site, 'local/share/nagvis/htdocs');
68 ##################################################
69 # Check NAGVIS_URLS switcher
71 # Ensure the site is stopped, but don't care about the exit code here!
72 TestUtils::test_command({ cmd => $omd_bin." stop $site", exit => -1 });
74 #TestUtils::test_command({ cmd => $omd_bin." config $site set NAGVIS_URLS auto" });
75 TestUtils::test_command({ cmd => $omd_bin." config $site set DEFAULT_GUI welcome" });
76 # Now grep conf.d/urls.ini.php for lines matching
77 # a) hosturl="[htmlcgi]/status.cgi?host=[host_name]"
78 # b) htmlcgi="/nv/nagios/cgi-bin"
79 TestUtils::test_command({ cmd => "/bin/su - $site -c 'cat etc/nagvis/conf.d/urls.ini.php'",
80 like => [ '/hosturl="\[htmlcgi\]\/status.cgi\?host=\[host_name\]"/',
81 '/htmlcgi="\/'.$site.'\/nagios\/cgi-bin"/' ] });
83 if (-e '/omd/sites/' . $site . '/etc/nagios') {
84 TestUtils::test_command({ cmd => $omd_bin." config $site set DEFAULT_GUI nagios" });
85 TestUtils::test_command({ cmd => "/bin/su - $site -c 'cat etc/nagvis/conf.d/urls.ini.php'",
86 like => [ '/hosturl="\[htmlcgi\]\/status.cgi\?host=\[host_name\]"/',
87 '/htmlcgi="\/'.$site.'\/nagios\/cgi-bin"/' ] });
88 } else {
89 # dummy tests to statisfy number of tests (did not know how to decrease number of them)
90 TestUtils::test_command({ cmd => "/bin/echo skip nagios url test"});
91 TestUtils::test_command({ cmd => "/bin/echo skip nagios url test"});
94 if ($has_thruk) {
95 TestUtils::test_command({ cmd => $omd_bin." config $site set DEFAULT_GUI thruk" });
96 TestUtils::test_command({ cmd => "/bin/su - $site -c 'cat etc/nagvis/conf.d/urls.ini.php'",
97 like => [ '/hosturl="\[htmlcgi\]\/status.cgi\?host=\[host_name\]"/',
98 '/htmlcgi="\/'.$site.'\/thruk\/cgi-bin"/' ] });
101 if ($has_cmk) {
102 TestUtils::test_command({ cmd => $omd_bin." config $site set DEFAULT_GUI check_mk" });
103 TestUtils::test_command({ cmd => "/bin/su - $site -c 'cat etc/nagvis/conf.d/urls.ini.php'",
104 like => [ '/hosturl="\[htmlcgi\]\/view\.py\?view_name=host&site=&host=\[host_name\]"/',
105 '/htmlcgi="\/'.$site.'\/check_mk"/' ] });
108 ##################################################
109 # Prepare the site for testing...
111 TestUtils::test_command({ cmd => $omd_bin." config $site set DEFAULT_GUI nagvis" });
112 TestUtils::test_command({ cmd => $omd_bin." start $site" });
114 ##################################################
115 # Some checks to ensure the basic functionality
117 my $tests = [
118 { cmd => "/bin/su - $site -c 'lib/nagios/plugins/check_http -t 30 -H localhost -u /$site/nagvis -e 401'",
119 like => '/HTTP OK:/' },
120 { cmd => "/bin/su - $site -c 'lib/nagios/plugins/check_http -t 30 -H localhost -a omdadmin:omd -u /$site/nagvis -e 301'",
121 like => '/HTTP OK:/' },
122 { cmd => "/bin/su - $site -c 'lib/nagios/plugins/check_http -t 30 -H localhost -a omdadmin:omd -u /$site/nagvis/ -e 301'",
123 like => '/HTTP OK:/' },
124 { cmd => "/bin/su - $site -c 'lib/nagios/plugins/check_http -t 30 -H localhost -a omdadmin:omd -u /$site/nagvis/frontend/nagvis-js/index.php -e 200'",
125 like => '/HTTP OK:/' },
126 { cmd => "/bin/su - $site -c 'lib/nagios/plugins/check_http -t 30 -H localhost -a omdadmin:omd -u /$site/nagvis/frontend -e 301'",
127 like => '/HTTP OK:/' },
128 { cmd => "/bin/su - $site -c 'lib/nagios/plugins/check_http -t 30 -H localhost -a omdadmin:omd -u /$site/nagvis/frontend/ -e 301'",
129 like => '/HTTP OK:/' },
130 { cmd => "/bin/su - $site -c 'lib/nagios/plugins/check_http -t 30 -H localhost -a omdadmin:omd -u /$site/nagvis/frontend/wui -e 301'",
131 like => '/HTTP OK:/' },
132 { cmd => "/bin/su - $site -c 'lib/nagios/plugins/check_http -t 30 -H localhost -a omdadmin:omd -u /$site/nagvis/frontend/wui/ -e 301'",
133 like => '/HTTP OK:/' },
134 { cmd => "/bin/su - $site -c 'lib/nagios/plugins/check_http -t 30 -H localhost -a omdadmin:omd -u /$site/nagvis/frontend/wui/index.php -e 301'",
135 like => '/HTTP OK:/' },
136 { cmd => "/bin/su - $site -c 'lib/nagios/plugins/check_http -t 30 -H localhost -a omdadmin:omd -u /$site/nagvis/index.php -e 301'",
137 like => '/HTTP OK:/' },
138 { cmd => "/bin/su - $site -c 'lib/nagios/plugins/check_http -t 30 -H localhost -a omdadmin:omd -u /$site/nagvis/config.php -e 301'",
139 like => '/HTTP OK:/' },
142 for my $test (@{$tests}) {
143 TestUtils::test_command($test);
146 ##################################################
147 # User interface URL tests
149 my $urls = [
150 # OMD welcome page in NagVis mode
151 url({ url => "", like => '/<title>NagVis '.$version.'<\/title>/' }),
153 # default pages
154 url({ url => "/nagvis/frontend/nagvis-js/index.php",
155 like => '/<title>NagVis '.$version.'<\/title>/' }),
156 url({ url => "/nagvis/frontend/nagvis-js/index.php?mod=Info&lang=en_US",
157 like => '/NagVis Support Information<\/title>/' }),
158 url({ url => "/nagvis/frontend/nagvis-js/index.php?mod=Map&act=view&show=demo-germany",
159 like => '/, \'demo-germany\'/', 'skip_html_lint' => 1 }),
161 # Old redirects to maps
162 url({ url => "/nagvis/index.php?map=demo-germany",
163 like => '/, \'demo-germany\'/', 'skip_html_lint' => 1 }),
164 url({ url => "/nagvis/config.php?map=demo-germany",
165 like => '/, \'demo-germany\'/', 'skip_html_lint' => 1 }),
166 url({ url => "/nagvis/index.php?rotation=demo",
167 like => '/, \'demo-germany\'/', 'skip_html_lint' => 1 }),
169 # Ajax fetched dialogs
170 # FIXME: only valid when not using trusted auth:
171 #api_url({ url => '/nagvis/server/core/ajax_handler.php?mod=ChangePassword&act=view',
172 # like => [ '/{"code":"/', '/changePasswordForm/' ]}),
173 api_url({ url => '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=view&lang=en_US',
174 like => [ '/Create User/', '/"code":"/' ]}),
175 api_url({ url => '/nagvis/server/core/ajax_handler.php?mod=RoleMgmt&act=view&lang=en_US',
176 like => [ '/Create Role/', '/"code":"/' ]}),
178 # Language switch
179 url({ url => "/nagvis/frontend/nagvis-js/index.php?lang=de_DE",
180 like => '/Sprache w&auml;hlen/'}),
182 # Language switch back
183 url({ url => "/nagvis/frontend/nagvis-js/index.php?lang=en_US",
184 like => '/Choose Language/'}),
186 # Documentations
187 url({ url => "/nagvis/docs/de_DE/index.html",
188 like => '/NagVis (.*) Dokumentation/'}),
189 url({ url => "/nagvis/docs/en_US/index.html",
190 like => '/NagVis (.*) Documentation/'}),
193 # perform tests
194 for my $url ( @{$urls} ) {
195 TestUtils::test_url($url);
198 ##################################################
199 # Environment auth tests
201 # Create user "omduser" in omd site
202 # SLES11 does not have a "htpasswd" binary. Use the available htpasswd2 binary in that case.
203 #my $htpasswd = "htpasswd";
204 #if(system("which $htpasswd >/dev/null 2>&1") != 0) {
205 # $htpasswd = "htpasswd2";
207 #TestUtils::test_command({ cmd => "/bin/su - $site -c '$htpasswd -b /omd/sites/$site/etc/htpasswd omduser test 2>/dev/null'"});
208 TestUtils::test_command({ cmd => "/bin/sh -c \"echo 'omduser:bbTdyOM4g6r9Q' >> /omd/sites/".$site."/etc/htpasswd\""});
210 # Now try to auth with that user (environment auth)
211 $auth = 'OMD Monitoring Site '.$site.':omduser:test';
212 TestUtils::test_url(
213 url({ url => '/nagvis/frontend/nagvis-js/index.php',
214 like => '/Logged in: omduser/'})
216 $auth = $orig_auth;
218 # Fetch user management dialog
219 $response = TestUtils::test_url(
220 api_url({ url => '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=view',
221 like => '/Create User/' })
224 # Get the id of the user
225 $userId = "";
226 if($response->{'content'} =~ m/<option value=\\\"([0-9]*)\\\">omduser<\\\/option>/g) {
227 $userId = $1;
229 ok($userId ne "", 'User-ID of omduser: '.$userId) or diag('Unable to gather the userid!');
231 ##################################################
232 # User management tests
234 # 1. Create a user
235 TestUtils::test_url(
236 api_url({ url => '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=view',
237 post => { password1 => '123', password2 => '123', name => 'testuser', _submit => 'Create',
238 _update => '0', '_form_name' => 'create', mode => 'create' },
239 like => '/The user has been created/' })
242 # 2. Fetch user management dialog
243 # http://127.0.0.1/testsite/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=view&_t=1322354360000
244 $response = TestUtils::test_url(
245 api_url({ url => '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=view',
246 like => '/Create User/' })
249 # 3. Get the id of the new user
250 $userId = "";
251 if($response->{'content'} =~ m/<option value=\\\"([0-9]*)\\\">testuser<\\\/option>/g) {
252 $userId = $1;
254 ok($userId ne "", 'User-ID of testuser: '.$userId) or diag('Unable to gather the userid!');
256 # 5. add a role to the user
257 TestUtils::test_url(
258 api_url({ url => '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=view',
259 post => { _form_name => "edit", _update => "0", mode => "edit", user_roles => "1",
260 _submit => "Save", user_id => $userId },
261 like => '/The roles for this user have been updated/'})
264 # 6. verify user roles
265 TestUtils::test_url(
266 api_url({ url => '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=view',
267 post => { user_id => $userId, _update => "1", _form_name => "edit",
268 mode => "edit", _submit => "Save" },
269 like => '/roles_selected.*?value=\\\"1\\\">Administrators/'})
274 # 8. Now try to delete this user again
275 TestUtils::test_url(
276 api_url({ url => '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=view',
277 post => { user_id => $userId, _form_name => "delete", _update => "0", mode => "delete",
278 _submit => "Delete" },
279 like => [ '/The user has been deleted./' ]})
282 TestUtils::test_url(
283 api_url({ url => '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=view',
284 like => '/Create User/',
285 unlike => '/<option value=\\\"'.$userId.'\\\">testuser<\\\/option>/'})
288 ##################################################
289 # Logon dialog tests
291 # - Change the LogonModule to LogonDialog in nagvis
292 # - Disable the basic auth for /<site>/nagvis
293 site_write_file($site, 'etc/nagvis/conf.d/auth.ini.php', "[global]\nlogonmodule=\"LogonDialog\"");
294 site_write_file($site, 'etc/apache/conf.d/nagvis-auth.conf', "<Location \"/".$site."/nagvis\">\n"
295 ."Order allow,deny\n"
296 ."Allow from all\n"
297 ."Satisfy any\n"
298 ."</Location>\n");
299 TestUtils::test_command({ cmd => $omd_bin." restart $site apache" });
300 $auth = '';
302 TestUtils::test_url(
303 url({ url => '/nagvis/frontend/nagvis-js/index.php',
304 like => [ '/form name="loginform"/', '/name="_username"/', '/name="_password"/' ]})
307 # perform a random request which sould not be allowed to be requested by non logged in users
308 TestUtils::test_url(
309 url({ url => '/nagvis/server/core/ajax_handler.php?mod=General&act=getHoverTemplate&name[]=default',
310 like => [ '/{"message":"You are not authenticated"/' ]})
313 #diag('Test an invalid login');
314 TestUtils::test_url(
315 url({ url => '/nagvis/frontend/nagvis-js/index.php',
316 post => { _username => 'omdadmin', _password => 'XXX', submit => 'Login' },
317 like => [ '/form name="loginform"/', '/name="_username"/',
318 '/name="_password"/', '/Authentication failed/' ]})
321 #diag('Test logging in using the login dialog');
322 TestUtils::test_url(
323 url({ url => '/nagvis/frontend/nagvis-js/index.php',
324 post => { _username => 'omdadmin', _password => 'omd', submit => 'Login' },
325 like => [ '/<!-- Start header menu -->/', '/Logged in: omdadmin/' ]})
328 #diag('Test logging in using _GET vars');
329 TestUtils::test_url(
330 url({ url => '/nagvis/frontend/nagvis-js/index.php?_username=omdadmin&_password=omd',
331 like => [ '/<!-- Start header menu -->/', '/Logged in: omdadmin/' ]})
334 #diag('Test logging in at ajax API using _GET vars');
335 # Use random page to login by GET vars
336 TestUtils::test_url(
337 url({ url => '/nagvis/server/core/ajax_handler.php?mod=General&act=getHoverTemplate&name[]=default'
338 .'&_username=omdadmin&_password=omd',
339 like => [ '/"name":"default","css_file":/' ]})
342 # Disable dialog auth to use the environment auth for further testing
343 $auth = $orig_auth;
344 site_remove_file($site, 'etc/apache/conf.d/nagvis-auth.conf');
345 site_remove_file($site, 'etc/nagvis/conf.d/auth.ini.php');
346 TestUtils::test_command({ cmd => $omd_bin." restart $site apache" });
348 ##################################################
349 # AJAX API tests
351 # /nagvis/server/core/ajax_handler.php?mod=General&act=getHoverTemplate&name[]=default
352 # [{"name":"default","code":"<...>"}]
353 TestUtils::test_url(
354 api_url_list({ url => '/nagvis/server/core/ajax_handler.php?mod=General&act=getHoverTemplate&name[]=default',
355 like => [ '/"name":"default","css_file":/' ]})
358 # /nagvis/server/core/ajax_handler.php?mod=General&act=getContextTemplate&name[]=default
359 # [{"name":"default","code":"<...>"}]
360 TestUtils::test_url(
361 api_url_list({ url => '/nagvis/server/core/ajax_handler.php?mod=General&act=getContextTemplate&name[]=default',
362 like => [ '/"name":"default","css_file":/' ]})
365 # /nagvis/server/core/ajax_handler.php?mod=Map&act=getMapProperties&show=demo
366 # {"map_name":"demo","alias":"demo","background_image":"\/nagvis\/userfiles\/images\/maps\/nagvis-demo.png","background_color":"transparent","favicon_image":"\/nagvis\/frontend\/nagvis-js\/images\/internal\/favicon.png","page_title":"demo ([SUMMARY_STATE]) :: NagVis 1.5.7","event_background":"0","event_highlight":"1","event_highlight_interval":"500","event_highlight_duration":"10000","event_log":"0","event_log_level":"info","event_log_height":"100","event_log_hidden":1,"event_scroll":"1","event_sound":"1","in_maintenance":"0"}
367 TestUtils::test_url(
368 api_url({ url => '/nagvis/server/core/ajax_handler.php?mod=Map&act=getMapProperties&show=demo-germany',
369 like => [ '/"map_name":"demo-germany",/' ]})
372 # /nagvis/server/core/ajax_handler.php?mod=Map&act=getMapObjects&show=demo
373 # FIXME: Add sepecial tests for object states here using the test backend
374 TestUtils::test_url(
375 api_url_list({ url => '/nagvis/server/core/ajax_handler.php?mod=Map&act=getMapObjects&show=demo-germany',
376 like => [ '/"alias":"Demo: 0 Overview Germany"/' ]})
379 # /nagvis/server/core/ajax_handler.php?mod=Map&act=getObjectStates&show=demo&ty=state&i[]=2&t[]=host&n1[]=host-down-hard&n2[]=
380 # FIXME: Add sepecial tests for object states here using the test backend
381 # 1. Match the object state
382 # 2. Match the member list
383 TestUtils::test_url(
384 api_url_list({ url => '/nagvis/server/core/ajax_handler.php?mod=Map&act=getObjectStates&show=demo-germany&ty=state&i[]=d99295',
385 like => [ '/{"state":/', '/"members":\[{"/' ]})
388 ###############################################################################
389 # OVERVIEW
390 ###############################################################################
391 # /nagvis/server/core/ajax_handler.php?mod=Overview&act=getOverviewRotations
392 TestUtils::test_url(
393 api_url_list({ url => '/nagvis/server/core/ajax_handler.php?mod=Overview&act=getOverviewRotations',
394 like => [ '/"name":"demo-germany",/', ]})
397 # /nagvis/server/core/ajax_handler.php?mod=General&act=getObjectStates&ty=state&i[]=automap-0&t[]=automap&n1[]=__automap&n2[]=
398 # http://127.0.0.1/nagvis/server/core/ajax_handler.php?mod=Overview&act=getObjectStates&ty=state&i[]=automap-__automap&_t=1298764833000
399 TestUtils::test_url(
400 api_url_list({ url => '/nagvis/server/core/ajax_handler.php?mod=Overview&act=getObjectStates&ty=state&i[]=automap-__automap',
401 like => [ '/"state":"/', ]})
404 TestUtils::test_url(
405 api_url_list({ url => '/nagvis/server/core/ajax_handler.php?mod=Overview&act=getObjectStates&ty=state&i[]=automap-notexisting',
406 like => [ '/"state":"ERROR/', '/Map Error: The path /' ]})
409 ###############################################################################
410 # Test user config
411 ###############################################################################
412 # Language switch
413 TestUtils::test_url(url({ url => "/nagvis/frontend/nagvis-js/index.php?lang=de_DE",
414 like => '/Sprache w&auml;hlen/'}));
416 # Check profile file
417 site_match_file($site, 'var/nagvis/profiles/omdadmin.profile', '/"language":"de_DE"/');
419 ##################################################
420 # cleanup test site
421 TestUtils::remove_test_site($site);
424 ##################################################
425 # HELPER FUNCTIONS
426 # maybe move some of them to the general code one day
428 sub url {
429 my $url = shift;
430 $url->{'url'} = "http://localhost/".$site.$url->{'url'};
431 $url->{'auth'} = $auth;
432 $url->{'unlike'} = [ '/internal server error/' ];
433 $url->{'skip_link_check'} = [ 'lang=' ];
434 return $url;
437 sub api_url {
438 my $url = url(shift);
439 my $obj_match = shift;
440 if(!defined $obj_match) {
441 $obj_match = '/^{.*}$/';
444 $url->{'no_html_lint'} = 1;
446 # Add default AJAX API tests
447 my $def_like = [ $obj_match ];
448 if(defined $url->{'like'}) {
449 if(ref $url->{'like'} ne 'ARRAY') {
450 $url->{'like'} = [ $url->{'like'} ];
452 push(@{$url->{'like'}}, @{$def_like});
453 } else {
454 $url->{'like'} = $def_like;
456 return $url;
459 sub api_url_list {
460 return api_url(shift, '/^\[.*\]$/')
463 sub get_maincfg_files {
464 my $site = shift;
465 my @files = ();
467 # Get all nagvis config files
468 opendir(my($dh), '/omd/sites/'.$site.'/etc/nagvis/conf.d') or die("Couldn't open dir conf.d dir: $!");
469 while(my $file = readdir($dh)) {
470 if($file =~ m/.*\.ini\.php/g) {
471 push(@files, 'conf.d/' . $file);
474 closedir($dh);
475 push(@files, 'nagvis.ini.php');
476 return @files;
479 sub site_nagvis_maincfg_mtime {
480 my $site = shift;
481 my $newest = 0;
482 my $age;
484 for my $file (get_maincfg_files($site)) {
485 $age = site_mtime($site, 'etc/nagvis/' . $file);
486 $newest = ($age > $newest ? $age : $newest);
488 return $newest;
491 sub site_remove_file {
492 unlink '/omd/sites/'.shift(@_).'/'.shift(@_);
495 sub site_write_file {
496 my $path = '/omd/sites/'.shift(@_).'/'.shift(@_);
497 open(FILE, '>'.$path) or fail("Could not open file ".$path.".");
498 print FILE shift(@_);
499 close(FILE);
502 =head2 site_touch
504 Touches a given site file to modify the last access and modification
505 time of a given file. The path is given relative to the sites base dir.
506 The functions returns the touch time as unix timestamp.
508 =cut
509 sub site_touch {
510 my $site = shift;
511 my $path = shift;
512 my $now = time;
513 utime $now, $now, '/omd/sites/'.$site.'/'.$path;
514 return $now;
517 =head2 site_mtime
519 Returns the mtime for a file in the given site.
520 The path is given as relative path to the sites base directory.
521 The time is returned as unix timestamp.
523 =cut
524 sub site_mtime {
525 my $site = shift;
526 my $path = shift;
527 return (stat '/omd/sites/'.$site.'/'.$path)[9];
530 =head2 site_match_file
532 Checks if the specified pattern can be found in the given file.
533 The path is given as relative path to the sites base directory.
534 This function returns 1 if the pattern could be found or 0 if
535 there was no match in the file.
537 =cut
538 sub site_match_file {
539 my $site = shift;
540 my $fpath = shift;
541 my $pattern = shift;
542 my $path = '/omd/sites/' . $site . '/' . $fpath;
544 #diag('Checking file contents of '.$path);
546 open FILE, '<'.$path or fail("Could not open file.");
547 my $content = do { local $/; <FILE> };
548 close(FILE);
550 like($content, $pattern, "content like ".$pattern) or diag('Contents: '.$content);
553 =head2 site_thing_exists
555 Checks if the specified directory/link/file exists. Fails if
556 the thing does not exist.
558 =cut
559 sub site_thing_exists {
560 my $site = shift;
561 my $fpath = shift;
562 my $path = '/omd/sites/' . $site . '/' . $fpath;
564 #diag('Checking file exists '.$path);
565 #TestUtils::test_command({ cmd => "[ -f '.$path.' ]" });
566 ok(-e $path, 'Checking file exists '.$path) or diag('File does not exist!');
569 =head2 site_nagvis_version
571 Returns version string for the sites NagVis version. It takes the
572 local/ path installations into account.
574 =cut
575 sub site_nagvis_version {
576 my $site = shift;
577 my $version = '';
578 my $path;
579 if(-e '/omd/sites/' . $site . '/local/share/nagvis/htdocs/server/core/defines/global.php') {
580 $path = '/omd/sites/' . $site . '/local/share/nagvis/htdocs/server/core/defines/global.php';
581 } else {
582 $path = '/omd/sites/' . $site . '/share/nagvis/htdocs/server/core/defines/global.php';
584 open FILE, $path or die("Could not open file.");
585 foreach my $line (<FILE>) {
586 if($line =~ m/^define\('CONST_VERSION', '([^']*)'/) {
587 $version = $1;
590 close(FILE);
591 return $version;