1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
module LeapCli; module Commands
desc 'Run tests.'
command [:test, :t] do |test|
test.desc 'Run the test suit on FILTER nodes.'
test.arg_name 'FILTER', :optional => true
test.command :run do |run|
run.switch 'continue', :desc => 'Continue over errors and failures (default is --no-continue).', :negatable => true
run.action do |global_options,options,args|
test_order = File.join(Path.platform, 'tests/order.rb')
if File.exists?(test_order)
require test_order
end
manager.filter!(args).names_in_test_dependency_order.each do |node_name|
node = manager.nodes[node_name]
begin
ssh_connect(node) do |ssh|
ssh.run(test_cmd(options))
end
rescue Capistrano::CommandError => exc
if options[:continue]
exit_status(1)
else
bail!
end
end
end
end
end
test.desc 'Creates files needed to run tests.'
test.command :init do |init|
init.action do |global_options,options,args|
generate_test_client_openvpn_configs
end
end
test.default_command :run
end
private
def test_cmd(options)
if options[:continue]
"#{Leap::Platform.leap_dir}/bin/run_tests --continue"
else
"#{Leap::Platform.leap_dir}/bin/run_tests"
end
end
#
# generates a whole bunch of openvpn configs that can be used to connect to different openvpn gateways
#
def generate_test_client_openvpn_configs
assert_config! 'provider.ca.client_certificates.unlimited_prefix'
assert_config! 'provider.ca.client_certificates.limited_prefix'
template = read_file! Path.find_file(:test_client_openvpn_template)
manager.environment_names.each do |env|
vpn_nodes = manager.nodes[:environment => env][:services => 'openvpn']['openvpn.allow_limited' => true]
if vpn_nodes.any?
generate_test_client_cert(provider.ca.client_certificates.limited_prefix) do |key, cert|
write_file! [:test_openvpn_config, [env, 'limited'].compact.join('_')], Util.erb_eval(template, binding)
end
end
vpn_nodes = manager.nodes[:environment => env][:services => 'openvpn']['openvpn.allow_unlimited' => true]
if vpn_nodes.any?
generate_test_client_cert(provider.ca.client_certificates.unlimited_prefix) do |key, cert|
write_file! [:test_openvpn_config, [env, 'unlimited'].compact.join('_')], Util.erb_eval(template, binding)
end
end
end
end
end; end
|