Files
puppet-mistral/spec/classes/mistral_wsgi_apache_spec.rb
Takashi Kajinami ee7d8403d4 Replace wsgi script
pbr is removing support for wsgi_script due to changes in setuptools.
Use the wsgi script module python code instead.

Note that this change only touches CentOS code. Ubuntu and Debian will
be updated later when we bump the release used in our testing.

Change-Id: I15200b393a0f8f8f0168c4504d9073ba5b8b4aea
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025-08-21 11:53:16 +09:00

175 lines
5.9 KiB
Ruby

require 'spec_helper'
describe 'mistral::wsgi::apache' do
shared_examples_for 'apache serving mistral with mod_wsgi' do
context 'with default parameters' do
it { is_expected.to contain_class('mistral::deps') }
it { is_expected.to contain_class('mistral::params') }
it { is_expected.to contain_openstacklib__wsgi__apache('mistral_wsgi').with(
:bind_port => 8989,
:group => 'mistral',
:path => '/',
:priority => 10,
:servername => 'foo.example.com',
:ssl => false,
:threads => 1,
:user => 'mistral',
:workers => facts[:os_workers],
:wsgi_daemon_process => 'mistral',
:wsgi_process_group => 'mistral',
:wsgi_script_dir => platform_params[:wsgi_script_path],
:wsgi_script_file => 'app',
:wsgi_script_source => platform_params[:wsgi_script_source],
:headers => nil,
:request_headers => nil,
:access_log_file => nil,
:access_log_pipe => nil,
:access_log_syslog => nil,
:access_log_format => nil,
:error_log_file => nil,
:error_log_pipe => nil,
:error_log_syslog => nil,
:custom_wsgi_process_options => {},
)}
end
context 'when overriding parameters' do
let :params do
{
:servername => 'dummy.host',
:bind_host => '10.42.51.1',
:port => 12345,
:ssl => true,
:wsgi_process_display_name => 'mistral',
:workers => 37,
:custom_wsgi_process_options => {
'python_path' => '/my/python/path',
},
:headers => ['set X-XSS-Protection "1; mode=block"'],
:request_headers => ['set Content-Type "application/json"'],
:vhost_custom_fragment => 'Timeout 99',
}
end
it { is_expected.to contain_class('mistral::deps') }
it { is_expected.to contain_class('mistral::params') }
it { is_expected.to contain_openstacklib__wsgi__apache('mistral_wsgi').with(
:bind_host => '10.42.51.1',
:bind_port => 12345,
:group => 'mistral',
:path => '/',
:servername => 'dummy.host',
:ssl => true,
:threads => 1,
:user => 'mistral',
:vhost_custom_fragment => 'Timeout 99',
:workers => 37,
:wsgi_daemon_process => 'mistral',
:wsgi_process_display_name => 'mistral',
:wsgi_process_group => 'mistral',
:wsgi_script_dir => platform_params[:wsgi_script_path],
:wsgi_script_file => 'app',
:wsgi_script_source => platform_params[:wsgi_script_source],
:headers => ['set X-XSS-Protection "1; mode=block"'],
:request_headers => ['set Content-Type "application/json"'],
:custom_wsgi_process_options => {
'python_path' => '/my/python/path',
},
)}
end
context 'with custom access logging' do
let :params do
{
:access_log_format => 'foo',
:access_log_syslog => 'syslog:local0',
:error_log_syslog => 'syslog:local1',
}
end
it { should contain_openstacklib__wsgi__apache('mistral_wsgi').with(
:access_log_format => params[:access_log_format],
:access_log_syslog => params[:access_log_syslog],
:error_log_syslog => params[:error_log_syslog],
)}
end
context 'with access_log_file' do
let :params do
{
:access_log_file => '/path/to/file',
}
end
it { should contain_openstacklib__wsgi__apache('mistral_wsgi').with(
:access_log_file => params[:access_log_file],
)}
end
context 'with access_log_pipe' do
let :params do
{
:access_log_pipe => 'pipe',
}
end
it { should contain_openstacklib__wsgi__apache('mistral_wsgi').with(
:access_log_pipe => params[:access_log_pipe],
)}
end
context 'with error_log_file' do
let :params do
{
:error_log_file => '/path/to/file',
}
end
it { should contain_openstacklib__wsgi__apache('mistral_wsgi').with(
:error_log_file => params[:error_log_file],
)}
end
context 'with error_log_pipe' do
let :params do
{
:error_log_pipe => 'pipe',
}
end
it { should contain_openstacklib__wsgi__apache('mistral_wsgi').with(
:error_log_pipe => params[:error_log_pipe],
)}
end
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts({
:os_workers => 8,
}))
end
let(:platform_params) do
case facts[:os]['family']
when 'Debian'
{
:wsgi_script_path => '/usr/lib/cgi-bin/mistral',
:wsgi_script_source => '/usr/bin/mistral-wsgi-api'
}
when 'RedHat'
{
:wsgi_script_path => '/var/www/cgi-bin/mistral',
:wsgi_script_source => '/usr/lib/python3.9/site-packages/mistral/api/wsgi.py',
}
end
end
it_configures 'apache serving mistral with mod_wsgi'
end
end
end