Skip to content

Commit

Permalink
okcomputer: add specific checks
Browse files Browse the repository at this point in the history
  • Loading branch information
ndushay committed Jan 24, 2017
1 parent b1a69ad commit 289c243
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 38 deletions.
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ group :test do
gem 'rspec-rails'
gem 'coveralls', require: false
gem 'codeclimate-test-reporter', require: false
gem 'capybara'
gem 'webmock'
gem 'vcr'
gem 'database_cleaner'
Expand Down
10 changes: 10 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,13 @@ GEM
capistrano-bundler (~> 1.1)
capistrano-releaseboard (0.0.1)
faraday
capybara (2.11.0)
addressable
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
xpath (~> 2.0)
chronic (0.10.2)
codeclimate-test-reporter (0.6.0)
simplecov (>= 0.7.1, < 1.0.0)
Expand Down Expand Up @@ -276,6 +283,8 @@ GEM
hashdiff
whenever (0.9.7)
chronic (>= 0.6.3)
xpath (2.0.0)
nokogiri (~> 1.3)
yard (0.9.5)

PLATFORMS
Expand All @@ -286,6 +295,7 @@ DEPENDENCIES
capistrano-bundler
capistrano-passenger
capistrano-rails
capybara
codeclimate-test-reporter
coveralls
daemons
Expand Down
28 changes: 6 additions & 22 deletions config/environments/development.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,29 +34,13 @@

# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true



# Project specific configuration
config.wayback_timemap_uri = ""
config.wayback_timemap_uri = "https://swap.stanford.edu/timemap/link/"
config.wayback_uri = "https://wayback-dev.stanford.edu/*/"
config.phantom_js_script = "scripts/rasterize.js"
config.thumbnail_tmp_directory = "tmp"
config.image_stacks = ""
config.image_stacks_uri = ""
config.image_stacks = "tmp"
config.image_stacks_uri = "http://example.stanford.edu"
config.purl_url = "http://purl-test.stanford.edu/"
end

#Bluepill.application("was-thumbnail-service", :foreground => true) do |app|
# app.process("delayed_job") do |process|
# process.working_dir = "/Users/aalsum/CodeWorkspace/was-thumbnail-service/"

# process.start_grace_time = 10.seconds
# process.stop_grace_time = 10.seconds
# process.restart_grace_time = 10.seconds

#process.start_command = "RAILS_ENV=development bin/delayed_job start"
#process.stop_command = "RAILS_ENV=development bin/delayed_job stop"

#process.pid_file = "/Users/aalsum/CodeWorkspace/was-thumbnail-service/tmp/pids/delayed_job.pid"
#process.uid = "deploy"
#process.gid = "deploy"
#end
#end
12 changes: 6 additions & 6 deletions config/environments/example.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@
config.assets.raise_runtime_errors = true

# Project specific configuration
config.wayback_timemap_uri = "https://swap.stanford.edu/timemap/link/"
config.wayback_uri = "https://swap.stanford.edu/*/"
config.wayback_timemap_uri = "https://openwayback.example.edu/timemap/link/"
config.wayback_uri = "https://openwayback.example.edu/*/"
config.phantom_js_script = "scripts/rasterize.js"
config.thumbnail_tmp_directory = "tmp"
config.image_stacks = "."
config.image_stacks_uri = ""
config.jp2_required = true
config.purl_url = "http://purl.stanford.edu/"
config.image_stacks = "tmp"
config.image_stacks_uri = "https://stacks.example.edu/image/iiif/"
config.jp2_required = true
config.purl_url = "https://purl.example.edu/"
config.threshold = 2
end
16 changes: 9 additions & 7 deletions config/environments/test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,13 @@

# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true

# Project specific configuration
config.wayback_timemap_uri = ""
config.phantom_js_script = "scripts/rasterize.js"
config.thumbnail_tmp_directory = "tmp"
config.image_stacks = ""
config.image_stacks_uri = ""

