masamune 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (185) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +54 -0
  4. data/Rakefile +15 -0
  5. data/bin/masamune-elastic-mapreduce +4 -0
  6. data/bin/masamune-hive +4 -0
  7. data/bin/masamune-psql +4 -0
  8. data/bin/masamune-shell +4 -0
  9. data/lib/masamune.rb +56 -0
  10. data/lib/masamune/accumulate.rb +60 -0
  11. data/lib/masamune/actions.rb +38 -0
  12. data/lib/masamune/actions/data_flow.rb +131 -0
  13. data/lib/masamune/actions/date_parse.rb +75 -0
  14. data/lib/masamune/actions/elastic_mapreduce.rb +68 -0
  15. data/lib/masamune/actions/execute.rb +52 -0
  16. data/lib/masamune/actions/filesystem.rb +37 -0
  17. data/lib/masamune/actions/hadoop_filesystem.rb +40 -0
  18. data/lib/masamune/actions/hadoop_streaming.rb +41 -0
  19. data/lib/masamune/actions/hive.rb +74 -0
  20. data/lib/masamune/actions/postgres.rb +76 -0
  21. data/lib/masamune/actions/postgres_admin.rb +34 -0
  22. data/lib/masamune/actions/s3cmd.rb +44 -0
  23. data/lib/masamune/actions/transform.rb +89 -0
  24. data/lib/masamune/after_initialize_callbacks.rb +55 -0
  25. data/lib/masamune/cached_filesystem.rb +110 -0
  26. data/lib/masamune/commands.rb +37 -0
  27. data/lib/masamune/commands/elastic_mapreduce.rb +119 -0
  28. data/lib/masamune/commands/hadoop_filesystem.rb +57 -0
  29. data/lib/masamune/commands/hadoop_streaming.rb +116 -0
  30. data/lib/masamune/commands/hive.rb +178 -0
  31. data/lib/masamune/commands/interactive.rb +37 -0
  32. data/lib/masamune/commands/postgres.rb +128 -0
  33. data/lib/masamune/commands/postgres_admin.rb +72 -0
  34. data/lib/masamune/commands/postgres_common.rb +33 -0
  35. data/lib/masamune/commands/retry_with_backoff.rb +60 -0
  36. data/lib/masamune/commands/s3cmd.rb +70 -0
  37. data/lib/masamune/commands/shell.rb +202 -0
  38. data/lib/masamune/configuration.rb +195 -0
  39. data/lib/masamune/data_plan.rb +31 -0
  40. data/lib/masamune/data_plan/builder.rb +66 -0
  41. data/lib/masamune/data_plan/elem.rb +190 -0
  42. data/lib/masamune/data_plan/engine.rb +162 -0
  43. data/lib/masamune/data_plan/rule.rb +292 -0
  44. data/lib/masamune/data_plan/set.rb +176 -0
  45. data/lib/masamune/environment.rb +164 -0
  46. data/lib/masamune/filesystem.rb +567 -0
  47. data/lib/masamune/has_environment.rb +40 -0
  48. data/lib/masamune/helpers.rb +27 -0
  49. data/lib/masamune/helpers/postgres.rb +84 -0
  50. data/lib/masamune/io.rb +33 -0
  51. data/lib/masamune/last_element.rb +53 -0
  52. data/lib/masamune/method_logger.rb +41 -0
  53. data/lib/masamune/multi_io.rb +39 -0
  54. data/lib/masamune/schema.rb +36 -0
  55. data/lib/masamune/schema/catalog.rb +233 -0
  56. data/lib/masamune/schema/column.rb +527 -0
  57. data/lib/masamune/schema/dimension.rb +133 -0
  58. data/lib/masamune/schema/event.rb +121 -0
  59. data/lib/masamune/schema/fact.rb +133 -0
  60. data/lib/masamune/schema/map.rb +265 -0
  61. data/lib/masamune/schema/row.rb +133 -0
  62. data/lib/masamune/schema/store.rb +115 -0
  63. data/lib/masamune/schema/table.rb +308 -0
  64. data/lib/masamune/schema/table_reference.rb +76 -0
  65. data/lib/masamune/spec_helper.rb +23 -0
  66. data/lib/masamune/string_format.rb +34 -0
  67. data/lib/masamune/tasks/elastic_mapreduce_thor.rb +60 -0
  68. data/lib/masamune/tasks/hive_thor.rb +55 -0
  69. data/lib/masamune/tasks/postgres_thor.rb +47 -0
  70. data/lib/masamune/tasks/shell_thor.rb +63 -0
  71. data/lib/masamune/template.rb +77 -0
  72. data/lib/masamune/thor.rb +186 -0
  73. data/lib/masamune/thor_loader.rb +38 -0
  74. data/lib/masamune/topological_hash.rb +34 -0
  75. data/lib/masamune/transform.rb +47 -0
  76. data/lib/masamune/transform/bulk_upsert.psql.erb +64 -0
  77. data/lib/masamune/transform/bulk_upsert.rb +52 -0
  78. data/lib/masamune/transform/consolidate_dimension.rb +54 -0
  79. data/lib/masamune/transform/deduplicate_dimension.psql.erb +52 -0
  80. data/lib/masamune/transform/deduplicate_dimension.rb +53 -0
  81. data/lib/masamune/transform/define_event_view.hql.erb +51 -0
  82. data/lib/masamune/transform/define_event_view.rb +60 -0
  83. data/lib/masamune/transform/define_index.psql.erb +34 -0
  84. data/lib/masamune/transform/define_schema.hql.erb +23 -0
  85. data/lib/masamune/transform/define_schema.psql.erb +79 -0
  86. data/lib/masamune/transform/define_schema.rb +56 -0
  87. data/lib/masamune/transform/define_table.hql.erb +34 -0
  88. data/lib/masamune/transform/define_table.psql.erb +95 -0
  89. data/lib/masamune/transform/define_table.rb +40 -0
  90. data/lib/masamune/transform/define_unique.psql.erb +30 -0
  91. data/lib/masamune/transform/insert_reference_values.psql.erb +43 -0
  92. data/lib/masamune/transform/insert_reference_values.rb +64 -0
  93. data/lib/masamune/transform/load_dimension.rb +47 -0
  94. data/lib/masamune/transform/load_fact.rb +45 -0
  95. data/lib/masamune/transform/operator.rb +96 -0
  96. data/lib/masamune/transform/relabel_dimension.psql.erb +76 -0
  97. data/lib/masamune/transform/relabel_dimension.rb +39 -0
  98. data/lib/masamune/transform/rollup_fact.psql.erb +79 -0
  99. data/lib/masamune/transform/rollup_fact.rb +149 -0
  100. data/lib/masamune/transform/snapshot_dimension.psql.erb +75 -0
  101. data/lib/masamune/transform/snapshot_dimension.rb +74 -0
  102. data/lib/masamune/transform/stage_dimension.psql.erb +39 -0
  103. data/lib/masamune/transform/stage_dimension.rb +83 -0
  104. data/lib/masamune/transform/stage_fact.psql.erb +80 -0
  105. data/lib/masamune/transform/stage_fact.rb +111 -0
  106. data/lib/masamune/version.rb +25 -0
  107. data/spec/fixtures/aggregate.sql.erb +25 -0
  108. data/spec/fixtures/comment.sql.erb +27 -0
  109. data/spec/fixtures/invalid.sql.erb +23 -0
  110. data/spec/fixtures/relative.sql.erb +23 -0
  111. data/spec/fixtures/simple.sql.erb +28 -0
  112. data/spec/fixtures/whitespace.sql.erb +30 -0
  113. data/spec/masamune/actions/elastic_mapreduce_spec.rb +108 -0
  114. data/spec/masamune/actions/execute_spec.rb +50 -0
  115. data/spec/masamune/actions/hadoop_filesystem_spec.rb +44 -0
  116. data/spec/masamune/actions/hadoop_streaming_spec.rb +74 -0
  117. data/spec/masamune/actions/hive_spec.rb +117 -0
  118. data/spec/masamune/actions/postgres_admin_spec.rb +58 -0
  119. data/spec/masamune/actions/postgres_spec.rb +134 -0
  120. data/spec/masamune/actions/s3cmd_spec.rb +44 -0
  121. data/spec/masamune/actions/transform_spec.rb +144 -0
  122. data/spec/masamune/after_initialization_callbacks_spec.rb +61 -0
  123. data/spec/masamune/cached_filesystem_spec.rb +167 -0
  124. data/spec/masamune/commands/hadoop_filesystem_spec.rb +50 -0
  125. data/spec/masamune/commands/hadoop_streaming_spec.rb +106 -0
  126. data/spec/masamune/commands/hive_spec.rb +117 -0
  127. data/spec/masamune/commands/postgres_admin_spec.rb +69 -0
  128. data/spec/masamune/commands/postgres_spec.rb +100 -0
  129. data/spec/masamune/commands/retry_with_backoff_spec.rb +116 -0
  130. data/spec/masamune/commands/s3cmd_spec.rb +50 -0
  131. data/spec/masamune/commands/shell_spec.rb +101 -0
  132. data/spec/masamune/configuration_spec.rb +102 -0
  133. data/spec/masamune/data_plan/builder_spec.rb +91 -0
  134. data/spec/masamune/data_plan/elem_spec.rb +102 -0
  135. data/spec/masamune/data_plan/engine_spec.rb +356 -0
  136. data/spec/masamune/data_plan/rule_spec.rb +407 -0
  137. data/spec/masamune/data_plan/set_spec.rb +517 -0
  138. data/spec/masamune/environment_spec.rb +65 -0
  139. data/spec/masamune/filesystem_spec.rb +1421 -0
  140. data/spec/masamune/helpers/postgres_spec.rb +95 -0
  141. data/spec/masamune/schema/catalog_spec.rb +613 -0
  142. data/spec/masamune/schema/column_spec.rb +696 -0
  143. data/spec/masamune/schema/dimension_spec.rb +137 -0
  144. data/spec/masamune/schema/event_spec.rb +75 -0
  145. data/spec/masamune/schema/fact_spec.rb +117 -0
  146. data/spec/masamune/schema/map_spec.rb +593 -0
  147. data/spec/masamune/schema/row_spec.rb +28 -0
  148. data/spec/masamune/schema/store_spec.rb +49 -0
  149. data/spec/masamune/schema/table_spec.rb +395 -0
  150. data/spec/masamune/string_format_spec.rb +60 -0
  151. data/spec/masamune/tasks/elastic_mapreduce_thor_spec.rb +57 -0
  152. data/spec/masamune/tasks/hive_thor_spec.rb +75 -0
  153. data/spec/masamune/tasks/postgres_thor_spec.rb +42 -0
  154. data/spec/masamune/tasks/shell_thor_spec.rb +51 -0
  155. data/spec/masamune/template_spec.rb +77 -0
  156. data/spec/masamune/thor_spec.rb +238 -0
  157. data/spec/masamune/transform/bulk_upsert.dimension_spec.rb +200 -0
  158. data/spec/masamune/transform/consolidate_dimension_spec.rb +62 -0
  159. data/spec/masamune/transform/deduplicate_dimension_spec.rb +84 -0
  160. data/spec/masamune/transform/define_event_view_spec.rb +84 -0
  161. data/spec/masamune/transform/define_schema_spec.rb +83 -0
  162. data/spec/masamune/transform/define_table.dimension_spec.rb +306 -0
  163. data/spec/masamune/transform/define_table.fact_spec.rb +291 -0
  164. data/spec/masamune/transform/define_table.table_spec.rb +525 -0
  165. data/spec/masamune/transform/insert_reference_values.dimension_spec.rb +111 -0
  166. data/spec/masamune/transform/insert_reference_values.fact_spec.rb +149 -0
  167. data/spec/masamune/transform/load_dimension_spec.rb +76 -0
  168. data/spec/masamune/transform/load_fact_spec.rb +89 -0
  169. data/spec/masamune/transform/relabel_dimension_spec.rb +102 -0
  170. data/spec/masamune/transform/rollup_fact_spec.rb +333 -0
  171. data/spec/masamune/transform/snapshot_dimension_spec.rb +103 -0
  172. data/spec/masamune/transform/stage_dimension_spec.rb +115 -0
  173. data/spec/masamune/transform/stage_fact_spec.rb +204 -0
  174. data/spec/masamune_spec.rb +32 -0
  175. data/spec/spec_helper.rb +41 -0
  176. data/spec/support/masamune/example_group.rb +36 -0
  177. data/spec/support/masamune/mock_command.rb +99 -0
  178. data/spec/support/masamune/mock_delegate.rb +51 -0
  179. data/spec/support/masamune/mock_filesystem.rb +96 -0
  180. data/spec/support/masamune/thor_mute.rb +35 -0
  181. data/spec/support/rspec/example/action_example_group.rb +34 -0
  182. data/spec/support/rspec/example/task_example_group.rb +80 -0
  183. data/spec/support/rspec/example/transform_example_group.rb +36 -0
  184. data/spec/support/shared_examples/postgres_common_examples.rb +53 -0
  185. metadata +462 -0
