mortar 0.15.19 → 0.15.20

Sign up to get free protection for your applications and to get access to all the features.
@@ -40,7 +40,7 @@ class Mortar::Command::Local < Mortar::Command::Base
40
40
  Dir.chdir(project_root)
41
41
 
42
42
  ctrl = Mortar::Local::Controller.new
43
- ctrl.install_and_configure(pig_version)
43
+ ctrl.install_and_configure(pig_version, nil, true)
44
44
  end
45
45
 
46
46
  # local:run SCRIPT
@@ -253,7 +253,7 @@ class Mortar::Command::Local < Mortar::Command::Base
253
253
  ctrl = Mortar::Local::Controller.new
254
254
  luigi_params = pig_parameters.sort_by { |p| p['name'] }
255
255
  luigi_params = luigi_params.map { |arg| ["--#{arg['name']}", "#{arg['value']}"] }.flatten
256
- ctrl.run_luigi(script, luigi_params)
256
+ ctrl.run_luigi(pig_version, script, luigi_params)
257
257
  end
258
258
 
259
259
  # local:sqoop_table dbtype database-name table s3-destination
@@ -294,7 +294,7 @@ class Mortar::Command::Local < Mortar::Command::Base
294
294
  connstr = jdbc_conn(dbtype, dbhost, physdb)
295
295
 
296
296
  ctrl = Mortar::Local::Controller.new
297
- ctrl.sqoop_export_table(connstr, dbtable, s3dest, options)
297
+ ctrl.sqoop_export_table(pig_version, connstr, dbtable, s3dest, options)
298
298
  end
299
299
 
300
300
  # local:sqoop_query dbtype database-name query s3-destination
@@ -335,7 +335,7 @@ class Mortar::Command::Local < Mortar::Command::Base
335
335
  connstr = jdbc_conn(dbtype, dbhost, physdb)
336
336
 
337
337
  ctrl = Mortar::Local::Controller.new
338
- ctrl.sqoop_export_query(connstr, query, s3dest, options)
338
+ ctrl.sqoop_export_query(pig_version, connstr, query, s3dest, options)
339
339
  end
340
340
 
341
341
  # local:sqoop_incremental dbtype database-name table column value s3-destination
@@ -384,7 +384,7 @@ class Mortar::Command::Local < Mortar::Command::Base
384
384
  connstr = jdbc_conn(dbtype, dbhost, physdb)
385
385
 
386
386
  ctrl = Mortar::Local::Controller.new
387
- ctrl.sqoop_export_incremental(connstr, table, column, max_value, s3dest, options)
387
+ ctrl.sqoop_export_incremental(pig_version, connstr, table, column, max_value, s3dest, options)
388
388
  end
389
389
 
390
390
 
@@ -114,11 +114,12 @@ EOF
114
114
 
115
115
  # Main entry point to perform installation and configuration necessary
116
116
  # to run pig on the users local machine
117
- def install_and_configure(pig_version=nil, command=nil)
117
+ def install_and_configure(pig_version=nil, command=nil, install_sqoop=false)
118
118
  #To support old watchtower plugins we'll accept nil pig_version
119
119
  if pig_version.nil?
120
120
  pig_version = Mortar::PigVersion::Pig09.new
121
121
  end
122
+
122
123
  java = Mortar::Local::Java.new()
123
124
  unless java.check_install
124
125
  error(NO_JAVA_ERROR_MESSAGE)
@@ -145,9 +146,10 @@ EOF
145
146
  jy = Mortar::Local::Jython.new()
146
147
  jy.install_or_update()
147
148
 
148
-
149
- sqoop = Mortar::Local::Sqoop.new()
150
- sqoop.install_or_update()
149
+ if install_sqoop
150
+ sqoop = Mortar::Local::Sqoop.new()
151
+ sqoop.install_or_update()
152
+ end
151
153
 
152
154
  ensure_local_install_dirs_in_gitignore
153
155
  end
@@ -205,31 +207,31 @@ EOF
205
207
  pig.launch_repl(pig_version, pig_parameters)
206
208
  end
207
209
 
208
- def run_luigi(luigi_script, user_script_args)
209
- install_and_configure(nil, 'luigi')
210
+ def run_luigi(pig_version, luigi_script, user_script_args)
211
+ install_and_configure(pig_version, 'luigi')
210
212
  py = Mortar::Local::Python.new()
