Compare commits

..

87 Commits

Author SHA1 Message Date
lionce
412ad38d93 Merge pull request #361 from sheenaajay/releaseprep
(MODULES-9128) Release 4.0.0
2019-05-20 10:34:18 +03:00
sheena
7474169cbe (MODULES-9128) Release prep 4.0.0 2019-05-16 14:41:56 +01:00
carabasdaniel
45d9a2fb48 Merge pull request #359 from lionce/MODULES-9017
(MODULES-9017) - update metadata to support current version of stdlib
2019-05-03 05:59:27 -07:00
lionce
ba62a166d8 (MODULES-9017) - update metadata to support current version of stdlib 2019-05-03 14:54:46 +03:00
lionce
b174146dd0 Merge pull request #344 from HielkeJ/jce_link
MODULES-8613: Add option to set a custom JCE download URL
2019-04-23 13:16:18 +03:00
Hielke Jager
f195588082 Merge branch 'master' into jce_link 2019-04-18 19:46:07 +02:00
sheenaajay
c3e09bf110 Merge pull request #358 from puppetlabs/pdksync_pdksync_f778803
pdksync - (maint) Update pdk-template to f778803
2019-04-16 11:10:33 +01:00
Eimhin Laverty
b8e5438663 pdksync - (maint) Update pdk-template to f778803 2019-04-15 10:34:13 +01:00
TP Honey
76da37deb7 Merge pull request #353 from david22swan/FM-7921
(FM-7921) - Implement Puppet Strings
2019-04-15 10:33:36 +01:00
David Swan
8abe137a8c (FM-7921) - Implement Puppet Strings 2019-04-12 11:57:31 +01:00
Lavinia Dan
78bdfa2ffe Merge pull request #356 from puppetlabs/pdksync_MODULES-8444
pdksync - (MODULES-8444) - Raise lower Puppet bound
2019-04-11 16:07:20 +03:00
David Swan
24da374183 (MODULES-8444) - Raise lower Puppet bound 2019-04-10 16:39:28 +01:00
david22swan
b998142817 Merge pull request #351 from puppetlabs/pdksync_modules-8728
pdksync - Remove .project from .gitignore
2019-03-07 14:19:09 +00:00
Eimhin Laverty
881bcfabea (MODULES-8728) Remove .project from .gitignore 2019-03-07 12:43:24 +00:00
david22swan
ce348b258f Merge pull request #349 from fraenki/creates_path
MODULES-8698: Fix $install_path on CentOS with tar.gz package type
2019-03-06 15:25:23 +00:00
david22swan
fa7003da95 Merge pull request #348 from fraenki/symlink
MODULES-8699: Add option to manage symlink
2019-03-06 12:00:06 +00:00
Eimhin Laverty
7cd34dd291 (FM-7795) Cleanup java tests (#350)
* Add idempotent_apply function

* Remove unsupported OS specific code

* Remove outdated comments

* Improve unit test coverage

* Fix typo
2019-02-26 14:22:27 +02:00
Frank Wall
c81254a23a Fix $install_path on CentOS with tar.gz package type
When using tar.gz packages on CentOS, the architecture is not
part of the name of the installation directory. In this case
it's just "jdk1.8.0_201" instead of "jdk1.8.0_201-amd64".
2019-02-25 16:14:14 +01:00
Frank Wall
343ad7c468 Add option to manage symlink 2019-02-25 14:44:26 +01:00
Valentin
5509042cd1 Update default version & java 8 version from 8u192 to 8u201 (#347)
* Update default version & java 8 version from 8u192 to 8u201
2019-02-25 11:46:52 +00:00
Eimhin Laverty
3d8f80e4d9 Merge pull request #346 from tphoney/MODULES-3958
(MODULES-3958) use rspec-mock and add coverage
2019-02-14 14:25:22 +00:00
tphoney
7293c4991b (MODULES-3958) use rspec-mock and add coverage 2019-02-14 13:51:16 +00:00
david22swan
7bede1a384 Merge pull request #345 from fraenki/location_fix
Add ability to override basedir and package type for oracle java
2019-02-12 15:20:18 +00:00
Frank Wall
c4100556f0 use variable instead of hardcoded value, refs #298 2019-02-12 13:29:18 +01:00
Frank Wall
e247902da5 fix tests, refs #298 2019-02-12 13:28:56 +01:00
Elyse Salberg
82cd45647a Add ability to override basedir and package type 2019-02-12 13:27:32 +01:00
Hielke Jager
9b40ca6935 Add option to set a custom JCE download URL 2019-02-08 16:10:03 +01:00
david22swan
1e8954727e Merge pull request #332 from TLmaK0/master
Get architecture when no os/architecture exists
2019-02-07 16:08:22 +00:00
Paula Muir
b2a0626787 Merge pull request #343 from puppetlabs/pdksync_pdksync_1.9.0-0-g7281db5
pdksync - pdksync_1.9.0-0-g7281db5
2019-01-31 12:15:24 +00:00
lionce
f7f3fb9da2 pdksync_1.9.0-0-g7281db5 2019-01-31 11:22:53 +02:00
david22swan
25898c0fc9 Merge pull request #342 from puppetlabs/release
(maint) - 3.3.0 Release mergeback
2019-01-18 10:51:14 +00:00
Paula Muir
1021c71139 Merge pull request #341 from david22swan/ReleasePrep
(MODULES-8478) - 3.3.0 Release Prep
2019-01-17 10:55:28 +00:00
David Swan
66a6e6c28e (MODULES-8478) - 3.3.0 Release Prep 2019-01-16 15:36:22 +00:00
Helen
197bd5fe7f Merge pull request #340 from puppetlabs/pdksync_pdksync_heads/master-0-g6814a87
pdksync - pdksync_heads/master-0-g6814a87
2019-01-14 15:44:25 +00:00
David Swan
ed5fd0d528 pdksync_heads/master-0-g6814a87 2019-01-10 15:29:50 +00:00
davidmalloncares
be8c53be64 Merge pull request #339 from puppetlabs/pdksync_pdksync_heads/master-0-g9c815ea
pdksync - pdksync_heads/master-0-g9c815ea
2019-01-03 15:58:14 +00:00
David Swan
cec95965d0 pdksync_heads/master-0-g9c815ea 2019-01-03 14:33:56 +00:00
Eimhin Laverty
32506eb127 Merge pull request #338 from puppetlabs/pdksync_FM-7655
pdksync - (FM-7655) Fix rubygems-update for ruby < 2.3
2018-12-20 10:46:41 +00:00
tphoney
4898fbdfaa (FM-7655) Fix rubygems-update for ruby < 2.3 2018-12-20 10:09:32 +00:00
Helen
dd2c5b08df Merge pull request #337 from puppetlabs/pdksync_pdksync_heads/master-0-gbf720df
pdksync - pdksync_heads/master-0-gbf720df
2018-12-17 14:08:03 +00:00
Eimhin Laverty
9526767b95 pdksync_heads/master-0-gbf720df 2018-12-17 11:31:10 +00:00
david22swan
35f5fa9e33 Merge pull request #336 from eimlav/modules-8234
(MODULES-8234) - Add SLES 15 support
2018-12-14 14:26:34 +00:00
Eimhin Laverty
1504bf8974 (MODULES-8234) - Add SLES 15 support 2018-12-13 12:57:47 +00:00
Eimhin Laverty
5112b4d59f Merge pull request #335 from pmcmaw/bugfix_FM-7520
(FM-7520) - Removing Solaris from the support matrix
2018-11-19 11:18:46 +00:00
Paula Muir
ed5cbf950e Merge branch 'master' into bugfix_FM-7520 2018-11-19 11:00:10 +00:00
Paula Muir
cd46267fad (maint) - Standardising and removing Service Packs (SP) 2018-11-19 10:58:55 +00:00
Paula Muir
7405a304d9 (FM-7520) - Removing Solaris from the support matrix
This is a bug fix as Solaris has never worked on this module. Updating
to resolve the issue with our documentation.
2018-11-19 10:58:54 +00:00
Paula Muir
b4bb7f0b89 Merge pull request #334 from eimlav/modules-8234
(MODULES-8234) - Upgrade Oracle Java version to 8u192
2018-11-09 15:25:41 +00:00
Eimhin Laverty
68fb4fa498 (MODULES-8234) - Upgrade Oracle Java version to 8u192 2018-11-09 11:05:24 +00:00
Paula Muir
7243839129 Merge pull request #333 from puppetlabs/pdksync_pdksync_heads/master-0-gabccfb1
pdksync - pdksync_heads/master-0-gabccfb1
2018-11-07 13:21:10 +00:00
David Swan
a5ea78aeb4 pdksync_heads/master-0-gabccfb1 2018-11-07 10:22:33 +00:00
david22swan
89a205bc48 Merge pull request #314 from ojongerius/oracle_java_181
MODULES-8044: upgrade Oracle Java 8 to 181, make it the default release
2018-11-05 10:14:28 +00:00
Otto Jongerius
0fd7c00fa9 upgrade Oracle Java 8 to 181, make it the default release 2018-11-05 16:06:43 +13:00
david22swan
de89b1f2da Merge pull request #315 from olevole/master
MODULES-7819 fix set JAVA_HOME environments on FreeBSD platform
2018-11-02 13:46:10 +00:00
Hugo Freire
4372aea5bf Get architecture when no os/architecture exists 2018-10-26 13:12:53 +02:00
Eimhin Laverty
ca4b22c7a0 Merge pull request #331 from pmcmaw/FM-7520
(FM-7520) - Removing service pack extensions
2018-10-24 16:10:51 +01:00
Paula Muir
0acc804564 (FM-7520) - Removing service pack extensions
We support SLES11 and SLES12. It is not necessary to state the SP
therefore removing the SPs.
2018-10-23 17:30:56 +01:00
Dennis Ploeger
b53a78fbe8 Support for installing JCE. Fixes MODULES-1681 (#326)
* Support for installing JCE. Fixes MODULES-1681

* Disabled oracle tests. Only to be enabled, if the other configuration options match the current java download URL provided by Oracle.
2018-10-18 10:07:37 +01:00
david22swan
390805475e Merge pull request #329 from mmoll/deb_openjdk_arm
Fix OpenJDK paths on Debian based OS with ARM
2018-10-12 16:46:41 +01:00
Michael Moll
911df2d7b7 Fix OpenJDK paths on Debian based OS with ARM 2018-10-12 16:55:50 +02:00
david22swan
61ffb4bf1d Merge pull request #330 from dodevops/MODULES-8085
Optimized code for making java::oracle atomic. Fixes MODULES-8085
2018-10-12 14:47:36 +01:00
Dennis Ploeger
bf26247f55 Fixed style violations 2018-10-12 14:27:59 +02:00
david22swan
c6acb9906c Merge pull request #322 from syseleven/MODULES-8025
(MODULES-8025) Switch default for Ubuntu 18.04 to 11
2018-10-12 11:50:36 +01:00
Dennis Ploeger
5f1b7ecea8 Optimized code for making java::oracle atomic. Fixes MODULES-8085 2018-10-12 07:43:57 +02:00
Paula Muir
615db5f7c6 Merge pull request #323 from eimlav/modules7050
(MODULES-7050) - Fix OracleJDK reinstalling on Puppet runs
2018-10-03 17:40:50 +01:00
Eimhin Laverty
89aa846909 (MODULES-7050) - Fix OracleJDK reinstalling on Puppet runs 2018-10-03 17:26:03 +01:00
Matthias Baur
60c93866b1 (MODULES-8025) Switch default for Ubuntu 18.04 to 11
This is needed to get the default Java version rollout with Ubuntu
18.04.
2018-10-01 18:08:30 +02:00
david22swan
72e042afad Merge pull request #320 from puppetlabs/release
Release merge back 3.2.0
2018-09-27 15:51:16 +01:00
Eimhin Laverty
8de3ea58a3 Merge pull request #319 from david22swan/PreRelease
(MODULES-7898) - 3.2.0 Release Prep
2018-09-27 12:09:50 +01:00
David Swan
1b56da5a27 (MODULES-7898) - 3.2.0 Release Prep 2018-09-27 12:03:18 +01:00
david22swan
380b8d749d Merge pull request #317 from puppetlabs/pdksync_MODULES-6805
pdksync - (MODULES-6805) metadata.json shows support for puppet 6
2018-09-27 11:12:15 +01:00
david22swan
7cb684c3c0 Merge pull request #318 from puppetlabs/pdksync_FM-7392_pdk_update
pdksync - (FM-7392) - Puppet 6 Testing Changes
2018-09-25 09:31:45 +01:00
Paula Muir
2926bbcfcb (FM-7392) - Puppet 6 Testing Changes 2018-09-24 17:02:26 +01:00
tphoney
a63f788394 (MODULES-6805) metadata.json shows support for puppet 6 2018-09-20 16:33:43 +01:00
olevole
728fc7e02d fix set JAVA_HOME environments on FreeBSD platform
FreeBSD do not use /etc/environment file for global variables. Instead we use two
places to set the variable:
  - /etc/profile for sh(1)
  - /etc/csh.login for csh(1) which is the default shell for FreeBSD

Fixes for MODULES-7819 issue
2018-09-20 14:22:37 +03:00
Eimhin Laverty
58669e653c Merge pull request #313 from puppetlabs/release
3.1.0 Mergeback
2018-09-10 10:01:49 +01:00
Eimhin Laverty
255406b30f Merge pull request #312 from david22swan/PreRelease
3.1.0 Pre Release
2018-09-06 16:30:26 +01:00
David Swan
a24f8f15ea 3.1.0 Pre Release 2018-09-06 16:21:26 +01:00
Eimhin Laverty
5d07f08126 Merge pull request #311 from puppetlabs/pdksync_pdksync-beaker4
pdksync - (MODULES-7658) use beaker4 in puppet-module-gems
2018-08-31 14:30:05 +01:00
tphoney
01b95d32c6 (MODULES-7658) use beaker4 in puppet-module-gems 2018-08-30 17:07:43 +01:00
Helen
3c9f98d75e Merge pull request #310 from puppetlabs/pdksync_bumping_puppet_version
pdksync - (MODULES-7705) - Bumping stdlib dependency from < 5.0.0 to < 6.0.0
2018-08-28 10:04:24 +01:00
Paula Muir
e0b0e1cd19 (MODULES-7705) - Bumping stdlib requirement to 6.0.0 2018-08-24 09:15:08 +01:00
Helen
7067aed306 Merge pull request #305 from puppetlabs/pdksync_1.7.0-0-g57412ed
pdksync - Update using 1.7.0
2018-08-22 14:56:33 +01:00
Paula Muir
cb637faf83 pdksync_1.7.0-0-g57412ed 2018-08-22 14:33:05 +01:00
Eimhin Laverty
66023e1a66 Merge pull request #304 from puppetlabs/pdksync_pdksync-beaker3
pdksync - (MODULES-7658) use beaker3 in puppet-module-gems
2018-08-21 16:22:10 +01:00
tphoney
743006a16e (MODULES-7658) use beaker3 in puppet-module-gems 2018-08-21 15:27:02 +01:00
Paula Muir
d5d69ee5ac Merge pull request #303 from puppetlabs/release
Release merge back 3.0.0
2018-08-14 10:57:03 +01:00
29 changed files with 1132 additions and 512 deletions

2
.gitattributes vendored
View File

@@ -1,5 +1,5 @@
#This file is generated by ModuleSync, do not edit.
*.rb eol=lf *.rb eol=lf
*.erb eol=lf *.erb eol=lf
*.pp eol=lf *.pp eol=lf
*.sh eol=lf *.sh eol=lf
*.epp eol=lf

2
.gitignore vendored
View File

@@ -22,3 +22,5 @@
/convert_report.txt /convert_report.txt
/update_report.txt /update_report.txt
.DS_Store .DS_Store
.envrc
/inventory.yaml

View File

@@ -22,3 +22,20 @@
/convert_report.txt /convert_report.txt
/update_report.txt /update_report.txt
.DS_Store .DS_Store
.envrc
/inventory.yaml
/appveyor.yml
/.fixtures.yml
/Gemfile
/.gitattributes
/.gitignore
/.gitlab-ci.yml
/.pdkignore
/Rakefile
/rakelib/
/.rspec
/.rubocop.yml
/.travis.yml
/.yardopts
/spec/
/.vscode/

1
.puppet-lint.rc Normal file
View File

@@ -0,0 +1 @@
--relative

View File

@@ -19,6 +19,10 @@ AllCops:
Metrics/LineLength: Metrics/LineLength:
Description: People have wide screens, use them. Description: People have wide screens, use them.
Max: 200 Max: 200
GetText/DecorateString:
Description: We don't want to decorate test output.
Exclude:
- spec/*
RSpec/BeforeAfterAll: RSpec/BeforeAfterAll:
Description: Beware of using after(:all) as it may cause state to leak between tests. Description: Beware of using after(:all) as it may cause state to leak between tests.
A necessary evil in acceptance testing. A necessary evil in acceptance testing.

View File

@@ -1,4 +1,11 @@
--- ---
.gitignore:
required:
- ---.project
.gitlab-ci.yml:
unmanaged: true
.travis.yml: .travis.yml:
docker_sets: docker_sets:
- set: docker/centos-7 - set: docker/centos-7
@@ -9,6 +16,9 @@
branches: branches:
- release - release
appveyor.yml:
delete: true
Gemfile: Gemfile:
optional: optional:
':development': ':development':
@@ -25,20 +35,7 @@ Gemfile:
- mswin - mswin
- mingw - mingw
- x64_mingw - x64_mingw
- gem: beaker
version: '~> 3.13'
from_env: BEAKER_VERSION
- gem: beaker-abs
from_env: BEAKER_ABS_VERSION
version: '~> 0.1'
- gem: beaker-pe
- gem: beaker-hostgenerator
from_env: BEAKER_HOSTGENERATOR_VERSION
- gem: beaker-rspec
from_env: BEAKER_RSPEC_VERSION
appveyor.yml: spec/spec_helper.rb:
delete: true mock_with: ':rspec'
coverage_report: true
.gitlab-ci.yml:
unmanaged: true

View File

@@ -1,53 +1,64 @@
--- ---
sudo: false
dist: trusty
language: ruby language: ruby
cache: bundler cache: bundler
before_install: before_install:
- bundle -v - bundle -v
- rm -f Gemfile.lock - rm -f Gemfile.lock
- gem update --system - gem update --system $RUBYGEMS_VERSION
- gem --version - gem --version
- bundle -v - bundle -v
script: script:
- 'bundle exec rake $CHECK' - 'bundle exec rake $CHECK'
bundler_args: --without system_tests bundler_args: --without system_tests
rvm: rvm:
- 2.4.4 - 2.5.3
env: stages:
global: - static
- BEAKER_PUPPET_COLLECTION=puppet5 PUPPET_GEM_VERSION="~> 5.0" - spec
- acceptance
-
if: tag =~ ^v\d
name: deploy
matrix: matrix:
fast_finish: true fast_finish: true
include: include:
- -
bundler_args: bundler_args:
dist: trusty dist: trusty
env: PUPPET_INSTALL_TYPE=agent BEAKER_debug=true BEAKER_PUPPET_COLLECTION=puppet5 BEAKER_set=docker/centos-7 BEAKER_TESTMODE=apply env: PUPPET_INSTALL_TYPE=agent BEAKER_debug=true BEAKER_PUPPET_COLLECTION=puppet6 BEAKER_set=docker/centos-7 BEAKER_TESTMODE=apply
rvm: 2.4.4 rvm: 2.5.3
script: bundle exec rake beaker script: bundle exec rake beaker
services: docker services: docker
stage: acceptance
sudo: required sudo: required
- -
bundler_args: bundler_args:
dist: trusty dist: trusty
env: PUPPET_INSTALL_TYPE=agent BEAKER_debug=true BEAKER_PUPPET_COLLECTION=puppet5 BEAKER_set=docker/ubuntu-14.04 BEAKER_TESTMODE=apply env: PUPPET_INSTALL_TYPE=agent BEAKER_debug=true BEAKER_PUPPET_COLLECTION=puppet6 BEAKER_set=docker/ubuntu-14.04 BEAKER_TESTMODE=apply
rvm: 2.4.4 rvm: 2.5.3
script: bundle exec rake beaker script: bundle exec rake beaker
services: docker services: docker
stage: acceptance
sudo: required sudo: required
- -
env: CHECK="syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop" env: CHECK="check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop syntax lint metadata_lint"
stage: static
- -
env: CHECK=parallel_spec env: PUPPET_GEM_VERSION="~> 5.0" CHECK=parallel_spec
rvm: 2.4.5
stage: spec
- -
env: PUPPET_GEM_VERSION="~> 4.0" CHECK=parallel_spec env: PUPPET_GEM_VERSION="~> 6.0" CHECK=parallel_spec
rvm: 2.1.9 rvm: 2.5.3
stage: spec
-
env: DEPLOY_TO_FORGE=yes
stage: deploy
branches: branches:
only: only:
- master - master
- /^v\d/ - /^v\d/
- release - release
notifications: notifications:
email: false email: false
deploy: deploy:

View File

@@ -2,6 +2,62 @@
All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org). All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org).
## [v4.0.0](https://github.com/puppetlabs/puppetlabs-java/tree/v4.0.0) (2019-05-16)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/3.3.0...v4.0.0)
### Changed
- pdksync - \(MODULES-8444\) - Raise lower Puppet bound [\#356](https://github.com/puppetlabs/puppetlabs-java/pull/356) ([david22swan](https://github.com/david22swan))
### Added
- \(FM-7921\) - Implement Puppet Strings [\#353](https://github.com/puppetlabs/puppetlabs-java/pull/353) ([david22swan](https://github.com/david22swan))
- Update default version & java 8 version from 8u192 to 8u201 [\#347](https://github.com/puppetlabs/puppetlabs-java/pull/347) ([valentinsavenko](https://github.com/valentinsavenko))
- Add ability to override basedir and package type for oracle java [\#345](https://github.com/puppetlabs/puppetlabs-java/pull/345) ([fraenki](https://github.com/fraenki))
- MODULES-8613: Add option to set a custom JCE download URL [\#344](https://github.com/puppetlabs/puppetlabs-java/pull/344) ([HielkeJ](https://github.com/HielkeJ))
### Fixed
- MODULES-8698: Fix $install\_path on CentOS with tar.gz package type [\#349](https://github.com/puppetlabs/puppetlabs-java/pull/349) ([fraenki](https://github.com/fraenki))
## [3.3.0](https://github.com/puppetlabs/puppetlabs-java/tree/3.3.0) (2019-01-17)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/3.2.0...3.3.0)
### Added
- \(MODULES-8234\) - Add SLES 15 support [\#336](https://github.com/puppetlabs/puppetlabs-java/pull/336) ([eimlav](https://github.com/eimlav))
- \(MODULES-8234\) - Upgrade Oracle Java version to 8u192 [\#334](https://github.com/puppetlabs/puppetlabs-java/pull/334) ([eimlav](https://github.com/eimlav))
- Support for installing JCE. Fixes MODULES-1681 [\#326](https://github.com/puppetlabs/puppetlabs-java/pull/326) ([dploeger](https://github.com/dploeger))
- MODULES-8044: upgrade Oracle Java 8 to 181, make it the default release [\#314](https://github.com/puppetlabs/puppetlabs-java/pull/314) ([ojongerius](https://github.com/ojongerius))
### Fixed
- pdksync - \(FM-7655\) Fix rubygems-update for ruby \< 2.3 [\#338](https://github.com/puppetlabs/puppetlabs-java/pull/338) ([tphoney](https://github.com/tphoney))
- \(FM-7520\) - Removing Solaris from the support matrix [\#335](https://github.com/puppetlabs/puppetlabs-java/pull/335) ([pmcmaw](https://github.com/pmcmaw))
- Optimized code for making java::oracle atomic. Fixes MODULES-8085 [\#330](https://github.com/puppetlabs/puppetlabs-java/pull/330) ([dploeger](https://github.com/dploeger))
- Fix OpenJDK paths on Debian based OS with ARM [\#329](https://github.com/puppetlabs/puppetlabs-java/pull/329) ([mmoll](https://github.com/mmoll))
- \(MODULES-7050\) - Fix OracleJDK reinstalling on Puppet runs [\#323](https://github.com/puppetlabs/puppetlabs-java/pull/323) ([eimlav](https://github.com/eimlav))
- \(MODULES-8025\) Switch default for Ubuntu 18.04 to 11 [\#322](https://github.com/puppetlabs/puppetlabs-java/pull/322) ([baurmatt](https://github.com/baurmatt))
- MODULES-7819 fix set JAVA\_HOME environments on FreeBSD platform [\#315](https://github.com/puppetlabs/puppetlabs-java/pull/315) ([olevole](https://github.com/olevole))
## [3.2.0](https://github.com/puppetlabs/puppetlabs-java/tree/3.2.0) (2018-09-27)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/3.1.0...3.2.0)
### Added
- pdksync - \(MODULES-6805\) metadata.json shows support for puppet 6 [\#317](https://github.com/puppetlabs/puppetlabs-java/pull/317) ([tphoney](https://github.com/tphoney))
## [3.1.0](https://github.com/puppetlabs/puppetlabs-java/tree/3.1.0) (2018-09-06)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/3.0.0...3.1.0)
### Added
- pdksync - \(MODULES-7705\) - Bumping stdlib dependency from \< 5.0.0 to \< 6.0.0 [\#310](https://github.com/puppetlabs/puppetlabs-java/pull/310) ([pmcmaw](https://github.com/pmcmaw))
## [3.0.0](https://github.com/puppetlabs/puppetlabs-java/tree/3.0.0) (2018-08-13) ## [3.0.0](https://github.com/puppetlabs/puppetlabs-java/tree/3.0.0) (2018-08-13)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/2.4.0...3.0.0) [Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/2.4.0...3.0.0)

34
Gemfile
View File

@@ -1,25 +1,18 @@
source ENV['GEM_SOURCE'] || 'https://rubygems.org' source ENV['GEM_SOURCE'] || 'https://rubygems.org'
def location_for(place_or_version, fake_version = nil) def location_for(place_or_version, fake_version = nil)
if place_or_version =~ %r{\A(git[:@][^#]*)#(.*)} git_url_regex = %r{\A(?<url>(https?|git)[:@][^#]*)(#(?<branch>.*))?}
[fake_version, { git: Regexp.last_match(1), branch: Regexp.last_match(2), require: false }].compact file_url_regex = %r{\Afile:\/\/(?<path>.*)}
elsif place_or_version =~ %r{\Afile:\/\/(.*)}
['>= 0', { path: File.expand_path(Regexp.last_match(1)), require: false }] if place_or_version && (git_url = place_or_version.match(git_url_regex))
[fake_version, { git: git_url[:url], branch: git_url[:branch], require: false }].compact
elsif place_or_version && (file_url = place_or_version.match(file_url_regex))
['>= 0', { path: File.expand_path(file_url[:path]), require: false }]
else else
[place_or_version, { require: false }] [place_or_version, { require: false }]
end end
end end
def gem_type(place_or_version)
if place_or_version =~ %r{\Agit[:@]}
:git
elsif !place_or_version.nil? && place_or_version.start_with?('file:')
:file
else
:gem
end
end
ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments
minor_version = ruby_version_segments[0..1].join('.') minor_version = ruby_version_segments[0..1].join('.')
@@ -28,7 +21,8 @@ group :development do
gem "fast_gettext", require: false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0') gem "fast_gettext", require: false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0')
gem "json_pure", '<= 2.0.1', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0') gem "json_pure", '<= 2.0.1', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0')
gem "json", '= 1.8.1', require: false if Gem::Version.new(RUBY_VERSION.dup) == Gem::Version.new('2.1.9') gem "json", '= 1.8.1', require: false if Gem::Version.new(RUBY_VERSION.dup) == Gem::Version.new('2.1.9')
gem "json", '<= 2.0.4', require: false if Gem::Version.new(RUBY_VERSION.dup) == Gem::Version.new('2.4.4') gem "json", '= 2.0.4', require: false if Gem::Requirement.create('~> 2.4.2').satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.1.0', require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "puppet-module-posix-default-r#{minor_version}", require: false, platforms: [:ruby] gem "puppet-module-posix-default-r#{minor_version}", require: false, platforms: [:ruby]
gem "puppet-module-posix-dev-r#{minor_version}", require: false, platforms: [:ruby] gem "puppet-module-posix-dev-r#{minor_version}", require: false, platforms: [:ruby]
gem "puppet-module-win-default-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw] gem "puppet-module-win-default-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw]
@@ -36,17 +30,11 @@ group :development do
gem "github_changelog_generator", require: false, git: 'https://github.com/skywinder/github-changelog-generator', ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2') gem "github_changelog_generator", require: false, git: 'https://github.com/skywinder/github-changelog-generator', ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')
end end
group :system_tests do group :system_tests do
gem "puppet-module-posix-system-r#{minor_version}", require: false, platforms: [:ruby] gem "puppet-module-posix-system-r#{minor_version}", require: false, platforms: [:ruby]
gem "puppet-module-win-system-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw] gem "puppet-module-win-system-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "beaker", *location_for(ENV['BEAKER_VERSION'] || '~> 3.13')
gem "beaker-abs", *location_for(ENV['BEAKER_ABS_VERSION'] || '~> 0.1')
gem "beaker-pe", require: false
gem "beaker-hostgenerator"
gem "beaker-rspec"
end end
puppet_version = ENV['PUPPET_GEM_VERSION'] puppet_version = ENV['PUPPET_GEM_VERSION']
puppet_type = gem_type(puppet_version)
facter_version = ENV['FACTER_GEM_VERSION'] facter_version = ENV['FACTER_GEM_VERSION']
hiera_version = ENV['HIERA_GEM_VERSION'] hiera_version = ENV['HIERA_GEM_VERSION']

View File

@@ -70,96 +70,32 @@ java::oracle { 'jdk8' :
} }
``` ```
To install Oracle Java to a non-default basedir (defaults: /usr/lib/jvm for Debian; /usr/java for RedHat):
```puppet
java::oracle { 'jdk8' :
ensure => 'present',
version_major => '8u101',
version_minor => 'b13',
java_se => 'jdk',
basedir => '/custom/java',
}
```
To ensure that a custom basedir is a directory before Oracle Java is installed (note: manage separately for custom ownership or perms):
```puppet
java::oracle { 'jdk8' :
ensure => 'present',
version_major => '8u101',
version_minor => 'b13',
java_se => 'jdk',
manage_basedir => true,
basedir => '/custom/java',
}
```
## Reference ## Reference
### Classes For information on the classes and types, see the [REFERENCE.md](https://github.com/puppetlabs/puppetlabs-java/blob/master/REFERENCE.md). For information on the facts, see below.
#### Public classes
* `java`: Installs and manages the Java package.
#### Private classes
* `java::config`: Configures the Java alternatives.
* `java::params`: Builds a hash of jdk/jre packages for all compatible operating systems.
#### Parameters
The following parameters are available in `java`:
##### `distribution`
Specifies the Java distribution to install.
Valid options: 'jdk', 'jre', or, where the platform supports alternative packages, 'sun-jdk', 'sun-jre', 'oracle-jdk', 'oracle-jre'. Default: 'jdk'.
##### `java_alternative`
Specifies the name of the Java alternative to use. If you set this parameter, *you must also set the `java_alternative_path`.*
Valid options: Run command `update-java-alternatives -l` for a list of available choices. Default: OS and distribution dependent defaults on *deb systems, undef on others.
##### `java_alternative_path`
*Required when `java_alternative` is specified.* Defines the path to the `java` command.
Valid option: String. Default: OS and distribution dependent defaults on *deb systems, undef on others.
##### `package`
Specifies the name of the Java package. This is configurable in case you want to install a non-standard Java package. If not set, the module installs the appropriate package for the `distribution` parameter and target platform. If you set `package`, the `distribution` parameter does nothing.
Valid option: String. Default: undef.
##### `version`
Sets the version of Java to install, if you want to ensure a particular version.
Valid options: 'present', 'installed', 'latest', or a string matching `/^[.+_0-9a-zA-Z:-]+$/`. Default: 'present'.
#### Public defined types
* `java::oracle`: Installs specified version of Oracle Java SE. You may install multiple versions of Oracle Jave SE on the same node using this defined type.
#### Parameters
The following parameters are available in `java::oracle`:
##### `version`
Version of Java Standard Edition (SE) to install. 6, 7 or 8.
##### `version_major`
Major version of the Java Standard Edition (SE) to install. Must be used together with `version_minor`. For example, '8u101'.
##### `version_minor`
Minor version (or build version) of the Java Standard Edition (SE) to install. Must be used together with `version_major`. For example, 'b13'.
##### `java_se`
Type of Java SE to install, jdk or jre.
##### `ensure`
Install or remove the package.
##### `oracle_url`
Official Oracle URL to download the binaries from.
##### `proxy_server`
Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
##### `proxy_type`
Proxy server type (none|http|https|ftp). (passed to archive)
##### `url`
Pass an entire URL to download the installer from rather than building the complete URL from other parameters. This will allow the module to be used even if the URLs are changed by Oracle. If this parameter is used, matching `version_major` and `version_minor` parameters must also be passed to the class.
##### `url_hash`
Directory hash used by the download.oracle.com site. This value is a 32 character string which is part of the file URL returned by the JDK download site.
### Facts ### Facts

257
REFERENCE.md Normal file
View File

@@ -0,0 +1,257 @@
# Reference
<!-- DO NOT EDIT: This document was generated by Puppet Strings -->
## Table of Contents
**Classes**
_Public Classes_
* [`java`](#java): This module manages the Java runtime package
_Private Classes_
* `java::config`:
* `java::params`: This class builds a hash of JDK/JRE packages and (for Debian)
alternatives. For wheezy/precise, we provide Oracle JDK/JRE
options, even though those are not in the package repositories.
**Defined types**
* [`java::oracle`](#javaoracle): Installs Oracle Java. By using this module you agree to the Oracle licensing
agreement.
## Classes
### java
This module manages the Java runtime package
#### Parameters
The following parameters are available in the `java` class.
##### `distribution`
Data type: `String`
The java distribution to install. Can be one of "jdk" or "jre",
or other platform-specific options where there are multiple
implementations available (eg: OpenJDK vs Oracle JDK).
Default value: 'jdk'
##### `version`
Data type: `Pattern[/present|installed|latest|^[.+_0-9a-zA-Z:~-]+$/]`
The version of java to install. By default, this module simply ensures
that java is present, and does not require a specific version.
Default value: 'present'
##### `package`
Data type: `Optional[String]`
The name of the java package. This is configurable in case a non-standard
java package is desired.
Default value: `undef`
##### `package_options`
Data type: `Optional[Array]`
Array of strings to pass installation options to the 'package' Puppet resource.
Options available depend on the 'package' provider for the target OS.
Default value: `undef`
##### `java_alternative`
Data type: `Optional[String]`
The name of the java alternative to use on Debian systems.
"update-java-alternatives -l" will show which choices are available.
If you specify a particular package, you will almost always also
want to specify which java_alternative to choose. If you set
this, you also need to set the path below.
Default value: `undef`
##### `java_alternative_path`
Data type: `Optional[String]`
The path to the "java" command on Debian systems. Since the
alternatives system makes it difficult to verify which
alternative is actually enabled, this is required to ensure the
correct JVM is enabled.
Default value: `undef`
##### `java_home`
Data type: `Optional[String]`
The path to where the JRE is installed. This will be set as an
environment variable.
Default value: `undef`
## Defined types
### java::oracle
Defined Type java::oracle
Install one or more versions of Oracle Java.
Uses the following to download the package and automatically accept
the licensing terms:
```
wget --no-cookies --no-check-certificate --header \
"Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" \
"http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz"
```
#### Parameters
The following parameters are available in the `java::oracle` defined type.
##### `ensure`
Data type: `Any`
Install or remove the package.
Default value: 'present'
##### `version`
Data type: `Any`
Version of Java to install, e.g. '7' or '8'. Default values for major and minor versions will be used.
Default value: '8'
##### `version_major`
Data type: `Any`
Major version which should be installed, e.g. '8u101'. Must be used together with version_minor.
Default value: `undef`
##### `version_minor`
Data type: `Any`
Minor version which should be installed, e.g. 'b12'. Must be used together with version_major.
Default value: `undef`
##### `java_se`
Data type: `Any`
Type of Java Standard Edition to install, jdk or jre.
Default value: 'jdk'
##### `oracle_url`
Data type: `Any`
Official Oracle URL to download binaries from.
Default value: 'http://download.oracle.com/otn-pub/java/jdk/'
##### `proxy_server`
Data type: `Any`
Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
Default value: `undef`
##### `proxy_type`
Data type: `Any`
Proxy server type (none|http|https|ftp). (passed to archive)
Default value: `undef`
##### `url`
Data type: `Any`
Full URL, including oracle_url, release_major, release_minor and package_name, to
download the Oracle java_se installer. Originally present but not used, activated
to workaround MODULES-5058.
Default value: `undef`
##### `url_hash`
Data type: `Any`
Directory hash used by the download.oracle.com site. This value is a 32 character string
which is part of the file URL returned by the JDK download site.
Default value: `undef`
##### `jce`
Data type: `Any`
Install Oracles Java Cryptographic Extensions into the JRE or JDK
Default value: `false`
##### `basedir`
Data type: `Any`
Directory under which the installation will occur. If not set, defaults to
/usr/lib/jvm for Debian and /usr/java for RedHat.
Default value: `undef`
##### `manage_basedir`
Data type: `Any`
Whether to manage the basedir directory. Defaults to false.
Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
Default value: `false`
##### `package_type`
Data type: `Any`
Type of installation package for specified version of java_se. java_se 6 comes
in a few installation package flavors and we need to account for them.
Optional forced package types: rpm, rpmbin, tar.gz
Default value: `undef`
##### `manage_symlink`
Data type: `Any`
Whether to manage a symlink that points to the installation directory. Defaults to false.
Default value: `false`
##### `symlink_name`
Data type: `Any`
The name for the optional symlink in the installation directory.
Default value: `undef`

View File

@@ -2,6 +2,7 @@ require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-syntax/tasks/puppet-syntax' require 'puppet-syntax/tasks/puppet-syntax'
require 'puppet_blacksmith/rake_tasks' if Bundler.rubygems.find_name('puppet-blacksmith').any? require 'puppet_blacksmith/rake_tasks' if Bundler.rubygems.find_name('puppet-blacksmith').any?
require 'github_changelog_generator/task' if Bundler.rubygems.find_name('github_changelog_generator').any? require 'github_changelog_generator/task' if Bundler.rubygems.find_name('github_changelog_generator').any?
require 'puppet-strings/tasks' if Bundler.rubygems.find_name('puppet-strings').any?
def changelog_user def changelog_user
return unless Rake.application.top_level_tasks.include? "changelog" return unless Rake.application.top_level_tasks.include? "changelog"
@@ -21,7 +22,7 @@ end
def changelog_future_release def changelog_future_release
return unless Rake.application.top_level_tasks.include? "changelog" return unless Rake.application.top_level_tasks.include? "changelog"
returnVal = JSON.load(File.read('metadata.json'))['version'] returnVal = "v%s" % JSON.load(File.read('metadata.json'))['version']
raise "unable to find the future_release (version) in metadata.json" if returnVal.nil? raise "unable to find the future_release (version) in metadata.json" if returnVal.nil?
puts "GitHubChangelogGenerator future_release:#{returnVal}" puts "GitHubChangelogGenerator future_release:#{returnVal}"
returnVal returnVal

View File

@@ -1,4 +1,4 @@
# On Debian systems, if alternatives are set, manually assign them. # @api private
class java::config ( ) { class java::config ( ) {
case $::osfamily { case $::osfamily {
'Debian': { 'Debian': {
@@ -44,7 +44,7 @@ class java::config ( ) {
} }
} }
} }
'FreeBSD', 'Suse': { 'Suse': {
if $java::use_java_home != undef { if $java::use_java_home != undef {
file_line { 'java-home-environment': file_line { 'java-home-environment':
path => '/etc/environment', path => '/etc/environment',
@@ -53,6 +53,20 @@ class java::config ( ) {
} }
} }
} }
'FreeBSD': {
if $java::use_java_home != undef {
file_line { 'java-home-environment-profile':
path => '/etc/profile',
line => "JAVA_HOME=${$java::use_java_home}; export JAVA_HOME",
match => 'JAVA_HOME=',
}
file_line { 'java-home-environment-cshrc':
path => '/etc/csh.login',
line => "setenv JAVA_HOME ${$java::use_java_home}",
match => 'setenv JAVA_HOME',
}
}
}
'Solaris': { 'Solaris': {
if $java::use_java_home != undef { if $java::use_java_home != undef {
file_line { 'java-home-environment': file_line { 'java-home-environment':

View File

@@ -1,49 +1,40 @@
# Class: java # @summary
# This module manages the Java runtime package
# #
# This module manages the Java runtime package # @param distribution
#
# Parameters:
#
# [*distribution*]
# The java distribution to install. Can be one of "jdk" or "jre", # The java distribution to install. Can be one of "jdk" or "jre",
# or other platform-specific options where there are multiple # or other platform-specific options where there are multiple
# implementations available (eg: OpenJDK vs Oracle JDK). # implementations available (eg: OpenJDK vs Oracle JDK).
# #
# [*version*] # @param version
# The version of java to install. By default, this module simply ensures # The version of java to install. By default, this module simply ensures
# that java is present, and does not require a specific version. # that java is present, and does not require a specific version.
# #
# [*package*] # @param package
# The name of the java package. This is configurable in case a non-standard # The name of the java package. This is configurable in case a non-standard
# java package is desired. # java package is desired.
# #
# [*package_options*] # @param package_options
# Array of strings to pass installation options to the 'package' Puppet resource. # Array of strings to pass installation options to the 'package' Puppet resource.
# Options available depend on the 'package' provider for the target OS. # Options available depend on the 'package' provider for the target OS.
# #
# [*java_alternative*] # @param java_alternative
# The name of the java alternative to use on Debian systems. # The name of the java alternative to use on Debian systems.
# "update-java-alternatives -l" will show which choices are available. # "update-java-alternatives -l" will show which choices are available.
# If you specify a particular package, you will almost always also # If you specify a particular package, you will almost always also
# want to specify which java_alternative to choose. If you set # want to specify which java_alternative to choose. If you set
# this, you also need to set the path below. # this, you also need to set the path below.
# #
# [*java_alternative_path*] # @param java_alternative_path
# The path to the "java" command on Debian systems. Since the # The path to the "java" command on Debian systems. Since the
# alternatives system makes it difficult to verify which # alternatives system makes it difficult to verify which
# alternative is actually enabled, this is required to ensure the # alternative is actually enabled, this is required to ensure the
# correct JVM is enabled. # correct JVM is enabled.
# #
# [*java_home*] # @param java_home
# The path to where the JRE is installed. This will be set as an # The path to where the JRE is installed. This will be set as an
# environment variable. # environment variable.
# #
# Actions:
#
# Requires:
#
# Sample Usage:
#
class java( class java(
String $distribution = 'jdk', String $distribution = 'jdk',
Pattern[/present|installed|latest|^[.+_0-9a-zA-Z:~-]+$/] $version = 'present', Pattern[/present|installed|latest|^[.+_0-9a-zA-Z:~-]+$/] $version = 'present',

View File

@@ -1,106 +1,95 @@
# Defined Type java::oracle # Defined Type java::oracle
# #
# Description # @summary
# Installs Oracle Java. By using this module you agree to the Oracle licensing # Installs Oracle Java. By using this module you agree to the Oracle licensing
# agreement. # agreement.
# #
# Install one or more versions of Oracle Java. # Install one or more versions of Oracle Java.
# #
# uses the following to download the package and automatically accept # Uses the following to download the package and automatically accept
# the licensing terms. # the licensing terms:
#```
# wget --no-cookies --no-check-certificate --header \ # wget --no-cookies --no-check-certificate --header \
# "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" \ # "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" \
# "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz" # "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz"
#```
# #
# Parameters # @param ensure
# [*version*] # Install or remove the package.
# Version of Java to install, e.g. '7' or '8'. Default values for major and minor
# versions will be used.
# #
# [*version_major*] # @param version
# Major version which should be installed, e.g. '8u101'. Must be used together with # Version of Java to install, e.g. '7' or '8'. Default values for major and minor versions will be used.
# version_minor.
# #
# [*version_minor*] # @param version_major
# Minor version which should be installed, e.g. 'b12'. Must be used together with # Major version which should be installed, e.g. '8u101'. Must be used together with version_minor.
# version_major.
# #
# [*java_se*] # @param version_minor
# Type of Java Standard Edition to install, jdk or jre. # Minor version which should be installed, e.g. 'b12'. Must be used together with version_major.
# #
# [*ensure*] # @param java_se
# Install or remove the package. # Type of Java Standard Edition to install, jdk or jre.
# #
# [*oracle_url*] # @param oracle_url
# Official Oracle URL to download binaries from. # Official Oracle URL to download binaries from.
# #
# [*proxy_server*] # @param proxy_server
# Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive) # Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
# #
# [*proxy_type*] # @param proxy_type
# Proxy server type (none|http|https|ftp). (passed to archive) # Proxy server type (none|http|https|ftp). (passed to archive)
# #
# Variables # @param url
# [*release_major*] # Full URL, including oracle_url, release_major, release_minor and package_name, to
# Major version release number for java_se. Used to construct download URL. # download the Oracle java_se installer. Originally present but not used, activated
# to workaround MODULES-5058.
# #
# [*release_minor*] # @param url_hash
# Minor version release number for java_se. Used to construct download URL. # Directory hash used by the download.oracle.com site. This value is a 32 character string
# which is part of the file URL returned by the JDK download site.
# #
# [*install_path*] # @param jce
# Base install path for specified version of java_se. Used to determine if java_se # Install Oracles Java Cryptographic Extensions into the JRE or JDK
# has already been installed.
# #
# [*package_type*] # @param jce_url
# Type of installation package for specified version of java_se. java_se 6 comes # Full URL to the jce zip file
# in a few installation package flavors and we need to account for them.
# #
# [*os*] # @param basedir
# Oracle java_se OS type. # Directory under which the installation will occur. If not set, defaults to
# /usr/lib/jvm for Debian and /usr/java for RedHat.
# #
# [*destination*] # @param manage_basedir
# Destination directory to save java_se installer to. Usually /tmp on Linux and # Whether to manage the basedir directory. Defaults to false.
# C:\TEMP on Windows. # Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
# #
# [*creates_path*] # @param package_type
# Fully qualified path to java_se after it is installed. Used to determine if # Type of installation package for specified version of java_se. java_se 6 comes
# java_se is already installed. # in a few installation package flavors and we need to account for them.
# Optional forced package types: rpm, rpmbin, tar.gz
# #
# [*arch*] # @param manage_symlink
# Oracle java_se architecture type. # Whether to manage a symlink that points to the installation directory. Defaults to false.
# #
# [*package_name*] # @param symlink_name
# Name of the java_se installation package to download from Oracle's website. # The name for the optional symlink in the installation directory.
#
# [*install_command*]
# Installation command used to install Oracle java_se. Installation commands
# differ by package_type. 'bin' types are installed via shell command. 'rpmbin'
# types have the rpms extracted and then forcibly installed. 'rpm' types are
# forcibly installed.
#
# [*url*]
# Full URL, including oracle_url, release_major, release_minor and package_name, to
# download the Oracle java_se installer. Originally present but not used, activated
# to workaround MODULES-5058
#
# [*url_hash*]
# Directory hash used by the download.oracle.com site. This value is a 32 character string
# which is part of the file URL returned by the JDK download site.
#
# ### Author
# mike@marseglia.org
# #
define java::oracle ( define java::oracle (
$ensure = 'present', $ensure = 'present',
$version = '8', $version = '8',
$version_major = undef, $version_major = undef,
$version_minor = undef, $version_minor = undef,
$java_se = 'jdk', $java_se = 'jdk',
$oracle_url = 'http://download.oracle.com/otn-pub/java/jdk/', $oracle_url = 'http://download.oracle.com/otn-pub/java/jdk/',
$proxy_server = undef, $proxy_server = undef,
$proxy_type = undef, $proxy_type = undef,
$url = undef, $url = undef,
$url_hash = undef, $url_hash = undef,
$jce = false,
$jce_url = undef,
$basedir = undef,
$manage_basedir = false,
$package_type = undef,
$manage_symlink = false,
$symlink_name = undef,
) { ) {
# archive module is used to download the java package # archive module is used to download the java package
@@ -111,20 +100,44 @@ define java::oracle (
fail('Java SE must be either jre or jdk.') fail('Java SE must be either jre or jdk.')
} }
if $jce {
if $jce_url {
$jce_download = $jce_url
$cookie = undef
} else {
$jce_download = $version ? {
'8' => 'http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip',
'7' => 'http://download.oracle.com/otn-pub/java/jce/7/UnlimitedJCEPolicyJDK7.zip',
'6' => 'http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip',
default => undef
}
$cookie = 'gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie'
}
}
# determine Oracle Java major and minor version, and installation path # determine Oracle Java major and minor version, and installation path
if $version_major and $version_minor { if $version_major and $version_minor {
$label = $version_major
$release_major = $version_major $release_major = $version_major
$release_minor = $version_minor $release_minor = $version_minor
$release_hash = $url_hash $release_hash = $url_hash
if $release_major =~ /(\d+)u(\d+)/ { if $release_major =~ /(\d+)u(\d+)/ {
$install_path = "${java_se}1.${1}.0_${2}" # Required for CentOS systems where Java8 update number is >= 171 to ensure
# the package is visible to Puppet. This is only true for installations that
# don't use the tar.gz package type.
if $facts['os']['family'] == 'RedHat' and $2 >= '171' and $package_type != 'tar.gz' {
$install_path = "${java_se}1.${1}.0_${2}-amd64"
} else {
$install_path = "${java_se}1.${1}.0_${2}"
}
} else { } else {
$install_path = "${java_se}${release_major}${release_minor}" $install_path = "${java_se}${release_major}${release_minor}"
} }
} else { } else {
# use default versions if no specific major and minor version parameters are provided # use default versions if no specific major and minor version parameters are provided
$label = $version
case $version { case $version {
'6' : { '6' : {
$release_major = '6u45' $release_major = '6u45'
@@ -139,16 +152,16 @@ define java::oracle (
$release_hash = undef $release_hash = undef
} }
'8' : { '8' : {
$release_major = '8u131' $release_major = '8u201'
$release_minor = 'b11' $release_minor = 'b09'
$install_path = "${java_se}1.8.0_131" $install_path = "${java_se}1.8.0_201"
$release_hash = 'd54c1d3a095b4ff2b6607d096fa80163' $release_hash = '42970487e3af4f5aa5bca3f542482c60'
} }
default : { default : {
$release_major = '8u131' $release_major = '8u201'
$release_minor = 'b11' $release_minor = 'b09'
$install_path = "${java_se}1.8.0_131" $install_path = "${java_se}1.8.0_201"
$release_hash = 'd54c1d3a095b4ff2b6607d096fa80163' $release_hash = '42970487e3af4f5aa5bca3f542482c60'
} }
} }
} }
@@ -159,21 +172,36 @@ define java::oracle (
case $facts['os']['family'] { case $facts['os']['family'] {
'RedHat', 'Amazon' : { 'RedHat', 'Amazon' : {
# Oracle Java 6 comes in a special rpmbin format # Oracle Java 6 comes in a special rpmbin format
if $version == '6' { if $package_type {
$package_type = 'rpmbin' $_package_type = $package_type
} elsif $version == '6' {
$_package_type = 'rpmbin'
} else { } else {
$package_type = 'rpm' $_package_type = 'rpm'
}
if $basedir {
$_basedir = $basedir
} else {
$_basedir = '/usr/java'
} }
$creates_path = "/usr/java/${install_path}"
} }
'Debian' : { 'Debian' : {
$package_type = 'tar.gz' if $package_type {
$creates_path = "/usr/lib/jvm/${install_path}" $_package_type = $package_type
} else {
$_package_type = 'tar.gz'
}
if $basedir {
$_basedir = $basedir
} else {
$_basedir = '/usr/lib/jvm'
}
} }
default : { default : {
fail ("unsupported platform ${$facts['os']['name']}") } fail ("unsupported platform ${$facts['os']['name']}") }
} }
$creates_path = "${_basedir}/${install_path}"
$os = 'linux' $os = 'linux'
$destination_dir = '/tmp/' $destination_dir = '/tmp/'
} }
@@ -181,13 +209,23 @@ define java::oracle (
fail ( "unsupported platform ${$facts['kernel']}" ) } fail ( "unsupported platform ${$facts['kernel']}" ) }
} }
# Install required unzip packages for jce
if $jce {
ensure_resource('package', 'unzip', { 'ensure' => 'present' })
}
# set java architecture nomenclature # set java architecture nomenclature
case $facts['os']['architecture'] { $os_architecture = $facts['os']['architecture'] ? {
undef => $facts['architecture'],
default => $facts['os']['architecture']
}
case $os_architecture {
'i386' : { $arch = 'i586' } 'i386' : { $arch = 'i586' }
'x86_64' : { $arch = 'x64' } 'x86_64' : { $arch = 'x64' }
'amd64' : { $arch = 'x64' } 'amd64' : { $arch = 'x64' }
default : { default : {
fail ("unsupported platform ${$facts['os']['architecture']}") fail ("unsupported platform ${$os_architecture}")
} }
} }
@@ -198,7 +236,7 @@ define java::oracle (
# http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586-rpm.bin # http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586-rpm.bin
# http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586.bin # http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586.bin
# package name to download from Oracle's website # package name to download from Oracle's website
case $package_type { case $_package_type {
'bin' : { 'bin' : {
$package_name = "${java_se}-${release_major}-${os}-${arch}.bin" $package_name = "${java_se}-${release_major}-${os}-${arch}.bin"
} }
@@ -231,7 +269,7 @@ define java::oracle (
$destination = "${destination_dir}${package_name}" $destination = "${destination_dir}${package_name}"
notice ("Destination is ${destination}") notice ("Destination is ${destination}")
case $package_type { case $_package_type {
'bin' : { 'bin' : {
$install_command = "sh ${destination}" $install_command = "sh ${destination}"
} }
@@ -242,7 +280,7 @@ define java::oracle (
$install_command = "rpm --force -iv ${destination}" $install_command = "rpm --force -iv ${destination}"
} }
'tar.gz' : { 'tar.gz' : {
$install_command = "tar -zxf ${destination} -C /usr/lib/jvm" $install_command = "tar -zxf ${destination} -C ${_basedir}"
} }
default : { default : {
$install_command = "rpm -iv ${destination}" $install_command = "rpm -iv ${destination}"
@@ -263,20 +301,57 @@ define java::oracle (
} }
case $facts['kernel'] { case $facts['kernel'] {
'Linux' : { 'Linux' : {
exec { "Install Oracle java_se ${java_se} ${version}" : case $facts['os']['family'] {
'Debian' : {
ensure_resource('file', $_basedir, {
ensure => directory,
})
$install_requires = [Archive[$destination], File[$_basedir]]
}
default : {
$install_requires = [Archive[$destination]]
}
}
if $manage_basedir {
ensure_resource('file', $_basedir, {'ensure' => 'directory', 'before' => Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"]})
}
exec { "Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}" :
path => '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin', path => '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin',
command => $install_command, command => $install_command,
creates => $creates_path, creates => $creates_path,
require => Archive[$destination] require => $install_requires
} }
case $facts['os']['family'] {
'Debian' : { if ($manage_symlink and $symlink_name) {
file{'/usr/lib/jvm': file { "${_basedir}/${symlink_name}":
ensure => directory, ensure => link,
before => Exec["Install Oracle java_se ${java_se} ${version}"] target => $creates_path,
} require => Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"]
}
}
if ($jce and $jce_download != undef) {
$jce_path = $java_se ? {
'jre' => "${creates_path}/lib/security",
'jdk' => "${creates_path}/jre/lib/security"
}
archive { "/tmp/jce-${version}.zip":
source => $jce_download,
cookie => $cookie,
extract => true,
extract_path => $jce_path,
extract_flags => '-oj',
creates => "${jce_path}/US_export_policy.jar",
cleanup => false,
proxy_server => $proxy_server,
proxy_type => $proxy_type,
require => [
Package['unzip'],
Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"]
]
} }
default : { }
} }
} }
default : { default : {
@@ -288,5 +363,4 @@ define java::oracle (
notice ("Action ${ensure} not supported.") notice ("Action ${ensure} not supported.")
} }
} }
}
}

View File

@@ -1,15 +1,9 @@
# Class: java::params # @summary
# This class builds a hash of JDK/JRE packages and (for Debian)
# alternatives. For wheezy/precise, we provide Oracle JDK/JRE
# options, even though those are not in the package repositories.
# #
# This class builds a hash of JDK/JRE packages and (for Debian) # @api private
# alternatives. For wheezy/precise, we provide Oracle JDK/JRE
# options, even though those are not in the package repositories.
#
# For more info on how to package Oracle JDK/JRE, see the Debian wiki:
# http://wiki.debian.org/JavaPackage
#
# Because the alternatives system makes it very difficult to tell
# which Java alternative is enabled, we hard code the path to bin/java
# for the config class to test if it is enabled.
class java::params { class java::params {
case $::osfamily { case $::osfamily {
@@ -74,18 +68,23 @@ class java::params {
'amd64' => 'x64', 'amd64' => 'x64',
default => $::architecture default => $::architecture
} }
$openjdk_architecture = $::architecture ? {
'aarch64' => 'arm64',
'armv7l' => 'armhf',
default => $::architecture
}
case $::lsbdistcodename { case $::lsbdistcodename {
'lenny', 'squeeze', 'lucid', 'natty': { 'lenny', 'squeeze', 'lucid', 'natty': {
$java = { $java = {
'jdk' => { 'jdk' => {
'package' => 'openjdk-6-jdk', 'package' => 'openjdk-6-jdk',
'alternative' => "java-6-openjdk-${::architecture}", 'alternative' => "java-6-openjdk-${openjdk_architecture}",
'alternative_path' => '/usr/lib/jvm/java-6-openjdk/jre/bin/java', 'alternative_path' => '/usr/lib/jvm/java-6-openjdk/jre/bin/java',
'java_home' => '/usr/lib/jvm/java-6-openjdk/jre/', 'java_home' => '/usr/lib/jvm/java-6-openjdk/jre/',
}, },
'jre' => { 'jre' => {
'package' => 'openjdk-6-jre-headless', 'package' => 'openjdk-6-jre-headless',
'alternative' => "java-6-openjdk-${::architecture}", 'alternative' => "java-6-openjdk-${openjdk_architecture}",
'alternative_path' => '/usr/lib/jvm/java-6-openjdk/jre/bin/java', 'alternative_path' => '/usr/lib/jvm/java-6-openjdk/jre/bin/java',
'java_home' => '/usr/lib/jvm/java-6-openjdk/jre/', 'java_home' => '/usr/lib/jvm/java-6-openjdk/jre/',
}, },
@@ -107,15 +106,15 @@ class java::params {
$java = { $java = {
'jdk' => { 'jdk' => {
'package' => 'openjdk-7-jdk', 'package' => 'openjdk-7-jdk',
'alternative' => "java-1.7.0-openjdk-${::architecture}", 'alternative' => "java-1.7.0-openjdk-${openjdk_architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.7.0-openjdk-${::architecture}/bin/java", 'alternative_path' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.7.0-openjdk-${::architecture}/", 'java_home' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/",
}, },
'jre' => { 'jre' => {
'package' => 'openjdk-7-jre-headless', 'package' => 'openjdk-7-jre-headless',
'alternative' => "java-1.7.0-openjdk-${::architecture}", 'alternative' => "java-1.7.0-openjdk-${::architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.7.0-openjdk-${::architecture}/bin/java", 'alternative_path' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.7.0-openjdk-${::architecture}/", 'java_home' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/",
}, },
'oracle-jre' => { 'oracle-jre' => {
'package' => 'oracle-j2re1.7', 'package' => 'oracle-j2re1.7',
@@ -155,19 +154,35 @@ class java::params {
}, },
} }
} }
'stretch', 'vivid', 'wily', 'xenial', 'yakkety', 'zesty', 'artful', 'bionic': { 'stretch', 'vivid', 'wily', 'xenial', 'yakkety', 'zesty', 'artful': {
$java = { $java = {
'jdk' => { 'jdk' => {
'package' => 'openjdk-8-jdk', 'package' => 'openjdk-8-jdk',
'alternative' => "java-1.8.0-openjdk-${::architecture}", 'alternative' => "java-1.8.0-openjdk-${openjdk_architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.8.0-openjdk-${::architecture}/bin/java", 'alternative_path' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.8.0-openjdk-${::architecture}/", 'java_home' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/",
}, },
'jre' => { 'jre' => {
'package' => 'openjdk-8-jre-headless', 'package' => 'openjdk-8-jre-headless',
'alternative' => "java-1.8.0-openjdk-${::architecture}", 'alternative' => "java-1.8.0-openjdk-${openjdk_architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.8.0-openjdk-${::architecture}/bin/java", 'alternative_path' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.8.0-openjdk-${::architecture}/", 'java_home' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/",
}
}
}
'bionic': {
$java = {
'jdk' => {
'package' => 'openjdk-11-jdk',
'alternative' => "java-1.11.0-openjdk-${openjdk_architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.11.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.11.0-openjdk-${openjdk_architecture}/",
},
'jre' => {
'package' => 'openjdk-11-jre-headless',
'alternative' => "java-1.11.0-openjdk-${openjdk_architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.11.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.11.0-openjdk-${openjdk_architecture}/",
} }
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "puppetlabs-java", "name": "puppetlabs-java",
"version": "3.0.0", "version": "4.0.0",
"author": "puppetlabs", "author": "puppetlabs",
"summary": "Installs the correct Java package on various platforms.", "summary": "Installs the correct Java package on various platforms.",
"license": "Apache-2.0", "license": "Apache-2.0",
@@ -10,7 +10,7 @@
"dependencies": [ "dependencies": [
{ {
"name": "puppetlabs/stdlib", "name": "puppetlabs/stdlib",
"version_requirement": ">= 4.13.1 < 5.0.0" "version_requirement": ">= 4.13.1 < 7.0.0"
}, },
{ {
"name": "puppet/archive", "name": "puppet/archive",
@@ -65,29 +65,19 @@
{ {
"operatingsystem": "SLES", "operatingsystem": "SLES",
"operatingsystemrelease": [ "operatingsystemrelease": [
"11 SP1", "11",
"11 SP2",
"11 SP3",
"11 SP4",
"12", "12",
"12 SP1", "15"
"12 SP2"
]
},
{
"operatingsystem": "Solaris",
"operatingsystemrelease": [
"11"
] ]
} }
], ],
"requirements": [ "requirements": [
{ {
"name": "puppet", "name": "puppet",
"version_requirement": ">= 4.7.0 < 6.0.0" "version_requirement": ">= 5.5.10 < 7.0.0"
} }
], ],
"template-url": "https://github.com/puppetlabs/pdk-templates", "template-url": "https://github.com/puppetlabs/pdk-templates#master",
"template-ref": "1.6.1-0-g6b0d497", "template-ref": "heads/master-0-gf778803",
"pdk-version": "1.6.1" "pdk-version": "1.10.0"
} }

View File

@@ -1,30 +1,6 @@
require 'spec_helper_acceptance' require 'spec_helper_acceptance'
# RedHat, CentOS, Scientific, Oracle prior to 5.0 : Sun Java JDK/JRE 1.6 include Unix::File
# RedHat, CentOS, Scientific, Oracle 5.0 < x < 6.3 : OpenJDK Java JDK/JRE 1.6
# RedHat, CentOS, Scientific, Oracle after 6.3 : OpenJDK Java JDK/JRE 1.7
# Debian Jesse & Ubuntu 14.04 : OpenJDK Java JDK/JRE 1.7 or Oracle Java JDK/JRE 1.6
# Solaris (what versions?) : Java JDK/JRE 1.7
# OpenSuSE : OpenJDK Java JDK/JRE 1.7
# SLES : IBM Java JDK/JRE 1.6
# C14677
# C14678
# C14679
# C14680
# C14681
# C14682
# C14684
# C14687
# C14692
# C14696
# C14697
# C14700 check on solaris 11
# C14701 check on sles 11
# C14703
# C14723 Where is oracle linux 5?
# C14724 Where is oracle linux 5?
# C14771 Where is redhat 7? Centos 7?
java_class_jre = "class { 'java':\n"\ java_class_jre = "class { 'java':\n"\
" distribution => 'jre',\n"\ " distribution => 'jre',\n"\
@@ -54,10 +30,6 @@ oracle_jdk = "class { 'java':\n"\
" distribution => 'oracle-jdk',\n"\ " distribution => 'oracle-jdk',\n"\
'}' '}'
incorrect_version = "class { 'java':\n"\
" version => '14.5',\n"\
'}'
blank_version = "class { 'java':\n"\ blank_version = "class { 'java':\n"\
" version => '',\n"\ " version => '',\n"\
'}' '}'
@@ -79,23 +51,72 @@ bogus_alternative = "class { 'java':\n"\
" java_alternative_path => '/whatever',\n"\ " java_alternative_path => '/whatever',\n"\
'}' '}'
# Oracle installs are disabled by default, because the links to valid oracle installations
# change often. Look the parameters up from the Oracle download URLs at https://java.oracle.com and
# enable the tests:
oracle_enabled = false
oracle_version_major = '8'
oracle_version_minor = '201'
oracle_version_build = '09'
oracle_hash = '42970487e3af4f5aa5bca3f542482c60'
install_oracle_jdk_jre = <<EOL
java::oracle {
'test_oracle_jre':
version => '#{oracle_version_major}',
version_major => '#{oracle_version_major}u#{oracle_version_minor}',
version_minor => 'b#{oracle_version_build}',
url_hash => '#{oracle_hash}',
java_se => 'jre',
}
java::oracle {
'test_oracle_jdk':
version => '#{oracle_version_major}',
version_major => '#{oracle_version_major}u#{oracle_version_minor}',
version_minor => 'b#{oracle_version_build}',
url_hash => '#{oracle_hash}',
java_se => 'jdk',
}
EOL
install_oracle_jre_jce = <<EOL
java::oracle {
'test_oracle_jre':
version => '#{oracle_version_major}',
version_major => '#{oracle_version_major}u#{oracle_version_minor}',
version_minor => 'b#{oracle_version_build}',
url_hash => '#{oracle_hash}',
java_se => 'jre',
jce => true,
}
EOL
install_oracle_jdk_jce = <<EOL
java::oracle {
'test_oracle_jdk':
version => '#{oracle_version_major}',
version_major => '#{oracle_version_major}u#{oracle_version_minor}',
version_minor => 'b#{oracle_version_build}',
url_hash => '#{oracle_hash}',
java_se => 'jdk',
jce => true,
}
EOL
context 'installing java jre', unless: UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'installing java jre', unless: UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
it 'installs jre' do it 'installs jre' do
apply_manifest(java_class_jre, catch_failures: true) idempotent_apply(default, java_class_jre)
apply_manifest(java_class_jre, catch_changes: true)
end end
end end
context 'installing java jdk', unless: UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'installing java jdk', unless: UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
it 'installs jdk' do it 'installs jdk' do
apply_manifest(java_class, catch_failures: true) idempotent_apply(default, java_class)
apply_manifest(java_class, catch_changes: true)
end end
end end
# C14704
# C14705
# C15006
context 'oracle', if: ( context 'oracle', if: (
(fact('operatingsystem') == 'Ubuntu') && fact('operatingsystemrelease').match(%r{^14\.04}) (fact('operatingsystem') == 'Ubuntu') && fact('operatingsystemrelease').match(%r{^14\.04})
) do ) do
@@ -116,37 +137,22 @@ context 'oracle', if: (
end end
context 'with failure cases' do context 'with failure cases' do
# C14711
# SLES 10 returns an exit code of 0 on zypper failure
unless fact('operatingsystem') == 'SLES' && fact('operatingsystemrelease') < '11'
it 'fails to install java with an incorrect version' do
apply_manifest(incorrect_version, expect_failures: true)
end
end
# C14712
it 'fails to install java with a blank version' do it 'fails to install java with a blank version' do
apply_manifest(blank_version, expect_failures: true) apply_manifest(blank_version, expect_failures: true)
end end
# C14713
it 'fails to install java with an incorrect distribution' do it 'fails to install java with an incorrect distribution' do
apply_manifest(incorrect_distro, expect_failures: true) apply_manifest(incorrect_distro, expect_failures: true)
end end
# C14714
it 'fails to install java with a blank distribution' do it 'fails to install java with a blank distribution' do
apply_manifest(blank_distro, expect_failures: true) apply_manifest(blank_distro, expect_failures: true)
end end
# C14715
it 'fails to install java with an incorrect package' do it 'fails to install java with an incorrect package' do
apply_manifest(incorrect_package, expect_failures: true) apply_manifest(incorrect_package, expect_failures: true)
end end
# C14717
# C14719
# C14725
it 'fails on debian or RHEL when passed fake java_alternative and path' do it 'fails on debian or RHEL when passed fake java_alternative and path' do
if fact('osfamily') == 'Debian' || fact('osfamily') == 'RedHat' if fact('osfamily') == 'Debian' || fact('osfamily') == 'RedHat'
apply_manifest(bogus_alternative, expect_failures: true) apply_manifest(bogus_alternative, expect_failures: true)
@@ -155,3 +161,33 @@ context 'with failure cases' do
end end
end end
end end
context 'java::oracle', if: oracle_enabled, unless: UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
let(:install_path) do
(fact('osfamily') == 'RedHat') ? '/usr/java' : '/usr/lib/jvm'
end
let(:version_suffix) do
(fact('osfamily') == 'RedHat') ? '-amd64' : ''
end
it 'installs oracle jdk and jre' do
idempotent_apply(default, install_oracle_jdk_jre)
jdk_result = shell("test ! -e #{install_path}/jdk1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/jre/lib/security/local_policy.jar")
jre_result = shell("test ! -e #{install_path}/jre1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/lib/security/local_policy.jar")
expect(jdk_result.exit_code).to eq(0)
expect(jre_result.exit_code).to eq(0)
end
it 'installs oracle jdk with jce' do
idempotent_apply(default, install_oracle_jdk_jce)
result = shell("test -e #{install_path}/jdk1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/jre/lib/security/local_policy.jar")
expect(result.exit_code).to eq(0)
end
it 'installs oracle jre with jce' do
idempotent_apply(default, install_oracle_jre_jce)
result = shell("test -e #{install_path}/jre1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/lib/security/local_policy.jar")
expect(result.exit_code).to eq(0)
end
end

View File

@@ -53,34 +53,36 @@ describe 'java', type: :class do
it { is_expected.not_to contain_exec('update-java-alternatives') } it { is_expected.not_to contain_exec('update-java-alternatives') }
end end
context 'when select jdk for Ubuntu Vivid (15.04)' do context 'when select jdk for Ubuntu Trusty (14.04)' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'vivid', operatingsystemrelease: '15.04', architecture: 'amd64' } } let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'trusty', operatingsystemrelease: '14.04', architecture: 'amd64' } }
let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-7-jdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/') }
end
context 'when select jre for Ubuntu Trusty (14.04)' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'trusty', operatingsystemrelease: '14.04', architecture: 'amd64' } }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('openjdk-7-jre-headless') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/') }
end
context 'when select jdk for Ubuntu xenial (16.04) on ARM' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'xenial', operatingsystemrelease: '16.04', architecture: 'armv7l' } }
let(:params) { { 'distribution' => 'jdk' } } let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') } it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-armhf/') }
end end
context 'when select jre for Ubuntu Vivid (15.04)' do context 'when select jdk for Ubuntu xenial (16.04) on ARM64' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'vivid', operatingsystemrelease: '15.04', architecture: 'amd64' } } let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'xenial', operatingsystemrelease: '16.04', architecture: 'aarch64' } }
let(:params) { { 'distribution' => 'jre' } } let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-8-jre-headless') } it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-arm64/') }
end
context 'when select openjdk for Amazon Linux' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Amazon', operatingsystemrelease: '3.4.43-43.43.amzn1.x86_64', architecture: 'x86_64' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-x86_64/') }
end
context 'when select passed value for Amazon Linux' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Amazon', operatingsystemrelease: '5.3.4.43-43.43.amzn1.x86_64', architecture: 'x86_64' } }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
end end
context 'when select openjdk for Oracle Linux' do context 'when select openjdk for Oracle Linux' do
@@ -153,20 +155,6 @@ describe 'java', type: :class do
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/') }
end end
context 'when select jdk for OpenBSD' do
let(:facts) { { osfamily: 'OpenBSD', architecture: 'x86_64' } }
it { is_expected.to contain_package('java').with_name('jdk') }
it { is_expected.not_to contain_file_line('java-home-environment') }
end
context 'when select jre for OpenBSD' do
let(:facts) { { osfamily: 'OpenBSD', architecture: 'x86_64' } }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('jre') }
end
describe 'custom java package' do describe 'custom java package' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Debian', lsbdistcodename: 'jessie', operatingsystemrelease: '8.6', architecture: 'amd64' } } let(:facts) { { osfamily: 'Debian', operatingsystem: 'Debian', lsbdistcodename: 'jessie', operatingsystemrelease: '8.6', architecture: 'amd64' } }
@@ -202,31 +190,26 @@ describe 'java', type: :class do
describe 'incompatible OSs' do describe 'incompatible OSs' do
[ [
{ {
# C14706
osfamily: 'windows', osfamily: 'windows',
operatingsystem: 'windows', operatingsystem: 'windows',
operatingsystemrelease: '8.1', operatingsystemrelease: '8.1',
}, },
{ {
# C14707
osfamily: 'Darwin', osfamily: 'Darwin',
operatingsystem: 'Darwin', operatingsystem: 'Darwin',
operatingsystemrelease: '13.3.0', operatingsystemrelease: '13.3.0',
}, },
{ {
# C14708
osfamily: 'AIX', osfamily: 'AIX',
operatingsystem: 'AIX', operatingsystem: 'AIX',
operatingsystemrelease: '7100-02-00-000', operatingsystemrelease: '7100-02-00-000',
}, },
{ {
# C14708
osfamily: 'AIX', osfamily: 'AIX',
operatingsystem: 'AIX', operatingsystem: 'AIX',
operatingsystemrelease: '6100-07-04-1216', operatingsystemrelease: '6100-07-04-1216',
}, },
{ {
# C14708
osfamily: 'AIX', osfamily: 'AIX',
operatingsystem: 'AIX', operatingsystem: 'AIX',
operatingsystemrelease: '5300-12-01-1016', operatingsystemrelease: '5300-12-01-1016',

View File

@@ -2,7 +2,6 @@
# #
# Facts specified here will override the values provided by rspec-puppet-facts. # Facts specified here will override the values provided by rspec-puppet-facts.
--- ---
concat_basedir: "/tmp"
ipaddress: "172.16.254.254" ipaddress: "172.16.254.254"
is_pe: false is_pe: false
macaddress: "AA:AA:AA:AA:AA:AA" macaddress: "AA:AA:AA:AA:AA:AA"

View File

@@ -1,6 +1,6 @@
require 'spec_helper' require 'spec_helper'
oracle_url = 'http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz' oracle_url = 'http://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz'
describe 'java::oracle', type: :define do describe 'java::oracle', type: :define do
context 'with CentOS 64-bit' do context 'with CentOS 64-bit' do
@@ -11,8 +11,8 @@ describe 'java::oracle', type: :define do
let(:title) { 'jdk6' } let(:title) { 'jdk6' }
it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-x64-rpm.bin') } it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-x64-rpm.bin') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6').with_command('sh /tmp/jdk-6u45-linux-x64-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jdk*.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('sh /tmp/jdk-6u45-linux-x64-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jdk*.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6').that_requires('Archive[/tmp/jdk-6u45-linux-x64-rpm.bin]') } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-x64-rpm.bin]') }
end end
context 'when Oracle Java SE 7 JDK' do context 'when Oracle Java SE 7 JDK' do
@@ -20,17 +20,17 @@ describe 'java::oracle', type: :define do
let(:title) { 'jdk7' } let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-x64.rpm') } it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7').with_command('rpm --force -iv /tmp/jdk-7u80-linux-x64.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').with_command('rpm --force -iv /tmp/jdk-7u80-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7').that_requires('Archive[/tmp/jdk-7u80-linux-x64.rpm]') } it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').that_requires('Archive[/tmp/jdk-7u80-linux-x64.rpm]') }
end end
context 'when Oracle Java SE 8 JDK' do context 'when Oracle Java SE 8 JDK' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } } let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } }
let(:title) { 'jdk8' } let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-x64.rpm') } it { is_expected.to contain_archive('/tmp/jdk-8u201-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8').with_command('rpm --force -iv /tmp/jdk-8u131-linux-x64.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u201 b09').with_command('rpm --force -iv /tmp/jdk-8u201-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8').that_requires('Archive[/tmp/jdk-8u131-linux-x64.rpm]') } it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u201 b09').that_requires('Archive[/tmp/jdk-8u201-linux-x64.rpm]') }
end end
context 'when Oracle Java SE 6 JRE' do context 'when Oracle Java SE 6 JRE' do
@@ -38,8 +38,8 @@ describe 'java::oracle', type: :define do
let(:title) { 'jre6' } let(:title) { 'jre6' }
it { is_expected.to contain_archive('/tmp/jre-6u45-linux-x64-rpm.bin') } it { is_expected.to contain_archive('/tmp/jre-6u45-linux-x64-rpm.bin') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6').with_command('sh /tmp/jre-6u45-linux-x64-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jre*.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').with_command('sh /tmp/jre-6u45-linux-x64-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jre*.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6').that_requires('Archive[/tmp/jre-6u45-linux-x64-rpm.bin]') } it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').that_requires('Archive[/tmp/jre-6u45-linux-x64-rpm.bin]') }
end end
context 'when Oracle Java SE 7 JRE' do context 'when Oracle Java SE 7 JRE' do
@@ -47,35 +47,35 @@ describe 'java::oracle', type: :define do
let(:title) { 'jre7' } let(:title) { 'jre7' }
it { is_expected.to contain_archive('/tmp/jre-7u80-linux-x64.rpm') } it { is_expected.to contain_archive('/tmp/jre-7u80-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7').with_command('rpm --force -iv /tmp/jre-7u80-linux-x64.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').with_command('rpm --force -iv /tmp/jre-7u80-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7').that_requires('Archive[/tmp/jre-7u80-linux-x64.rpm]') } it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').that_requires('Archive[/tmp/jre-7u80-linux-x64.rpm]') }
end end
context 'when select Oracle Java SE 8 JRE' do context 'when select Oracle Java SE 8 JRE' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } } let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } }
let(:title) { 'jre8' } let(:title) { 'jre8' }
it { is_expected.to contain_archive('/tmp/jre-8u131-linux-x64.rpm') } it { is_expected.to contain_archive('/tmp/jre-8u201-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8').with_command('rpm --force -iv /tmp/jre-8u131-linux-x64.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u201 b09').with_command('rpm --force -iv /tmp/jre-8u201-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8').that_requires('Archive[/tmp/jre-8u131-linux-x64.rpm]') } it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u201 b09').that_requires('Archive[/tmp/jre-8u201-linux-x64.rpm]') }
end end
context 'when passing URL to url parameter' do context 'when passing URL to url parameter' do
let(:params) do let(:params) do
{ {
ensure: 'present', ensure: 'present',
version_major: '8u131', version_major: '8u201',
version_minor: 'b11', version_minor: 'b09',
java_se: 'jdk', java_se: 'jdk',
url: 'http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm', url: 'http://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm',
url_hash: 'ignored', url_hash: 'ignored',
} }
end end
let(:title) { 'jdk8' } let(:title) { 'jdk8' }
it { it {
is_expected.to contain_archive('/tmp/jdk-8u131-linux-x64.rpm') is_expected.to contain_archive('/tmp/jdk-8u201-linux-x64.rpm')
.with_source('http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm') .with_source('http://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm')
} }
end end
@@ -83,15 +83,112 @@ describe 'java::oracle', type: :define do
let(:params) do let(:params) do
{ {
ensure: 'present', ensure: 'present',
version_major: '8u131', version_major: '8u201',
version_minor: 'b11', version_minor: 'b09',
java_se: 'jdk', java_se: 'jdk',
url_hash: 'abcdef01234567890', url_hash: '42970487e3af4f5aa5bca3f542482c60',
} }
end end
let(:title) { 'jdk8' } let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-x64.rpm').with_source('http://download.oracle.com/otn-pub/java/jdk//8u131-b11/abcdef01234567890/jdk-8u131-linux-x64.rpm') } it {
is_expected.to contain_archive('/tmp/jdk-8u201-linux-x64.rpm')
.with_source('http://download.oracle.com/otn-pub/java/jdk//8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm')
}
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_major: '8u201',
version_minor: 'b09',
java_se: 'jdk',
url_hash: '42970487e3af4f5aa5bca3f542482c60',
}
end
let(:title) { 'jdk8' }
let(:pre_condition) do
<<-EOL
java::oracle {
'jdk8121':
ensure => 'present',
version_major => '8u121',
version_minor => 'b13',
java_se => 'jdk',
url_hash => 'abcdef01234567890',
}
EOL
end
it { is_expected.to compile }
end
context 'when installing Oracle Java SE 6 JRE with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jre' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/java/jre1.6.0_99-amd64/lib/security')
end
end
context 'when installing Oracle Java SE 6 JDK with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jdk' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/java/jdk1.6.0_99-amd64/jre/lib/security')
end
end
context 'when specifying package_type tar.gz and basedir' do
let(:params) do
{
ensure: 'present',
version: '6',
java_se: 'jdk',
basedir: '/usr/java',
package_type: 'tar.gz',
}
end
let(:title) { 'jdk6' }
it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('tar -zxf /tmp/jdk-6u45-linux-x64.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-x64.tar.gz]') }
end
context 'when manage_basedir is set to true' do
let(:params) do
{
ensure: 'present',
version: '6',
java_se: 'jdk',
basedir: '/usr/java',
manage_basedir: true,
}
end
let(:title) { 'jdk6' }
it { is_expected.to contain_file('/usr/java') }
end
context 'when manage_symlink is set to true' do
let(:params) do
{
ensure: 'present',
version: '6',
java_se: 'jdk',
basedir: '/usr/java',
manage_symlink: true,
symlink_name: 'java_home',
}
end
let(:title) { 'jdk6' }
it { is_expected.to contain_file('/usr/java/java_home') }
end end
end end
@@ -103,8 +200,8 @@ describe 'java::oracle', type: :define do
let(:title) { 'jdk6' } let(:title) { 'jdk6' }
it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-i586-rpm.bin') } it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-i586-rpm.bin') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6').with_command('sh /tmp/jdk-6u45-linux-i586-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jdk*.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('sh /tmp/jdk-6u45-linux-i586-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jdk*.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6').that_requires('Archive[/tmp/jdk-6u45-linux-i586-rpm.bin]') } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-i586-rpm.bin]') }
end end
context 'when selecting Oracle Java SE 7 JDK on RedHat family, 32-bit' do context 'when selecting Oracle Java SE 7 JDK on RedHat family, 32-bit' do
@@ -112,17 +209,17 @@ describe 'java::oracle', type: :define do
let(:title) { 'jdk7' } let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-i586.rpm') } it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7').with_command('rpm --force -iv /tmp/jdk-7u80-linux-i586.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').with_command('rpm --force -iv /tmp/jdk-7u80-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7').that_requires('Archive[/tmp/jdk-7u80-linux-i586.rpm]') } it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').that_requires('Archive[/tmp/jdk-7u80-linux-i586.rpm]') }
end end
context 'when selecting Oracle Java SE 8 JDK on RedHat family, 32-bit' do context 'when selecting Oracle Java SE 8 JDK on RedHat family, 32-bit' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } } let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } }
let(:title) { 'jdk8' } let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-i586.rpm') } it { is_expected.to contain_archive('/tmp/jdk-8u201-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8').with_command('rpm --force -iv /tmp/jdk-8u131-linux-i586.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u201 b09').with_command('rpm --force -iv /tmp/jdk-8u201-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8').that_requires('Archive[/tmp/jdk-8u131-linux-i586.rpm]') } it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u201 b09').that_requires('Archive[/tmp/jdk-8u201-linux-i586.rpm]') }
end end
context 'when selecting Oracle Java SE 6 JRE on RedHat family, 32-bit' do context 'when selecting Oracle Java SE 6 JRE on RedHat family, 32-bit' do
@@ -130,8 +227,8 @@ describe 'java::oracle', type: :define do
let(:title) { 'jdk6' } let(:title) { 'jdk6' }
it { is_expected.to contain_archive('/tmp/jre-6u45-linux-i586-rpm.bin') } it { is_expected.to contain_archive('/tmp/jre-6u45-linux-i586-rpm.bin') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6').with_command('sh /tmp/jre-6u45-linux-i586-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jre*.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').with_command('sh /tmp/jre-6u45-linux-i586-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jre*.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6').that_requires('Archive[/tmp/jre-6u45-linux-i586-rpm.bin]') } it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').that_requires('Archive[/tmp/jre-6u45-linux-i586-rpm.bin]') }
end end
context 'when select Oracle Java SE 7 JRE on RedHat family, 32-bit' do context 'when select Oracle Java SE 7 JRE on RedHat family, 32-bit' do
@@ -139,17 +236,65 @@ describe 'java::oracle', type: :define do
let(:title) { 'jdk7' } let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/jre-7u80-linux-i586.rpm') } it { is_expected.to contain_archive('/tmp/jre-7u80-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7').with_command('rpm --force -iv /tmp/jre-7u80-linux-i586.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').with_command('rpm --force -iv /tmp/jre-7u80-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7').that_requires('Archive[/tmp/jre-7u80-linux-i586.rpm]') } it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').that_requires('Archive[/tmp/jre-7u80-linux-i586.rpm]') }
end end
context 'when select Oracle Java SE 8 JRE on RedHat family, 32-bit' do context 'when select Oracle Java SE 8 JRE on RedHat family, 32-bit' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } } let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } }
let(:title) { 'jdk8' } let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jre-8u131-linux-i586.rpm') } it { is_expected.to contain_archive('/tmp/jre-8u201-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8').with_command('rpm --force -iv /tmp/jre-8u131-linux-i586.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u201 b09').with_command('rpm --force -iv /tmp/jre-8u201-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8').that_requires('Archive[/tmp/jre-8u131-linux-i586.rpm]') } it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u201 b09').that_requires('Archive[/tmp/jre-8u201-linux-i586.rpm]') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_major: '8u201',
version_minor: 'b09',
java_se: 'jdk',
url_hash: '42970487e3af4f5aa5bca3f542482c60',
}
end
let(:title) { 'jdk8' }
let(:pre_condition) do
<<-EOL
java::oracle {
'jdk8121':
ensure => 'present',
version_major => '8u121',
version_minor => 'b13',
java_se => 'jdk',
url_hash => 'abcdef01234567890',
}
EOL
end
it { is_expected.to compile }
end
context 'when installing Oracle Java SE 6 JRE with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jre' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/java/jre1.6.0_99-amd64/lib/security')
end
end
context 'when installing Oracle Java SE 6 JDK with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jdk' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/java/jdk1.6.0_99-amd64/jre/lib/security')
end
end end
end end
@@ -161,8 +306,8 @@ describe 'java::oracle', type: :define do
let(:title) { 'jdk6' } let(:title) { 'jdk6' }
it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-x64.tar.gz') } it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6').with_command('tar -zxf /tmp/jdk-6u45-linux-x64.tar.gz -C /usr/lib/jvm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('tar -zxf /tmp/jdk-6u45-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6').that_requires('Archive[/tmp/jdk-6u45-linux-x64.tar.gz]') } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-x64.tar.gz]') }
end end
context 'with Oracle Java SE 7 JDK' do context 'with Oracle Java SE 7 JDK' do
@@ -170,17 +315,17 @@ describe 'java::oracle', type: :define do
let(:title) { 'jdk7' } let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-x64.tar.gz') } it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7').with_command('tar -zxf /tmp/jdk-7u80-linux-x64.tar.gz -C /usr/lib/jvm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').with_command('tar -zxf /tmp/jdk-7u80-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7').that_requires('Archive[/tmp/jdk-7u80-linux-x64.tar.gz]') } it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').that_requires('Archive[/tmp/jdk-7u80-linux-x64.tar.gz]') }
end end
context 'with Oracle Java SE 8 JDK' do context 'with Oracle Java SE 8 JDK' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } } let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } }
let(:title) { 'jdk8' } let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-x64.tar.gz') } it { is_expected.to contain_archive('/tmp/jdk-8u201-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8').with_command('tar -zxf /tmp/jdk-8u131-linux-x64.tar.gz -C /usr/lib/jvm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u201 b09').with_command('tar -zxf /tmp/jdk-8u201-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8').that_requires('Archive[/tmp/jdk-8u131-linux-x64.tar.gz]') } it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u201 b09').that_requires('Archive[/tmp/jdk-8u201-linux-x64.tar.gz]') }
end end
context 'with Oracle Java SE 6 JRE' do context 'with Oracle Java SE 6 JRE' do
@@ -188,8 +333,8 @@ describe 'java::oracle', type: :define do
let(:title) { 'jre6' } let(:title) { 'jre6' }
it { is_expected.to contain_archive('/tmp/jre-6u45-linux-x64.tar.gz') } it { is_expected.to contain_archive('/tmp/jre-6u45-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6').with_command('tar -zxf /tmp/jre-6u45-linux-x64.tar.gz -C /usr/lib/jvm') } it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').with_command('tar -zxf /tmp/jre-6u45-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6').that_requires('Archive[/tmp/jre-6u45-linux-x64.tar.gz]') } it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').that_requires('Archive[/tmp/jre-6u45-linux-x64.tar.gz]') }
end end
context 'when Oracle Java SE 7 JRE' do context 'when Oracle Java SE 7 JRE' do
@@ -197,30 +342,77 @@ describe 'java::oracle', type: :define do
let(:title) { 'jre7' } let(:title) { 'jre7' }
it { is_expected.to contain_archive('/tmp/jre-7u80-linux-x64.tar.gz') } it { is_expected.to contain_archive('/tmp/jre-7u80-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7').with_command('tar -zxf /tmp/jre-7u80-linux-x64.tar.gz -C /usr/lib/jvm') } it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').with_command('tar -zxf /tmp/jre-7u80-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7').that_requires('Archive[/tmp/jre-7u80-linux-x64.tar.gz]') } it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').that_requires('Archive[/tmp/jre-7u80-linux-x64.tar.gz]') }
end end
context 'when Oracle Java SE 8 JRE' do context 'when Oracle Java SE 8 JRE' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } } let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } }
let(:title) { 'jre8' } let(:title) { 'jre8' }
it { is_expected.to contain_archive('/tmp/jre-8u131-linux-x64.tar.gz') } it { is_expected.to contain_archive('/tmp/jre-8u201-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8').with_command('tar -zxf /tmp/jre-8u131-linux-x64.tar.gz -C /usr/lib/jvm') } it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u201 b09').with_command('tar -zxf /tmp/jre-8u201-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8').that_requires('Archive[/tmp/jre-8u131-linux-x64.tar.gz]') } it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u201 b09').that_requires('Archive[/tmp/jre-8u201-linux-x64.tar.gz]') }
end end
context 'when passing URL to url parameter' do context 'when passing URL to url parameter' do
let(:params) { { ensure: 'present', version_major: '8u131', version_minor: 'b11', java_se: 'jdk', url: oracle_url.to_s } } let(:params) { { ensure: 'present', version_major: '8u201', version_minor: 'b09', java_se: 'jdk', url: oracle_url.to_s } }
let(:title) { 'jdk8' } let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-x64.tar.gz') } it { is_expected.to contain_archive('/tmp/jdk-8u201-linux-x64.tar.gz') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_major: '8u201',
version_minor: 'b09',
java_se: 'jdk',
url_hash: '42970487e3af4f5aa5bca3f542482c60',
}
end
let(:title) { 'jdk8' }
let(:pre_condition) do
<<-EOL
java::oracle {
'jdk8121':
ensure => 'present',
version_major => '8u121',
version_minor => 'b13',
java_se => 'jdk',
url_hash => 'abcdef01234567890',
}
EOL
end
it { is_expected.to compile }
end
context 'when installing Oracle Java SE 6 JRE with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jre' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/lib/jvm/jre1.6.0_99/lib/security')
end
end
context 'when installing Oracle Java SE 6 JDK with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jdk' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/lib/jvm/jdk1.6.0_99/jre/lib/security')
end
end end
end end
describe 'incompatible OSes' do describe 'incompatible OSes' do
[ [
{ {
# C14706
kernel: 'Windows', kernel: 'Windows',
os: { os: {
family: 'Windows', family: 'Windows',
@@ -231,7 +423,6 @@ describe 'java::oracle', type: :define do
}, },
}, },
{ {
# C14707
kernel: 'Darwin', kernel: 'Darwin',
os: { os: {
family: 'Darwin', family: 'Darwin',
@@ -242,7 +433,6 @@ describe 'java::oracle', type: :define do
}, },
}, },
{ {
# C14708
kernel: 'AIX', kernel: 'AIX',
os: { os: {
family: 'AIX', family: 'AIX',
@@ -253,7 +443,6 @@ describe 'java::oracle', type: :define do
}, },
}, },
{ {
# C14709
kernel: 'AIX', kernel: 'AIX',
os: { os: {
family: 'AIX', family: 'AIX',
@@ -264,7 +453,6 @@ describe 'java::oracle', type: :define do
}, },
}, },
{ {
# C14710
kernel: 'AIX', kernel: 'AIX',
os: { os: {
family: 'AIX', family: 'AIX',

View File

@@ -1,12 +1,11 @@
RSpec.configure do |c|
c.mock_with :rspec
end
require 'puppetlabs_spec_helper/module_spec_helper' require 'puppetlabs_spec_helper/module_spec_helper'
require 'rspec-puppet-facts' require 'rspec-puppet-facts'
begin require 'spec_helper_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_local.rb'))
require 'spec_helper_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_local.rb'))
rescue LoadError => loaderror
warn "Could not require spec_helper_local: #{loaderror.message}"
end
include RspecPuppetFacts include RspecPuppetFacts
@@ -15,15 +14,19 @@ default_facts = {
facterversion: Facter.version, facterversion: Facter.version,
} }
default_facts_path = File.expand_path(File.join(File.dirname(__FILE__), 'default_facts.yml')) default_fact_files = [
default_module_facts_path = File.expand_path(File.join(File.dirname(__FILE__), 'default_module_facts.yml')) File.expand_path(File.join(File.dirname(__FILE__), 'default_facts.yml')),
File.expand_path(File.join(File.dirname(__FILE__), 'default_module_facts.yml')),
]
if File.exist?(default_facts_path) && File.readable?(default_facts_path) default_fact_files.each do |f|
default_facts.merge!(YAML.safe_load(File.read(default_facts_path))) next unless File.exist?(f) && File.readable?(f) && File.size?(f)
end
if File.exist?(default_module_facts_path) && File.readable?(default_module_facts_path) begin
default_facts.merge!(YAML.safe_load(File.read(default_module_facts_path))) default_facts.merge!(YAML.safe_load(File.read(f), [], [], true))
rescue => e
RSpec.configuration.reporter.message "WARNING: Unable to load #{f}: #{e}"
end
end end
RSpec.configure do |c| RSpec.configure do |c|
@@ -33,12 +36,16 @@ RSpec.configure do |c|
# by default Puppet runs at warning level # by default Puppet runs at warning level
Puppet.settings[:strict] = :warning Puppet.settings[:strict] = :warning
end end
c.filter_run_excluding(bolt: true) unless ENV['GEM_BOLT']
c.after(:suite) do
RSpec::Puppet::Coverage.report!(0)
end
end end
def ensure_module_defined(module_name) def ensure_module_defined(module_name)
module_name.split('::').reduce(Object) do |last_module, next_module| module_name.split('::').reduce(Object) do |last_module, next_module|
last_module.const_set(next_module, Module.new) unless last_module.const_defined?(next_module) last_module.const_set(next_module, Module.new) unless last_module.const_defined?(next_module, false)
last_module.const_get(next_module) last_module.const_get(next_module, false)
end end
end end

View File

@@ -1,8 +1,11 @@
require 'beaker-pe'
require 'beaker-puppet'
require 'beaker-rspec' require 'beaker-rspec'
require 'beaker/puppet_install_helper' require 'beaker/puppet_install_helper'
require 'beaker/module_install_helper' require 'beaker/module_install_helper'
run_puppet_install_helper run_puppet_install_helper
configure_type_defaults_on(hosts)
install_module_on(hosts) install_module_on(hosts)
install_module_dependencies_on(hosts) install_module_dependencies_on(hosts)
@@ -18,3 +21,17 @@ RSpec.configure do |c|
# Readable test descriptions # Readable test descriptions
c.formatter = :documentation c.formatter = :documentation
end end
def idempotent_apply(hosts, manifest, opts = {}, &block)
block_on hosts, opts do |host|
file_path = host.tmpfile('apply_manifest.pp')
create_remote_file(host, file_path, manifest + "\n")
puppet_apply_opts = { :verbose => nil, 'detailed-exitcodes' => nil }
on_options = { acceptable_exit_codes: [0, 2] }
on host, puppet('apply', file_path, puppet_apply_opts), on_options, &block
puppet_apply_opts2 = { :verbose => nil, 'detailed-exitcodes' => nil }
on_options2 = { acceptable_exit_codes: [0] }
on host, puppet('apply', file_path, puppet_apply_opts2), on_options2, &block
end
end

28
spec/spec_helper_local.rb Normal file
View File

@@ -0,0 +1,28 @@
if ENV['COVERAGE'] == 'yes'
require 'simplecov'
require 'simplecov-console'
require 'codecov'
SimpleCov.formatters = [
SimpleCov::Formatter::HTMLFormatter,
SimpleCov::Formatter::Console,
SimpleCov::Formatter::Codecov,
]
SimpleCov.start do
track_files 'lib/**/*.rb'
add_filter '/spec'
# do not track vendored files
add_filter '/vendor'
add_filter '/.vendor'
# do not track gitignored files
# this adds about 4 seconds to the coverage check
# this could definitely be optimized
add_filter do |f|
# system returns true if exit status is 0, which with git-check-ignore means file is ignored
system("git check-ignore --quiet #{f.filename}")
end
end
end

View File

@@ -15,15 +15,15 @@ end
def symlink_and_test(symlink_path, java_home) def symlink_and_test(symlink_path, java_home)
File.symlink(symlink_path, './java_test') File.symlink(symlink_path, './java_test')
Facter::Util::Resolution.expects(:which).with('java').returns('./java_test') expect(Facter::Util::Resolution).to receive(:which).with('java').and_return('./java_test')
File.expects(:realpath).with('./java_test').returns(symlink_path) expect(File).to receive(:realpath).with('./java_test').and_return(symlink_path)
expect(Facter.value(:java_default_home)).to eql java_home expect(Facter.value(:java_default_home)).to eql java_home
end end
describe 'java_default_home' do describe 'java_default_home' do
before(:each) do before(:each) do
Facter.clear Facter.clear
Facter.fact(:kernel).stubs(:value).returns('Linux') allow(Facter.fact(:kernel)).to receive(:value).once.and_return('Linux')
end end
context 'when java found in PATH' do context 'when java found in PATH' do
@@ -46,8 +46,8 @@ describe 'java_default_home' do
context 'when java not present, return nil' do context 'when java not present, return nil' do
it do it do
Facter::Util::Resolution.stubs(:exec) allow(Facter::Util::Resolution).to receive(:exec) # Catch all other calls
Facter::Util::Resolution.expects(:which).with('java').at_least(1).returns(false) expect(Facter::Util::Resolution).to receive(:which).with('java').at_least(1).and_return(nil)
expect(Facter.value(:java_default_home)).to be_nil expect(Facter.value(:java_default_home)).to be_nil
end end
end end

View File

@@ -1,17 +1,25 @@
require 'spec_helper' require 'spec_helper'
describe 'java_libjvm_path' do describe 'java_libjvm_path' do
let(:java_default_home) { '/usr/lib/jvm/java-8-openjdk-amd64' }
before(:each) do before(:each) do
Facter.clear Facter.clear
Facter.fact(:kernel).stubs(:value).returns('Linux') allow(Facter.fact(:kernel)).to receive(:value).once.and_return('Linux')
java_default_home = '/usr/lib/jvm/java-8-openjdk-amd64' allow(Facter.fact(:java_default_home)).to receive(:value).once.and_return(java_default_home)
Facter.fact(:java_default_home).stubs(:value).returns(java_default_home)
Dir.stubs(:glob).with("#{java_default_home}/jre/lib/**/libjvm.so").returns(['/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so'])
end end
context 'when on Linux, return libjvm path' do context 'when libjvm exists' do
it do it do
allow(Dir).to receive(:glob).with("#{java_default_home}/jre/lib/**/libjvm.so").and_return(['/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so'])
expect(Facter.value(:java_libjvm_path)).to eql '/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server' expect(Facter.value(:java_libjvm_path)).to eql '/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server'
end end
end end
context 'when libjvm does not exist' do
it do
allow(Dir).to receive(:glob).with("#{java_default_home}/jre/lib/**/libjvm.so").and_return([])
expect(Facter.value(:java_libjvm_path)).to be nil
end
end
end end

View File

@@ -7,7 +7,7 @@ describe 'java_major_version' do
context 'when java_version fact present, returns major version' do context 'when java_version fact present, returns major version' do
before :each do before :each do
Facter.fact(:java_version).stubs(:value).returns('1.7.0_71') allow(Facter.fact(:java_version)).to receive(:value).and_return('1.7.0_71')
end end
it do it do
expect(Facter.fact(:java_major_version).value).to eq('7') expect(Facter.fact(:java_major_version).value).to eq('7')
@@ -16,7 +16,7 @@ describe 'java_major_version' do
context 'when java not present, returns nil' do context 'when java not present, returns nil' do
before :each do before :each do
Facter.fact(:java_version).stubs(:value).returns(nil) allow(Facter.fact(:java_version)).to receive(:value).and_return('nil')
end end
it do it do
expect(Facter.fact(:java_major_version).value).to be_nil expect(Facter.fact(:java_major_version).value).to be_nil

View File

@@ -7,7 +7,7 @@ describe 'java_patch_level' do
context 'when java is installed returns java patch version extracted from java_version fact' do context 'when java is installed returns java patch version extracted from java_version fact' do
before :each do before :each do
Facter.fact(:java_version).stubs(:value).returns('1.7.0_71') allow(Facter.fact(:java_version)).to receive(:value).and_return('1.7.0_71')
end end
it do it do
expect(Facter.fact(:java_patch_level).value).to eq('71') expect(Facter.fact(:java_patch_level).value).to eq('71')
@@ -16,7 +16,7 @@ describe 'java_patch_level' do
context 'when java is not installed returns nil' do context 'when java is not installed returns nil' do
before :each do before :each do
Facter.fact(:java_version).stubs(:value).returns(nil) allow(Facter.fact(:java_version)).to receive(:value).and_return('nil')
end end
it do it do
expect(Facter.fact(:java_patch_level).value).to be_nil expect(Facter.fact(:java_patch_level).value).to be_nil

View File

@@ -18,37 +18,37 @@ describe 'java_version' do
context 'when java present, returns java version' do context 'when java present, returns java version' do
context 'on OpenBSD', with_env: true do context 'on OpenBSD', with_env: true do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('OpenBSD') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('OpenBSD')
end end
let(:facts) { { operatingsystem: 'OpenBSD' } } let(:facts) { { operatingsystem: 'OpenBSD' } }
it do it do
Facter::Util::Resolution.expects(:which).with('java').returns('/usr/local/jdk-1.7.0/jre/bin/java') expect(Facter::Util::Resolution).to receive(:which).with('java').and_return('/usr/local/jdk-1.7.0/jre/bin/java')
Facter::Util::Resolution.expects(:exec).with('java -Xmx12m -version 2>&1').returns(openjdk_7_output) expect(Facter::Util::Resolution).to receive(:exec).with('java -Xmx12m -version 2>&1').and_return(openjdk_7_output)
expect(Facter.value(:java_version)).to eq('1.7.0_71') expect(Facter.value(:java_version)).to eq('1.7.0_71')
end end
end end
context 'when on Darwin' do context 'when on Darwin' do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('Darwin') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Darwin')
end end
let(:facts) { { operatingsystem: 'Darwin' } } let(:facts) { { operatingsystem: 'Darwin' } }
it do it do
Facter::Util::Resolution.expects(:exec).with('/usr/libexec/java_home --failfast 2>&1').returns('/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home') expect(Facter::Util::Resolution).to receive(:exec).with('/usr/libexec/java_home --failfast 2>&1').and_return('/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home')
Facter::Util::Resolution.expects(:exec).with('java -Xmx12m -version 2>&1').returns(jdk_7_hotspot_output) expect(Facter::Util::Resolution).to receive(:exec).with('java -Xmx12m -version 2>&1').and_return(jdk_7_hotspot_output)
expect(Facter.value(:java_version)).to eql '1.7.0_71' expect(Facter.value(:java_version)).to eql '1.7.0_71'
end end
end end
context 'when on other systems' do context 'when on other systems' do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('MyOS') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('MyOS')
end end
let(:facts) { { operatingsystem: 'MyOS' } } let(:facts) { { operatingsystem: 'MyOS' } }
it do it do
Facter::Util::Resolution.expects(:which).with('java').returns('/path/to/java') expect(Facter::Util::Resolution).to receive(:which).with('java').and_return('/path/to/java')
Facter::Util::Resolution.expects(:exec).with('java -Xmx12m -version 2>&1').returns(jdk_7_hotspot_output) expect(Facter::Util::Resolution).to receive(:exec).with('java -Xmx12m -version 2>&1').and_return(jdk_7_hotspot_output)
expect(Facter.value(:java_version)).to eq('1.7.0_71') expect(Facter.value(:java_version)).to eq('1.7.0_71')
end end
end end
@@ -57,34 +57,34 @@ describe 'java_version' do
context 'when java not present, returns nil' do context 'when java not present, returns nil' do
context 'on OpenBSD', with_env: true do context 'on OpenBSD', with_env: true do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('OpenBSD') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('OpenBSD')
end end
let(:facts) { { operatingsystem: 'OpenBSD' } } let(:facts) { { operatingsystem: 'OpenBSD' } }
it do it do
Facter::Util::Resolution.stubs(:exec) allow(Facter::Util::Resolution).to receive(:exec) # Catch all other calls
expect(Facter.value(:java_version)).to be_nil expect(Facter.value(:java_version)).to be_nil
end end
end end
context 'when on Darwin' do context 'when on Darwin' do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('Darwin') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Darwin')
end end
let(:facts) { { operatingsystem: 'Darwin' } } let(:facts) { { operatingsystem: 'Darwin' } }
it do it do
Facter::Util::Resolution.expects(:exec).at_least(1).with('/usr/libexec/java_home --failfast 2>&1').returns('Unable to find any JVMs matching version "(null)".') expect(Facter::Util::Resolution).to receive(:exec).with('/usr/libexec/java_home --failfast 2>&1').at_least(1).and_return('Unable to find any JVMs matching version "(null)".')
expect(Facter.value(:java_version)).to be_nil expect(Facter.value(:java_version)).to be_nil
end end
end end
context 'when on other systems' do context 'when on other systems' do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('MyOS') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('MyOS')
end end
let(:facts) { { operatingsystem: 'MyOS' } } let(:facts) { { operatingsystem: 'MyOS' } }
it do it do
Facter::Util::Resolution.expects(:which).at_least(1).with('java').returns(false) expect(Facter::Util::Resolution).to receive(:which).at_least(1).with('java').and_return(false)
expect(Facter.value(:java_version)).to be_nil expect(Facter.value(:java_version)).to be_nil
end end
end end