zillabyte 0.0.16 → 0.0.17

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,134 +0,0 @@
1
- require 'optparse'
2
-
3
- class Zillabyte::Harness::SimpleFunction
4
- attr_accessor :_nodes, :_relation, :_matches, :_emits, :_prepare, :_execute, :_name, :_info_file, :_options
5
-
6
- def self.build(*args, &block)
7
- h = Zillabyte::Harness::SimpleFunction.new()
8
- h.instance_eval(&block)
9
- #yield(h)
10
- h._name = h._name
11
- Zillabyte::Harness::Helper.check_name("simple_function", h._name, {})
12
- Zillabyte::Harness::Helper.check_emits("simple_function", h._emits, {})
13
- generic_emits = h.get_generic_emits
14
-
15
- h._nodes = []
16
- h._options = Zillabyte::Harness::Helper.opt_parser()
17
-
18
- if(h._options[:command] == :info)
19
- h._info_file = File.open(h._options[:file],"w+")
20
- hash = {"language" => "ruby", "name" => h._name}
21
- Zillabyte::Harness::Helper.write_hash_to_file(hash, h._info_file)
22
- end
23
-
24
- h.build_source()
25
- fn = h.build_each(generic_emits)
26
- h.build_sink()
27
-
28
- if(h._options[:command] == :execute and h._options[:name] == 'each')
29
- pipe_name = h._options[:pipe]
30
- c = Zillabyte::Harness::EachController.new(fn, progress = Zillabyte::Common::Progress.new)
31
- c.run(pipe_name)
32
- end
33
-
34
- h
35
- end
36
-
37
- def name(v)
38
- @_name = v
39
- end
40
-
41
- def matches(v, options = {})
42
- case v
43
- when String
44
- @_relation = { :query => v, :options => options.is_a?(Hash) ? options : {} }
45
- when Array
46
- @_matches = v
47
- end
48
- end
49
-
50
- def emits(v)
51
- @_emits = v
52
- end
53
-
54
- def prepare(&block)
55
- @_prepare = block
56
- end
57
-
58
- def execute(&block)
59
- @_execute = block
60
- end
61
-
62
- def get_generic_emits()
63
- generic_emits = []
64
- @_emits.each do |relation|
65
- temit = []
66
- relation[1].each do |column|
67
- column.each do |col, type|
68
- temit << col
69
- end
70
- end
71
- generic_emits << [relation[0], temit]
72
- end
73
- generic_emits
74
- end
75
-
76
- def build_source()
77
- h = Zillabyte::Harness::Source.new(false)
78
- h._matches = @_matches if @_matches
79
- h._relation = @_relation if @_relation
80
- Zillabyte::Harness::Helper.check_source("simple_function", h)
81
- @_nodes << h
82
- if(@_options[:command] == :info)
83
- info_hash = {"name" => h._name, "type" => h._type}
84
- if(h._relation)
85
- info_hash["relation"] = h._relation
86
- elsif(h._matches)
87
- info_hash["matches"] = h._matches
88
- end
89
- Zillabyte::Harness::Helper.write_hash_to_file(info_hash, @_info_file)
90
- end
91
- end
92
-
93
- def build_each(generic_emits)
94
- h = Zillabyte::Harness::Each.new()
95
- h._name = 'each'
96
- h._emits = generic_emits
97
- h._prepare = @_prepare
98
- h._execute = @_execute
99
- @_nodes << h
100
- if(@_options[:command] == :info)
101
- info_hash = {"name" => h._name, "type" => h._type, "emits" => h._emits}
102
- Zillabyte::Harness::Helper.write_hash_to_file(info_hash, @_info_file)
103
- end
104
- h
105
- end
106
-
107
- def build_sink()
108
- # Construct the sink...
109
- n_sinks = @_emits.length
110
- @_emits.each do |emit|
111
- h = Zillabyte::Harness::Sink.new()
112
- h._name = "sink"
113
- h._relation = emit[0]
114
- columns = emit[1]
115
- columns.each do |col|
116
- col.each do |cname, ctype|
117
- h.column(cname, ctype)
118
- end
119
- end
120
- if(n_sinks > 1)
121
- h._consumes = h._name
122
- end
123
- @_nodes << h
124
- if(@_options[:command] == :info)
125
- info_hash = {"name" => h._name, "type" => h._type, "columns" => h._columns, "relation" => h._relation || h._name}
126
- if(h._consumes)
127
- info_hash["consumes"] = h._consumes
128
- end
129
- Zillabyte::Harness::Helper.write_hash_to_file(info_hash, @_info_file)
130
- end
131
- end
132
- end
133
-
134
- end
@@ -1,93 +0,0 @@
1
- require 'optparse'
2
-
3
- class Zillabyte::Harness::SimpleSource
4
- attr_accessor :_nodes, :_sink, :_name
5
-
6
- def self.build(*args, &block)
7
-
8
- # Parse the options...
9
- options = Zillabyte::Harness::Helper.opt_parser()
10
- flow = Zillabyte::Harness::SimpleSource.new()
11
- flow._nodes = []
12
- flow._name = options[:name]
13
-
14
- # Get the user logic...
15
- #yield(flow)
16
- flow.instance_eval(&block)
17
- if(options[:command] == :info)
18
- _info_file = File.open(options[:file], "w+")
19
- info_hash = {"language" => "ruby", "name" => flow._name}
20
- Zillabyte::Harness::Helper.write_hash_to_file(info_hash, _info_file)
21
- end
22
-
23
- # Get the source-specific logic...
24
- source = Zillabyte::Harness::Source.new(false)
25
- #yield(source)
26
- source.instance_eval(&block)
27
- source._name = "source"
28
- Zillabyte::Harness::Helper.check_source("simple_source", source)
29
- flow._nodes << source
30
- if(options[:command] == :info)
31
- info_hash = {"name" => source._name, "type" => source._type}
32
- if(source._emits)
33
- info_hash["emits"] = source._emits
34
- elsif(source._relation)
35
- info_hash["relation"] = source._relation
36
- elsif(source._matches)
37
- info_hash["matches"] = source._matches
38
- end
39
- Zillabyte::Harness::Helper.write_hash_to_file(info_hash, _info_file)
40
- end
41
-
42
- # Add the sink...
43
- flow._nodes << flow._sink
44
- if(options[:command] == :info)
45
- info_hash = {"name" => flow._sink._name, "type" => flow._sink._type, "columns" => flow._sink._columns, "relation" => flow._sink._relation || flow._sink._name}
46
- Zillabyte::Harness::Helper.write_hash_to_file(info_hash, _info_file)
47
- end
48
-
49
- # Execute...
50
- if(options[:command] == :execute and options[:name] == "source")
51
- pipe_name = options[:pipe]
52
- c = Zillabyte::Harness::SourceController.new(source, progress = Zillabyte::Common::Progress.new)
53
- c.run(pipe_name)
54
- end
55
-
56
- # Done
57
- flow
58
- end
59
-
60
-
61
-
62
- def name(v)
63
- Zillabyte::Harness::Helper.check_name("simple_source", v, {})
64
- @_name = v
65
- end
66
-
67
-
68
- def emits(v)
69
- # Construct the sink...
70
- Zillabyte::Harness::Helper.check_emits("simple_source", v, {})
71
- @_sink = Zillabyte::Harness::Sink.new()
72
- @_sink._name = "sink"
73
- @_sink._relation = v[0][0]
74
- columns = v[0][1]
75
- columns.each do |col|
76
- col.each do |cname, ctype|
77
- @_sink.column(cname, ctype)
78
- end
79
- end
80
- end
81
-
82
-
83
- def prepare(&block)
84
- # Dummy function, prepare is picked up by Each above
85
- end
86
-
87
- def next_batch(&block)
88
- # Dummy function, execute is picked up by Each above
89
- end
90
-
91
-
92
- end
93
-
@@ -1,127 +0,0 @@
1
- require "json"
2
-
3
- class Zillabyte::Harness::Topology
4
- attr_accessor :_name, :_options, :_nodes, :_streams, :_names, :_branched, :_info_file #instance variables?
5
-
6
- def self.build(name)
7
- h = Zillabyte::Harness::Topology.new()
8
- h._nodes = []
9
- h._streams = {}
10
- h._names = {}
11
- h._branched = false
12
- h._name = name
13
- Zillabyte::Harness::Helper.check_name("new", h._name, {})
14
- h._options = Zillabyte::Harness::Helper.opt_parser()
15
- if(h._options[:command] == :info)
16
- h._info_file = File.open(h._options[:file],"w+")
17
- info_hash = {"language" => "ruby", "name" => h._name}
18
- Zillabyte::Harness::Helper.write_hash_to_file(info_hash, h._info_file)
19
- end
20
- h
21
- end
22
-
23
- def source(&block)
24
- h = Zillabyte::Harness::Source.new(true)
25
- #yield(h)
26
- h.instance_eval(&block)
27
- Zillabyte::Harness::Helper.check_name("source", h._name, @_names)
28
- Zillabyte::Harness::Helper.check_source("source", h)
29
- @_nodes << h
30
- if(@_options[:command] == :info)
31
- info_hash = {"name" => h._name, "type" => h._type}
32
- if(h._relation)
33
- info_hash["relation"] = h._relation
34
- elsif(h._matches)
35
- info_hash["matches"] = h._matches
36
- elsif(h._emits)
37
- @_branched = Zillabyte::Harness::Helper.check_emits("source", h._emits, @_streams) || @_branched
38
- info_hash["emits"] = h._emits
39
- end
40
- Zillabyte::Harness::Helper.write_hash_to_file(info_hash, @_info_file)
41
- elsif(@_options[:command] == :execute and @_options[:name] == h._name)
42
- pipe_name = @_options[:pipe]
43
- c = Zillabyte::Harness::SourceController.new(h, progress = Zillabyte::Common::Progress.new)
44
- c.run(pipe_name)
45
- end
46
- end
47
-
48
- def each(&block)
49
- h = Zillabyte::Harness::Each.new()
50
- #yield(h)
51
- h.instance_eval(&block)
52
- Zillabyte::Harness::Helper.check_name("each", h._name, @_names)
53
- if(@_branched)
54
- Zillabyte::Harness::Helper.check_consumes(h, @_streams)
55
- else
56
- if(h._consumes)
57
- h._consumes = nil
58
- end
59
- end
60
- @_branched = Zillabyte::Harness::Helper.check_emits("each", h._emits, @_streams) || @_branched
61
- @_nodes << h
62
- if(@_options[:command] == :info)
63
- info_hash = {"name" => h._name, "type" => h._type, "emits" => h._emits}
64
- if(h._consumes)
65
- info_hash["consumes"] = h._consumes
66
- end
67
- Zillabyte::Harness::Helper.write_hash_to_file(info_hash, @_info_file)
68
- elsif(@_options[:command] == :execute and @_options[:name] == h._name)
69
- pipe_name = @_options[:pipe]
70
- c = Zillabyte::Harness::EachController.new(h, progress = Zillabyte::Common::Progress.new)
71
- c.run(pipe_name)
72
- end
73
- end
74
-
75
- def aggregate(&block)
76
- h = Zillabyte::Harness::Aggregate.new()
77
- #yield(h)
78
- h.instance_eval(&block)
79
- Zillabyte::Harness::Helper.check_name("aggregate", h._name, @_names)
80
- if(@_branched)
81
- Zillabyte::Harness::Helper.check_consumes(h, @_streams)
82
- else
83
- if(h._consumes)
84
- h._consumes = nil
85
- end
86
- end
87
- Zillabyte::Harness::Helper.check_group_by("aggregate", h, @_nodes, @_streams)
88
- @_branched = Zillabyte::Harness::Helper.check_emits("aggregate", h._emits, @_streams) || @_branched
89
- @_nodes << h
90
- if(@_options[:command] == :info)
91
- info_hash = {"name" => h._name, "type" => h._type, "group_by" => h._group_by, "emits" => h._emits}
92
- if(h._consumes)
93
- info_hash["consumes"] = h._consumes
94
- end
95
- Zillabyte::Harness::Helper.write_hash_to_file(info_hash, @_info_file)
96
- elsif(@_options[:command] == :execute)
97
- pipe_name = @_options[:pipe]
98
- if(@_options[:name] == h._name)
99
- c = Zillabyte::Harness::AggregateController.new(h, Zillabyte::Common::Progress.new)
100
- c.run(pipe_name)
101
- end
102
- end
103
- end
104
-
105
- def sink(&block)
106
- h = Zillabyte::Harness::Sink.new()
107
- #yield(h)
108
- h.instance_eval(&block)
109
- Zillabyte::Harness::Helper.check_sink(h, @_nodes)
110
- if(@_branched)
111
- Zillabyte::Harness::Helper.check_consumes(h, @_streams)
112
- else
113
- if(h._consumes)
114
- h._consumes = nil
115
- end
116
- end
117
- @_nodes << h
118
- if(@_options[:command] == :info)
119
- info_hash = {"name" => h._name, "type" => h._type, "columns" => h._columns, "relation" => h._relation || h._name}
120
- if(h._consumes)
121
- info_hash["consumes"] = h._consumes
122
- end
123
- Zillabyte::Harness::Helper.write_hash_to_file(info_hash, @_info_file)
124
- end
125
- end
126
-
127
- end