mortar 0.15.31 → 0.15.32

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.
@@ -17,6 +17,7 @@
17
17
  require "mortar/local/controller"
18
18
  require "mortar/command/base"
19
19
  require "mortar/generators/characterize_generator"
20
+ require "shellwords"
20
21
 
21
22
  # run select pig commands on your local machine
22
23
  #
@@ -78,10 +79,10 @@ class Mortar::Command::Local < Mortar::Command::Base
78
79
 
79
80
  # local:characterize -f PARAMFILE
80
81
  #
81
- # Characterize will inspect your input data, inferring a schema and
82
+ # Characterize will inspect your input data, inferring a schema and
82
83
  # generating keys, if needed. It will output CSV containing various
83
84
  # statistics about your data (most common values, percent null, etc.)
84
- #
85
+ #
85
86
  # -f, --param-file PARAMFILE # Load pig parameter values from a file
86
87
  # -g, --pigversion PIG_VERSION # Set pig version. Options are <PIG_VERSION_OPTIONS>.
87
88
  #
@@ -217,7 +218,7 @@ class Mortar::Command::Local < Mortar::Command::Base
217
218
  validate_arguments!
218
219
 
219
220
  params = config_parameters.concat(pig_parameters)
220
-
221
+
221
222
  ctrl = Mortar::Local::Controller.new
222
223
  ctrl.repl(pig_version, params)
223
224
  end
@@ -241,7 +242,7 @@ class Mortar::Command::Local < Mortar::Command::Base
241
242
  unless script_name
242
243
  error("Usage: mortar local:luigi SCRIPT\nMust specify SCRIPT.")
243
244
  end
244
-
245
+
245
246
  # cd into the project root
246
247
  project_root = options[:project_root] ||= Dir.getwd
247
248
  unless File.directory?(project_root)
@@ -250,7 +251,7 @@ class Mortar::Command::Local < Mortar::Command::Base
250
251
  Dir.chdir(project_root)
251
252
 
252
253
  script = validate_luigiscript!(script_name)
253
-
254
+
254
255
  #Set git ref as environment variable for mortar-luigi to use when
255
256
  #running a MortarTask
256
257
  git_ref = sync_code_with_cloud()
@@ -286,6 +287,7 @@ class Mortar::Command::Local < Mortar::Command::Base
286
287
  # -j, --jdbcdriver COM.DRIVER.BAR # Name of the JDBC driver class
287
288
  # -d, --direct # Use a direct import path
288
289
  # -r, --driverjar JARFILE # Path to the jar containing the jdbc driver
290
+ # -c, --jdbcconnectionstring CONNECTION_STRING # The JDBC connection string override
289
291
  #
290
292
  #Examples:
291
293
  #
@@ -311,7 +313,7 @@ class Mortar::Command::Local < Mortar::Command::Base
311
313
  validate_arguments!
312
314
 
313
315
  dbhost = options[:host] || "localhost"
314
- connstr = jdbc_conn(dbtype, dbhost, physdb)
316
+ connstr = Shellwords.escape(options[:jdbcconnectionstring] || jdbc_conn(dbtype, dbhost, physdb))
315
317
 
316
318
  ctrl = Mortar::Local::Controller.new
317
319
  ctrl.sqoop_export_table(pig_version, connstr, dbtable, s3dest, options)
@@ -327,6 +329,7 @@ class Mortar::Command::Local < Mortar::Command::Base
327
329
  # -j, --jdbcdriver COM.DRIVER.BAR # Name of the JDBC driver class
328
330
  # -d, --direct # Use a direct import path
329
331
  # -r, --driverjar JARFILE # Path to the jar containing the jdbc driver
332
+ # -c, --jdbcconnectionstring CONNECTION_STRING # The JDBC connection string override
330
333
  #
331
334
  #Examples:
332
335
  #
@@ -352,7 +355,7 @@ class Mortar::Command::Local < Mortar::Command::Base
352
355
  validate_arguments!
353
356
 
354
357
  dbhost = options[:host] || "localhost"
355
- connstr = jdbc_conn(dbtype, dbhost, physdb)
358
+ connstr = Shellwords.escape(options[:jdbcconnectionstring] || jdbc_conn(dbtype, dbhost, physdb))
356
359
 
357
360
  ctrl = Mortar::Local::Controller.new
358
361
  ctrl.sqoop_export_query(pig_version, connstr, query, s3dest, options)
@@ -368,6 +371,7 @@ class Mortar::Command::Local < Mortar::Command::Base
368
371
  # -j, --jdbcdriver COM.DRIVER.BAR # Name of the JDBC driver class
369
372
  # -d, --direct # Use a direct import path
370
373
  # -r, --driverjar JARFILE # Path to the jar containing the jdbc driver
374
+ # -c, --jdbcconnectionstring CONNECTION_STRING # The JDBC connection string override
371
375
  #
372
376
  #Examples:
373
377
  #
@@ -401,7 +405,7 @@ class Mortar::Command::Local < Mortar::Command::Base
401
405
  validate_arguments!
402
406
 
403
407
  dbhost = options[:host] || "localhost"
404
- connstr = jdbc_conn(dbtype, dbhost, physdb)
408
+ connstr = Shellwords.escape(options[:jdbcconnectionstring] || jdbc_conn(dbtype, dbhost, physdb))
405
409
 
406
410
  ctrl = Mortar::Local::Controller.new
407
411
  ctrl.sqoop_export_incremental(pig_version, connstr, table, column, max_value, s3dest, options)
@@ -26,8 +26,6 @@ mortar luigi luigiscripts/<%= project_name %>_luigi.py \
26
26
  --output-base-path "s3://mortar-example-output-data/<your_username_here>/<%= project_name %>"
27
27
  """
28
28
 
29
- MORTAR_PROJECT = '<%= project_name %>'
30
-
31
29
  """
32
30
  This logger outputs logs to Mortar Logs. An example of it's usage can be seen
33
31
  in the ShutdownClusters function.
@@ -71,12 +69,6 @@ class RunMyExamplePigScript(mortartask.MortarProjectPigscriptTask):
71
69
  """
72
70
  return [S3PathTask(self.input_path)]
73
71
 
74
- def project(self):
75
- """
76
- Name of Mortar Project to run.
77
- """
78
- return MORTAR_PROJECT
79
-
80
72
  def script_output(self):
81
73
  """
82
74
  The script_output method is how you define where the output from this task
@@ -16,5 +16,5 @@
16
16
 
17
17
  module Mortar
18
18
  # see http://semver.org/
19
- VERSION = "0.15.31"
19
+ VERSION = "0.15.32"
20
20
  end
@@ -19,6 +19,7 @@ require 'fakefs/spec_helpers'
19
19
  require 'mortar/command/local'
20
20
  require 'launchy'
21
21
  require 'fileutils'
22
+ require 'shellwords'
22
23
 
23
24
  module Mortar::Command
24
25
  describe Local do
@@ -155,7 +156,7 @@ PARAMS
155
156
  File.exists?("Test/macros/characterize_macro.pig").should be_false
156
157
  File.exists?("Test/udfs/jython/top_5_tuple.py").should be_false
157
158
  File.exists?("Test/controlscripts/lib/characterize_control.py").should be_false
158
- File.delete("test.params")
159
+ File.delete("test.params")
159
160
  end
160
161
 
161
162
  end
@@ -397,7 +398,7 @@ STDERR
397
398
  end
398
399
 
399
400
  it "sends everything to the controller" do
400
- connstr = "jdbc:mysql://foobar.com/mydb?zeroDateTimeBehavior=convertToNull"
401
+ connstr = Shellwords.escape("jdbc:mysql://foobar.com/mydb?zeroDateTimeBehavior=convertToNull")
401
402
  dbtable = "customers"
402
403
  s3dest = "s3n://a-bucket/a-directory"
403
404
  any_instance_of(Mortar::Local::Controller) do |c|
@@ -407,7 +408,7 @@ STDERR
407
408
  end
408
409
 
409
410
  it "defaults to 'localhost' if no host specified" do
410
- connstr = "jdbc:mysql://localhost/mydb?zeroDateTimeBehavior=convertToNull"
411
+ connstr = Shellwords.escape("jdbc:mysql://localhost/mydb?zeroDateTimeBehavior=convertToNull")
411
412
  dbtable = "customers"
412
413
  s3dest = "s3n://a-bucket/a-directory"
413
414
  any_instance_of(Mortar::Local::Controller) do |c|
@@ -416,6 +417,16 @@ STDERR
416
417
  stderr, stdout = execute "local:sqoop_table mysql mydb #{dbtable} #{s3dest}"
417
418
  end
418
419
 
420
+ it "overrides the JDBC connection string if one is specified" do
421
+ connstr = Shellwords.escape("jdbc:mysql://localhost/mydbother?zeroDateTimeBehavior=convertToNull")
422
+ dbtable = "customers"
423
+ s3dest = "s3n://a-bucket/a-directory"
424
+ any_instance_of(Mortar::Local::Controller) do |c|
425
+ mock(c).sqoop_export_table(is_a(Mortar::PigVersion::Pig09), connstr, dbtable, s3dest, {})
426
+ end
427
+ stderr, stdout = execute "local:sqoop_table mysql mydb #{dbtable} #{s3dest} -c jdbc:mysql://localhost/mydbother?zeroDateTimeBehavior=convertToNull"
428
+ end
429
+
419
430
  end
