Skip to content

Commit 80ea81e

Browse files
committed
(maint) integration: use puppetserver uberjar to install gems
Currently, puppetserver has transitioned to jetty10 and puppetdb is still using jetty9 creating dependency conflicts when integration tests are run. Once we transition to jetty10 as well, there will still be dependency conflicts when we run integration tests against puppetserver 7.x, which is still on jetty9. Remove puppetserver from the project file to avoid dependency conflicts. d7e619d moved puppetserver to run in its own JVM for integration tests, so it is no longer necessary to have puppetserver in our project.clj file, but we still had it there to facilitate installing the vendored gems that puppetserver needs. This moves gem installation for puppetserver out of our project file and clojure code, and instead uses the test setup scripts and the puppetserver uberjar to create the vendored gem directory. The jetty service name changed from jetty9-service to jetty10-service. Adds an additional bootstrap file, used only for 7.x integration testing, so each puppetserver version loads the correct tk services.
1 parent 85d2135 commit 80ea81e

File tree

6 files changed

+56
-74
lines changed

6 files changed

+56
-74
lines changed

Diff for: ext/bin/config-puppetserver-test-ref

+20-3
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,23 @@ fi
7878
dep_ver="$(lein-pprint :version)"
7979
echo "$dep_ver" > "$top/ext/test-conf/puppetserver-dep")
8080

81-
# Install Puppet Server Ruby dependencies using JRuby
82-
# Procedure defined in src-gems/puppetlabs/puppetdb/integration/install_gems.clj
83-
lein install-gems
81+
gem_list=()
82+
while read LINE
83+
do
84+
gem_name=$(echo $LINE |awk '{print $1}')
85+
gem_version=$(echo $LINE |awk '{print $2}')
86+
gem_list+=("$gem_name:$gem_version")
87+
done < ./puppetserver/resources/ext/build-scripts/jruby-gem-list.txt
88+
89+
gem-install() {
90+
java -cp puppetserver/target/puppet-server-release.jar clojure.main \
91+
-m puppetlabs.puppetserver.cli.gem \
92+
--config ./test-resources/puppetserver/puppetserver.conf -- install --no-document "$@"
93+
}
94+
95+
echo "Installing gems"
96+
gem-install facter
97+
gem-install hiera
98+
gem-install puppet-pson
99+
gem-install "${gem_list[@]}"
100+
echo "Finished install gems"

Diff for: project.clj

+2-38
Original file line numberDiff line numberDiff line change
@@ -42,31 +42,6 @@
4242
[["releases" "https://artifactory.delivery.puppetlabs.net/artifactory/list/clojure-releases__local/"]
4343
["snapshots" "https://artifactory.delivery.puppetlabs.net/artifactory/list/clojure-snapshots__local/"]]))
4444

