Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F8391590
grafana_spec.rb
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
10 KB
Subscribers
None
grafana_spec.rb
View Options
require
'spec_helper'
describe
'grafana'
do
context
'supported operating systems'
do
[
'Debian'
,
'RedHat'
].
each
do
|
osfamily
|
describe
"grafana class without any parameters on
#{
osfamily
}
"
do
let
(
:params
)
{{
}}
let
(
:facts
)
{{
:osfamily
=>
osfamily
,
}}
it
{
should
compile
.
with_all_deps
}
it
{
should
contain_class
(
'grafana::params'
)
}
it
{
should
contain_class
(
'grafana::install'
)
.
that_comes_before
(
'grafana::config'
)
}
it
{
should
contain_class
(
'grafana::config'
)
}
it
{
should
contain_class
(
'grafana::service'
)
.
that_subscribes_to
(
'grafana::config'
)
}
it
{
should
contain_service
(
'grafana-server'
)
.
with_ensure
(
'running'
)
.
with_enable
(
true
)
}
it
{
should
contain_package
(
'grafana'
)
.
with_ensure
(
'present'
)
}
end
end
end
context
'unsupported operating system'
do
describe
'grafana class without any parameters on Solaris/Nexenta'
do
let
(
:facts
)
{{
:osfamily
=>
'Solaris'
,
:operatingsystem
=>
'Nexenta'
,
}}
it
{
expect
{
should
contain_package
(
'grafana'
)
}
.
to
raise_error
(
Puppet
::
Error
,
/Nexenta not supported/
)
}
end
end
context
'package install method'
do
context
'debian'
do
let
(
:facts
)
{{
:osfamily
=>
'Debian'
}}
download_location
=
'/tmp/grafana.deb'
describe
'use wget to fetch the package to a temporary location'
do
it
{
should
contain_wget__fetch
(
'grafana'
)
.
with_destination
(
download_location
)
}
it
{
should
contain_wget__fetch
(
'grafana'
)
.
that_comes_before
(
'Package[grafana]'
)
}
end
describe
'install dependencies first'
do
it
{
should
contain_package
(
'libfontconfig1'
)
.
with_ensure
(
'present'
)
.
that_comes_before
(
'Package[grafana]'
)
}
end
describe
'install the package'
do
it
{
should
contain_package
(
'grafana'
)
.
with_provider
(
'dpkg'
)
}
it
{
should
contain_package
(
'grafana'
)
.
with_source
(
download_location
)
}
end
end
context
'redhat'
do
let
(
:facts
)
{{
:osfamily
=>
'RedHat'
}}
describe
'install dependencies first'
do
it
{
should
contain_package
(
'fontconfig'
)
.
with_ensure
(
'present'
)
.
that_comes_before
(
'Package[grafana]'
)
}
end
describe
'install the package'
do
it
{
should
contain_package
(
'grafana'
)
.
with_provider
(
'rpm'
)
}
end
end
end
context
'repo install method'
do
let
(
:params
)
{{
:install_method
=>
'repo'
,
:manage_package_repo
=>
true
,
:version
=>
'present'
}}
context
'debian'
do
let
(
:facts
)
{{
:osfamily
=>
'Debian'
,
:lsbdistid
=>
'Ubuntu'
}}
describe
'install apt repo dependencies first'
do
it
{
should
contain_class
(
'apt'
)
}
it
{
should
contain_apt__source
(
'grafana'
)
.
with
(
:release
=>
'wheezy'
,
:repos
=>
'main'
,
:location
=>
'https://packagecloud.io/grafana/stable/debian'
)
}
it
{
should
contain_apt__source
(
'grafana'
)
.
that_comes_before
(
'Package[grafana]'
)
}
end
describe
'install dependencies first'
do
it
{
should
contain_package
(
'libfontconfig1'
)
.
with_ensure
(
'present'
)
.
that_comes_before
(
'Package[grafana]'
)
}
end
describe
'install the package'
do
it
{
should
contain_package
(
'grafana'
)
.
with_ensure
(
'present'
)
}
end
end
context
'redhat'
do
let
(
:facts
)
{{
:osfamily
=>
'RedHat'
}}
describe
'yum repo dependencies first'
do
it
{
should
contain_yumrepo
(
'grafana'
)
.
with
(
:baseurl
=>
'https://packagecloud.io/grafana/stable/el/6/$basearch'
,
:gpgkey
=>
'https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana'
,
:enabled
=>
1
)
}
it
{
should
contain_yumrepo
(
'grafana'
)
.
that_comes_before
(
'Package[grafana]'
)
}
end
describe
'install dependencies first'
do
it
{
should
contain_package
(
'fontconfig'
)
.
with_ensure
(
'present'
)
.
that_comes_before
(
'Package[grafana]'
)
}
end
describe
'install the package'
do
it
{
should
contain_package
(
'grafana'
)
.
with_ensure
(
'present'
)
}
end
end
end
context
'repo install method without managing the package repo'
do
let
(
:params
)
{{
:install_method
=>
'repo'
,
:manage_package_repo
=>
false
,
:version
=>
'present'
}}
context
'debian'
do
let
(
:facts
)
{{
:osfamily
=>
'Debian'
,
:lsbdistid
=>
'Ubuntu'
}}
it
{
should
compile
.
with_all_deps
}
describe
'install dependencies first'
do
it
{
should
contain_package
(
'libfontconfig1'
)
.
with_ensure
(
'present'
)
.
that_comes_before
(
'Package[grafana]'
)
}
end
describe
'install the package'
do
it
{
should
contain_package
(
'grafana'
)
.
with_ensure
(
'present'
)
}
end
end
end
context
'archive install method'
do
let
(
:params
)
{{
:install_method
=>
'archive'
}}
install_dir
=
'/usr/share/grafana'
service_config
=
'/usr/share/grafana/conf/custom.ini'
describe
'extract archive to install_dir'
do
it
{
should
contain_archive
(
'grafana'
)
.
with_ensure
(
'present'
)
}
it
{
should
contain_archive
(
'grafana'
)
.
with_target
(
install_dir
)
}
it
{
should
contain_archive
(
'grafana'
)
.
with_strip_components
(
1
)
}
it
{
should
contain_archive
(
'grafana'
)
.
that_comes_before
(
'User[grafana]'
)
}
end
describe
'create grafana user'
do
it
{
should
contain_user
(
'grafana'
)
.
with_ensure
(
'present'
)
.
with_home
(
install_dir
)
}
it
{
should
contain_user
(
'grafana'
)
.
that_comes_before
(
'File[/usr/share/grafana]'
)
}
end
describe
'manage install_dir'
do
it
{
should
contain_file
(
install_dir
)
.
with_ensure
(
'directory'
)
}
it
{
should
contain_file
(
install_dir
)
.
with_group
(
'grafana'
)
.
with_owner
(
'grafana'
)
}
it
{
should
contain_file
(
install_dir
)
.
with_recurse
(
true
)
.
with_recurselimit
(
3
)
}
end
describe
'configure grafana'
do
it
{
should
contain_file
(
service_config
)
.
with_ensure
(
'present'
)
}
end
describe
'run grafana as service'
do
it
{
should
contain_service
(
'grafana-server'
)
.
with_ensure
(
'running'
)
.
with_provider
(
'base'
)
}
it
{
should
contain_service
(
'grafana-server'
)
.
with_hasrestart
(
false
)
.
with_hasstatus
(
false
)
}
end
context
'when user already defined'
do
let
(
:pre_condition
)
{
'user{"grafana":
ensure => present,
}'
}
describe
'do NOT create grafana user'
do
it
{
should_not
contain_user
(
'grafana'
)
.
with_ensure
(
'present'
)
.
with_home
(
install_dir
)
}
end
end
context
'when service already defined'
do
let
(
:pre_condition
)
{
'service{"grafana-server":
ensure => running,
hasrestart => true,
hasstatus => true,
}'
}
# let(:params) {{ :service_name => 'grafana-server'}}
describe
'do NOT run service'
do
it
{
should_not
contain_service
(
'grafana-server'
)
.
with_hasrestart
(
false
)
.
with_hasstatus
(
false
)
}
end
end
end
context
'invalid parameters'
do
context
'cfg'
do
let
(
:facts
)
{{
:osfamily
=>
'Debian'
,
}}
describe
'should raise an error when cfg parameter is not a hash'
do
let
(
:params
)
{{
:cfg
=>
[]
,
}}
it
{
expect
{
should
contain_package
(
'grafana'
)
}
.
to
raise_error
(
Puppet
::
Error
,
/cfg parameter must be a hash/
)
}
end
describe
'should not raise an error when cfg parameter is a hash'
do
let
(
:params
)
{{
:cfg
=>
{},
}}
it
{
should
contain_package
(
'grafana'
)
}
end
end
end
context
'configuration file'
do
let
(
:facts
)
{{
:osfamily
=>
'Debian'
,
}}
describe
'should not contain any configuration when cfg param is empty'
do
it
{
should
contain_file
(
'/etc/grafana/grafana.ini'
)
.
with_content
(
"# This file is managed by Puppet, any changes will be overwritten
\n\n
"
)
}
end
describe
'should correctly transform cfg param entries to Grafana configuration'
do
let
(
:params
)
{{
:cfg
=>
{
'app_mode'
=>
'production'
,
'section'
=>
{
'string'
=>
'production'
,
'number'
=>
8080
,
'boolean'
=>
false
,
'empty'
=>
''
,
},
},
:ldap_cfg
=>
{
'servers'
=>
[
{
'host'
=>
'server1'
,
'use_ssl'
=>
true
,
'search_filter'
=>
'(sAMAccountName=%s)'
,
'search_base_dns'
=>
[
'dc=domain1,dc=com'
]
,
},
{
'host'
=>
'server2'
,
'use_ssl'
=>
true
,
'search_filter'
=>
'(sAMAccountName=%s)'
,
'search_base_dns'
=>
[
'dc=domain2,dc=com'
]
,
},
]
,
'servers.attributes'
=>
{
'name'
=>
'givenName'
,
'surname'
=>
'sn'
,
'username'
=>
'sAMAccountName'
,
'member_of'
=>
'memberOf'
,
'email'
=>
'email'
,
}
},
}}
expected
=
"# This file is managed by Puppet, any changes will be overwritten
\n\n
"
\
"app_mode = production
\n\n
"
\
"[section]
\n
"
\
"boolean = false
\n
"
\
"empty =
\n
"
\
"number = 8080
\n
"
\
"string = production
\n
"
it
{
should
contain_file
(
'/etc/grafana/grafana.ini'
)
.
with_content
(
expected
)
}
ldap_expected
=
"
\n
[[servers]]
\n
"
\
"host =
\"
server1
\"\n
"
\
"search_base_dns = [
\"
dc=domain1,dc=com
\"
]
\n
"
\
"search_filter =
\"
(sAMAccountName=%s)
\"\n
"
\
"use_ssl = true
\n
"
\
"
\n
"
\
"[[servers]]
\n
"
\
"host =
\"
server2
\"\n
"
\
"search_base_dns = [
\"
dc=domain2,dc=com
\"
]
\n
"
\
"search_filter =
\"
(sAMAccountName=%s)
\"\n
"
\
"use_ssl = true
\n
"
\
"
\n
"
\
"[servers.attributes]
\n
"
\
"email =
\"
email
\"\n
"
\
"member_of =
\"
memberOf
\"\n
"
\
"name =
\"
givenName
\"\n
"
\
"surname =
\"
sn
\"\n
"
\
"username =
\"
sAMAccountName
\"\n
"
\
"
\n
"
it
{
should
contain_file
(
'/etc/grafana/ldap.toml'
)
.
with_content
(
ldap_expected
)
}
end
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Jun 4 2025, 6:46 PM (14 w, 10 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3382444
Attached To
R142 puppet-puppet-grafana
Event Timeline
Log In to Comment