420
431
 
421
432
  context "local:sqoop_query" do
@@ -452,7 +463,7 @@ STDERR
452
463
  end
453
464
 
454
465
  it "sends everything to the controller" do
455
- connstr = "jdbc:mysql://foobar.com/mydb?zeroDateTimeBehavior=convertToNull"
466
+ connstr = Shellwords.escape("jdbc:mysql://foobar.com/mydb?zeroDateTimeBehavior=convertToNull")
456
467
  query = "select_*_from_customers"
457
468
  s3dest = "s3n://a-bucket/a-directory"
458
469
  any_instance_of(Mortar::Local::Controller) do |c|
@@ -463,7 +474,7 @@ STDERR
463
474
  end
464
475
 
465
476
  it "defaults to 'localhost' if no host specified" do
466
- connstr = "jdbc:mysql://localhost/mydb?zeroDateTimeBehavior=convertToNull"
477
+ connstr = Shellwords.escape("jdbc:mysql://localhost/mydb?zeroDateTimeBehavior=convertToNull")
467
478
  query = "select_*_from_customers"
468
479
  s3dest = "s3n://a-bucket/a-directory"
469
480
  any_instance_of(Mortar::Local::Controller) do |c|
@@ -473,6 +484,17 @@ STDERR
473
484
  stderr.should == ''
474
485
  end
475
486
 
487
+ it "overrides the JDBC connection string if one is specified" do
488
+ connstr = Shellwords.escape("jdbc:mysql://localhost/mydbother?zeroDateTimeBehavior=convertToNull")
489
+ query = "select_*_from_customers"
490
+ s3dest = "s3n://a-bucket/a-directory"
491
+ any_instance_of(Mortar::Local::Controller) do |c|
492
+ mock(c).sqoop_export_query(is_a(Mortar::PigVersion::Pig09), connstr, query, s3dest, {})
493
+ end
494
+ stderr, stdout = execute "local:sqoop_query mysql mydb #{query} #{s3dest} -c jdbc:mysql://localhost/mydbother?zeroDateTimeBehavior=convertToNull"
495
+ stderr.should == ''
496
+ end
497
+
476
498
  end
477
499
 
478
500
  context "local:sqoop_incremental" do
@@ -525,7 +547,7 @@ STDERR
525
547
  end
526
548
 
527
549
  it "sends everything to the controller" do
528
- connstr = "jdbc:mysql://foobar.com/mydb?zeroDateTimeBehavior=convertToNull"
550
+ connstr = Shellwords.escape("jdbc:mysql://foobar.com/mydb?zeroDateTimeBehavior=convertToNull")
529
551
  dbtable = "customers"
530
552
  column = "customer_id"
531
553
  column_value = "12345"
@@ -537,7 +559,7 @@ STDERR
537
559
  end
538
560
 
539
561
  it "defaults to 'localhost' if no host specified" do
540
- connstr = "jdbc:mysql://localhost/mydb?zeroDateTimeBehavior=convertToNull"
562
+ connstr = Shellwords.escape("jdbc:mysql://localhost/mydb?zeroDateTimeBehavior=convertToNull")
541
563
  dbtable = "customers"
542
564
  column = "customer_id"
543
565
  column_value = "12345"
@@ -548,10 +570,21 @@ STDERR
548
570
  stderr, stdout = execute "local:sqoop_incremental mysql mydb #{dbtable} #{column} #{column_value} #{s3dest}"
549
571
  end
550
572
 
573
+ it "overrides the JDBC connection string if one is specified" do
574
+ connstr = Shellwords.escape("jdbc:mysql://localhost/mydbother?zeroDateTimeBehavior=convertToNull")
575
+ dbtable = "customers"
576
+ column = "customer_id"
577
+ column_value = "12345"
578
+ s3dest = "s3n://a-bucket/a-directory"
579
+ any_instance_of(Mortar::Local::Controller) do |c|
580
+ mock(c).sqoop_export_incremental(is_a(Mortar::PigVersion::Pig09), connstr, dbtable, column, column_value, s3dest, {})
581
+ end
582
+ stderr, stdout = execute "local:sqoop_incremental mysql mydb #{dbtable} #{column} #{column_value} #{s3dest} -c jdbc:mysql://localhost/mydbother?zeroDateTimeBehavior=convertToNull"
583
+ end
584
+
551
585
  end
552
586
 
553
587
 
554
588
 
555
589
  end
556
590
  end
557
-
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mortar
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 99
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 15
9
- - 31
10
- version: 0.15.31
9
+ - 32
10
+ version: 0.15.32
11
11
  platform: ruby
12
12
  authors:
13
13
  - Mortar Data
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2014-10-24 00:00:00 Z
18
+ date: 2014-11-11 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rdoc