211
213
  py.run_luigi_script(luigi_script, user_script_args)
212
214
  end
213
215
 
214
- def sqoop_export_table(connstr, dbtable, s3dest, options)
216
+ def sqoop_export_table(pig_version, connstr, dbtable, s3dest, options)
215
217
  require_aws_keys
216
- install_and_configure(nil, 'sqoop')
218
+ install_and_configure(pig_version, 'sqoop', true)
217
219
  sqoop = Mortar::Local::Sqoop.new()
218
220
  options[:dbtable] = dbtable
219
221
  sqoop.export(connstr, s3dest, options)
220
222
  end
221
223
 
222
- def sqoop_export_query(connstr, query, s3dest, options)
224
+ def sqoop_export_query(pig_version, connstr, query, s3dest, options)
223
225
  require_aws_keys
224
- install_and_configure(nil, 'sqoop')
226
+ install_and_configure(pig_version, 'sqoop', true)
225
227
  sqoop = Mortar::Local::Sqoop.new()
226
228
  options[:sqlquery] = sqoop.prep_query(query)
227
229
  sqoop.export(connstr, s3dest, options)
228
230
  end
229
231
 
230
- def sqoop_export_incremental(connstr, dbtable, column, max_value, s3dest, options)
232
+ def sqoop_export_incremental(pig_version, connstr, dbtable, column, max_value, s3dest, options)
231
233
  require_aws_keys
232
- install_and_configure(nil, 'sqoop')
234
+ install_and_configure(pig_version, 'sqoop', true)
233
235
  sqoop = Mortar::Local::Sqoop.new()
234
236
  options[:dbtable] = dbtable
235
237
  options[:inc_column] = column
@@ -93,10 +93,6 @@ module Mortar
93
93
  path
94
94
  end
95
95
 
96
- def fixtures_path
97
- path = File.join(@root_path, "fixtures")
98
- end
99
-
100
96
  def embedded_project?()
101
97
  File.exists?(File.join(@root_path, ".mortar-project-remote"))
102
98
  end
@@ -16,5 +16,5 @@
16
16
 
17
17
  module Mortar
18
18
  # see http://semver.org/
19
- VERSION = "0.15.19"
19
+ VERSION = "0.15.20"
20
20
  end
@@ -299,7 +299,7 @@ STDERR
299
299
  mock(u).run_luigi_script(luigi_script, %W{--myoption 2 --myotheroption 3})
300
300
  end
301
301
  any_instance_of(Mortar::Local::Controller) do |u|
302
- mock(u).install_and_configure(nil,'luigi')
302
+ mock(u).install_and_configure(is_a(Mortar::PigVersion::Pig09),'luigi')
303
303
  end
304
304
  stderr, stdout = execute("local:luigi some_luigi_script -p myoption=2 -p myotheroption=3", p)
305
305
  stderr.should == ""
@@ -347,7 +347,7 @@ STDERR
347
347
  dbtable = "customers"
348
348
  s3dest = "s3n://a-bucket/a-directory"
349
349
  any_instance_of(Mortar::Local::Controller) do |c|
350
- mock(c).sqoop_export_table(connstr, dbtable, s3dest, {})
350
+ mock(c).sqoop_export_table(is_a(Mortar::PigVersion::Pig09), connstr, dbtable, s3dest, {:host => "foobar.com"})
351
351
  end
352
352
  stderr, stdout = execute "local:sqoop_table mysql mydb #{dbtable} #{s3dest} --host foobar.com"
353
353
  end
@@ -357,7 +357,7 @@ STDERR
357
357
  dbtable = "customers"
358
358
  s3dest = "s3n://a-bucket/a-directory"
359
359
  any_instance_of(Mortar::Local::Controller) do |c|
360
- mock(c).sqoop_export_table(connstr, dbtable, s3dest, {})
360
+ mock(c).sqoop_export_table(is_a(Mortar::PigVersion::Pig09), connstr, dbtable, s3dest, {})
361
361
  end
362
362
  stderr, stdout = execute "local:sqoop_table mysql mydb #{dbtable} #{s3dest}"
363
363
  end
