Решение в профилях Inspec - PullRequest
       31

Решение в профилях Inspec

0 голосов
/ 09 октября 2019

Я запускаю профиль insg postgres и хотел бы запускать определенные тесты, только если узел является главным узлом. Вот мой профиль

sql = postgres_session('postgres', password, 'localhost')
result = describe sql.query('SELECT pg_is_in_recovery()') do
    its('output') { should eq 'f' }
end
if result == 'f'
   describe sql.query('SELECT state from pg_stat_replication') do
      its('output') { should match 'streaming' }
   end
end

Но это не работает, так как результат переменной не хранит значение 'f'.

Мой вопрос заключается в том, как сохранить значение в переменнойи использовать это для следующего теста в inspec? Как мы печатаем значения переменных в inspec (операторы отладки)

1 Ответ

1 голос
/ 09 октября 2019

говоря только из моей памяти, вы должны назначить SQL-запрос в переменную, передать эту переменную в блок описания, чтобы вы могли использовать сопоставление (но вам кажется, что он вам не нужен в вашем случае), а затем поместитьусловие этой переменной. это должно быть что-то вроде:

sql = postgres_session('postgres', password, 'localhost')
result = sql.query('SELECT pg_is_in_recovery()')

if result.output == 'f'
   describe sql.query('SELECT state from pg_stat_replication') do
      its('output') { should match 'streaming' }
   end
end
...