cem_acpt 0.7.3 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -1
- data/Gemfile.lock +42 -14
- data/README.md +8 -0
- data/cem_acpt.gemspec +3 -1
- data/exe/cem_acpt_image +0 -0
- data/lib/cem_acpt/action_result.rb +85 -0
- data/lib/cem_acpt/cli.rb +42 -22
- data/lib/cem_acpt/config/base.rb +4 -2
- data/lib/cem_acpt/goss/api.rb +8 -2
- data/lib/cem_acpt/image_builder.rb +64 -72
- data/lib/cem_acpt/logging.rb +41 -30
- data/lib/cem_acpt/platform.rb +4 -5
- data/lib/cem_acpt/provision/terraform/linux.rb +2 -2
- data/lib/cem_acpt/provision/terraform/terraform_cmd.rb +181 -0
- data/lib/cem_acpt/provision/terraform/windows.rb +9 -0
- data/lib/cem_acpt/provision/terraform.rb +34 -47
- data/lib/cem_acpt/provision.rb +1 -1
- data/lib/cem_acpt/puppet_helpers.rb +1 -1
- data/lib/cem_acpt/test_data.rb +3 -3
- data/lib/cem_acpt/test_runner/log_formatter/error_formatter.rb +33 -0
- data/lib/cem_acpt/test_runner/log_formatter.rb +10 -1
- data/lib/cem_acpt/test_runner.rb +151 -52
- data/lib/cem_acpt/utils/ssh.rb +2 -2
- data/lib/cem_acpt/utils/terminal.rb +1 -5
- data/lib/cem_acpt/utils/winrm_runner.rb +160 -0
- data/lib/cem_acpt/utils.rb +41 -1
- data/lib/cem_acpt/version.rb +1 -1
- data/lib/cem_acpt.rb +51 -21
- data/lib/terraform/gcp/windows/main.tf +26 -0
- metadata +46 -8
data/lib/cem_acpt.rb
CHANGED
@@ -22,6 +22,7 @@ module CemAcpt
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def run(command, original_command, options)
|
25
|
+
set_up_signal_handlers
|
25
26
|
case command
|
26
27
|
when :version
|
27
28
|
puts "#{original_command} v#{CemAcpt::VERSION}"
|
@@ -30,9 +31,9 @@ module CemAcpt
|
|
30
31
|
when :print_explain_config
|
31
32
|
print_config(options, command: original_command.to_sym, format: :explain)
|
32
33
|
when :cem_acpt
|
33
|
-
run_cem_acpt(options)
|
34
|
+
trace_it(options[:trace], options[:trace_events]) { run_cem_acpt(options) }
|
34
35
|
when :cem_acpt_image
|
35
|
-
run_cem_acpt_image(options)
|
36
|
+
trace_it(options[:trace], options[:trace_events]) { run_cem_acpt_image(options) }
|
36
37
|
else
|
37
38
|
raise "Command #{command} does not exist"
|
38
39
|
end
|
@@ -78,41 +79,70 @@ module CemAcpt
|
|
78
79
|
new_log
|
79
80
|
end
|
80
81
|
|
82
|
+
TRACE_EVENTS = %i[line call b_call thread_begin thread_end].freeze
|
83
|
+
|
84
|
+
def trace_it(should_trace = false, trace_events = nil)
|
85
|
+
if should_trace
|
86
|
+
trace_events ||= TRACE_EVENTS
|
87
|
+
tracer = TracePoint.new(*trace_events.map(&:to_sym)) do |tp|
|
88
|
+
if tp&.path&.include?('lib/cem_acpt') && !tp&.path&.include?('lib/cem_acpt/logging')
|
89
|
+
begin
|
90
|
+
logger << "## TRACE ## #{tp.path}:#{tp.lineno}: #{tp.event} #{tp.method_id}\n"
|
91
|
+
rescue StandardError
|
92
|
+
# Trace will often run into the trap context problem before the signal handler call back
|
93
|
+
logger.trap_context = true
|
94
|
+
logger << "## TRACE ## #{tp.path}:#{tp.lineno}: #{tp.event}\n"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
tracer.enable do
|
99
|
+
yield
|
100
|
+
end
|
101
|
+
else
|
102
|
+
yield
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def signal_handlers
|
107
|
+
{
|
108
|
+
'INT' => proc do
|
109
|
+
@trap_context = true
|
110
|
+
logger.trap_context = @trap_context
|
111
|
+
logger.fatal('CemAcpt') { 'Received interrupt signal. Exiting.' }
|
112
|
+
exit 1
|
113
|
+
end,
|
114
|
+
}
|
115
|
+
end
|
116
|
+
|
117
|
+
def set_up_signal_handlers
|
118
|
+
signal_handlers.each do |signal, handler|
|
119
|
+
Signal.trap(signal, &handler)
|
120
|
+
logger.debug('CemAcpt') { "Signal handler set for #{signal}" }
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
81
124
|
def run_cem_acpt(options)
|
82
125
|
# Set up config, logger, and helper
|
83
126
|
@config = new_config(options)
|
84
127
|
initialize_logger!
|
128
|
+
logger.debug('CemAcpt') { 'Config set and logger initialized...' }
|
85
129
|
runner = new_runner
|
86
|
-
|
87
|
-
# Set up signal handlers
|
88
|
-
Signal.trap('INT') do
|
89
|
-
@trap_context = true
|
90
|
-
logger.trap_context = @trap_context
|
91
|
-
logger.fatal('Signal Handler') { 'Received interrupt signal. Cleaning up test suite...' }
|
92
|
-
runner.clean_up(@trap_context)
|
93
|
-
logger.fatal('Signal Handler') { 'Exiting due to interrupt signal' }
|
94
|
-
exit 1
|
95
|
-
end
|
130
|
+
logger.debug('CemAcpt') { 'Runner initialized...' }
|
96
131
|
|
97
132
|
# Run the test suite
|
133
|
+
logger.debug('CemAcpt') { 'Running test suite...' }
|
98
134
|
runner.run
|
99
|
-
|
135
|
+
logger.debug('CemAcpt') { "Test suite run complete, exiting with code #{runner.exit_code}" }
|
100
136
|
exit runner.exit_code
|
101
137
|
end
|
102
138
|
|
103
139
|
def run_cem_acpt_image(options)
|
104
140
|
@config = new_config(options, command: :cem_acpt_image)
|
105
141
|
initialize_logger!
|
106
|
-
|
107
|
-
# Set up signal handlers
|
108
|
-
Signal.trap('INT') do
|
109
|
-
@trap_context = true
|
110
|
-
logger.trap_context = @trap_context
|
111
|
-
logger.fatal('Signal Handler') { 'Received interrupt signal. Cleaning up test suite...' }
|
112
|
-
exit 1
|
113
|
-
end
|
142
|
+
logger.debug('CemAcptImage') { 'Config set and logger initialized...' }
|
114
143
|
|
115
144
|
# Build the images
|
145
|
+
logger.debug('CemAcptImage') { 'Building images...' }
|
116
146
|
CemAcpt::ImageBuilder.build_images(@config)
|
117
147
|
end
|
118
148
|
end
|
@@ -27,6 +27,27 @@ variable "subnetwork" {
|
|
27
27
|
type = string
|
28
28
|
}
|
29
29
|
|
30
|
+
# Just stub this out for now
|
31
|
+
variable "username" {
|
32
|
+
type = string
|
33
|
+
}
|
34
|
+
|
35
|
+
# Just stub this out for now
|
36
|
+
variable "private_key" {
|
37
|
+
type = string
|
38
|
+
sensitive = true
|
39
|
+
}
|
40
|
+
|
41
|
+
# Just stub this out for now
|
42
|
+
variable "public_key" {
|
43
|
+
type = string
|
44
|
+
}
|
45
|
+
|
46
|
+
# Just stub this out for now
|
47
|
+
variable "puppet_module_package" {
|
48
|
+
type = string
|
49
|
+
}
|
50
|
+
|
30
51
|
variable "node_data" {
|
31
52
|
type = map(object({
|
32
53
|
machine_type = string
|
@@ -71,6 +92,11 @@ resource "google_compute_instance" "acpt-test-node" {
|
|
71
92
|
}
|
72
93
|
}
|
73
94
|
|
95
|
+
service_account {
|
96
|
+
email = "cem-windows-acpt-test@team-sse.iam.gserviceaccount.com"
|
97
|
+
scopes = ["cloud-platform"]
|
98
|
+
}
|
99
|
+
|
74
100
|
metadata = {
|
75
101
|
"enable-oslogin" = "TRUE"
|
76
102
|
"cem-acpt-test" = each.value.test_name
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cem_acpt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- puppetlabs
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async-http
|
@@ -105,19 +105,25 @@ dependencies:
|
|
105
105
|
- !ruby/object:Gem::Version
|
106
106
|
version: 0.0.1
|
107
107
|
- !ruby/object:Gem::Dependency
|
108
|
-
name:
|
108
|
+
name: winrm
|
109
109
|
requirement: !ruby/object:Gem::Requirement
|
110
110
|
requirements:
|
111
|
-
- - "
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '2.3'
|
114
|
+
- - "<"
|
112
115
|
- !ruby/object:Gem::Version
|
113
|
-
version: '
|
116
|
+
version: '3.0'
|
114
117
|
type: :runtime
|
115
118
|
prerelease: false
|
116
119
|
version_requirements: !ruby/object:Gem::Requirement
|
117
120
|
requirements:
|
118
|
-
- - "
|
121
|
+
- - ">="
|
119
122
|
- !ruby/object:Gem::Version
|
120
|
-
version: '
|
123
|
+
version: '2.3'
|
124
|
+
- - "<"
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '3.0'
|
121
127
|
- !ruby/object:Gem::Dependency
|
122
128
|
name: pry
|
123
129
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,6 +152,34 @@ dependencies:
|
|
146
152
|
- - ">="
|
147
153
|
- !ruby/object:Gem::Version
|
148
154
|
version: '0'
|
155
|
+
- !ruby/object:Gem::Dependency
|
156
|
+
name: rubocop-performance
|
157
|
+
requirement: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - ">="
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0'
|
162
|
+
type: :development
|
163
|
+
prerelease: false
|
164
|
+
version_requirements: !ruby/object:Gem::Requirement
|
165
|
+
requirements:
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '0'
|
169
|
+
- !ruby/object:Gem::Dependency
|
170
|
+
name: rubocop-rspec
|
171
|
+
requirement: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - ">="
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
type: :development
|
177
|
+
prerelease: false
|
178
|
+
version_requirements: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - ">="
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '0'
|
149
183
|
description: Litmus-like library focusing on CEM Acceptance Tests
|
150
184
|
email:
|
151
185
|
- abide-team@puppet.com
|
@@ -170,6 +204,7 @@ files:
|
|
170
204
|
- exe/cem_acpt
|
171
205
|
- exe/cem_acpt_image
|
172
206
|
- lib/cem_acpt.rb
|
207
|
+
- lib/cem_acpt/action_result.rb
|
173
208
|
- lib/cem_acpt/cli.rb
|
174
209
|
- lib/cem_acpt/config.rb
|
175
210
|
- lib/cem_acpt/config/base.rb
|
@@ -192,16 +227,19 @@ files:
|
|
192
227
|
- lib/cem_acpt/provision/terraform.rb
|
193
228
|
- lib/cem_acpt/provision/terraform/linux.rb
|
194
229
|
- lib/cem_acpt/provision/terraform/os_data.rb
|
230
|
+
- lib/cem_acpt/provision/terraform/terraform_cmd.rb
|
195
231
|
- lib/cem_acpt/provision/terraform/windows.rb
|
196
232
|
- lib/cem_acpt/puppet_helpers.rb
|
197
233
|
- lib/cem_acpt/test_data.rb
|
198
234
|
- lib/cem_acpt/test_runner.rb
|
199
235
|
- lib/cem_acpt/test_runner/log_formatter.rb
|
236
|
+
- lib/cem_acpt/test_runner/log_formatter/error_formatter.rb
|
200
237
|
- lib/cem_acpt/test_runner/log_formatter/goss_action_response.rb
|
201
238
|
- lib/cem_acpt/utils.rb
|
202
239
|
- lib/cem_acpt/utils/puppet.rb
|
203
240
|
- lib/cem_acpt/utils/ssh.rb
|
204
241
|
- lib/cem_acpt/utils/terminal.rb
|
242
|
+
- lib/cem_acpt/utils/winrm_runner.rb
|
205
243
|
- lib/cem_acpt/version.rb
|
206
244
|
- lib/terraform/gcp/linux/goss/puppet_idempotent.yaml
|
207
245
|
- lib/terraform/gcp/linux/goss/puppet_noop.yaml
|
@@ -238,7 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
238
276
|
- !ruby/object:Gem::Version
|
239
277
|
version: '0'
|
240
278
|
requirements: []
|
241
|
-
rubygems_version: 3.4.
|
279
|
+
rubygems_version: 3.4.18
|
242
280
|
signing_key:
|
243
281
|
specification_version: 4
|
244
282
|
summary: CEM Acceptance Tests
|