class PoiseService::Resources::PoiseServiceTest::Provider

Provider for `poise_service_test`.

@see Resource @provides poise_service_test

Constants

SERVICE_SCRIPT

Public Instance Methods

action_run() click to toggle source

`run` action for `poise_service_test`. Create all test services.

@return [void]

# File lib/poise_service/resources/poise_service_test.rb, line 88
def action_run
  notifying_block do
    create_script
    create_noterm_script
    create_user
    create_tests
  end
end

Private Instance Methods

create_noterm_script() click to toggle source
# File lib/poise_service/resources/poise_service_test.rb, line 121
        def create_noterm_script
          file '/usr/bin/poise_test_noterm' do
            owner 'root'
            group 'root'
            mode '755'
            content <<-EOH
#!/opt/chef/embedded/bin/ruby
trap('HUP', 'IGNORE')
trap('TERM', 'IGNORE')
#{SERVICE_SCRIPT}
while true
  begin
    server.start
  rescue Exception
  rescue StandardError
  end
end
EOH
          end
        end
create_script() click to toggle source
# File lib/poise_service/resources/poise_service_test.rb, line 99
        def create_script
          file '/usr/bin/poise_test' do
            owner 'root'
            group 'root'
            mode '755'
            content <<-EOH
#!/opt/chef/embedded/bin/ruby
#{SERVICE_SCRIPT}
def load_file
  FILE_DATA.replace(IO.read(ARGV[1]))
end
if ARGV[1]
  load_file
  trap('HUP') do
    load_file
  end
end
server.start
EOH
          end
        end
create_tests() click to toggle source
# File lib/poise_service/resources/poise_service_test.rb, line 148
def create_tests
  poise_service "poise_test_#{new_resource.name}" do
    if new_resource.service_provider
      provider new_resource.service_provider
      options new_resource.service_provider, new_resource.service_options if new_resource.service_options
    end
    command "/usr/bin/poise_test #{new_resource.base_port}"
  end

  poise_service "poise_test_#{new_resource.name}_params" do
    if new_resource.service_provider
      provider new_resource.service_provider
      options new_resource.service_provider, new_resource.service_options if new_resource.service_options
    end
    command "/usr/bin/poise_test #{new_resource.base_port + 1}"
    environment POISE_ENV: new_resource.name
    user 'poise'
  end

  poise_service "poise_test_#{new_resource.name}_noterm" do
    if new_resource.service_provider
      provider new_resource.service_provider
      options new_resource.service_provider, new_resource.service_options if new_resource.service_options
    end
    action [:enable, :disable]
    command "/usr/bin/poise_test_noterm #{new_resource.base_port + 2}"
    stop_signal 'kill'
  end

  {'restart' => 3, 'reload' => 4}.each do |action, port|
    # Stop it before writing the file so we always start with first.
    poise_service "poise_test_#{new_resource.name}_#{action} stop" do
      if new_resource.service_provider
        provider new_resource.service_provider
        options new_resource.service_provider, new_resource.service_options if new_resource.service_options
      end
      action(:disable)
      service_name "poise_test_#{new_resource.name}_#{action}"
    end

    # Write the content to the read on service launch.
    file "/etc/poise_test_#{new_resource.name}_#{action}" do
      content 'first'
    end

    # Launch the service, reading in first.
    poise_service "poise_test_#{new_resource.name}_#{action}" do
      if new_resource.service_provider
        provider new_resource.service_provider
        options new_resource.service_provider, new_resource.service_options if new_resource.service_options
      end
      command "/usr/bin/poise_test #{new_resource.base_port + port} /etc/poise_test_#{new_resource.name}_#{action}"
    end

    # Rewrite the file to second, restart/reload to trigger an update.
    file "/etc/poise_test_#{new_resource.name}_#{action} again" do
      path "/etc/poise_test_#{new_resource.name}_#{action}"
      content 'second'
      notifies action.to_sym, "poise_service[poise_test_#{new_resource.name}_#{action}]"
    end
  end

  # Test the #pid accessor.
  ruby_block "/tmp/poise_test_#{new_resource.name}_pid" do
    block do
      pid = resources("poise_service[poise_test_#{new_resource.name}]").pid
      IO.write("/tmp/poise_test_#{new_resource.name}_pid", pid.to_s)
    end
  end

  # Test changing the service definition itself.
  poise_service "poise_test_#{new_resource.name}_change" do
    if new_resource.service_provider
      provider new_resource.service_provider
      options new_resource.service_provider, new_resource.service_options if new_resource.service_options
    end
    command "/usr/bin/poise_test #{new_resource.base_port + 5}"
  end

  poise_service "poise_test_#{new_resource.name}_change_second" do
    service_name "poise_test_#{new_resource.name}_change"
    if new_resource.service_provider
      provider new_resource.service_provider
      options new_resource.service_provider, new_resource.service_options if new_resource.service_options
    end
    command "/usr/bin/poise_test #{new_resource.base_port + 6}"
  end

end
create_user() click to toggle source
# File lib/poise_service/resources/poise_service_test.rb, line 142
def create_user
  poise_service_user 'poise' do
    home '/tmp'
  end
end