@@ -0,0 +1,96 @@
1
+ # The MIT License (MIT)
2
+ #
3
+ # Copyright (c) 2014-2015, VMware, Inc. All Rights Reserved.
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+
23
+ require 'delegate'
24
+
25
+ class Masamune::MockFilesystem < Delegator
26
+ include Masamune::Accumulate
27
+
28
+ def initialize
29
+ @filesystem = Masamune::Filesystem.new
30
+ @filesystem.add_path :root_dir, File.expand_path('../../../', __FILE__)
31
+ @files = {}
32
+ end
33
+
34
+ def touch!(*args)
35
+ opts = args.last.is_a?(Hash) ? args.pop : {}
36
+ args.each do |file|
37
+ @files[file] = OpenStruct.new(opts.merge(name: file))
38
+ end
39
+ end
40
+
41
+ def exists?(file)
42
+ @files.keys.include?(file)
43
+ end
44
+
45
+ def glob(pattern, &block)
46
+ file_regexp = glob_to_regexp(pattern)
47
+ @files.keys.each do |name|
48
+ yield name if name =~ file_regexp
49
+ end
50
+ end
51
+ method_accumulate :glob
52
+
53
+ def glob_sort(pattern, options = {})
54
+ glob(pattern)
55
+ end
56
+
57
+ def glob_stat(pattern, &block)
58
+ file_regexp = glob_to_regexp(pattern, recursive: true)
59
+ @files.each do |name, stat|
60
+ yield stat if name =~ file_regexp
61
+ end
62
+ end
63
+
64
+ def stat(file)
65
+ @files[file]
66
+ end
67
+
68
+ def write(data, file)
69
+ @files[file] = OpenStruct.new(name: file, data: data)
70
+ end
71
+
72
+ def cat(file)
73
+ @files[file].data
74
+ end
75
+
76
+ def clear!
77
+ end
78
+
79
+ def check_immutable_path!(file)
80
+ true
81
+ end
82
+
83
+ [:mkdir!, :copy_file_to_file, :copy_file_to_dir, :copy_dir, :remove_file, :remove_dir, :move_file_to_file, :move_file_to_dir, :move_dir, :write].each do |method|
84
+ define_method(method) do |*args|
85
+ # Empty
86
+ end
87
+ end
88
+
89
+ def __getobj__
90
+ @filesystem
91
+ end
92
+
93
+ def __setobj__(obj)
94
+ @filesystem = obj
95
+ end
96
+ end
@@ -0,0 +1,35 @@
1
+ # The MIT License (MIT)
2
+ #
3
+ # Copyright (c) 2014-2015, VMware, Inc. All Rights Reserved.
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+
23
+ # Silence noisy and uninformative create_command method
24
+ module Masamune::ThorMute
25
+ def self.included(base)
26
+ base.instance_eval do
27
+ def create_command(*a)
28
+ $stdout, tmp_stdout = StringIO.new, $stdout
29
+ super *a
30
+ ensure
31
+ $stdout = tmp_stdout
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,34 @@
1
+ # The MIT License (MIT)
2
+ #
3
+ # Copyright (c) 2014-2015, VMware, Inc. All Rights Reserved.
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+
23
+ module ActionExampleGroup
24
+ def self.included(base)
25
+ base.let(:run_dir) { Dir.mktmpdir('masamune') }
26
+ base.before do
27
+ Masamune.filesystem.add_path(:run_dir, run_dir)
28
+ end
29
+ end
30
+ end
31
+
32
+ RSpec.configure do |config|
33
+ config.include ActionExampleGroup, :type => :action, :file_path => %r{spec/masamune/actions}
34
+ end
@@ -0,0 +1,80 @@
1
+ # The MIT License (MIT)
2
+ #
3
+ # Copyright (c) 2014-2015, VMware, Inc. All Rights Reserved.
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+
23
+ module TaskExampleGroup
24
+ def capture(stdout, stderr, &block)
25
+ tmp_stdout, $stdout = $stdout, stdout
26
+ tmp_stderr, $stderr = $stderr, stderr
27
+ yield
28
+ ensure
29
+ $stdout, $stderr = tmp_stdout, tmp_stderr
30
+ end
31
+
32
+ shared_examples 'general usage' do
33
+ it 'exits with status code 0 and prints general usage' do
34
+ expect { cli_invocation }.to raise_error { |e|
35
+ expect(e).to be_a(SystemExit)
36
+ expect(e.status).to eq(0)
37
+ }
38
+ expect(stdout.string).to match(/^Commands:/)
39
+ expect(stderr.string).to be_blank
40
+ end
41
+ end
42
+
43
+ shared_examples 'command usage' do
44
+ it 'exits with status code 0 and prints command usage' do
45
+ expect { cli_invocation }.to raise_error { |e|
46
+ expect(e).to be_a(SystemExit)
47
+ expect(e.status).to eq(0)
48
+ }
49
+ expect(stdout.string).to match(/^Usage:/)
50
+ expect(stdout.string).to match(/^Options:/)
51
+ expect(stderr.string).to be_blank
52
+ end
53
+ end
54
+
55
+ def self.included(base)
56
+ base.before :all do
57
+ ENV['THOR_DEBUG'] = '1'
58
+ end
59
+
60
+ base.let(:thor_class) { described_class }
61
+ base.let(:command) { nil }
62
+ base.let(:options) { {} }
63
+ base.let!(:stdout) { StringIO.new }
64
+ base.let!(:stderr) { StringIO.new }
65
+
66
+ base.before do
67
+ thor_class.send(:include, Masamune::ThorMute)
68
+ end
69
+
70
+ base.subject(:cli_invocation) do
71
+ capture(stdout, stderr) do
72
+ thor_class.start([command, *options].compact)
73
+ end
74
+ end
75
+ end
76
+ end
77
+
78
+ RSpec.configure do |config|
79
+ config.include TaskExampleGroup, type: :task, file_path: %r{spec/masamune/(.*?/)?.*thor_spec\.rb}
80
+ end
@@ -0,0 +1,36 @@
1
+ # The MIT License (MIT)
2
+ #
3
+ # Copyright (c) 2014-2015, VMware, Inc. All Rights Reserved.
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+
23
+ module TransformExampleGroup
24
+ def self.included(base)
25
+ base.let(:transform) { Object.new.extend(described_class) }
26
+ base.let(:environment) { double }
27
+ base.let(:catalog) { Masamune::Schema::Catalog.new(environment) }
28
+ base.after do
29
+ catalog.clear!
30
+ end
31
+ end
32
+ end
33
+
34
+ RSpec.configure do |config|
35
+ config.include TransformExampleGroup, :type => :action, :file_path => %r{spec/masamune/transform}
36
+ end
@@ -0,0 +1,53 @@
1
+ # The MIT License (MIT)
2
+ #
3
+ # Copyright (c) 2014-2015, VMware, Inc. All Rights Reserved.
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+
23
+ shared_examples_for Masamune::Commands::PostgresCommon do
24
+ describe '#command_env' do
25
+ subject(:env) do
26
+ instance.command_env
27
+ end
28
+
29
+ context 'by default' do
30
+ it { expect(env['PGOPTIONS']).to eq('--client-min-messages=warning') }
31
+ end
32
+
33
+ context 'with pgpass_file' do
34
+ let(:configuration) { {:pgpass_file => 'pgpass_file'} }
35
+
36
+ before do
37
+ allow(File).to receive(:readable?) { true }
38
+ end
39
+
40
+ it { expect(env['PGPASSFILE']).to eq('pgpass_file') }
41
+ end
42
+
43
+ context 'with pgpass_file that is not readable' do
44
+ let(:configuration) { {:pgpass_file => 'pgpass_file'} }
45
+
46
+ before do
47
+ allow(File).to receive(:readable?) { false }
48
+ end
49
+
50
+ it { expect(env).to_not include 'PGPASSFILE' }
51
+ end
52
+ end
53
+ end
metadata ADDED
@@ -0,0 +1,462 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: masamune
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.11.0
5
+ platform: ruby
6
+ authors:
7
+ - Michael Andrews
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: tzinfo
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: chronic
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: tilt
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: erubis
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rb-readline
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rake
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0.9'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0.9'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">"
144
+ - !ruby/object:Gem::Version
145
+ version: '2.99'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">"
151
+ - !ruby/object:Gem::Version
152
+ version: '2.99'
153
+ - !ruby/object:Gem::Dependency
154
+ name: byebug
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ description: Hybrid Data & Work Flow
168
+ email:
169
+ - michael@socialcast.com
170
+ executables:
171
+ - masamune-shell
172
+ - masamune-hive
173
+ - masamune-elastic-mapreduce
174
+ - masamune-psql
175
+ extensions: []
176
+ extra_rdoc_files: []
177
+ files:
178
+ - LICENSE.txt
179
+ - README.md
180
+ - Rakefile
181
+ - bin/masamune-elastic-mapreduce
182
+ - bin/masamune-hive
183
+ - bin/masamune-psql
184
+ - bin/masamune-shell
185
+ - lib/masamune.rb
186
+ - lib/masamune/accumulate.rb
187
+ - lib/masamune/actions.rb
188
+ - lib/masamune/actions/data_flow.rb
189
+ - lib/masamune/actions/date_parse.rb
190
+ - lib/masamune/actions/elastic_mapreduce.rb
191
+ - lib/masamune/actions/execute.rb
192
+ - lib/masamune/actions/filesystem.rb
193
+ - lib/masamune/actions/hadoop_filesystem.rb
194
+ - lib/masamune/actions/hadoop_streaming.rb
195
+ - lib/masamune/actions/hive.rb
196
+ - lib/masamune/actions/postgres.rb
197
+ - lib/masamune/actions/postgres_admin.rb
198
+ - lib/masamune/actions/s3cmd.rb
199
+ - lib/masamune/actions/transform.rb
200
+ - lib/masamune/after_initialize_callbacks.rb
201
+ - lib/masamune/cached_filesystem.rb
202
+ - lib/masamune/commands.rb
203
+ - lib/masamune/commands/elastic_mapreduce.rb
204
+ - lib/masamune/commands/hadoop_filesystem.rb
205
+ - lib/masamune/commands/hadoop_streaming.rb
206
+ - lib/masamune/commands/hive.rb
207
+ - lib/masamune/commands/interactive.rb
208
+ - lib/masamune/commands/postgres.rb
209
+ - lib/masamune/commands/postgres_admin.rb
210
+ - lib/masamune/commands/postgres_common.rb
211
+ - lib/masamune/commands/retry_with_backoff.rb
212
+ - lib/masamune/commands/s3cmd.rb
213
+ - lib/masamune/commands/shell.rb
214
+ - lib/masamune/configuration.rb
215
+ - lib/masamune/data_plan.rb
216
+ - lib/masamune/data_plan/builder.rb
217
+ - lib/masamune/data_plan/elem.rb
218
+ - lib/masamune/data_plan/engine.rb
219
+ - lib/masamune/data_plan/rule.rb
220
+ - lib/masamune/data_plan/set.rb
221
+ - lib/masamune/environment.rb
222
+ - lib/masamune/filesystem.rb
223
+ - lib/masamune/has_environment.rb
224
+ - lib/masamune/helpers.rb
225
+ - lib/masamune/helpers/postgres.rb
226
+ - lib/masamune/io.rb
227
+ - lib/masamune/last_element.rb
228
+ - lib/masamune/method_logger.rb
229
+ - lib/masamune/multi_io.rb
230
+ - lib/masamune/schema.rb
231
+ - lib/masamune/schema/catalog.rb
232
+ - lib/masamune/schema/column.rb
233
+ - lib/masamune/schema/dimension.rb
234
+ - lib/masamune/schema/event.rb
235
+ - lib/masamune/schema/fact.rb
236
+ - lib/masamune/schema/map.rb
237
+ - lib/masamune/schema/row.rb
238
+ - lib/masamune/schema/store.rb
239
+ - lib/masamune/schema/table.rb
240
+ - lib/masamune/schema/table_reference.rb
241
+ - lib/masamune/spec_helper.rb
242
+ - lib/masamune/string_format.rb
243
+ - lib/masamune/tasks/elastic_mapreduce_thor.rb
244
+ - lib/masamune/tasks/hive_thor.rb
245
+ - lib/masamune/tasks/postgres_thor.rb
246
+ - lib/masamune/tasks/shell_thor.rb
247
+ - lib/masamune/template.rb
248
+ - lib/masamune/thor.rb
249
+ - lib/masamune/thor_loader.rb
250
+ - lib/masamune/topological_hash.rb
251
+ - lib/masamune/transform.rb
252
+ - lib/masamune/transform/bulk_upsert.psql.erb
253
+ - lib/masamune/transform/bulk_upsert.rb
254
+ - lib/masamune/transform/consolidate_dimension.rb
255
+ - lib/masamune/transform/deduplicate_dimension.psql.erb
256
+ - lib/masamune/transform/deduplicate_dimension.rb
257
+ - lib/masamune/transform/define_event_view.hql.erb
258
+ - lib/masamune/transform/define_event_view.rb
259
+ - lib/masamune/transform/define_index.psql.erb
260
+ - lib/masamune/transform/define_schema.hql.erb
261
+ - lib/masamune/transform/define_schema.psql.erb
262
+ - lib/masamune/transform/define_schema.rb
263
+ - lib/masamune/transform/define_table.hql.erb
264
+ - lib/masamune/transform/define_table.psql.erb
265
+ - lib/masamune/transform/define_table.rb
266
+ - lib/masamune/transform/define_unique.psql.erb
267
+ - lib/masamune/transform/insert_reference_values.psql.erb
268
+ - lib/masamune/transform/insert_reference_values.rb
269
+ - lib/masamune/transform/load_dimension.rb
270
+ - lib/masamune/transform/load_fact.rb
271
+ - lib/masamune/transform/operator.rb
272
+ - lib/masamune/transform/relabel_dimension.psql.erb
273
+ - lib/masamune/transform/relabel_dimension.rb
274
+ - lib/masamune/transform/rollup_fact.psql.erb
275
+ - lib/masamune/transform/rollup_fact.rb
276
+ - lib/masamune/transform/snapshot_dimension.psql.erb
277
+ - lib/masamune/transform/snapshot_dimension.rb
278
+ - lib/masamune/transform/stage_dimension.psql.erb
279
+ - lib/masamune/transform/stage_dimension.rb
280
+ - lib/masamune/transform/stage_fact.psql.erb
281
+ - lib/masamune/transform/stage_fact.rb
282
+ - lib/masamune/version.rb
283
+ - spec/fixtures/aggregate.sql.erb
284
+ - spec/fixtures/comment.sql.erb
285
+ - spec/fixtures/invalid.sql.erb
286
+ - spec/fixtures/relative.sql.erb
287
+ - spec/fixtures/simple.sql.erb
288
+ - spec/fixtures/whitespace.sql.erb
289
+ - spec/masamune/actions/elastic_mapreduce_spec.rb
290
+ - spec/masamune/actions/execute_spec.rb
291
+ - spec/masamune/actions/hadoop_filesystem_spec.rb
292
+ - spec/masamune/actions/hadoop_streaming_spec.rb
293
+ - spec/masamune/actions/hive_spec.rb
294
+ - spec/masamune/actions/postgres_admin_spec.rb
295
+ - spec/masamune/actions/postgres_spec.rb
296
+ - spec/masamune/actions/s3cmd_spec.rb
297
+ - spec/masamune/actions/transform_spec.rb
298
+ - spec/masamune/after_initialization_callbacks_spec.rb
299
+ - spec/masamune/cached_filesystem_spec.rb
300
+ - spec/masamune/commands/hadoop_filesystem_spec.rb
301
+ - spec/masamune/commands/hadoop_streaming_spec.rb
302
+ - spec/masamune/commands/hive_spec.rb
303
+ - spec/masamune/commands/postgres_admin_spec.rb
304
+ - spec/masamune/commands/postgres_spec.rb
305
+ - spec/masamune/commands/retry_with_backoff_spec.rb
306
+ - spec/masamune/commands/s3cmd_spec.rb
307
+ - spec/masamune/commands/shell_spec.rb
308
+ - spec/masamune/configuration_spec.rb
309
+ - spec/masamune/data_plan/builder_spec.rb
310
+ - spec/masamune/data_plan/elem_spec.rb
311
+ - spec/masamune/data_plan/engine_spec.rb
312
+ - spec/masamune/data_plan/rule_spec.rb
313
+ - spec/masamune/data_plan/set_spec.rb
314
+ - spec/masamune/environment_spec.rb
315
+ - spec/masamune/filesystem_spec.rb
316
+ - spec/masamune/helpers/postgres_spec.rb
317
+ - spec/masamune/schema/catalog_spec.rb
318
+ - spec/masamune/schema/column_spec.rb
319
+ - spec/masamune/schema/dimension_spec.rb
320
+ - spec/masamune/schema/event_spec.rb
321
+ - spec/masamune/schema/fact_spec.rb
322
+ - spec/masamune/schema/map_spec.rb
323
+ - spec/masamune/schema/row_spec.rb
324
+ - spec/masamune/schema/store_spec.rb
325
+ - spec/masamune/schema/table_spec.rb
326
+ - spec/masamune/string_format_spec.rb
327
+ - spec/masamune/tasks/elastic_mapreduce_thor_spec.rb
328
+ - spec/masamune/tasks/hive_thor_spec.rb
329
+ - spec/masamune/tasks/postgres_thor_spec.rb
330
+ - spec/masamune/tasks/shell_thor_spec.rb
331
+ - spec/masamune/template_spec.rb
332
+ - spec/masamune/thor_spec.rb
333
+ - spec/masamune/transform/bulk_upsert.dimension_spec.rb
334
+ - spec/masamune/transform/consolidate_dimension_spec.rb
335
+ - spec/masamune/transform/deduplicate_dimension_spec.rb
336
+ - spec/masamune/transform/define_event_view_spec.rb
337
+ - spec/masamune/transform/define_schema_spec.rb
338
+ - spec/masamune/transform/define_table.dimension_spec.rb
339
+ - spec/masamune/transform/define_table.fact_spec.rb
340
+ - spec/masamune/transform/define_table.table_spec.rb
341
+ - spec/masamune/transform/insert_reference_values.dimension_spec.rb
342
+ - spec/masamune/transform/insert_reference_values.fact_spec.rb
343
+ - spec/masamune/transform/load_dimension_spec.rb
344
+ - spec/masamune/transform/load_fact_spec.rb
345
+ - spec/masamune/transform/relabel_dimension_spec.rb
346
+ - spec/masamune/transform/rollup_fact_spec.rb
347
+ - spec/masamune/transform/snapshot_dimension_spec.rb
348
+ - spec/masamune/transform/stage_dimension_spec.rb
349
+ - spec/masamune/transform/stage_fact_spec.rb
350
+ - spec/masamune_spec.rb
351
+ - spec/spec_helper.rb
352
+ - spec/support/masamune/example_group.rb
353
+ - spec/support/masamune/mock_command.rb
354
+ - spec/support/masamune/mock_delegate.rb
355
+ - spec/support/masamune/mock_filesystem.rb
356
+ - spec/support/masamune/thor_mute.rb
357
+ - spec/support/rspec/example/action_example_group.rb
358
+ - spec/support/rspec/example/task_example_group.rb
359
+ - spec/support/rspec/example/transform_example_group.rb
360
+ - spec/support/shared_examples/postgres_common_examples.rb
361
+ homepage: https://github.com/socialcast/masamune
362
+ licenses: []
363
+ metadata: {}
364
+ post_install_message:
365
+ rdoc_options: []
366
+ require_paths:
367
+ - lib
368
+ required_ruby_version: !ruby/object:Gem::Requirement
369
+ requirements:
370
+ - - ">="
371
+ - !ruby/object:Gem::Version
372
+ version: '0'
373
+ required_rubygems_version: !ruby/object:Gem::Requirement
374
+ requirements:
375
+ - - ">="
376
+ - !ruby/object:Gem::Version
377
+ version: '0'
378
+ requirements: []
379
+ rubyforge_project:
380
+ rubygems_version: 2.4.5
381
+ signing_key:
382
+ specification_version: 4
383
+ summary: Hybrid Data & Work Flow
384
+ test_files:
385
+ - spec/fixtures/aggregate.sql.erb
386
+ - spec/fixtures/comment.sql.erb
387
+ - spec/fixtures/invalid.sql.erb
388
+ - spec/fixtures/relative.sql.erb
389
+ - spec/fixtures/simple.sql.erb
390
+ - spec/fixtures/whitespace.sql.erb
391
+ - spec/masamune/actions/elastic_mapreduce_spec.rb
392
+ - spec/masamune/actions/execute_spec.rb
393
+ - spec/masamune/actions/hadoop_filesystem_spec.rb
394
+ - spec/masamune/actions/hadoop_streaming_spec.rb
395
+ - spec/masamune/actions/hive_spec.rb
396
+ - spec/masamune/actions/postgres_admin_spec.rb
397
+ - spec/masamune/actions/postgres_spec.rb
398
+ - spec/masamune/actions/s3cmd_spec.rb
399
+ - spec/masamune/actions/transform_spec.rb
400
+ - spec/masamune/after_initialization_callbacks_spec.rb
401
+ - spec/masamune/cached_filesystem_spec.rb
402
+ - spec/masamune/commands/hadoop_filesystem_spec.rb
403
+ - spec/masamune/commands/hadoop_streaming_spec.rb
404
+ - spec/masamune/commands/hive_spec.rb
405
+ - spec/masamune/commands/postgres_admin_spec.rb
406
+ - spec/masamune/commands/postgres_spec.rb
407
+ - spec/masamune/commands/retry_with_backoff_spec.rb
408
+ - spec/masamune/commands/s3cmd_spec.rb
409
+ - spec/masamune/commands/shell_spec.rb
410
+ - spec/masamune/configuration_spec.rb
411
+ - spec/masamune/data_plan/builder_spec.rb
412
+ - spec/masamune/data_plan/elem_spec.rb
413
+ - spec/masamune/data_plan/engine_spec.rb
414
+ - spec/masamune/data_plan/rule_spec.rb
415
+ - spec/masamune/data_plan/set_spec.rb
416
+ - spec/masamune/environment_spec.rb
417
+ - spec/masamune/filesystem_spec.rb
418
+ - spec/masamune/helpers/postgres_spec.rb
419
+ - spec/masamune/schema/catalog_spec.rb
420
+ - spec/masamune/schema/column_spec.rb
421
+ - spec/masamune/schema/dimension_spec.rb
422
+ - spec/masamune/schema/event_spec.rb
423
+ - spec/masamune/schema/fact_spec.rb
424
+ - spec/masamune/schema/map_spec.rb
425
+ - spec/masamune/schema/row_spec.rb
426
+ - spec/masamune/schema/store_spec.rb
427
+ - spec/masamune/schema/table_spec.rb
428
+ - spec/masamune/string_format_spec.rb
429
+ - spec/masamune/tasks/elastic_mapreduce_thor_spec.rb
430
+ - spec/masamune/tasks/hive_thor_spec.rb
431
+ - spec/masamune/tasks/postgres_thor_spec.rb
432
+ - spec/masamune/tasks/shell_thor_spec.rb
433
+ - spec/masamune/template_spec.rb
434
+ - spec/masamune/thor_spec.rb
435
+ - spec/masamune/transform/bulk_upsert.dimension_spec.rb
436
+ - spec/masamune/transform/consolidate_dimension_spec.rb
437
+ - spec/masamune/transform/deduplicate_dimension_spec.rb
438
+ - spec/masamune/transform/define_event_view_spec.rb
439
+ - spec/masamune/transform/define_schema_spec.rb
440
+ - spec/masamune/transform/define_table.dimension_spec.rb
441
+ - spec/masamune/transform/define_table.fact_spec.rb
442
+ - spec/masamune/transform/define_table.table_spec.rb
443
+ - spec/masamune/transform/insert_reference_values.dimension_spec.rb
444
+ - spec/masamune/transform/insert_reference_values.fact_spec.rb
445
+ - spec/masamune/transform/load_dimension_spec.rb
446
+ - spec/masamune/transform/load_fact_spec.rb
447
+ - spec/masamune/transform/relabel_dimension_spec.rb
448
+ - spec/masamune/transform/rollup_fact_spec.rb
449
+ - spec/masamune/transform/snapshot_dimension_spec.rb
450
+ - spec/masamune/transform/stage_dimension_spec.rb
451
+ - spec/masamune/transform/stage_fact_spec.rb
452
+ - spec/masamune_spec.rb
453
+ - spec/spec_helper.rb
454
+ - spec/support/masamune/example_group.rb
455
+ - spec/support/masamune/mock_command.rb
456
+ - spec/support/masamune/mock_delegate.rb
457
+ - spec/support/masamune/mock_filesystem.rb
458
+ - spec/support/masamune/thor_mute.rb
459
+ - spec/support/rspec/example/action_example_group.rb
460
+ - spec/support/rspec/example/task_example_group.rb
461
+ - spec/support/rspec/example/transform_example_group.rb
462
+ - spec/support/shared_examples/postgres_common_examples.rb