# Project specific configuration
config.wayback_timemap_uri = 'http://openwayback.example.edu/timemap/link'
config.wayback_uri = 'http://openwayback.example.edu/*/'
config.phantom_js_script = 'scripts/rasterize.js'
config.thumbnail_tmp_directory = 'tmp'
config.image_stacks = 'tmp'
config.image_stacks_uri = 'http://stacks.example.org'
config.purl_url = 'http://purl.example.edu/'
end
38 changes: 35 additions & 3 deletions config/initializers/okcomputer.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,40 @@
require 'okcomputer'

# /status for 'upness', e.g. for load balancer
# /status for simplest rails app 'upness', e.g. for load balancer
# /status/all to show all dependencies
# /status/feature-<name-of-check> for a specific check (e.g. for nagios warning)
# /status/external-<name-of-check> for a specific check (e.g. for nagios warning)
# /status/<name-of-check> for a specific check
OkComputer.mount_at = 'status'
OkComputer.check_in_parallel = true

# REQUIRED checks, required to pass for /status/all
# individual checks also avail at /status/<name-of-check>

OkComputer::Registry.register 'ruby_version', OkComputer::RubyVersionCheck.new

OkComputer::Registry.register 'thumbnail_tmp_dir', OkComputer::DirectoryCheck.new(Rails.application.config.thumbnail_tmp_directory)
OkComputer::Registry.register 'digital_stacks_dir', OkComputer::DirectoryCheck.new(Rails.application.config.image_stacks)
OkComputer::Registry.register 'external-image_stacks_uri', OkComputer::HttpCheck.new(Rails.application.config.image_stacks_uri)

# config.wayback_timemap_uri is used to determine if there are new mementos that require additional thumbnails
# would like a better check, but config.wayback_timemap_uri = "https://swap.stanford.edu/timemap/link/" gives HTTP 404 error
wayback_timemap_root_url = "#{Rails.application.config.wayback_timemap_uri.split('.edu').first}.edu"
OkComputer::Registry.register 'external-wayback_timemap_root_url', OkComputer::HttpCheck.new(wayback_timemap_root_url)

# check if delayed_job is known to app by looking for any priority and a queue size <= 10,000
OkComputer::Registry.register 'delayed-job-size', OkComputer::DelayedJobBackedUpCheck.new(0, 10000, greater_than_priority: 0)

# ------------------------------------------------------------------------------

# NON-CRUCIAL (Optional) checks, avail at /status/<name-of-check>
# - at individual endpoint, HTTP response code reflects the actual result
# - in /status/all, these checks will display their result text, but will not affect HTTP response code

# config.purl_url is used for links to the seed objects in the GUI
OkComputer::Registry.register 'external-purl_status_url', OkComputer::HttpCheck.new("#{Rails.application.config.purl_url}status")

# config.wayback_uri is used for links to the mementos (crawl objects) in the GUI
# would like a better check, but config.wayback_uri = "https://swap.stanford.edu/*/" gives HTTP 400 error
wayback_root_url = "#{Rails.application.config.wayback_uri.split('.edu').first}.edu"
OkComputer::Registry.register 'external-wayback_root_uri', OkComputer::HttpCheck.new(wayback_root_url)

OkComputer.make_optional %w(external-purl_status_url external-wayback_root_uri)
22 changes: 22 additions & 0 deletions spec/features/status_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
require 'rails_helper'

describe 'application and dependency monitoring' do
it '/status checks if Rails app is running' do
visit '/status'
expect(page.status_code).to eq 200
expect(page).to have_text('Application is running')
end
it '/status/all checks if required dependencies are ok and also shows non-crucial dependencies' do
visit '/status/all'
expect(page).to have_text('PASSED')
expect(page).to have_text('ruby_version')
expect(page).to have_text('thumbnail_tmp_dir')
expect(page).to have_text('digital_stacks_dir')
expect(page).to have_text('external-image_stacks_uri')
expect(page).to have_text('external-wayback_timemap_root_url')
expect(page).to have_text('delayed-job-size')
expect(page).to have_text('OPTIONAL')
expect(page).to have_text('external-purl_status_url') # non-crucial
expect(page).to have_text('external-wayback_root_uri') # non-crucial
end
end

0 comments on commit 289c243

Please sign in to comment.