semian 0.6.0 → 0.6.1

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,32 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestSemian < Minitest::Test
4
- def setup
5
- Semian.destroy(:testing)
6
- rescue
7
- nil
8
- end
9
-
10
- def test_unsupported_acquire_yields
11
- acquired = false
12
- Semian.register :testing, tickets: 1, error_threshold: 1, error_timeout: 2, success_threshold: 1
13
- Semian[:testing].acquire { acquired = true }
14
- assert acquired
15
- end
16
-
17
- def test_unsuported_constants
18
- assert defined?(Semian::BaseError)
19
- assert defined?(Semian::SyscallError)
20
- assert defined?(Semian::TimeoutError)
21
- assert defined?(Semian::InternalError)
22
- assert defined?(Semian::Resource)
23
- end
24
-
25
- def test_disabled_via_env_var
26
- ENV['SEMIAN_SEMAPHORES_DISABLED'] = '1'
27
-
28
- refute Semian.semaphores_enabled?
29
- ensure
30
- ENV.delete('SEMIAN_SEMAPHORES_DISABLED')
31
- end
32
- end
@@ -1,49 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestSimpleInteger < Minitest::Test
4
- CLASS = ::Semian::Simple::Integer
5
-
6
- def setup
7
- @integer = CLASS.new
8
- end
9
-
10
- def teardown
11
- @integer.destroy
12
- end
13
-
14
- module IntegerTestCases
15
- def test_access_value
16
- assert_equal(0, @integer.value)
17
- @integer.value = 99
18
- assert_equal(99, @integer.value)
19
- time_now = (Time.now).to_i
20
- @integer.value = time_now
21
- assert_equal(time_now, @integer.value)
22
- @integer.value = 6
23
- assert_equal(6, @integer.value)
24
- @integer.value = 6
25
- assert_equal(6, @integer.value)
26
- end
27
-
28
- def test_increment
29
- @integer.increment(4)
30
- assert_equal(4, @integer.value)
31
- @integer.increment
32
- assert_equal(5, @integer.value)
33
- @integer.increment(-2)
34
- assert_equal(3, @integer.value)
35
- end
36
-
37
- def test_reset_on_init
38
- assert_equal(0, @integer.value)
39
- end
40
-
41
- def test_reset
42
- @integer.increment(5)
43
- @integer.reset
44
- assert_equal(0, @integer.value)
45
- end
46
- end
47
-
48
- include IntegerTestCases
49
- end
@@ -1,65 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestSimpleSlidingWindow < Minitest::Test
4
- CLASS = ::Semian::Simple::SlidingWindow
5
-
6
- def setup
7
- @sliding_window = CLASS.new(max_size: 6)
8
- @sliding_window.clear
9
- end
10
-
11
- def teardown
12
- @sliding_window.destroy
13
- end
14
-
15
- module SlidingWindowTestCases
16
- def test_sliding_window_push
17
- assert_equal(0, @sliding_window.size)
18
- @sliding_window << 1
19
- assert_sliding_window(@sliding_window, [1], 6)
20
- @sliding_window << 5
21
- assert_sliding_window(@sliding_window, [1, 5], 6)
22
- end
23
-
24
- def test_sliding_window_resize
25
- assert_equal(0, @sliding_window.size)
26
- @sliding_window << 1 << 2 << 3 << 4 << 5 << 6
27
- assert_sliding_window(@sliding_window, [1, 2, 3, 4, 5, 6], 6)
28
- @sliding_window.resize_to 6
29
- assert_sliding_window(@sliding_window, [1, 2, 3, 4, 5, 6], 6)
30
- @sliding_window.resize_to 5
31
- assert_sliding_window(@sliding_window, [2, 3, 4, 5, 6], 5)
32
- @sliding_window.resize_to 6
33
- assert_sliding_window(@sliding_window, [2, 3, 4, 5, 6], 6)
34
- end
35
-
36
- def test_sliding_window_edge_falloff
37
- assert_equal(0, @sliding_window.size)
38
- @sliding_window << 0 << 1 << 2 << 3 << 4 << 5 << 6 << 7
39
- assert_sliding_window(@sliding_window, [2, 3, 4, 5, 6, 7], 6)
40
- @sliding_window.shift
41
- assert_sliding_window(@sliding_window, [3, 4, 5, 6, 7], 6)
42
- end
43
-
44
- def resize_to_less_than_1_raises
45
- assert_raises ArgumentError do
46
- @sliding_window.resize_to 0
47
- end
48
- end
49
- end
50
-
51
- module SlidingWindowUtilityMethods
52
- def assert_sliding_window(sliding_window, array, max_size)
53
- # Get private member, the sliding_window doesn't expose the entire array
54
- data = sliding_window.instance_variable_get("@window")
55
- assert_equal(array, data)
56
- assert_equal(max_size, sliding_window.max_size)
57
- end
58
- end
59
-
60
- include SlidingWindowTestCases
61
-
62
- private
63
-
64
- include SlidingWindowUtilityMethods
65
- end
@@ -1,45 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestSimpleEnum < Minitest::Test
4
- CLASS = ::Semian::Simple::State
5
-
6
- def setup
7
- @state = CLASS.new
8
- end
9
-
10
- def teardown
11
- @state.destroy
12
- end
13
-
14
- module StateTestCases
15
- def test_start_closed?
16
- assert @state.closed?
17
- end
18
-
19
- def test_open
20
- @state.open
21
- assert @state.open?
22
- assert_equal @state.value, :open
23
- end
24
-
25
- def test_close
26
- @state.close
27
- assert @state.closed?
28
- assert_equal @state.value, :closed
29
- end
30
-
31
- def test_half_open
32
- @state.half_open
33
- assert @state.half_open?
34
- assert_equal @state.value, :half_open
35
- end
36
-
37
- def test_reset
38
- @state.reset
39
- assert @state.closed?
40
- assert_equal @state.value, :closed
41
- end
42
- end
43
-
44
- include StateTestCases
45
- end
@@ -1,33 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'semian'
3
- require 'semian/mysql2'
4
- require 'semian/redis'
5
- require 'toxiproxy'
6
- require 'timecop'
7
- require 'tempfile'
8
- require 'fileutils'
9
-
10
- require 'helpers/background_helper'
11
-
12
- Semian.logger = Logger.new(nil)
13
- Toxiproxy.populate([
14
- {
15
- name: 'semian_test_mysql',
16
- upstream: 'localhost:3306',
17
- listen: 'localhost:13306',
18
- },
19
- {
20
- name: 'semian_test_redis',
21
- upstream: 'localhost:6379',
22
- listen: 'localhost:16379',
23
- },
24
- {
25
- name: 'semian_test_net_http',
26
- upstream: 'localhost:31050',
27
- listen: 'localhost:31051',
28
- },
29
- ])
30
-
31
- class Minitest::Test
32
- include BackgroundHelper
33
- end
@@ -1,60 +0,0 @@
1
- require 'test_helper'
2
-
3
- class UnprotectedResourceTest < Minitest::Test
4
- def setup
5
- @resource = Semian::UnprotectedResource.new(:foo)
6
- end
7
-
8
- def test_interface_is_the_same
9
- diff = Semian::ProtectedResource.public_instance_methods - Semian::UnprotectedResource.public_instance_methods
10
- assert_equal [], diff
11
- end
12
-
13
- def test_resource_name
14
- assert_equal :foo, @resource.name
15
- end
16
-
17
- def test_resource_tickets
18
- assert_equal(-1, @resource.tickets)
19
- end
20
-
21
- def test_resource_count
22
- assert_equal 0, @resource.count
23
- end
24
-
25
- def test_resource_semid
26
- assert_equal 0, @resource.semid
27
- end
28
-
29
- def test_resource_reset
30
- @resource.reset
31
- end
32
-
33
- def test_resource_destroy
34
- @resource.destroy
35
- end
36
-
37
- def test_resource_acquire
38
- acquired = false
39
- @resource.acquire do
40
- acquired = true
41
- end
42
- assert acquired
43
- end
44
-
45
- def test_resource_acquire_with_timeout
46
- acquired = false
47
- @resource.acquire(timeout: 2) do
48
- acquired = true
49
- end
50
- assert acquired
51
- end
52
-
53
- def test_request_is_allowed
54
- assert @resource.request_allowed?
55
- end
56
-
57
- def test_mark_failed
58
- @resource.mark_failed(:error)
59
- end
60
- end