12 use lib
"$FindBin::Bin/lib/lib/perl5";
15 my $sitename = "testsite";
18 if($ENV{NAGVIS_DEVEL
}) {
23 if (! -e
'/omd/sites/' . $sitename . '/etc/thruk') {
29 if (! -e
'/omd/sites/' . $sitename . '/etc/check_mk') {
34 plan
(tests
=> $num_tests);
36 ##################################################
37 # create our test site
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 /d1/lm/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"/' ] });
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"});
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"/' ] });
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
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
150 # OMD welcome page in NagVis mode
151 url
({ url
=> "", like
=> '/<title>NagVis '.$version.'<\/title>/' }),
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":"/' ]}),
179 url
({ url
=> "/nagvis/frontend/nagvis-js/index.php?lang=de_DE",
180 like
=> '/Sprache wählen/'}),
182 # Language switch back
183 url
({ url
=> "/nagvis/frontend/nagvis-js/index.php?lang=en_US",
184 like
=> '/Choose Language/'}),
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/'}),
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';
213 url
({ url
=> '/nagvis/frontend/nagvis-js/index.php',
214 like
=> '/Logged in: omduser/'})
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
226 if($response->{'content'} =~ m/<option value=\\\"([0-9]*)\\\">omduser<\\\/option
>/g
) {
229 ok
($userId ne "", 'User-ID of omduser: '.$userId) or diag
('Unable to gather the userid!');
231 # Check roles of the user
233 api_url_list
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=getUserRoles&userId='.$userId,
234 like
=> '/^\[{"roleId":"3","name":"Guests"}\]$/'})
237 ##################################################
238 # User management tests
241 # http://127.0.0.1/testsite/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=doAdd&_t=1322353697000
247 api_url
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=doAdd',
248 post
=> { password1
=> '123', password2
=> '123', username
=> 'testuser', 'submit' => 'Create User' },
249 like
=> '/^{"message":"The user has been created/' })
252 # 2. Fetch user management dialog
253 # http://127.0.0.1/testsite/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=view&_t=1322354360000
254 $response = TestUtils
::test_url
(
255 api_url
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=view',
256 like
=> '/Create User/' })
259 # 3. Get the id of the new user
261 if($response->{'content'} =~ m/<option value=\\\"([0-9]*)\\\">testuser<\\\/option
>/g
) {
264 ok
($userId ne "", 'User-ID of testuser: '.$userId) or diag
('Unable to gather the userid!');
266 # 4. get all roles of the user
268 api_url_list
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=getUserRoles&userId='.$userId,
272 # 5. add a role to the user
274 api_url
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=doEdit',
275 post
=> { submit
=> "Modify User", userId
=> $userId, 'rolesSelected[]' => 1},
276 like
=> '/The roles for this user have been updated/'})
279 # 6. verify user roles
281 api_url_list
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=getUserRoles&userId='.$userId,
282 like
=> '/^\[{"roleId":"1","name":"Administrators"}\]$/'})
287 # 8. Now try to delete this user again
289 api_url
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=doDelete',
290 post
=> { userId
=> $userId, submit
=> 'Delete User' },
291 like
=> [ '/^{"message":"The user has been deleted/' ]})
295 api_url
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=UserMgmt&act=view',
296 like
=> '/Create User/',
297 unlike
=> '/<option value=\\\"'.$userId.'\\\">testuser<\\\/option>/'})
300 ##################################################
303 # - Change the LogonModule to LogonDialog in nagvis
304 # - Disable the basic auth for /<site>/nagvis
305 site_write_file
($site, 'etc/nagvis/conf.d/auth.ini.php', "[global]\nlogonmodule=\"LogonDialog\"");
306 site_write_file
($site, 'etc/apache/conf.d/nagvis-auth.conf', "<Location \"/".$site."/nagvis\">\n"
307 ."Order allow,deny\n"
311 TestUtils
::test_command
({ cmd
=> $omd_bin." restart $site apache" });
315 url
({ url
=> '/nagvis/frontend/nagvis-js/index.php',
316 like
=> [ '/form name="loginform"/', '/name="_username"/', '/name="_password"/' ]})
319 # perform a random request which sould not be allowed to be requested by non logged in users
321 url
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=General&act=getHoverTemplate&name[]=default',
322 like
=> [ '/{"message":"You are not authenticated"/' ]})
325 #diag('Test an invalid login');
327 url
({ url
=> '/nagvis/frontend/nagvis-js/index.php',
328 post
=> { _username
=> 'omdadmin', _password
=> 'XXX', submit
=> 'Login' },
329 like
=> [ '/form name="loginform"/', '/name="_username"/',
330 '/name="_password"/', '/Authentication failed/' ]})
333 #diag('Test logging in using the login dialog');
335 url
({ url
=> '/nagvis/frontend/nagvis-js/index.php',
336 post
=> { _username
=> 'omdadmin', _password
=> 'omd', submit
=> 'Login' },
337 like
=> [ '/<!-- Start header menu -->/', '/Logged in: omdadmin/' ]})
340 #diag('Test logging in using _GET vars');
342 url
({ url
=> '/nagvis/frontend/nagvis-js/index.php?_username=omdadmin&_password=omd',
343 like
=> [ '/<!-- Start header menu -->/', '/Logged in: omdadmin/' ]})
346 #diag('Test logging in at ajax API using _GET vars');
347 # Use random page to login by GET vars
349 url
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=General&act=getHoverTemplate&name[]=default'
350 .'&_username=omdadmin&_password=omd',
351 like
=> [ '/"name":"default","css_file":/' ]})
354 # Disable dialog auth to use the environment auth for further testing
356 site_remove_file
($site, 'etc/apache/conf.d/nagvis-auth.conf');
357 site_remove_file
($site, 'etc/nagvis/conf.d/auth.ini.php');
358 TestUtils
::test_command
({ cmd
=> $omd_bin." restart $site apache" });
360 ##################################################
363 # /nagvis/server/core/ajax_handler.php?mod=General&act=getHoverTemplate&name[]=default
364 # [{"name":"default","code":"<...>"}]
366 api_url_list
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=General&act=getHoverTemplate&name[]=default',
367 like
=> [ '/"name":"default","css_file":/' ]})
370 # /nagvis/server/core/ajax_handler.php?mod=General&act=getContextTemplate&name[]=default
371 # [{"name":"default","code":"<...>"}]
373 api_url_list
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=General&act=getContextTemplate&name[]=default',
374 like
=> [ '/"name":"default","css_file":/' ]})
377 # /nagvis/server/core/ajax_handler.php?mod=Map&act=getMapProperties&show=demo
378 # {"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"}
380 api_url
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=Map&act=getMapProperties&show=demo-germany',
381 like
=> [ '/"map_name":"demo-germany",/' ]})
384 # /nagvis/server/core/ajax_handler.php?mod=Map&act=getMapObjects&show=demo
385 # FIXME: Add sepecial tests for object states here using the test backend
387 api_url_list
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=Map&act=getMapObjects&show=demo-germany',
388 like
=> [ '/"alias":"Demo: 0 Overview Germany"/' ]})
391 # /nagvis/server/core/ajax_handler.php?mod=Map&act=getObjectStates&show=demo&ty=state&i[]=2&t[]=host&n1[]=host-down-hard&n2[]=
392 # FIXME: Add sepecial tests for object states here using the test backend
393 # 1. Match the object state
394 # 2. Match the member list
396 api_url_list
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=Map&act=getObjectStates&show=demo-germany&ty=state&i[]=d99295',
397 like
=> [ '/{"state":/', '/"members":\[{"/' ]})
400 ###############################################################################
402 ###############################################################################
403 # /nagvis/server/core/ajax_handler.php?mod=Overview&act=getOverviewProperties
404 # {"cellsperrow":4,"showautomaps":1,"showmaps":1,"showgeomap":0,"showmapthumbs":0,"showrotations":1,"page_title":"NagVis 1.5.7","favicon_image":"\/nagvis\/frontend\/nagvis-js\/images\/internal\/favicon.png","background_color":"#ffffff","lang_mapIndex":"Map Index","lang_automapIndex":"Automap Index","lang_rotationPools":"Rotation Pools","event_log":0,"event_log_level":"info","event_log_height":100,"event_log_hidden":1}
406 api_url
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=Overview&act=getOverviewProperties',
407 like
=> [ '/"showmaps":1,"showgeomap":0,"showmapthumbs":0,"showrotations":1/', ]})
410 # /nagvis/server/core/ajax_handler.php?mod=Overview&act=getOverviewRotations
412 api_url_list
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=Overview&act=getOverviewRotations',
413 like
=> [ '/"name":"demo-germany",/', ]})
416 # /nagvis/server/core/ajax_handler.php?mod=General&act=getObjectStates&ty=state&i[]=automap-0&t[]=automap&n1[]=__automap&n2[]=
417 # http://127.0.0.1/nagvis/server/core/ajax_handler.php?mod=Overview&act=getObjectStates&ty=state&i[]=automap-__automap&_t=1298764833000
419 api_url_list
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=Overview&act=getObjectStates&ty=state&i[]=automap-__automap',
420 like
=> [ '/"state":"/', ]})
424 api_url_list
({ url
=> '/nagvis/server/core/ajax_handler.php?mod=Overview&act=getObjectStates&ty=state&i[]=automap-notexisting',
425 like
=> [ '/"state":"ERROR/', '/Map Error: The path /' ]})
428 ###############################################################################
430 ###############################################################################
432 TestUtils
::test_url
(url
({ url
=> "/nagvis/frontend/nagvis-js/index.php?lang=de_DE",
433 like
=> '/Sprache wählen/'}));
436 site_match_file
($site, 'var/nagvis/profiles/omdadmin.profile', '/"language":"de_DE"/');
438 ##################################################
440 TestUtils
::remove_test_site
($site);
443 ##################################################
445 # maybe move some of them to the general code one day
449 $url->{'url'} = "http://localhost/".$site.$url->{'url'};
450 $url->{'auth'} = $auth;
451 $url->{'unlike'} = [ '/internal server error/' ];
452 $url->{'skip_link_check'} = [ 'lang=' ];
457 my $url = url
(shift);
458 my $obj_match = shift;
459 if(!defined $obj_match) {
460 $obj_match = '/^{.*}$/';
463 $url->{'no_html_lint'} = 1;
465 # Add default AJAX API tests
466 my $def_like = [ $obj_match ];
467 if(defined $url->{'like'}) {
468 if(ref $url->{'like'} ne 'ARRAY') {
469 $url->{'like'} = [ $url->{'like'} ];
471 push(@
{$url->{'like'}}, @
{$def_like});
473 $url->{'like'} = $def_like;
479 return api_url
(shift, '/^\[.*\]$/')
482 sub get_maincfg_files
{
486 # Get all nagvis config files
487 opendir(my($dh), '/omd/sites/'.$site.'/etc/nagvis/conf.d') or die("Couldn't open dir conf.d dir: $!");
488 while(my $file = readdir($dh)) {
489 if($file =~ m/.*\.ini\.php/g) {
490 push(@files, 'conf.d/' . $file);
494 push(@files, 'nagvis.ini.php');
498 sub site_nagvis_maincfg_mtime
{
503 for my $file (get_maincfg_files
($site)) {
504 $age = site_mtime
($site, 'etc/nagvis/' . $file);
505 $newest = ($age > $newest ?
$age : $newest);
510 sub site_remove_file
{
511 unlink '/omd/sites/'.shift(@_).'/'.shift(@_);
514 sub site_write_file
{
515 my $path = '/omd/sites/'.shift(@_).'/'.shift(@_);
516 open(FILE
, '>'.$path) or fail
("Could not open file ".$path.".");
517 print FILE
shift(@_);
523 Touches a given site file to modify the last access and modification
524 time of a given file. The path is given relative to the sites base dir.
525 The functions returns the touch time as unix timestamp.
532 utime $now, $now, '/omd/sites/'.$site.'/'.$path;
538 Returns the mtime for a file in the given site.
539 The path is given as relative path to the sites base directory.
540 The time is returned as unix timestamp.
546 return (stat '/omd/sites/'.$site.'/'.$path)[9];
549 =head2 site_match_file
551 Checks if the specified pattern can be found in the given file.
552 The path is given as relative path to the sites base directory.
553 This function returns 1 if the pattern could be found or 0 if
554 there was no match in the file.
557 sub site_match_file
{
561 my $path = '/omd/sites/' . $site . '/' . $fpath;
563 #diag('Checking file contents of '.$path);
565 open FILE
, '<'.$path or fail
("Could not open file.");
566 my $content = do { local $/; <FILE
> };
569 like
($content, $pattern, "content like ".$pattern) or diag
('Contents: '.$content);
572 =head2 site_thing_exists
574 Checks if the specified directory/link/file exists. Fails if
575 the thing does not exist.
578 sub site_thing_exists
{
581 my $path = '/omd/sites/' . $site . '/' . $fpath;
583 #diag('Checking file exists '.$path);
584 #TestUtils::test_command({ cmd => "[ -f '.$path.' ]" });
585 ok
(-e
$path, 'Checking file exists '.$path) or diag
('File does not exist!');
588 =head2 site_nagvis_version
590 Returns version string for the sites NagVis version. It takes the
591 local/ path installations into account.
594 sub site_nagvis_version
{
598 if(-e
'/omd/sites/' . $site . '/local/share/nagvis/htdocs/server/core/defines/global.php') {
599 $path = '/omd/sites/' . $site . '/local/share/nagvis/htdocs/server/core/defines/global.php';
601 $path = '/omd/sites/' . $site . '/share/nagvis/htdocs/server/core/defines/global.php';
603 open FILE
, $path or die("Could not open file.");
604 foreach my $line (<FILE
>) {
605 if($line =~ m/^define\('CONST_VERSION', '([^']*)'/) {