zillabyte 0.9.7 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8974f32fc265b24fccba0241176b2504994bc752
4
- data.tar.gz: d8180962b759df939f680b9066bdd76a65d46314
3
+ metadata.gz: 17fe4f4d78abd8577811505fc480db3714eaafa5
4
+ data.tar.gz: 46dba9537746b0dd6f7c41825a00b3deb91d269b
5
5
  SHA512:
6
- metadata.gz: da0718446a35dedbfe9d9d4a594bf6d2f5351a0f939f300473cdfc3dc43ab5560cf0b24ed45d1b8e608c3ccef5e93cf3bc5390e0d9178b8e08d578300228b156
7
- data.tar.gz: 4611fcb7c8c98e60cf01c14ca7ce61bf9d8858c45ad92dd1f50b99aed145090d96c700ed4fd85179b0a89ab16caeff32cd506e1a2da507e5557343eb1484aa5e
6
+ metadata.gz: a926a7beeeb77de3ac37838af7fedeac12802b958d02ed453b75b9d806b74966a27831564e752bf4bd12a3c0b7100ef6cabbe67c749473f192558b1809e8267f
7
+ data.tar.gz: 07b329196b76990a06315fa7fe36df5fb7a63b2f696d7c1715522eebbcbc808a80c3d04badbcc797ce616e82652f5e4b6ad3536114101bb6a5708a3bce03aec8
@@ -20,13 +20,43 @@ class Zillabyte::Harness::App < Zillabyte::Harness::Base
20
20
  h
21
21
  end
22
22
 
23
+
23
24
  def source(*args, &block)
24
- op = Zillabyte::Harness::OperationHandler.new(self, Zillabyte::Harness::Stream)
25
- stream = op.build_multilang_operation("source", *args, &block)
26
- .add_operation_properties_to_info(:name, :type)
27
- .add_optional_operation_properties_to_info(:relation, :matches, :end_cycle_policy)
28
- .handle_operation
29
- .get_output_streams
30
- return Zillabyte::Harness::StreamBuilder.new(stream)
25
+ _source_common(Zillabyte::Harness::Stream, *args, &block)
31
26
  end
27
+
28
+
29
+ def source_from_redshift(*args, &block)
30
+ _source_common(Zillabyte::Harness::Stream, *args, &block)
31
+ end
32
+
33
+
34
+ def sink_to_redshift(*args, &block)
35
+ _source_common(Zillabyte::Harness::Stream, *args, &block)
36
+ end
37
+
38
+
39
+ def source_from_kinesis(*args, &block)
40
+ _source_common(Zillabyte::Harness::Stream, "kinesis_demo_source")
41
+ end
42
+
43
+
44
+ def sink_to_kinesis(*args, &block)
45
+ _source_common(Zillabyte::Harness::Stream, "kinesis_demo_sink")
46
+ end
47
+
48
+
49
+
50
+ def call_component(*args, &block)
51
+ op = Zillabyte::Harness::OperationHandler.new(self, Zillabyte::Harness::Stream)
52
+ op = op.build_multilang_operation("component", self, *args, &block)
53
+ .add_operation_properties_to_info(:name, :type, :id, :output_format)
54
+ node = op.node
55
+ streams = op.handle_operation.get_output_streams
56
+ return Zillabyte::Harness::StreamBuilder.new(streams)
57
+ end
58
+ alias_method :executes, :call_component
59
+ alias_method :execute, :call_component
60
+
61
+
32
62
  end
@@ -8,4 +8,32 @@ class Zillabyte::Harness::Base
8
8
  @_name = name
9
9
  end
10
10
 
11
+ def params
12
+ # Params are set by the caller (JVM) in the form of env variables. Why env variables? Because we want to
13
+ # expose the params as soon as possible, in case the user makes static-decisions (i.e. configuring the number
14
+ # of operaitons in a chain, etc).
15
+ if @_params.nil?
16
+ if ENV['ZILLABYTE_PARAMS']
17
+ @_params = JSON.parse(ENV['ZILLABYTE_PARAMS'])
18
+ else
19
+ @_params = {}
20
+ end
21
+ end
22
+ return @_params
23
+ end
24
+
25
+
26
+ protected
27
+
28
+ def _source_common(stream_class, *args, &block)
29
+ op = Zillabyte::Harness::OperationHandler.new(self, stream_class)
30
+ stream = op.build_multilang_operation("source", *args, &block)
31
+ .add_operation_properties_to_info(:name, :type)
32
+ .add_optional_operation_properties_to_info(:relation, :matches, :end_cycle_policy)
33
+ .handle_operation
34
+ .get_output_streams
35
+ return Zillabyte::Harness::StreamBuilder.new(stream)
36
+ end
37
+
38
+
11
39
  end
@@ -18,6 +18,10 @@ class Zillabyte::Harness::Component < Zillabyte::Harness::Base
18
18
  end
19
19
  h
20
20
  end
21
+
22
+ def source(*args, &block)
23
+ _source_common(Zillabyte::Harness::ComponentStream, *args, &block)
24
+ end
21
25
 
22
26
  def inputs(*args, &block)
23
27
  op = Zillabyte::Harness::OperationHandler.new(self, Zillabyte::Harness::ComponentStream)
@@ -1,5 +1,5 @@
1
1
  class Zillabyte::Harness::InjectedComponent
2
- attr_accessor :_app, :_node, :_id, :_input_stream_1
2
+ attr_accessor :_app, :_node, :_id, :_input_stream_1, :_options
3
3
 
4
4
  class Node
5
5
  attr_accessor :_name, :_type, :_id, :_consumes, :_emits, :_output_format
@@ -20,7 +20,13 @@ class Zillabyte::Harness::InjectedComponent
20
20
  end
