sunshine 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,58 +0,0 @@
1
- module Sunshine
2
-
3
- class Health
4
-
5
- ##
6
- # Default healthcheck request path.
7
-
8
- DEFAULT_REQUEST_PATH = '/_health'
9
-
10
-
11
- ##
12
- # The healthcheck-enabled file.
13
-
14
- HEALTHCHECK_FILE = '../../health.enabled'
15
-
16
-
17
- ##
18
- # Creates a new SunshineHealth middleware. Supported options are:
19
- # :uri_path:: The path that healthcheck will be used on.
20
- # :health_file:: The file to check for health.
21
-
22
- def initialize app, options={}
23
- @app = app
24
- @uri_path = options[:uri_path] || DEFAULT_REQUEST_PATH
25
- @healthcheck_file = options[:health_file] || HEALTHCHECK_FILE
26
- end
27
-
28
-
29
- def call env
30
- check_health?(env) ? health_response : @app.call(env)
31
- end
32
-
33
-
34
- ##
35
- # Given the rack env, do we need to perform a health check?
36
-
37
- def check_health? env
38
- env['PATH_INFO'] == @uri_path
39
- end
40
-
41
-
42
- ##
43
- # Check if healthcheck is enabled.
44
-
45
- def health_enabled?
46
- File.file? @healthcheck_file
47
- end
48
-
49
-
50
- ##
51
- # Get a rack response for the current health status.
52
-
53
- def health_response
54
- status, body = health_enabled? ? [200, "OK"] : [404, "404"]
55
- [status, {'Content-Type' => 'text/html'}, body]
56
- end
57
- end
58
- end
@@ -1,70 +0,0 @@
1
- require 'test/test_helper'
2
-
3
- class TestHealthcheck < Test::Unit::TestCase
4
-
5
- def setup
6
- @remote_shell = mock_remote_shell
7
- @health = Sunshine::Healthcheck.new "somepath", @remote_shell
8
-
9
- @test_disabled = "test -f #{@health.disabled_file}"
10
- @test_enabled = "test -f #{@health.enabled_file}"
11
- end
12
-
13
-
14
- def test_initialize
15
- assert_equal @remote_shell, @health.shell
16
- assert_equal "somepath/health.enabled", @health.enabled_file
17
- assert_equal "somepath/health.disabled", @health.disabled_file
18
- end
19
-
20
-
21
- def test_disable
22
- @health.disable
23
-
24
- cmd = "touch #{@health.disabled_file} && rm -f #{@health.enabled_file}"
25
- assert_ssh_call cmd
26
- end
27
-
28
-
29
- def test_enable
30
- @health.enable
31
-
32
- cmd = "rm -f #{@health.disabled_file} && touch #{@health.enabled_file}"
33
- assert_ssh_call cmd
34
- end
35
-
36
-
37
- def test_remove
38
- @health.remove
39
-
40
- cmd = "rm -f #{@health.disabled_file} #{@health.enabled_file}"
41
- assert_ssh_call cmd
42
- end
43
-
44
-
45
- def test_status_down
46
- @remote_shell.set_mock_response 1,
47
- @test_disabled => [:err, ""],
48
- @test_enabled => [:err, ""]
49
-
50
- assert_equal(:down, @health.status)
51
-
52
- assert_ssh_call @test_disabled
53
- assert_ssh_call @test_enabled
54
- end
55
-
56
-
57
- def test_status_ok
58
- @remote_shell.set_mock_response 1, @test_disabled => [:err, ""]
59
- @remote_shell.set_mock_response 0, @test_enabled => [:out, ""]
60
-
61
- assert_equal(:enabled, @health.status)
62
- end
63
-
64
-
65
- def test_status_disabled
66
- @remote_shell.set_mock_response 0, @test_disabled => [:out, ""]
67
-
68
- assert_equal(:disabled, @health.status)
69
- end
70
- end