|
| 1 | +# frozen_string_literal: true |
| 2 | + |
| 3 | +require 'rspec' |
| 4 | +require 'json' |
| 5 | +require 'bosh/template/test' |
| 6 | + |
| 7 | +describe 'locket' do |
| 8 | + let(:release_path) { File.join(File.dirname(__FILE__), '..') } |
| 9 | + let(:release) { Bosh::Template::Test::ReleaseDir.new(release_path) } |
| 10 | + let(:job) { release.job('locket') } |
| 11 | + |
| 12 | + describe 'locket.json.erb' do |
| 13 | + let(:deployment_manifest_fragment) do |
| 14 | + { |
| 15 | + 'diego' => { |
| 16 | + 'locket' => { |
| 17 | + 'listen_addr' => '0.0.0.0:8891', |
| 18 | + 'debug_addr' => '127.0.0.1:17018', |
| 19 | + 'log_level' => 'info', |
| 20 | + 'sql' => { |
| 21 | + 'db_host' => 'sql-db.service.cf.internal', |
| 22 | + 'db_port' => 5432, |
| 23 | + 'db_schema' => 'locket', |
| 24 | + 'db_username' => 'locket', |
| 25 | + 'db_password' => 'locket_pw', |
| 26 | + 'db_driver' => 'postgres', |
| 27 | + 'require_ssl' => false |
| 28 | + } |
| 29 | + } |
| 30 | + }, |
| 31 | + 'database' => { |
| 32 | + 'max_open_connections' => 200, |
| 33 | + 'tls' => { |
| 34 | + 'enable_identity_verification' => true |
| 35 | + } |
| 36 | + }, |
| 37 | + 'tls' => { |
| 38 | + 'ca_cert' => 'CA CERT', |
| 39 | + 'cert' => 'SERVER CERT', |
| 40 | + 'key' => 'SERVER KEY' |
| 41 | + }, |
| 42 | + 'loggregator' => { |
| 43 | + 'v2_api_port' => 3458, |
| 44 | + 'ca_cert' => 'LOGGREGATOR CA', |
| 45 | + 'cert' => 'LOGGREGATOR CERT', |
| 46 | + 'key' => 'LOGGREGATOR KEY' |
| 47 | + }, |
| 48 | + 'set_kernel_parameters' => true |
| 49 | + } |
| 50 | + end |
| 51 | + |
| 52 | + let(:template) { job.template('config/locket.json') } |
| 53 | + let(:rendered_template) { template.render(deployment_manifest_fragment) } |
| 54 | + |
| 55 | + describe 'Database timeout configurations' do |
| 56 | + it 'includes db_operation_timeout when specified' do |
| 57 | + deployment_manifest_fragment['diego']['locket']['sql']['db_operation_timeout'] = '15' |
| 58 | + rendered_template_json = JSON.parse(rendered_template) |
| 59 | + expect(rendered_template_json['db_operation_timeout']).to eq('15s') |
| 60 | + end |
| 61 | + |
| 62 | + it 'uses default db_operation_timeout of 10s when not overridden' do |
| 63 | + rendered_template_json = JSON.parse(rendered_template) |
| 64 | + expect(rendered_template_json['db_operation_timeout']).to eq('10s') |
| 65 | + end |
| 66 | + |
| 67 | + it 'includes db_connection_timeout when specified' do |
| 68 | + deployment_manifest_fragment['diego']['locket']['sql']['db_connection_timeout'] = '30' |
| 69 | + rendered_template_json = JSON.parse(rendered_template) |
| 70 | + expect(rendered_template_json['db_connection_timeout']).to eq('30s') |
| 71 | + end |
| 72 | + |
| 73 | + it 'includes db_read_timeout when specified' do |
| 74 | + deployment_manifest_fragment['diego']['locket']['sql']['db_read_timeout'] = '60' |
| 75 | + rendered_template_json = JSON.parse(rendered_template) |
| 76 | + expect(rendered_template_json['db_read_timeout']).to eq('60s') |
| 77 | + end |
| 78 | + |
| 79 | + it 'includes db_write_timeout when specified' do |
| 80 | + deployment_manifest_fragment['diego']['locket']['sql']['db_write_timeout'] = '60' |
| 81 | + rendered_template_json = JSON.parse(rendered_template) |
| 82 | + expect(rendered_template_json['db_write_timeout']).to eq('60s') |
| 83 | + end |
| 84 | + end |
| 85 | + |
| 86 | + describe 'basic configuration' do |
| 87 | + it 'renders a valid JSON config' do |
| 88 | + rendered_template_json = JSON.parse(rendered_template) |
| 89 | + expect(rendered_template_json['listen_address']).to eq('0.0.0.0:8891') |
| 90 | + expect(rendered_template_json['database_driver']).to eq('postgres') |
| 91 | + expect(rendered_template_json['max_open_database_connections']).to eq(200) |
| 92 | + end |
| 93 | + end |
| 94 | + end |
| 95 | +end |
0 commit comments