21
21
 
22
22
  def additional_inputs(*v)
23
- @_consumes.push(*v)
23
+ v.each do |vv|
24
+ if vv.is_a?(Zillabyte::Harness::StreamBuilder)
25
+ @_consumes.push(vv._last_stream)
26
+ else
27
+ @_consumes.push(vv)
28
+ end
29
+ end
24
30
  end
25
31
 
26
32
  def outputs(*v)
@@ -34,8 +40,9 @@ class Zillabyte::Harness::InjectedComponent
34
40
 
35
41
  def initialize(app, *args)
36
42
  @_app = app
37
- @_input_stream_1 = args[0]
38
- @_id = args[1]
43
+ @_args, @_options = Zillabyte::Harness::Helper.get_vector_and_hashes(args)
44
+ @_input_stream_1 = @_args[0]
45
+ @_id = @_args[1]
39
46
  end
40
47
 
41
48
  def build_node(&block)
@@ -27,9 +27,10 @@ class Zillabyte::Harness::Sink
27
27
  class Node
28
28
  attr_accessor :_name, :_relation, :_type, :_columns, :_scope
29
29
 
30
- def initialize()
30
+ def initialize(args, options)
31
31
  @_type = 'sink'
32
- @_columns = []
32
+ @_columns = options[:columns] || []
33
+ @_name = options[:name] || args.first
33
34
  end
34
35
 
35
36
  def name(v)
@@ -52,12 +53,12 @@ class Zillabyte::Harness::Sink
52
53
 
53
54
  def initialize(app, *args)
54
55
  @_app = app
55
- @_vector_options, @_options = Zillabyte::Harness::Helper.get_vector_and_hashes(args)
56
+ @_args, @_options = Zillabyte::Harness::Helper.get_vector_and_hashes(args)
56
57
  end
57
58
 
58
59
  def build_node(&block)
59
- @_node = Node.new
60
- @_node.instance_eval(&block)
60
+ @_node = Node.new(@_args, @_options)
61
+ @_node.instance_eval(&block) if block_given?
61
62
  Zillabyte::Harness::Helper.check_sink(@_node, @_app._nodes)
62
63
  @_node._relation ||= @_node._name
63
64
  end
@@ -56,15 +56,16 @@
56
56
  # end
57
57
  # end
58
58
  class Zillabyte::Harness::Source
59
- attr_accessor :_app, :_node, :_relation
59
+ attr_accessor :_app, :_node, :_relation, :_options
60
60
 
61
61
  class Node < Zillabyte::Harness::CommonNode
62
62
  attr_accessor :_matches, :_relation, :_end_cycle_policy, :_begin_cycle, :_next_tuple
63
63
 
64
- def initialize()
65
- @_name = "source_"+Zillabyte::Harness::Counter.get()
64
+ def initialize(options = {})
65
+ @_name = options[:name] || "source_"+Zillabyte::Harness::Counter.get()
66
66
  @_type = 'source'
67
67
  @_end_cycle_policy = :null_emit
68
+ @_options = options
68
69
  end
69
70
 
70
71
  def matches(v, options = {})
@@ -96,11 +97,11 @@ class Zillabyte::Harness::Source
96
97
 
97
98
  def initialize(app, *args)
98
99
  @_app = app
99
- @_args = args
100
+ @_args, @_options = Zillabyte::Harness::Helper.get_vector_and_hashes(args)
100
101
  end
101
102
 
102
103
  def build_node(&block)
103
- @_node = Node.new
104
+ @_node = Node.new(@_options)
104
105
  # Are we given a block?
105
106
  if block_given?
106
107
  @_node.instance_eval(&block)
@@ -13,6 +13,7 @@ class Zillabyte::Harness::Stream
13
13
  @_name
14
14
  end
15
15
 
16
+
16
17
  def each(*args, &block)
17
18
  op = Zillabyte::Harness::OperationHandler.new(@_app, self.class)
18
19
  op.build_multilang_operation("each", *args, &block)
@@ -1,7 +1,14 @@
1
1
  class Zillabyte::Harness::StreamBuilder < Array
2
2
 
3
3
  def initialize(first_stream)
4
- @_streams = [first_stream]
4
+ if first_stream.is_a?(Array)
5
+ @_streams = nil
6
+ first_stream.each_with_index do |s, i|
7
+ self[i] = s
8
+ end
9
+ else
10
+ @_streams = [first_stream]
11
+ end
5
12
  end
6
13
 
7
14
  # Override these methods explicitly because they are provided by 'Array'
@@ -13,10 +20,22 @@ class Zillabyte::Harness::StreamBuilder < Array
13
20
  _handle_function(:group_by, *args, &block)
14
21
  end
15
22
 
23
+ def count(*args, &block)
24
+ _handle_function(:count, *args, &block)
25
+ end
26
+
16
27
  def map(*args, &block)
17
28
  raise "Unsupported"
18
29
  end
19
30
 
31
+
32
+
33
+ # 'clones' the stream.
34
+ # TODO: docs
35
+ def tee
36
+ return Zillabyte::Harness::StreamBuilder.new(@_streams.last)
37
+ end
38
+
20
39
 
21
40
 
22
41
  def [](v)
@@ -1,3 +1,3 @@
1
1
  module Zillabyte
2
- VERSION = "0.9.7" unless defined?(VERSION)
2
+ VERSION = "0.9.9" unless defined?(VERSION)
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zillabyte
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.7
4
+ version: 0.9.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - zillabyte
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-30 00:00:00.000000000 Z
11
+ date: 2014-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.9.7
33
+ version: 0.9.9
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.9.7
40
+ version: 0.9.9
41
41
  description: The Official Zillabyte Gem
42
42
  email:
43
43
  - gem@zillabyte.com