yggdrasil-engine 1.0.3-x86_64-linux-musl → 1.1.0-x86_64-linux-musl
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/lib/libyggdrasilffi_x86_64-musl.so +0 -0
- data/lib/yggdrasil_engine.rb +17 -2
- data/spec/yggdrasil_engine_spec.rb +21 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0628edf1dfae3b4ddbcc2bd09b46774a945d0302c0dd0b3b21233af90cf5e8a
|
4
|
+
data.tar.gz: 119f1468247357362e8b49a42eb048ba12cabc3ddc9db51fcae98df92bfc005d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 004753dc2538beda155a420278b9780bb3d0b6a86889914e3754c1f64ddb1ddd63e0a49267713ff853bfb302ace801dd4941a002738cd505604a70846d179496
|
7
|
+
data.tar.gz: 5c21cea6ab6ff291591de3de8a6911b4023692680581a84202957bd320ddeee54a9d34f243a72f6ba8e0305046f415f220f68e5c2cf2b23c709d34a3c554222a
|
Binary file
|
data/lib/yggdrasil_engine.rb
CHANGED
@@ -58,13 +58,14 @@ class YggdrasilEngine
|
|
58
58
|
attach_function :free_engine, [:pointer], :void
|
59
59
|
|
60
60
|
attach_function :take_state, %i[pointer string], :pointer
|
61
|
+
attach_function :get_state, [:pointer], :pointer
|
61
62
|
attach_function :check_enabled, %i[pointer string string string], :pointer
|
62
63
|
attach_function :check_variant, %i[pointer string string string], :pointer
|
63
64
|
attach_function :get_metrics, [:pointer], :pointer
|
64
65
|
attach_function :free_response, [:pointer], :void
|
65
66
|
|
66
|
-
attach_function :count_toggle, %i[pointer string bool], :
|
67
|
-
attach_function :count_variant, %i[pointer string string], :
|
67
|
+
attach_function :count_toggle, %i[pointer string bool], :pointer
|
68
|
+
attach_function :count_variant, %i[pointer string string], :pointer
|
68
69
|
|
69
70
|
attach_function :list_known_toggles, [:pointer], :pointer
|
70
71
|
|
@@ -85,6 +86,20 @@ class YggdrasilEngine
|
|
85
86
|
YggdrasilEngine.free_response(response_ptr)
|
86
87
|
end
|
87
88
|
|
89
|
+
def get_state
|
90
|
+
response_ptr = YggdrasilEngine.get_state(@engine)
|
91
|
+
begin
|
92
|
+
response_json = response_ptr.read_string
|
93
|
+
response = JSON.parse(response_json, symbolize_names: true)
|
94
|
+
|
95
|
+
raise "Error: #{response[:error_message]}" if response[:status_code] == ERROR_RESPONSE
|
96
|
+
|
97
|
+
response[:value].to_json
|
98
|
+
ensure
|
99
|
+
YggdrasilEngine.free_response(response_ptr)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
88
103
|
def get_variant(name, context)
|
89
104
|
context_json = (context || {}).to_json
|
90
105
|
custom_strategy_results = @custom_strategy_handler.evaluate_custom_strategies(name, context).to_json
|
@@ -25,6 +25,27 @@ RSpec.describe YggdrasilEngine do
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
describe '#getting state' do
|
29
|
+
it 'should return JSON string of state value (not wrapped response) and support roundtrip' do
|
30
|
+
empty_state = yggdrasil_engine.get_state
|
31
|
+
|
32
|
+
expect(empty_state).to include('"features":[]')
|
33
|
+
expect(empty_state).not_to include('status_code')
|
34
|
+
expect(empty_state).not_to include('error_message')
|
35
|
+
|
36
|
+
test_state = '{"version":1,"features":[{"name":"testFeature","enabled":true,"strategies":[{"name":"default"}]}]}'
|
37
|
+
yggdrasil_engine.take_state(test_state)
|
38
|
+
retrieved_state = yggdrasil_engine.get_state
|
39
|
+
|
40
|
+
expect(retrieved_state).to include('testFeature')
|
41
|
+
expect(retrieved_state).to include('"version":1')
|
42
|
+
expect(retrieved_state).to include('"name":"testFeature"')
|
43
|
+
expect(retrieved_state).to include('"name":"default"')
|
44
|
+
expect(retrieved_state).not_to include('status_code')
|
45
|
+
expect(retrieved_state).not_to include('error_message')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
28
49
|
describe '#metrics' do
|
29
50
|
it 'should clear metrics when get_metrics is called' do
|
30
51
|
feature_name = 'Feature.A'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yggdrasil-engine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: x86_64-linux-musl
|
6
6
|
authors:
|
7
7
|
- Unleash
|
@@ -40,7 +40,7 @@ homepage: http://github.com/username/my_gem
|
|
40
40
|
licenses:
|
41
41
|
- MIT
|
42
42
|
metadata:
|
43
|
-
yggdrasil_core_version: 0.
|
43
|
+
yggdrasil_core_version: 0.18.1
|
44
44
|
post_install_message:
|
45
45
|
rdoc_options: []
|
46
46
|
require_paths:
|