embulk-input-marketo 0.5.1 → 0.5.2

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: 74bbb311bf2dcb785889f5b475a07b26b521a98a
4
- data.tar.gz: 2f1baeff76a61820a7616e6f860ae8166b85aa9c
3
+ metadata.gz: de07e24ca3f14e364b3f15895ed56a96f09852a4
4
+ data.tar.gz: 87f22e2378c027eed276168c6b46ace5aebb262d
5
5
  SHA512:
6
- metadata.gz: a5cf2a4f8bf7fa74f4c6a13507824146624039abe1768fcf8d134bfd7b2100c958ca92df3e51eeecd822d65053d6dde697d846e3778b67de7469d44e91a1f84d
7
- data.tar.gz: 1eb35066356697f2cfaf3f743d251f7ec34e837185fc9d1daf1dd9fd3f1e9aff81d63cc447c60bf571f2ea51513e59b96b771ba930263b25429afbece98c9c8e
6
+ metadata.gz: ba3f66db79035db3ae0c6a32f55c6e2e9ce003db9dd5c858eab4b65c1c7897e8e79f36af128729e3452a2c5c1b178391bbd9d3e05e8e13941fe33175d5bf1d9c
7
+ data.tar.gz: c4a34c34dc46d20767a79e0ac3832d4dd5cc4cc57b15cc936e0cb3dd9840ffa08fcbf5ae1bbc1275a3511e7b78b75106d34526a8b454b52070ad215b21ca3b06
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.5.2 - 2016-04-27
2
+ * [enhancement] Make debug easier [#54](https://github.com/treasure-data/embulk-input-marketo/pull/54)
3
+ * [fixed] Recognize empty string as nil value [#53](https://github.com/treasure-data/embulk-input-marketo/pull/53)
4
+
1
5
  ## 0.5.1 - 2016-04-06
2
6
 
3
7
  * [maintenance] Relax dependency version
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "embulk-input-marketo"
3
- spec.version = "0.5.1"
3
+ spec.version = "0.5.2"
4
4
  spec.authors = ["uu59", "yoshihara"]
5
5
  spec.summary = "Marketo input plugin for Embulk"
6
6
  spec.description = "Loads records from Marketo."
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
14
14
 
15
15
  spec.add_dependency 'savon', ['~> 2.11.1']
16
16
  spec.add_dependency 'httpclient'
17
- spec.add_dependency 'perfect_retry', ["~> 0.3"]
17
+ spec.add_dependency 'perfect_retry', ["~> 0.5"]
18
18
  spec.add_development_dependency 'embulk', [">= 0.6.13", "< 1.0"]
19
19
  spec.add_development_dependency 'bundler', ['~> 1.0']
20
20
  spec.add_development_dependency 'rake', ['>= 10.0']
@@ -108,7 +108,7 @@ module Embulk
108
108
  end
109
109
 
110
110
  def cast_value(column, value)
111
- return unless value
111
+ return if value.to_s.empty? # nil or empty string
112
112
 
113
113
  case column["type"].to_s
114
114
  when "timestamp"
@@ -51,14 +51,13 @@ module Embulk
51
51
  }
52
52
  request[:start_position][:offset] = options[:offset] if options[:offset]
53
53
 
54
- Embulk.logger.info "Fetching from '#{from}' to '#{to}'..."
55
54
  fetch(request, options, &block)
56
55
  end
57
56
 
58
57
  def fetch(request, options={}, &block)
59
58
  response = savon_call(:get_lead_changes, {message: request}, options)
60
59
  remaining = response.xpath('//remainingCount').text.to_i
61
- Embulk.logger.info "Remaining records: #{remaining}"
60
+ Embulk.logger.info "Remaining #{remaining} records for this range: from '#{request[:start_position][:oldest_created_at]}' to '#{request[:start_position][:latest_created_at]}'."
62
61
 
63
62
  activities = response.xpath('//leadChangeRecord')
64
63
 
@@ -29,7 +29,7 @@ module Embulk
29
29
  # NOTE: Do not memoize this to use always fresh signature (avoid 20016 error)
30
30
  # ref. https://jira.talendforge.org/secure/attachmentzip/unzip/167201/49761%5B1%5D/Marketo%20Enterprise%20API%202%200.pdf (41 page)
31
31
  Savon.client(
32
- log: true,
32
+ log: false,
33
33
  logger: Embulk.logger,
34
34
  wsdl: wsdl,
35
35
  soap_header: headers,
@@ -50,6 +50,7 @@ module Embulk
50
50
  config.rescues = [StandardError, Timeout::Error]
51
51
  config.logger = Embulk.logger
52
52
  config.log_level = nil
53
+ config.raise_original_error = true
53
54
  end
54
55
  end
55
56
 
@@ -47,11 +47,11 @@ module Embulk
47
47
  def fetch(request = {}, retry_options, &block)
48
48
  start = Time.now
49
49
  response = savon_call(:get_multiple_leads, {message: request}, retry_options)
50
- Embulk.logger.info "Fetched in #{Time.now - start} seconds"
50
+ Embulk.logger.debug "Fetched in #{Time.now - start} seconds"
51
51
 
52
52
  records = response.xpath('//leadRecordList/leadRecord')
53
53
  remaining = response.xpath('//remainingCount').text.to_i
54
- Embulk.logger.info "Fetched records in the range: #{records.size}"
54
+ Embulk.logger.debug "Fetched records in the range: #{records.size}"
55
55
  Embulk.logger.info "Remaining records in the range: #{remaining}"
56
56
 
57
57
  records.each do |lead|
@@ -171,6 +171,37 @@ module Embulk
171
171
  end
172
172
  end
173
173
 
174
+ class FormatRecordTest < self
175
+ def setup
176
+ @page_builder = Object.new
177
+ plugin_task = task.dup
178
+ plugin_task[:columns] = [
179
+ {"name" => "time", "type" => :timestamp, "format" => "%Y-%m-%d %H:%M:%S"}
180
+ ]
181
+ @plugin = ActivityLog.new(plugin_task, nil, nil, @page_builder)
182
+ end
183
+
184
+ data do
185
+ [
186
+ ["valid timestamp", [Time.parse("2000-01-01 00:00:00"), "2000-01-01 00:00:00"]],
187
+ ["nil", [nil, nil]],
188
+ ["empty", [nil, ""]],
189
+ ]
190
+ end
191
+ def test_valid_timestamp(data)
192
+ expected, actual = data
193
+ record = { "time" => actual }
194
+ assert_equal [expected], @plugin.format_record(record)
195
+ end
196
+
197
+ def test_invalid_timestamp
198
+ record = { "time" => "123" }
199
+ assert_raise(Embulk::ConfigError) do
200
+ @plugin.format_record(record)
201
+ end
202
+ end
203
+ end
204
+
174
205
  class RunTest < self
175
206
  def setup_soap
176
207
  @soap = MarketoApi::Soap::ActivityLog.new(settings[:endpoint], settings[:wsdl], settings[:user_id], settings[:encryption_key])
@@ -22,7 +22,7 @@ module Embulk
22
22
 
23
23
  mock(Embulk.logger).warn(/Retrying/).times(retry_options[:retry_limit])
24
24
 
25
- assert_raise(PerfectRetry::TooManyRetry) do
25
+ assert_raise(::Timeout::Error) do
26
26
  soap.send(:savon_call, :timeout_test, {}, retry_options)
27
27
  end
28
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-input-marketo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - uu59
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-04-06 00:00:00.000000000 Z
12
+ date: 2016-04-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  requirement: !ruby/object:Gem::Requirement
@@ -44,7 +44,7 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.3'
47
+ version: '0.5'
48
48
  name: perfect_retry
49
49
  prerelease: false
50
50
  type: :runtime
@@ -52,7 +52,7 @@ dependencies:
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '0.3'
55
+ version: '0.5'
56
56
  - !ruby/object:Gem::Dependency
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements: