cellect-server 0.1.0 → 0.1.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.
- checksums.yaml +4 -4
- data/.travis.yml +24 -0
- data/README.md +1 -1
- data/lib/cellect/server/adapters/default.rb +5 -4
- data/lib/cellect/server/adapters/postgres.rb +11 -2
- data/lib/cellect/server/workflow.rb +7 -4
- data/lib/cellect/version.rb +1 -1
- data/spec/server/workflow_spec.rb +7 -2
- data/spec/support/shared_examples_for_node_set.rb +2 -1
- data/spec/support/shared_examples_for_workflow.rb +2 -2
- data/spec/support/spec_adapter.rb +6 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6f50bc35da0b22aed570a3820f089359cd29aaf
|
4
|
+
data.tar.gz: 1ee19a258a5ec1eac02d34e7cf87fdb6c31e70fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df88efc975c8fb833e6e63d56c051aaa25c91fbf045d46ed64dc5704420c5f3f8f4d4a837aaa6aa5aa05639b55875e9477284788df77496ca8f3652b5e7f2bdc
|
7
|
+
data.tar.gz: e1af49629a0d2024a3d25d70b3df749699ae6b5b3586c09837dd3da07550c59437907c60cbcc760d5677707a6c93139866dcb29f32270f1e3ac93e60f13dc3b0
|
data/.travis.yml
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
language: ruby
|
2
|
+
cache: bundler
|
3
|
+
|
4
|
+
before_install:
|
5
|
+
- sudo add-apt-repository ppa:boost-latest/ppa -y
|
6
|
+
- sudo apt-get update -q
|
7
|
+
- sudo apt-get install -y autoconf automake boost1.55 libffi-dev
|
8
|
+
|
9
|
+
before_script:
|
10
|
+
- test `which zkServer.sh` && zkServer.sh stop && rm -rf /tmp/zookeeper/*; true
|
11
|
+
- wget -q -O - "http://mirrors.koehn.com/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz" | tar zx -C "$HOME/"
|
12
|
+
- export PATH="$PATH:/$HOME/zookeeper-3.4.6/bin"
|
13
|
+
- cp "$HOME/zookeeper-3.4.6/conf/zoo_sample.cfg" "$HOME/zookeeper-3.4.6/conf/zoo.cfg"
|
14
|
+
- zkServer.sh start
|
15
|
+
|
16
|
+
rvm:
|
17
|
+
- 2.1.5
|
18
|
+
- 2.1.2
|
19
|
+
- 2.2.0
|
20
|
+
|
21
|
+
jdk:
|
22
|
+
- openjdk7
|
23
|
+
|
24
|
+
script: ZK_URL=localhost:2181 bundle exec rake
|
data/README.md
CHANGED
@@ -10,7 +10,7 @@ module Cellect
|
|
10
10
|
# 'pairwise' => false,
|
11
11
|
# 'grouped' => false
|
12
12
|
# }, ...]
|
13
|
-
def workflow_list
|
13
|
+
def workflow_list(*names)
|
14
14
|
raise NotImplementedError
|
15
15
|
end
|
16
16
|
|
@@ -34,8 +34,8 @@ module Cellect
|
|
34
34
|
raise NotImplementedError
|
35
35
|
end
|
36
36
|
|
37
|
-
def load_workflows
|
38
|
-
workflow_list.each{ |workflow_info| load_workflow workflow_info }
|
37
|
+
def load_workflows(*names)
|
38
|
+
workflow_list(*names).each{ |workflow_info| load_workflow workflow_info }
|
39
39
|
end
|
40
40
|
|
41
41
|
def load_workflow(args)
|
@@ -52,7 +52,8 @@ module Cellect
|
|
52
52
|
|
53
53
|
def workflow_for(opts = { })
|
54
54
|
workflow_klass = opts.fetch('grouped', false) ? GroupedWorkflow : Workflow
|
55
|
-
workflow_klass[opts['name']
|
55
|
+
workflow_klass[opts['name']] = opts
|
56
|
+
workflow_klass[opts['name']]
|
56
57
|
end
|
57
58
|
end
|
58
59
|
end
|
@@ -11,9 +11,18 @@ module Cellect
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
def workflow_list
|
14
|
+
def workflow_list(*names)
|
15
15
|
with_pg do |pg|
|
16
|
-
|
16
|
+
statement = 'SELECT * FROM workflows'
|
17
|
+
statement += case names.length
|
18
|
+
when 0
|
19
|
+
""
|
20
|
+
when 1
|
21
|
+
"WHERE \"workflows\".\"id\" = #{ names.first }"
|
22
|
+
else
|
23
|
+
"WHERE \"workflows\".\"id\" IN (#{ names.join(',') })"
|
24
|
+
end
|
25
|
+
pg.exec(statement).collect do |row|
|
17
26
|
{
|
18
27
|
'id' => row['id'].to_i,
|
19
28
|
'name' => row['id'],
|
@@ -6,10 +6,13 @@ module Cellect
|
|
6
6
|
attr_accessor :name, :users, :subjects, :state
|
7
7
|
attr_accessor :pairwise, :prioritized
|
8
8
|
|
9
|
-
def self.[](name
|
10
|
-
|
11
|
-
Actor[
|
12
|
-
|
9
|
+
def self.[](name)
|
10
|
+
Cellect::Server.adapter.load_workflows(name) unless Actor[name]
|
11
|
+
Actor[name].actors.first
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.[]=(name, opts)
|
15
|
+
Actor[name] = supervise name, pairwise: opts['pairwise'], prioritized: opts['prioritized']
|
13
16
|
end
|
14
17
|
|
15
18
|
def self.names
|
data/lib/cellect/version.rb
CHANGED
@@ -2,6 +2,11 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Cellect::Server
|
4
4
|
describe Workflow do
|
5
|
+
it "should try to load workflows that aren't loaded" do
|
6
|
+
expect(Cellect::Server.adapter).to receive(:load_workflows).with('random').and_call_original
|
7
|
+
Workflow['random']
|
8
|
+
end
|
9
|
+
|
5
10
|
SET_TYPES.each do |workflow_type|
|
6
11
|
context workflow_type do
|
7
12
|
it_behaves_like 'workflow', :workflow
|
@@ -35,8 +40,8 @@ module Cellect::Server
|
|
35
40
|
end
|
36
41
|
|
37
42
|
it 'should remove subjects' do
|
38
|
-
expect(workflow.subjects).to receive(:
|
39
|
-
workflow.
|
43
|
+
expect(workflow.subjects).to receive(:remove).with 123
|
44
|
+
workflow.remove subject_id: 123
|
40
45
|
end
|
41
46
|
|
42
47
|
it 'should be notified of a user ttl expiry' do
|
@@ -14,6 +14,7 @@ shared_examples_for 'node set' do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'should accept a connection string' do
|
17
|
+
url_before = ENV['ZK_URL']
|
17
18
|
begin
|
18
19
|
pass_until node_set, is: :ready
|
19
20
|
ENV['ZK_URL'] = 'foobar'
|
@@ -21,7 +22,7 @@ shared_examples_for 'node set' do
|
|
21
22
|
ENV.delete 'ZK_URL'
|
22
23
|
expect(node_set.send(:zk_url)).to eq 'localhost:2181'
|
23
24
|
ensure
|
24
|
-
ENV['ZK_URL'] =
|
25
|
+
ENV['ZK_URL'] = url_before
|
25
26
|
end
|
26
27
|
end
|
27
28
|
end
|
@@ -6,8 +6,8 @@ shared_examples_for 'workflow' do |name|
|
|
6
6
|
end
|
7
7
|
|
8
8
|
it 'should add singleton instances to the registry' do
|
9
|
-
expect(obj.class[
|
10
|
-
expect(obj.class[
|
9
|
+
expect(obj.class[obj.name]).to be_a_kind_of Cellect::Server::Workflow
|
10
|
+
expect(obj.class[obj.name].object_id).to eq obj.class[obj.name].object_id
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'should initialize empty' do
|
@@ -1,8 +1,12 @@
|
|
1
1
|
require 'oj'
|
2
2
|
|
3
3
|
class SpecAdapter < Cellect::Server::Adapters::Default
|
4
|
-
def workflow_list
|
5
|
-
|
4
|
+
def workflow_list(*names)
|
5
|
+
if names.empty?
|
6
|
+
fixtures.values
|
7
|
+
else
|
8
|
+
fixtures.values_at(*names)
|
9
|
+
end
|
6
10
|
end
|
7
11
|
|
8
12
|
def load_data_for(workflow_name)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cellect-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Parrish
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -229,6 +229,7 @@ extra_rdoc_files: []
|
|
229
229
|
files:
|
230
230
|
- ".gitignore"
|
231
231
|
- ".rspec"
|
232
|
+
- ".travis.yml"
|
232
233
|
- Gemfile
|
233
234
|
- README.md
|
234
235
|
- Rakefile
|