semian 0.4.3 → 0.5.0
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.
- checksums.yaml +4 -4
- data/.travis.yml +4 -2
- data/Gemfile +0 -1
- data/ext/semian/semian.c +1 -1
- data/lib/semian.rb +19 -18
- data/lib/semian/adapter.rb +2 -0
- data/lib/semian/mysql2.rb +0 -1
- data/lib/semian/net_http.rb +1 -1
- data/lib/semian/platform.rb +11 -1
- data/lib/semian/protected_resource.rb +0 -2
- data/lib/semian/redis.rb +0 -1
- data/lib/semian/resource.rb +5 -1
- data/lib/semian/version.rb +1 -1
- data/scripts/install_toxiproxy.sh +1 -1
- data/semian.gemspec +1 -1
- data/test/circuit_breaker_test.rb +1 -1
- data/test/instrumentation_test.rb +1 -1
- data/test/mysql2_test.rb +1 -1
- data/test/net_http_test.rb +1 -1
- data/test/redis_test.rb +1 -1
- data/test/resource_test.rb +1 -1
- data/test/semian_test.rb +1 -1
- data/test/simple_integer_test.rb +1 -1
- data/test/simple_sliding_window_test.rb +1 -1
- data/test/simple_state_test.rb +1 -1
- data/test/test_helper.rb +1 -1
- data/test/unprotected_resource_test.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c2c538a37d4dad10b509ddcc3efa6f80e128644c
|
|
4
|
+
data.tar.gz: f874bde55c42b7856613ec44faac1001aea1f1ec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9881b1fae08a98cb10541901ee6ef2f06c4dc56c8cb183c3802797c91d9d8c32c10240777c3614892475f73170cf7ad9ef4abcedc0cdd080971c0c4fc09360ce
|
|
7
|
+
data.tar.gz: 6bfdea4f21cee7be821c2014d5679a71a70a0bd6a23f4b67b148b8c45955bcacd96d04549184aec06f9b375784f14a47ce65a224e3555ecaf10b09938de31bad
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/ext/semian/semian.c
CHANGED
|
@@ -493,7 +493,7 @@ void Init_semian()
|
|
|
493
493
|
eInternal = rb_const_get(cSemian, rb_intern("InternalError"));
|
|
494
494
|
|
|
495
495
|
rb_define_alloc_func(cResource, semian_resource_alloc);
|
|
496
|
-
rb_define_method(cResource, "
|
|
496
|
+
rb_define_method(cResource, "initialize_semaphore", semian_resource_initialize, 4);
|
|
497
497
|
rb_define_method(cResource, "acquire", semian_resource_acquire, -1);
|
|
498
498
|
rb_define_method(cResource, "count", semian_resource_count, 0);
|
|
499
499
|
rb_define_method(cResource, "semid", semian_resource_id, 0);
|
data/lib/semian.rb
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
require 'forwardable'
|
|
1
2
|
require 'logger'
|
|
3
|
+
|
|
4
|
+
require 'semian/version'
|
|
2
5
|
require 'semian/instrumentable'
|
|
6
|
+
require 'semian/platform'
|
|
7
|
+
require 'semian/resource'
|
|
8
|
+
require 'semian/circuit_breaker'
|
|
9
|
+
require 'semian/protected_resource'
|
|
10
|
+
require 'semian/unprotected_resource'
|
|
11
|
+
require 'semian/simple_sliding_window'
|
|
12
|
+
require 'semian/simple_integer'
|
|
13
|
+
require 'semian/simple_state'
|
|
3
14
|
|
|
4
15
|
#
|
|
5
16
|
# === Overview
|
|
@@ -77,8 +88,14 @@ module Semian
|
|
|
77
88
|
InternalError = Class.new(BaseError)
|
|
78
89
|
OpenCircuitError = Class.new(BaseError)
|
|
79
90
|
|
|
80
|
-
def
|
|
81
|
-
|
|
91
|
+
def issue_disabled_semaphores_warning
|
|
92
|
+
return if defined?(@warning_issued)
|
|
93
|
+
@warning_issued = true
|
|
94
|
+
if !sysv_semaphores_supported?
|
|
95
|
+
logger.info("Semian sysv semaphores are not supported on #{RUBY_PLATFORM} - all operations will no-op")
|
|
96
|
+
elsif disabled?
|
|
97
|
+
logger.info("Semian semaphores are disabled, is this what you really want? - all operations will no-op")
|
|
98
|
+
end
|
|
82
99
|
end
|
|
83
100
|
|
|
84
101
|
module AdapterError
|
|
@@ -151,24 +168,8 @@ module Semian
|
|
|
151
168
|
end
|
|
152
169
|
end
|
|
153
170
|
|
|
154
|
-
require 'semian/resource'
|
|
155
|
-
require 'semian/circuit_breaker'
|
|
156
|
-
require 'semian/protected_resource'
|
|
157
|
-
require 'semian/unprotected_resource'
|
|
158
|
-
require 'semian/platform'
|
|
159
|
-
require 'semian/simple_sliding_window'
|
|
160
|
-
require 'semian/simple_integer'
|
|
161
|
-
require 'semian/simple_state'
|
|
162
171
|
if Semian.semaphores_enabled?
|
|
163
172
|
require 'semian/semian'
|
|
164
173
|
else
|
|
165
174
|
Semian::MAX_TICKETS = 0
|
|
166
|
-
unless Semian.sysv_semaphores_supported?
|
|
167
|
-
Semian.logger.info("Semian sysv semaphores are not supported on #{RUBY_PLATFORM} - all operations will no-op")
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
if ENV['SEMIAN_SEMAPHORES_DISABLED']
|
|
171
|
-
Semian.logger.info("Semian semaphores are disabled, is this what you really want? - all operations will no-op")
|
|
172
|
-
end
|
|
173
175
|
end
|
|
174
|
-
require 'semian/version'
|
data/lib/semian/adapter.rb
CHANGED
data/lib/semian/mysql2.rb
CHANGED
data/lib/semian/net_http.rb
CHANGED
data/lib/semian/platform.rb
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
module Semian
|
|
2
|
+
extend self
|
|
3
|
+
|
|
2
4
|
# Determines if Semian supported on the current platform.
|
|
3
|
-
def
|
|
5
|
+
def sysv_semaphores_supported?
|
|
4
6
|
/linux/.match(RUBY_PLATFORM)
|
|
5
7
|
end
|
|
8
|
+
|
|
9
|
+
def semaphores_enabled?
|
|
10
|
+
!disabled? && sysv_semaphores_supported?
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def disabled?
|
|
14
|
+
ENV['SEMIAN_SEMAPHORES_DISABLED']
|
|
15
|
+
end
|
|
6
16
|
end
|
data/lib/semian/redis.rb
CHANGED
data/lib/semian/resource.rb
CHANGED
|
@@ -3,7 +3,11 @@ module Semian
|
|
|
3
3
|
attr_reader :tickets, :name
|
|
4
4
|
|
|
5
5
|
def initialize(name, tickets:, permissions: 0660, timeout: 0)
|
|
6
|
-
|
|
6
|
+
if Semian.semaphores_enabled?
|
|
7
|
+
initialize_semaphore(name, tickets, permissions, timeout)
|
|
8
|
+
else
|
|
9
|
+
Semian.issue_disabled_semaphores_warning
|
|
10
|
+
end
|
|
7
11
|
@name = name
|
|
8
12
|
@tickets = tickets
|
|
9
13
|
end
|
data/lib/semian/version.rb
CHANGED
|
@@ -7,7 +7,7 @@ fi
|
|
|
7
7
|
|
|
8
8
|
if which apt-get > /dev/null; then
|
|
9
9
|
echo "Installing toxiproxy"
|
|
10
|
-
wget -O /tmp/toxiproxy.deb https://github.com/Shopify/toxiproxy/releases/download/v2.0.
|
|
10
|
+
wget -O /tmp/toxiproxy.deb https://github.com/Shopify/toxiproxy/releases/download/v2.0.0/toxiproxy_2.0.0_amd64.deb
|
|
11
11
|
sudo dpkg -i /tmp/toxiproxy.deb
|
|
12
12
|
sudo service toxiproxy start
|
|
13
13
|
exit 0
|
data/semian.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
2
|
|
|
3
|
-
class TestInstrumentation <
|
|
3
|
+
class TestInstrumentation < Minitest::Test
|
|
4
4
|
def setup
|
|
5
5
|
Semian.destroy(:testing) if Semian[:testing]
|
|
6
6
|
Semian.register(:testing, tickets: 1, error_threshold: 1, error_timeout: 5, success_threshold: 1)
|
data/test/mysql2_test.rb
CHANGED
data/test/net_http_test.rb
CHANGED
data/test/redis_test.rb
CHANGED
data/test/resource_test.rb
CHANGED
data/test/semian_test.rb
CHANGED
data/test/simple_integer_test.rb
CHANGED
data/test/simple_state_test.rb
CHANGED
data/test/test_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: semian
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Scott Francis
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2016-05-
|
|
12
|
+
date: 2016-05-11 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rake-compiler
|
|
@@ -113,16 +113,16 @@ dependencies:
|
|
|
113
113
|
name: toxiproxy
|
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
|
115
115
|
requirements:
|
|
116
|
-
- - "
|
|
116
|
+
- - "~>"
|
|
117
117
|
- !ruby/object:Gem::Version
|
|
118
|
-
version:
|
|
118
|
+
version: 1.0.0
|
|
119
119
|
type: :development
|
|
120
120
|
prerelease: false
|
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
|
122
122
|
requirements:
|
|
123
|
-
- - "
|
|
123
|
+
- - "~>"
|
|
124
124
|
- !ruby/object:Gem::Version
|
|
125
|
-
version:
|
|
125
|
+
version: 1.0.0
|
|
126
126
|
description: |2
|
|
127
127
|
A Ruby C extention that is used to control access to shared resources
|
|
128
128
|
across process boundaries with SysV semaphores.
|