45-
;; See the integration tests section in documentation/CONTRIBUTING.md.
46-
(def puppetserver-test-dep-ver
47-
(some-> (try
48-
(slurp (str "ext/test-conf/puppetserver-dep"))
49-
(catch java.io.FileNotFoundException ex
50-
(binding [*out* *err*]
51-
(println "puppetserver test dependency unconfigured (ignoring)"))
52-
nil))
53-
clojure.string/trim))
54-
55-
(def puppetserver-test-dep-gem-list
56-
(when puppetserver-test-dep-ver
57-
(let [[major minor] (->> (re-matches #"^([0-9]+)\.([0-9]+)\..*" puppetserver-test-dep-ver)
58-
next
59-
(take 2)
60-
(map #(Integer/parseInt %)))]
61-
(if (neg? (compare [major minor] [5 3]))
62-
"gem-list.txt"
63-
"jruby-gem-list.txt"))))
64-
65-
(def puppetserver-test-deps
66-
(when puppetserver-test-dep-ver
67-
`[[puppetlabs/puppetserver ~puppetserver-test-dep-ver]
68-
[puppetlabs/puppetserver ~puppetserver-test-dep-ver :classifier "test"]]))
69-
7045
(def pdb-dev-deps
7146
(concat
7247
'[[ring/ring-mock]
@@ -82,8 +57,7 @@
8257
[org.yaml/snakeyaml]
8358

8459
;; Only needed for :integration tests
85-
[puppetlabs/trapperkeeper-filesystem-watcher nil]]
86-
puppetserver-test-deps))
60+
[puppetlabs/trapperkeeper-filesystem-watcher nil]]))
8761

8862
;; Don't use lein :clean-targets so that we don't have to repeat
8963
;; ourselves, given that we need to remove some protected files, and
@@ -319,9 +293,6 @@
319293
;; compile test files, and crashes because
320294
;; "src" namespaces aren't available.
321295
:aot ^:replace []}
322-
:install-gems {:source-paths ^:replace ["src-gems"]
323-
:target-path "target-gems"
324-
:dependencies ~puppetserver-test-deps}
325296
:ci {:plugins [[lein-pprint "1.1.1"]
326297
[lein-exec "0.3.7"]]}
327298
; We only want to include bouncycastle in the FOSS uberjar.
@@ -356,14 +327,7 @@
356327
;; yet, disable it for now.
357328
:exclude-linters [:local-shadows-var]}
358329

359-
:aliases {"gem" ["with-profile" "install-gems,dev"
360-
"trampoline" "run" "-m" "puppetlabs.puppetserver.cli.gem"
361-
"--config" "./test-resources/puppetserver/puppetserver.conf"]
362-
"install-gems" ["with-profile" "install-gems,dev"
363-
"trampoline" "run" "-m" "puppetlabs.puppetdb.integration.install-gems"
364-
~puppetserver-test-dep-gem-list
365-
"--config" "./test-resources/puppetserver/puppetserver.conf"]
366-
"kondo" ["with-profile" "+kondo" "run" "-m" "clj-kondo.main"]
330+
:aliases {"kondo" ["with-profile" "+kondo" "run" "-m" "clj-kondo.main"]
367331
"clean" ~(pdb-run-clean pdb-clean-paths)
368332
"distclean" ~(pdb-run-clean pdb-distclean-paths)
369333
"time-shift-export" ^{:doc (clojure.string/join "" ["Shifts all timestamps from a PuppetDB archive with"

Diff for: src-gems/puppetlabs/puppetdb/integration/install_gems.clj

-30
This file was deleted.

Diff for: test-resources/puppetserver/bootstrap-7.x.cfg

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
puppetlabs.services.request-handler.request-handler-service/request-handler-service
2+
puppetlabs.services.jruby.jruby-puppet-service/jruby-puppet-pooled-service
3+
puppetlabs.services.jruby-pool-manager.jruby-pool-manager-service/jruby-pool-manager-service
4+
puppetlabs.services.puppet-profiler.puppet-profiler-service/puppet-profiler-service
5+
puppetlabs.trapperkeeper.services.webserver.jetty9-service/jetty9-service
6+
puppetlabs.trapperkeeper.services.webrouting.webrouting-service/webrouting-service
7+
puppetlabs.services.config.puppet-server-config-service/puppet-server-config-service
8+
puppetlabs.services.master.master-service/master-service
9+
puppetlabs.services.legacy-routes.legacy-routes-service/legacy-routes-service
10+
puppetlabs.services.puppet-admin.puppet-admin-service/puppet-admin-service
11+
puppetlabs.trapperkeeper.services.authorization.authorization-service/authorization-service
12+
puppetlabs.services.versioned-code-service.versioned-code-service/versioned-code-service
13+
puppetlabs.trapperkeeper.services.scheduler.scheduler-service/scheduler-service
14+
puppetlabs.trapperkeeper.services.status.status-service/status-service
15+
puppetlabs.trapperkeeper.services.metrics.metrics-service/metrics-service
16+
puppetlabs.services.jruby.jruby-metrics-service/jruby-metrics-service
17+
puppetlabs.trapperkeeper.services.watcher.filesystem-watch-service/filesystem-watch-service
18+
# To enable the CA service, leave the following line uncommented
19+
puppetlabs.services.ca.certificate-authority-service/certificate-authority-service
20+
# To disable the CA service, comment out the above line and uncomment the line below
21+
#puppetlabs.services.ca.certificate-authority-disabled-service/certificate-authority-disabled-service

Diff for: test-resources/puppetserver/bootstrap.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ puppetlabs.services.request-handler.request-handler-service/request-handler-serv
22
puppetlabs.services.jruby.jruby-puppet-service/jruby-puppet-pooled-service
33
puppetlabs.services.jruby-pool-manager.jruby-pool-manager-service/jruby-pool-manager-service
44
puppetlabs.services.puppet-profiler.puppet-profiler-service/puppet-profiler-service
5-
puppetlabs.trapperkeeper.services.webserver.jetty9-service/jetty9-service
5+
puppetlabs.trapperkeeper.services.webserver.jetty10-service/jetty10-service
66
puppetlabs.trapperkeeper.services.webrouting.webrouting-service/webrouting-service
77
puppetlabs.services.config.puppet-server-config-service/puppet-server-config-service
88
puppetlabs.services.master.master-service/master-service

Diff for: test/puppetlabs/puppetdb/integration/fixtures.clj

+12-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
[puppetlabs.puppetdb.utils :as utils])
2121
(:import
2222
(com.typesafe.config ConfigValueFactory)
23-
(java.lang ProcessBuilder ProcessBuilder$Redirect)))
23+
(java.lang ProcessBuilder ProcessBuilder$Redirect)
24+
(java.io FileNotFoundException)))
2425

2526
(defprotocol TestServer
2627
(server-info [this]))
@@ -164,8 +165,14 @@
164165
(doto process .destroy .waitFor) ;; Assumes destroy sends a SIGTERM
165166
(doseq [f files-to-cleanup] (fs/delete f))))
166167

168+
(defn pup-srv-version []
169+
(try
170+
(string/trim (slurp "./ext/test-conf/puppetserver-dep"))
171+
(catch FileNotFoundException e
172+
(log/error "No ext/test-conf/puppetserver-dep file found. Did you run ext/bin/config-puppetserver-test-ref ?")
173+
(throw e))))
174+
167175
(def dev-config-file "./test-resources/puppetserver/puppetserver.conf")
168-
(def dev-bootstrap-file "./test-resources/puppetserver/bootstrap.cfg")
169176

170177
(defn mri-agent-dir []
171178
(-> (sh "bundle" "show" "puppet") :out clojure.string/trim))
@@ -245,6 +252,9 @@
245252
(merge puppetserver-config-overrides)
246253
(assoc-in [:webserver :ssl-port] port))
247254
config-file (ks/temp-file "puppetserver-conf" ".edn")
255+
dev-bootstrap-file (if (string/starts-with? (pup-srv-version) "7.")
256+
"./test-resources/puppetserver/bootstrap-7.x.cfg"
257+
"./test-resources/puppetserver/bootstrap.cfg")
248258
cmd ["java" "-cp" "puppetserver/target/puppet-server-release.jar"
249259
"clojure.main" "-m" "puppetlabs.trapperkeeper.main"
250260
"services"

0 commit comments

Comments
 (0)