@@ -402,7 +402,7 @@ STDERR
402
402
  query = "select_*_from_customers"
403
403
  s3dest = "s3n://a-bucket/a-directory"
404
404
  any_instance_of(Mortar::Local::Controller) do |c|
405
- mock(c).sqoop_export_query(connstr, query, s3dest, {})
405
+ mock(c).sqoop_export_query(is_a(Mortar::PigVersion::Pig09), connstr, query, s3dest, {:host => "foobar.com"})
406
406
  end
407
407
  stderr, stdout = execute "local:sqoop_query mysql mydb #{query} #{s3dest} --host foobar.com"
408
408
  stderr.should == ''
@@ -413,7 +413,7 @@ STDERR
413
413
  query = "select_*_from_customers"
414
414
  s3dest = "s3n://a-bucket/a-directory"
415
415
  any_instance_of(Mortar::Local::Controller) do |c|
416
- mock(c).sqoop_export_query(connstr, query, s3dest, {})
416
+ mock(c).sqoop_export_query(is_a(Mortar::PigVersion::Pig09), connstr, query, s3dest, {})
417
417
  end
418
418
  stderr, stdout = execute "local:sqoop_query mysql mydb #{query} #{s3dest}"
419
419
  stderr.should == ''
@@ -477,7 +477,7 @@ STDERR
477
477
  column_value = "12345"
478
478
  s3dest = "s3n://a-bucket/a-directory"
479
479
  any_instance_of(Mortar::Local::Controller) do |c|
480
- mock(c).sqoop_export_incremental(connstr, dbtable, column, column_value, s3dest, {})
480
+ mock(c).sqoop_export_incremental(is_a(Mortar::PigVersion::Pig09), connstr, dbtable, column, column_value, s3dest, {:host => "foobar.com"})
481
481
  end
482
482
  stderr, stdout = execute "local:sqoop_incremental mysql mydb #{dbtable} #{column} #{column_value} #{s3dest} --host foobar.com"
483
483
  end
@@ -489,7 +489,7 @@ STDERR
489
489
  column_value = "12345"
490
490
  s3dest = "s3n://a-bucket/a-directory"
491
491
  any_instance_of(Mortar::Local::Controller) do |c|
492
- mock(c).sqoop_export_incremental(connstr, dbtable, column, column_value, s3dest, {})
492
+ mock(c).sqoop_export_incremental(is_a(Mortar::PigVersion::Pig09), connstr, dbtable, column, column_value, s3dest, {})
493
493
  end
494
494
  stderr, stdout = execute "local:sqoop_incremental mysql mydb #{dbtable} #{column} #{column_value} #{s3dest}"
495
495
  end
@@ -146,12 +146,35 @@ module Mortar::Local
146
146
  any_instance_of(Mortar::Local::Jython) do |j|
147
147
  mock(j).install_or_update
148
148
  end
149
+
150
+ mock(ctrl).ensure_local_install_dirs_in_gitignore
151
+ ctrl.install_and_configure
152
+ end
153
+
154
+ it "install sqoop with command" do
155
+ command = 'command'
156
+ ctrl = Mortar::Local::Controller.new
157
+
158
+ any_instance_of(Mortar::Local::Java) do |j|
159
+ mock(j).check_install.returns(true)
160
+ end
161
+ any_instance_of(Mortar::Local::Pig) do |p|
162
+ mock(p).install_or_update(is_a(Mortar::PigVersion::Pig012), command)
163
+ end
164
+ any_instance_of(Mortar::Local::Python) do |p|
165
+ mock(p).check_or_install.returns(true)
166
+ mock(p).check_virtualenv.returns(true)
167
+ mock(p).setup_project_python_environment.returns(true)
168
+ end
169
+ any_instance_of(Mortar::Local::Jython) do |j|
170
+ mock(j).install_or_update
171
+ end
149
172
  any_instance_of(Mortar::Local::Sqoop) do |s|
150
173
  mock(s).install_or_update
151
174
  end
152
175
 
153
176
  mock(ctrl).ensure_local_install_dirs_in_gitignore
154
- ctrl.install_and_configure
177
+ ctrl.install_and_configure(Mortar::PigVersion::Pig012.new, command, true)
155
178
  end
156
179
  end
157
180
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mortar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.19
4
+ version: 0.15.20
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-05-27 00:00:00.000000000 Z
12
+ date: 2014-06-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 0.8.3
37
+ version: 0.8.4
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 0.8.3
45
+ version: 0.8.4
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: netrc
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -208,17 +208,17 @@ dependencies:
208
208
  requirement: !ruby/object:Gem::Requirement
209
209
  none: false
210
210
  requirements:
211
- - - ! '>='
211
+ - - ~>
212
212
  - !ruby/object:Gem::Version
213
- version: '0'
213
+ version: '2.0'
214
214
  type: :development
215
215
  prerelease: false
216
216
  version_requirements: !ruby/object:Gem::Requirement
217
217
  none: false
218
218
  requirements:
219
- - - ! '>='
219
+ - - ~>
220
220
  - !ruby/object:Gem::Version
221
- version: '0'
221
+ version: '2.0'
222
222
  description: Client library and command-line tool to interact with the Mortar service.
223
223
  email: support@mortardata.com
224
224
  executables:
@@ -245,7 +245,6 @@ files:
245
245
  - lib/mortar/command/clusters.rb
246
246
  - lib/mortar/command/config.rb
247
247
  - lib/mortar/command/describe.rb
248
- - lib/mortar/command/fixtures.rb
249
248
  - lib/mortar/command/generate.rb
250
249
  - lib/mortar/command/help.rb
251
250
  - lib/mortar/command/illustrate.rb
@@ -282,7 +281,6 @@ files:
282
281
  - lib/mortar/templates/characterize/README.md
283
282
  - lib/mortar/templates/characterize/controlscripts/lib/__init__.py
284
283
  - lib/mortar/templates/characterize/controlscripts/lib/characterize_control.py
285
- - lib/mortar/templates/characterize/fixtures/gitkeep
286
284
  - lib/mortar/templates/characterize/gitignore
287
285
  - lib/mortar/templates/characterize/macros/characterize_macro.pig
288
286
  - lib/mortar/templates/characterize/macros/gitkeep
@@ -304,7 +302,6 @@ files:
304
302
  - lib/mortar/templates/pigscript/python_udf.py
305
303
  - lib/mortar/templates/project/README.md
306
304
  - lib/mortar/templates/project/controlscripts/lib/__init__.py
307
- - lib/mortar/templates/project/fixtures/gitkeep
308
305
  - lib/mortar/templates/project/gitignore
309
306
  - lib/mortar/templates/project/lib/gitkeep
310
307
  - lib/mortar/templates/project/macros/gitkeep
@@ -333,7 +330,6 @@ files:
333
330
  - spec/mortar/command/clusters_spec.rb
334
331
  - spec/mortar/command/config_spec.rb
335
332
  - spec/mortar/command/describe_spec.rb
336
- - spec/mortar/command/fixtures_spec.rb
337
333
  - spec/mortar/command/generate_spec.rb
338
334
  - spec/mortar/command/illustrate_spec.rb
339
335
  - spec/mortar/command/jobs_spec.rb
@@ -1,100 +0,0 @@
1
- #
2
- # Copyright 2012 Mortar Data Inc.
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- #
16
-
17
- require "mortar/command/base"
18
-
19
- # create a reusable fixture.
20
- #
21
- class Mortar::Command::Fixtures < Mortar::Command::Base
22
-
23
- WARNING_NUM_ROWS = 50
24
-
25
- #fixtures:head [INPUT_URL] [NUM_ROWS] [FIXTURE_NAME]
26
- #
27
- #Create a reusable fixture [FIXTURE_NAME] made up of [NUM_ROWS]
28
- #number of rows from the head of the input file(s) at [INPUT_URL].
29
- #
30
- # Examples:
31
- #
32
- # $ mortar fixtures:head s3n://tbmmsd/*.tsv.* 100 samll_song_sample
33
- #
34
- def head
35
- input_url = shift_argument
36
- num_rows = shift_argument
37
- fixture_name = shift_argument
38
- unless input_url && num_rows && fixture_name
39
- error("Usage: mortar fixtures:head INPUT_URL NUM_ROWS FIXTURE_NAME\nMust specifiy INPUT_URL, NUM_ROWS, and FIXTURE_NAME.")
40
- end
41
- if does_fixture_exist(fixture_name)
42
- error("Fixture #{fixture_name} already exists.")
43
- end
44
- unless num_rows.to_i < WARNING_NUM_ROWS
45
- warning("Creating fixtures with more than #{WARNING_NUM_ROWS} rows is not recommended. Large local fixtures may cause slowness when using Mortar.")
46
- display
47
- end
48
- validate_arguments!
49
- validate_git_based_project!
50
-
51
- fixture_id = nil
52
- action("Requesting fixture creation") do
53
- fixture_id = api.post_fixture_limit(project.name, fixture_name, input_url, num_rows).body['fixture_id']
54
- end
55
-
56
- poll_for_fixture_results(fixture_id)
57
- end
58
-
59
-
60
-
61
- private
62
-
63
- def does_fixture_exist(fixture_name)
64
- fixture_path = File.join(project.fixtures_path, fixture_name)
65
- File.exists?(fixture_path)
66
- end
67
-
68
- def poll_for_fixture_results(fixture_id)
69
- fixture_result = nil
70
- display
71
- ticking(polling_interval) do |ticks|
72
- fixture_result = api.get_fixture(fixture_id).body
73
- is_finished =
74
- Mortar::API::Fixtures::STATUSES_COMPLETE.include?(fixture_result["status_code"])
75
-
76
- redisplay("Status: %s %s" % [
77
- fixture_result['status_description'] + (is_finished ? "" : "..."),
78
- is_finished ? "" : spinner(ticks)],
79
- is_finished) # only display newline on last message
80
- if is_finished
81
- display
82
- break
83
- end
84
- end
85
-
86
- case fixture_result['status_code']
87
- when Mortar::API::Fixtures::STATUS_FAILED
88
- error_message = "Fixture generation failed with #{fixture_result['error_type'] || 'error'}"
89
- error_context = get_error_message_context(fixture_result['error_message'] || "")
90
- error_message += ":\n\n#{fixture_result['error_message']}\n\n#{error_context}"
91
- error(error_message)
92
- when Mortar::API::Fixtures::STATUS_CREATED
93
- fixture_result['sample_s3_urls'].each do |u|
94
- download_to_file(u['url'], "fixtures/#{fixture_result['name']}/#{u['name']}")
95
- display
96
- end
97
- end
98
- end
99
-
100
- end
File without changes
File without changes
@@ -1,136 +0,0 @@
1
- #
2
- # Copyright 2012 Mortar Data Inc.
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- #
16
-
17
- require 'spec_helper'
18
- require 'fakefs/spec_helpers'
19
- require 'mortar/command/fixtures'
20
- require 'mortar/api/fixtures'
21
-
22
- module Mortar::Command
23
- describe Fixtures do
24
- before(:each) do
25
- stub_core
26
- @git = Mortar::Git::Git.new
27
- end
28
-
29
- context("index") do
30
-
31
- it "errors when missing command" do
32
- with_git_initialized_project do |p|
33
- stderr, stdout = execute("fixtures:head s3n://tbmmsd/*.tsv.* 5", p, @git)
34
- stderr.should == <<-STDERR
35
- ! Usage: mortar fixtures:head INPUT_URL NUM_ROWS FIXTURE_NAME
36
- ! Must specifiy INPUT_URL, NUM_ROWS, and FIXTURE_NAME.
37
- STDERR
38
- end
39
- end
40
-
41
- it "requests and reports on a successful fixtures:head" do
42
- with_git_initialized_project do |p|
43
- fixture_id = "12345abcde"
44
- name = "My_pet_fixture"
45
- url = "s3://my_pet_fixture"
46
- num_rows = "60"
47
-
48
- sample_s3_urls = [ {'url' => "url1",
49
- 'name' => "url1_name"}]
50
-
51
- mock(Mortar::Auth.api).post_fixture_limit(p.name, name, url, num_rows) {Excon::Response.new(:body => {"fixture_id" => fixture_id})}
52
- mock(Mortar::Auth.api).get_fixture(fixture_id).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Fixtures::STATUS_PENDING, "status_description" => "Pending"})).ordered
53
- mock(Mortar::Auth.api).get_fixture(fixture_id).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Fixtures::STATUS_CREATING, "status_description" => "Creating"})).ordered
54
- mock(Mortar::Auth.api).get_fixture(fixture_id).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Fixtures::STATUS_SAVING, "status_description" => "Uploading"})).ordered
55
- mock(Mortar::Auth.api).get_fixture(fixture_id).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Fixtures::STATUS_CREATED, "status_description" => "Success", "name" => name, "sample_s3_urls" => sample_s3_urls})).ordered
56
-
57
- any_instance_of(Mortar::Command::Fixtures) do |base|
58
- mock(base).download_to_file(sample_s3_urls[0]['url'], "fixtures/#{name}/#{sample_s3_urls[0]['name']}")
59
- end
60
-
61
- stderr, stdout = execute("fixtures:head #{url} #{num_rows} #{name} --polling_interval 0.05", p, @git)
62
-
63
- stdout.should == <<-STDOUT
64
- WARNING: Creating fixtures with more than 50 rows is not recommended. Large local fixtures may cause slowness when using Mortar.
65
-
66
- Requesting fixture creation... done
67
-
68
- \r\e[0KStatus: Pending... /\r\e[0KStatus: Creating... -\r\e[0KStatus: Uploading... \\\r\e[0KStatus: Success \n\n
69
- STDOUT
70
-
71
- end
72
- end
73
-
74
- it "requests and reports on a failed fixtures:head" do
75
- with_git_initialized_project do |p|
76
- fixture_id = "12345abcde"
77
- name = "My_pet_fixture"
78
- url = "s3://my_pet_fixture"
79
- num_rows = "60"
80
-
81
- sample_s3_urls = [ {'url' => "url1",
82
- 'name' => "url1_name"}]
83
-
84
- mock(Mortar::Auth.api).post_fixture_limit(p.name, name, url, num_rows) {Excon::Response.new(:body => {"fixture_id" => fixture_id})}
85
- mock(Mortar::Auth.api).get_fixture(fixture_id).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Fixtures::STATUS_PENDING, "status_description" => "Pending"})).ordered
86
- mock(Mortar::Auth.api).get_fixture(fixture_id).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Fixtures::STATUS_CREATING, "status_description" => "Creating"})).ordered
87
- mock(Mortar::Auth.api).get_fixture(fixture_id).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Fixtures::STATUS_SAVING, "status_description" => "Uploading"})).ordered
88
- mock(Mortar::Auth.api).get_fixture(fixture_id).returns(Excon::Response.new(:body => {"status_code" => Mortar::API::Fixtures::STATUS_FAILED,
89
- "status_description" => "Failed",
90
- "name" => name,
91
- "error_message" => "This is an error message.",
92
- "error_type" => "UserError" })).ordered
93
-
94
- stderr, stdout = execute("fixtures:head #{url} #{num_rows} #{name} --polling_interval 0.05", p, @git)
95
-
96
- stdout.should == <<-STDOUT
97
- WARNING: Creating fixtures with more than 50 rows is not recommended. Large local fixtures may cause slowness when using Mortar.
98
-
99
- Requesting fixture creation... done
100
-
101
- \r\e[0KStatus: Pending... /\r\e[0KStatus: Creating... -\r\e[0KStatus: Uploading... \\\r\e[0KStatus: Failed \n
102
- STDOUT
103
-
104
- stderr.should == <<-STDERR
105
- ! Fixture generation failed with UserError:
106
- !
107
- ! This is an error message.
108
- STDERR
109
-
110
- end
111
- end
112
-
113
-
114
- it "tries to create a fixture in an existing directory" do
115
- with_git_initialized_project do |p|
116
- fixture_id = "12345abcde"
117
- name = "My_pet_fixture"
118
- url = "s3://my_pet_fixture"
119
- num_rows = "60"
120
-
121
- fixtures_dir = File.join(Dir.pwd, "fixtures", name)
122
- FileUtils.mkdir_p(fixtures_dir)
123
-
124
- stderr, stdout = execute("fixtures:head #{url} #{num_rows} #{name} --polling_interval 0.05", p, @git)
125
-
126
- stderr.should == <<-STDERR
127
- ! Fixture #{name} already exists.
128
- STDERR
129
- end
130
- end
131
-
132
-
133
-
134
- end
135
- end
136
- end