embulk-input-marketo 0.6.9 → 0.6.10.alpha

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0cae436fbdd33d197c7acb3e72ec4d5e2f5b00e
4
- data.tar.gz: 9077aadd1cf80fecfeef1ba687f1827a01d64416
3
+ metadata.gz: 22645790a18bbe5578b7146e488167fe0139a1a1
4
+ data.tar.gz: b26ea8361cbe4f5d32796eb7295250becc11497d
5
5
  SHA512:
6
- metadata.gz: 511670f368834d3d7d0a47a13d0a99391f3f7a0935e02d2011ef4d18e0d15ab6faa487358056ae2bcddf4fcdb1955e84b21639bae5f4eda5834b9d9f414b50a8
7
- data.tar.gz: 8ae2db810911899e13dc03745dd0f6c1f8106f1d20cf9c866c885cdaa072b64c1bb92d2f52907f1f4a00a6351d9f57d46be07f353e50b7fe31cd297c02a449a8
6
+ metadata.gz: 3c64fa145b1717cbf966b1e92052372fec3cd7848e97c128b769aba1721c4d5a852f1a1c7d656017c529009492a3f530c863e328275aab57e2c81f6942f3bd31
7
+ data.tar.gz: d0f35afc155263d59d5c491784481f189d491b5c5866fc7a983dc3621dc7b7efbf1173524ac9490310c725a926fc44cff89c4299aac8a02be1947bfe156feeb1
@@ -1,4 +1,4 @@
1
- ## 0.6.8 - 2018-04-12
1
+ ## 0.6.9 - 2018-04-16
2
2
  * [fixed] Fix wrapped TimeoutException not retry [#85](https://github.com/treasure-data/embulk-input-marketo/pull/85)
3
3
  * [enhance] Make read_timeout configurable [#85](https://github.com/treasure-data/embulk-input-marketo/pull/85)
4
4
 
@@ -16,7 +16,7 @@ repositories {
16
16
  configurations {
17
17
  provided
18
18
  }
19
- version = "0.6.9"
19
+ version = "0.6.10.alpha"
20
20
  sourceCompatibility = 1.7
21
21
  targetCompatibility = 1.7
22
22
 
@@ -14,10 +14,6 @@ public interface MarketoService
14
14
  {
15
15
  List<MarketoField> describeLead();
16
16
 
17
- List<MarketoField> describeLeadByProgram();
18
-
19
- List<MarketoField> describeLeadByLists();
20
-
21
17
  File extractLead(Date startTime, Date endTime, List<String> extractedFields, String filterField, int pollingTimeIntervalSecond, int bulkJobTimeoutSecond);
22
18
 
23
19
  File extractAllActivity(Date startTime, Date endTime, int pollingTimeIntervalSecond, int bulkJobTimeoutSecond);
@@ -185,22 +185,6 @@ public class MarketoServiceImpl implements MarketoService
185
185
  return marketoRestClient.describeLead();
186
186
  }
187
187
 
188
- @Override
189
- public List<MarketoField> describeLeadByProgram()
190
- {
191
- List<MarketoField> columns = marketoRestClient.describeLead();
192
- columns.add(new MarketoField(MarketoUtils.PROGRAM_ID_COLUMN_NAME, MarketoField.MarketoDataType.STRING));
193
- return columns;
194
- }
195
-
196
- @Override
197
- public List<MarketoField> describeLeadByLists()
198
- {
199
- List<MarketoField> columns = marketoRestClient.describeLead();
200
- columns.add(new MarketoField(MarketoUtils.LIST_ID_COLUMN_NAME, MarketoField.MarketoDataType.STRING));
201
- return columns;
202
- }
203
-
204
188
  private static class DownloadBulkExtractException extends Exception
205
189
  {
206
190
  private final long byteWritten;
@@ -7,8 +7,6 @@ import org.embulk.config.Config;
7
7
  import org.embulk.config.ConfigDefault;
8
8
  import org.embulk.input.marketo.MarketoService;
9
9
  import org.embulk.input.marketo.MarketoServiceImpl;
10
- import org.embulk.input.marketo.MarketoUtils;
11
- import org.embulk.input.marketo.model.MarketoField;
12
10
  import org.embulk.input.marketo.rest.MarketoRestClient;
13
11
  import org.embulk.spi.DataException;
14
12
  import org.embulk.spi.Exec;
@@ -29,7 +27,7 @@ public class LeadBulkExtractInputPlugin extends MarketoBaseBulkExtractInputPlugi
29
27
 
30
28
  private static final String UPDATED_AT = "updatedAt";
31
29
 
32
- public interface PluginTask extends MarketoBaseBulkExtractInputPlugin.PluginTask
30
+ public interface PluginTask extends MarketoBaseBulkExtractInputPlugin.PluginTask, LeadServiceResponseMapperBuilder.PluginTask
33
31
  {
34
32
  @Config("use_updated_at")
35
33
  @ConfigDefault("false")
@@ -63,9 +61,8 @@ public class LeadBulkExtractInputPlugin extends MarketoBaseBulkExtractInputPlugi
63
61
  {
64
62
  try (MarketoRestClient marketoRestClient = createMarketoRestClient(task)) {
65
63
  MarketoService marketoService = new MarketoServiceImpl(marketoRestClient);
66
- List<MarketoField> columns = marketoService.describeLead();
67
- task.setExtractedFields(MarketoUtils.getFieldNameFromMarketoFields(columns));
68
- return MarketoUtils.buildDynamicResponseMapper(task.getSchemaColumnPrefix(), columns);
64
+ LeadServiceResponseMapperBuilder<PluginTask> leadServiceResponseMapperBuilder = new LeadServiceResponseMapperBuilder<>(task, marketoService);
65
+ return leadServiceResponseMapperBuilder.buildServiceResponseMapper(task);
69
66
  }
70
67
  }
71
68
  }
@@ -0,0 +1,85 @@
1
+ package org.embulk.input.marketo.delegate;
2
+
3
+ import com.google.common.base.Optional;
4
+ import org.embulk.base.restclient.ServiceResponseMapper;
5
+ import org.embulk.base.restclient.ServiceResponseMapperBuildable;
6
+ import org.embulk.base.restclient.record.ValueLocator;
7
+ import org.embulk.config.Config;
8
+ import org.embulk.config.ConfigDefault;
9
+ import org.embulk.input.marketo.MarketoService;
10
+ import org.embulk.input.marketo.MarketoUtils;
11
+ import org.embulk.input.marketo.model.MarketoField;
12
+ import org.embulk.spi.Exec;
13
+ import org.slf4j.Logger;
14
+
15
+ import java.util.ArrayList;
16
+ import java.util.List;
17
+
18
+ /**
19
+ * Created by tai.khuu on 5/21/18.
20
+ */
21
+ public class LeadServiceResponseMapperBuilder<T extends LeadServiceResponseMapperBuilder.PluginTask> implements ServiceResponseMapperBuildable<T>
22
+ {
23
+ private static final Logger LOGGER = Exec.getLogger(LeadServiceResponseMapperBuilder.class);
24
+ private MarketoService marketoService;
25
+
26
+ private T pluginTask;
27
+
28
+ public interface PluginTask extends MarketoBaseInputPluginDelegate.PluginTask
29
+ {
30
+ @Config("included_fields")
31
+ @ConfigDefault("null")
32
+ Optional<List<String>> getIncludedLeadFields();
33
+
34
+ @Config("extracted_fields")
35
+ @ConfigDefault("[]")
36
+ List<String> getExtractedFields();
37
+
38
+ void setExtractedFields(List<String> extractedFields);
39
+ }
40
+
41
+ public LeadServiceResponseMapperBuilder(T task, MarketoService marketoService)
42
+ {
43
+ this.pluginTask = task;
44
+ this.marketoService = marketoService;
45
+ }
46
+
47
+ protected List<MarketoField> getLeadColumns()
48
+ {
49
+ List<MarketoField> columns = marketoService.describeLead();
50
+ if (pluginTask.getIncludedLeadFields().isPresent() && !pluginTask.getIncludedLeadFields().get().isEmpty()) {
51
+ List<MarketoField> filteredColumns = new ArrayList<>();
52
+ List<String> includedFields = pluginTask.getIncludedLeadFields().get();
53
+ for (String fieldName : includedFields) {
54
+ Optional<MarketoField> includedField = lookupFieldIgnoreCase(columns, fieldName);
55
+ if (includedField.isPresent()) {
56
+ filteredColumns.add(includedField.get());
57
+ }
58
+ else {
59
+ LOGGER.warn("Included field [{}] not found in Marketo lead field", fieldName);
60
+ }
61
+ }
62
+ columns = filteredColumns;
63
+ LOGGER.info("Included Fields option is set, included columns: [{}]", columns);
64
+ }
65
+ return columns;
66
+ }
67
+
68
+ private static Optional<MarketoField> lookupFieldIgnoreCase(List<MarketoField> inputList, String lookupFieldName)
69
+ {
70
+ for (MarketoField marketoField : inputList) {
71
+ if (marketoField.getName().equalsIgnoreCase(lookupFieldName)) {
72
+ return Optional.of(marketoField);
73
+ }
74
+ }
75
+ return Optional.absent();
76
+ }
77
+
78
+ @Override
79
+ public ServiceResponseMapper<? extends ValueLocator> buildServiceResponseMapper(T task)
80
+ {
81
+ List<MarketoField> leadColumns = getLeadColumns();
82
+ pluginTask.setExtractedFields(MarketoUtils.getFieldNameFromMarketoFields(leadColumns));
83
+ return MarketoUtils.buildDynamicResponseMapper(pluginTask.getSchemaColumnPrefix(), leadColumns);
84
+ }
85
+ }
@@ -10,6 +10,7 @@ import org.embulk.input.marketo.MarketoUtils;
10
10
  import org.embulk.input.marketo.model.MarketoField;
11
11
  import org.embulk.input.marketo.rest.MarketoRestClient;
12
12
 
13
+ import java.util.ArrayList;
13
14
  import java.util.Iterator;
14
15
  import java.util.List;
15
16
 
@@ -18,7 +19,7 @@ import java.util.List;
18
19
  */
19
20
  public class LeadWithListInputPlugin extends MarketoBaseInputPluginDelegate<LeadWithListInputPlugin.PluginTask>
20
21
  {
21
- public interface PluginTask extends MarketoBaseInputPluginDelegate.PluginTask
22
+ public interface PluginTask extends MarketoBaseInputPluginDelegate.PluginTask, LeadServiceResponseMapperBuilder.PluginTask
22
23
  {
23
24
  }
24
25
 
@@ -29,7 +30,10 @@ public class LeadWithListInputPlugin extends MarketoBaseInputPluginDelegate<Lead
29
30
  @Override
30
31
  protected Iterator<ServiceRecord> getServiceRecords(MarketoService marketoService, PluginTask task)
31
32
  {
32
- return FluentIterable.from(marketoService.getAllListLead(task.getExtractedFields())).transform(MarketoUtils.TRANSFORM_OBJECT_TO_JACKSON_SERVICE_RECORD_FUNCTION).iterator();
33
+ List<String> extractedFields = task.getExtractedFields();
34
+ // Remove LIST_ID_COLUMN_NAME when sent fields to Marketo since LIST_ID_COLUMN_NAME are added by plugin code
35
+ extractedFields.remove(MarketoUtils.LIST_ID_COLUMN_NAME);
36
+ return FluentIterable.from(marketoService.getAllListLead(extractedFields)).transform(MarketoUtils.TRANSFORM_OBJECT_TO_JACKSON_SERVICE_RECORD_FUNCTION).iterator();
33
37
  }
34
38
 
35
39
  @Override
@@ -37,9 +41,25 @@ public class LeadWithListInputPlugin extends MarketoBaseInputPluginDelegate<Lead
37
41
  {
38
42
  try (MarketoRestClient marketoRestClient = createMarketoRestClient(task)) {
39
43
  MarketoService marketoService = new MarketoServiceImpl(marketoRestClient);
40
- List<MarketoField> columns = marketoService.describeLeadByLists();
41
- task.setExtractedFields(MarketoUtils.getFieldNameFromMarketoFields(columns, MarketoUtils.LIST_ID_COLUMN_NAME));
42
- return MarketoUtils.buildDynamicResponseMapper(task.getSchemaColumnPrefix(), columns);
44
+ LeadWithListServiceResponseMapper serviceResponseMapper = new LeadWithListServiceResponseMapper(task, marketoService);
45
+ return serviceResponseMapper.buildServiceResponseMapper(task);
46
+ }
47
+ }
48
+
49
+ private static class LeadWithListServiceResponseMapper extends LeadServiceResponseMapperBuilder<PluginTask>
50
+ {
51
+
52
+ public LeadWithListServiceResponseMapper(LeadWithListInputPlugin.PluginTask task, MarketoService marketoService)
53
+ {
54
+ super(task, marketoService);
55
+ }
56
+
57
+ @Override
58
+ protected List<MarketoField> getLeadColumns()
59
+ {
60
+ List<MarketoField> leadColumns = super.getLeadColumns();
61
+ leadColumns.add(new MarketoField(MarketoUtils.LIST_ID_COLUMN_NAME, MarketoField.MarketoDataType.STRING));
62
+ return leadColumns;
43
63
  }
44
64
  }
45
65
  }
@@ -18,7 +18,7 @@ import java.util.List;
18
18
  */
19
19
  public class LeadWithProgramInputPlugin extends MarketoBaseInputPluginDelegate<LeadWithProgramInputPlugin.PluginTask>
20
20
  {
21
- public interface PluginTask extends MarketoBaseInputPluginDelegate.PluginTask
21
+ public interface PluginTask extends MarketoBaseInputPluginDelegate.PluginTask, LeadServiceResponseMapperBuilder.PluginTask
22
22
  {
23
23
  }
24
24
 
@@ -26,6 +26,8 @@ public class LeadWithProgramInputPlugin extends MarketoBaseInputPluginDelegate<L
26
26
  protected Iterator<ServiceRecord> getServiceRecords(MarketoService marketoService, PluginTask task)
27
27
  {
28
28
  List<String> fieldNames = task.getExtractedFields();
29
+ // Remove PROGRAM_ID_COLUMN_NAME when sent fields to Marketo since PROGRAM_ID_COLUMN_NAME are added by plugin code
30
+ fieldNames.remove(MarketoUtils.PROGRAM_ID_COLUMN_NAME);
29
31
  return FluentIterable.from(marketoService.getAllProgramLead(fieldNames)).
30
32
  transform(MarketoUtils.TRANSFORM_OBJECT_TO_JACKSON_SERVICE_RECORD_FUNCTION).iterator();
31
33
  }
@@ -35,9 +37,24 @@ public class LeadWithProgramInputPlugin extends MarketoBaseInputPluginDelegate<L
35
37
  {
36
38
  try (MarketoRestClient marketoRestClient = createMarketoRestClient(task)) {
37
39
  MarketoService marketoService = new MarketoServiceImpl(marketoRestClient);
38
- List<MarketoField> columns = marketoService.describeLeadByProgram();
39
- task.setExtractedFields(MarketoUtils.getFieldNameFromMarketoFields(columns, MarketoUtils.PROGRAM_ID_COLUMN_NAME));
40
- return MarketoUtils.buildDynamicResponseMapper(task.getSchemaColumnPrefix(), columns);
40
+ LeadWithProgramServiceResponseMapper serviceResponseMapper = new LeadWithProgramServiceResponseMapper(task, marketoService);
41
+ return serviceResponseMapper.buildServiceResponseMapper(task);
42
+ }
43
+ }
44
+
45
+ private static class LeadWithProgramServiceResponseMapper extends LeadServiceResponseMapperBuilder<PluginTask>
46
+ {
47
+ public LeadWithProgramServiceResponseMapper(LeadWithProgramInputPlugin.PluginTask task, MarketoService marketoService)
48
+ {
49
+ super(task, marketoService);
50
+ }
51
+
52
+ @Override
53
+ protected List<MarketoField> getLeadColumns()
54
+ {
55
+ List<MarketoField> leadColumns = super.getLeadColumns();
56
+ leadColumns.add(new MarketoField(MarketoUtils.PROGRAM_ID_COLUMN_NAME, MarketoField.MarketoDataType.STRING));
57
+ return leadColumns;
41
58
  }
42
59
  }
43
60
  }
@@ -45,7 +45,6 @@ import java.util.Iterator;
45
45
  import java.util.List;
46
46
  import java.util.Map;
47
47
  import java.util.NoSuchElementException;
48
- import java.util.Set;
49
48
 
50
49
  /**
51
50
  * Created by tai.khuu on 9/18/17.
@@ -1,16 +1,14 @@
1
1
  package org.embulk.input.marketo.delegate;
2
2
 
3
3
  import com.google.common.annotations.VisibleForTesting;
4
+ import com.google.common.base.Optional;
4
5
  import org.embulk.base.restclient.DefaultServiceDataSplitter;
5
6
  import org.embulk.base.restclient.RestClientInputPluginDelegate;
6
7
  import org.embulk.base.restclient.RestClientInputTaskBase;
7
8
  import org.embulk.base.restclient.ServiceDataSplitter;
8
9
  import org.embulk.base.restclient.record.RecordImporter;
9
10
  import org.embulk.base.restclient.record.ServiceRecord;
10
- import org.embulk.config.Config;
11
- import org.embulk.config.ConfigDefault;
12
- import org.embulk.config.ConfigDiff;
13
- import org.embulk.config.TaskReport;
11
+ import org.embulk.config.*;
14
12
  import org.embulk.input.marketo.MarketoService;
15
13
  import org.embulk.input.marketo.MarketoServiceImpl;
16
14
  import org.embulk.input.marketo.rest.MarketoRestClient;
@@ -30,33 +28,13 @@ import java.util.List;
30
28
  public abstract class MarketoBaseInputPluginDelegate<T extends MarketoBaseInputPluginDelegate.PluginTask> implements RestClientInputPluginDelegate<T>
31
29
  {
32
30
  public static final int PREVIEW_RECORD_LIMIT = 15;
33
- private static final int CONNECT_TIMEOUT_IN_MILLIS = 30000;
34
- private static final int IDLE_TIMEOUT_IN_MILLIS = 60000;
35
31
  public interface PluginTask
36
32
  extends RestClientInputTaskBase, MarketoRestClient.PluginTask
37
33
  {
38
- @Config("maximum_retries")
39
- @ConfigDefault("7")
40
- Integer getMaximumRetries();
41
-
42
- @Config("initial_retry_interval_milis")
43
- @ConfigDefault("20000")
44
- Integer getInitialRetryIntervalMilis();
45
-
46
- @Config("maximum_retries_interval_milis")
47
- @ConfigDefault("120000")
48
- Integer getMaximumRetriesIntervalMilis();
49
-
50
34
  @Config("schema_column_prefix")
51
35
  @ConfigDefault("\"mk\"")
52
36
  String getSchemaColumnPrefix();
53
37
 
54
- @Config("extracted_fields")
55
- @ConfigDefault("[]")
56
- List<String> getExtractedFields();
57
-
58
- void setExtractedFields(List<String> extractedFields);
59
-
60
38
  DateTime getJobStartTime();
61
39
 
62
40
  void setJobStartTime(DateTime dateTime);
@@ -77,6 +55,9 @@ public abstract class MarketoBaseInputPluginDelegate<T extends MarketoBaseInputP
77
55
  @Override
78
56
  public TaskReport ingestServiceData(T task, RecordImporter recordImporter, int taskIndex, PageBuilder pageBuilder)
79
57
  {
58
+ if (Exec.isPreview()) {
59
+ task.setBatchSize(PREVIEW_RECORD_LIMIT);
60
+ }
80
61
  try (MarketoRestClient restClient = createMarketoRestClient(task)) {
81
62
  MarketoService marketoService = new MarketoServiceImpl(restClient);
82
63
  Iterator<ServiceRecord> serviceRecords = getServiceRecords(marketoService, task);
@@ -95,10 +76,7 @@ public abstract class MarketoBaseInputPluginDelegate<T extends MarketoBaseInputP
95
76
  @VisibleForTesting
96
77
  public MarketoRestClient createMarketoRestClient(PluginTask task)
97
78
  {
98
- if (Exec.isPreview()) {
99
- task.setBatchSize(PREVIEW_RECORD_LIMIT);
100
- }
101
- return new MarketoRestClient(task, new Jetty92RetryHelper(task.getMaximumRetries(), task.getInitialRetryIntervalMilis(), task.getMaximumRetriesIntervalMilis(), new DefaultJetty92ClientCreator(CONNECT_TIMEOUT_IN_MILLIS, IDLE_TIMEOUT_IN_MILLIS)));
79
+ return new MarketoRestClient(task);
102
80
  }
103
81
 
104
82
  @Override
@@ -114,4 +114,13 @@ public class MarketoField
114
114
  return Optional.fromNullable(format);
115
115
  }
116
116
  }
117
+
118
+ @Override
119
+ public String toString()
120
+ {
121
+ return "MarketoField{" +
122
+ "name='" + name + '\'' +
123
+ ", marketoDataType=" + marketoDataType +
124
+ '}';
125
+ }
117
126
  }
@@ -23,6 +23,7 @@ import org.embulk.spi.DataException;
23
23
  import org.embulk.spi.Exec;
24
24
  import org.embulk.spi.type.Type;
25
25
  import org.embulk.spi.type.Types;
26
+ import org.embulk.util.retryhelper.jetty92.DefaultJetty92ClientCreator;
26
27
  import org.embulk.util.retryhelper.jetty92.Jetty92RetryHelper;
27
28
  import org.slf4j.Logger;
28
29
 
@@ -53,6 +54,9 @@ public class MarketoRestClient extends MarketoBaseRestClient
53
54
 
54
55
  private static final String RANGE_HEADER = "Range";
55
56
 
57
+ private static final int CONNECT_TIMEOUT_IN_MILLIS = 30000;
58
+ private static final int IDLE_TIMEOUT_IN_MILLIS = 60000;
59
+
56
60
  private String endPoint;
57
61
 
58
62
  private Integer batchSize;
@@ -108,11 +112,23 @@ public class MarketoRestClient extends MarketoBaseRestClient
108
112
  @Config("read_timeout_millis")
109
113
  @ConfigDefault("60000")
110
114
  Long getReadTimeoutMillis();
115
+
116
+ @Config("maximum_retries")
117
+ @ConfigDefault("7")
118
+ Integer getMaximumRetries();
119
+
120
+ @Config("initial_retry_interval_milis")
121
+ @ConfigDefault("20000")
122
+ Integer getInitialRetryIntervalMilis();
123
+
124
+ @Config("maximum_retries_interval_milis")
125
+ @ConfigDefault("120000")
126
+ Integer getMaximumRetriesIntervalMilis();
111
127
  }
112
128
 
113
- public MarketoRestClient(PluginTask task, Jetty92RetryHelper retryHelper)
129
+ public MarketoRestClient(PluginTask task)
114
130
  {
115
- this(MarketoUtils.getEndPoint(task.getAccountId()), MarketoUtils.getIdentityEndPoint(task.getAccountId()), task.getClientId(), task.getClientSecret(), task.getBatchSize(), task.getMaxReturn(), task.getReadTimeoutMillis(), task.getMarketoLimitIntervalMilis(), retryHelper);
131
+ this(MarketoUtils.getEndPoint(task.getAccountId()), MarketoUtils.getIdentityEndPoint(task.getAccountId()), task.getClientId(), task.getClientSecret(), task.getBatchSize(), task.getMaxReturn(), task.getReadTimeoutMillis(), task.getMarketoLimitIntervalMilis(), new Jetty92RetryHelper(task.getMaximumRetries(), task.getInitialRetryIntervalMilis(), task.getMaximumRetriesIntervalMilis(), new DefaultJetty92ClientCreator(CONNECT_TIMEOUT_IN_MILLIS, IDLE_TIMEOUT_IN_MILLIS)));
116
132
  }
117
133
 
118
134
  public MarketoRestClient(String endPoint, String identityEndPoint, String clientId, String clientSecret, Integer batchSize, Integer maxReturn, long readTimeoutMilis, int marketoLimitIntervalMilis, Jetty92RetryHelper retryHelper)
@@ -5,7 +5,6 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
5
5
  import com.google.common.io.ByteStreams;
6
6
  import org.embulk.EmbulkTestRuntime;
7
7
  import org.embulk.input.marketo.model.BulkExtractRangeHeader;
8
- import org.embulk.input.marketo.model.MarketoField;
9
8
  import org.embulk.input.marketo.rest.MarketoRestClient;
10
9
  import org.embulk.input.marketo.rest.RecordPagingIterable;
11
10
  import org.junit.Assert;
@@ -135,28 +134,4 @@ public class MarketoServiceImplTest
135
134
  marketoService.describeLead();
136
135
  Mockito.verify(mockMarketoRestClient, Mockito.times(1)).describeLead();
137
136
  }
138
-
139
- @Test
140
- public void describeLeadByProgram() throws Exception
141
- {
142
- List<MarketoField> marketoFields = new ArrayList<>();
143
- Mockito.when(mockMarketoRestClient.describeLead()).thenReturn(marketoFields);
144
- marketoService.describeLeadByProgram();
145
- Mockito.verify(mockMarketoRestClient, Mockito.times(1)).describeLead();
146
- Assert.assertEquals(1, marketoFields.size());
147
- Assert.assertEquals("programId", marketoFields.get(0).getName());
148
- Assert.assertEquals(MarketoField.MarketoDataType.STRING, marketoFields.get(0).getMarketoDataType());
149
- }
150
-
151
- @Test
152
- public void describeLeadByLists() throws Exception
153
- {
154
- List<MarketoField> marketoFields = new ArrayList<>();
155
- Mockito.when(mockMarketoRestClient.describeLead()).thenReturn(marketoFields);
156
- marketoService.describeLeadByLists();
157
- Mockito.verify(mockMarketoRestClient, Mockito.times(1)).describeLead();
158
- Assert.assertEquals(1, marketoFields.size());
159
- Assert.assertEquals("listId", marketoFields.get(0).getName());
160
- Assert.assertEquals(MarketoField.MarketoDataType.STRING, marketoFields.get(0).getMarketoDataType());
161
- }
162
137
  }
@@ -0,0 +1,119 @@
1
+ package org.embulk.input.marketo.delegate;
2
+
3
+ import com.fasterxml.jackson.databind.JavaType;
4
+ import org.embulk.EmbulkTestRuntime;
5
+ import org.embulk.base.restclient.ServiceResponseMapper;
6
+ import org.embulk.base.restclient.record.ValueLocator;
7
+ import org.embulk.config.ConfigLoader;
8
+ import org.embulk.config.ConfigSource;
9
+ import org.embulk.input.marketo.MarketoService;
10
+ import org.embulk.input.marketo.MarketoUtils;
11
+ import org.embulk.input.marketo.model.MarketoField;
12
+ import org.embulk.spi.Schema;
13
+ import org.junit.Assert;
14
+ import org.junit.Before;
15
+ import org.junit.Rule;
16
+ import org.junit.Test;
17
+ import org.mockito.Mockito;
18
+
19
+ import java.io.IOException;
20
+ import java.util.ArrayList;
21
+ import java.util.List;
22
+
23
+ /**
24
+ * Created by tai.khuu on 5/24/18.
25
+ */
26
+ public class LeadServiceResponseMapperBuilderTest
27
+ {
28
+ private LeadServiceResponseMapperBuilder<LeadServiceResponseMapperBuilder.PluginTask> leadServiceResponseMapperBuilder;
29
+
30
+ @Rule
31
+ public EmbulkTestRuntime embulkTestRuntime = new EmbulkTestRuntime();
32
+
33
+ private LeadServiceResponseMapperBuilder.PluginTask pluginTask;
34
+
35
+ private ConfigSource configSource;
36
+
37
+ private MarketoService marketoService;
38
+
39
+ @Before
40
+ public void setUp() throws Exception
41
+ {
42
+ ConfigLoader configLoader = embulkTestRuntime.getExec().getInjector().getInstance(ConfigLoader.class);
43
+ configSource = configLoader.fromYamlString("--- \n" +
44
+ "account_id: 389-FLQ-873\n" +
45
+ "client_id: 87bdd058-12ff-49b8-8d29-c0518669e59a\n" +
46
+ "client_secret: 2uauyk43zzwjlUZwboZVxQ3SMTHe8ILY\n" +
47
+ "included_fields: \n" +
48
+ " - company\n" +
49
+ " - site\n" +
50
+ " - billingstreet\n" +
51
+ " - billingcity\n" +
52
+ " - billingstate\n" +
53
+ " - billingcountry\n" +
54
+ " - billingpostalCode\n" +
55
+ " - website\n" +
56
+ " - mainphone\n" +
57
+ " - annualrevenue\n" +
58
+ " - numberofemployees\n" +
59
+ " - industry\n" +
60
+ " - siccode\n" +
61
+ " - mktoCompanyNotes\n" +
62
+ " - externalcompanyId\n" +
63
+ " - id\n" +
64
+ "target: all_lead_with_list_id\n");
65
+ pluginTask = configSource.loadConfig(LeadServiceResponseMapperBuilder.PluginTask.class);
66
+ marketoService = Mockito.mock(MarketoService.class);
67
+ JavaType marketoFieldsType = MarketoUtils.OBJECT_MAPPER.getTypeFactory().constructParametrizedType(List.class, List.class, MarketoField.class);
68
+ List<MarketoField> marketoFields = MarketoUtils.OBJECT_MAPPER.readValue(this.getClass().getResourceAsStream("/fixtures/lead_describe_marketo_fields_full.json"), marketoFieldsType);
69
+ Mockito.when(marketoService.describeLead()).thenReturn(marketoFields);
70
+ }
71
+
72
+ @Test
73
+ public void buildServiceResponseMapper() throws Exception
74
+ {
75
+ leadServiceResponseMapperBuilder = new LeadServiceResponseMapperBuilder<>(pluginTask, marketoService);
76
+ ServiceResponseMapper<? extends ValueLocator> serviceResponseMapper = leadServiceResponseMapperBuilder.buildServiceResponseMapper(pluginTask);
77
+ Assert.assertFalse(pluginTask.getExtractedFields().isEmpty());
78
+ Assert.assertEquals(16, pluginTask.getExtractedFields().size());
79
+ Schema embulkSchema = serviceResponseMapper.getEmbulkSchema();
80
+ Assert.assertEquals(16, embulkSchema.getColumns().size());
81
+ Assert.assertEquals("mk_billingStreet", embulkSchema.getColumns().get(2).getName());
82
+ Assert.assertEquals("mk_company", embulkSchema.getColumn(0).getName());
83
+ Assert.assertEquals("mk_billingStreet", embulkSchema.getColumn(2).getName());
84
+ Assert.assertEquals("mk_id", embulkSchema.getColumn(15).getName());
85
+ }
86
+
87
+ @Test
88
+ public void getLeadColumnsIncludedEmpty() throws IOException
89
+ {
90
+ configSource = configSource.set("included_fields", MarketoUtils.OBJECT_MAPPER.readTree("[]"));
91
+ pluginTask = configSource.loadConfig(LeadServiceResponseMapperBuilder.PluginTask.class);
92
+ leadServiceResponseMapperBuilder = new LeadServiceResponseMapperBuilder<>(pluginTask, marketoService);
93
+ List<MarketoField> leadColumns = leadServiceResponseMapperBuilder.getLeadColumns();
94
+ Assert.assertEquals(129, leadColumns.size());
95
+ }
96
+
97
+ @Test
98
+ public void getLeadColumnsIncluded1() throws IOException
99
+ {
100
+ configSource = configSource.set("included_fields", MarketoUtils.OBJECT_MAPPER.readTree("[\"company\",\"incorrect_value\"]"));
101
+ pluginTask = configSource.loadConfig(LeadServiceResponseMapperBuilder.PluginTask.class);
102
+ leadServiceResponseMapperBuilder = new LeadServiceResponseMapperBuilder<>(pluginTask, marketoService);
103
+ List<MarketoField> leadColumns = leadServiceResponseMapperBuilder.getLeadColumns();
104
+ Assert.assertEquals(1, leadColumns.size());
105
+ Assert.assertEquals("company", leadColumns.get(0).getName());
106
+ }
107
+
108
+ @Test
109
+ public void getLeadColumnsIncluded2() throws IOException
110
+ {
111
+ configSource = configSource.set("included_fields", MarketoUtils.OBJECT_MAPPER.readTree("[\"company\",\"incorrect_value\"]"));
112
+ pluginTask = configSource.loadConfig(LeadServiceResponseMapperBuilder.PluginTask.class);
113
+ marketoService = Mockito.mock(MarketoService.class);
114
+ leadServiceResponseMapperBuilder = new LeadServiceResponseMapperBuilder<>(pluginTask, marketoService);
115
+ Mockito.when(marketoService.describeLead()).thenReturn(new ArrayList<MarketoField>());
116
+ List<MarketoField> leadColumns = leadServiceResponseMapperBuilder.getLeadColumns();
117
+ Assert.assertTrue(leadColumns.isEmpty());
118
+ }
119
+ }
@@ -72,7 +72,7 @@ public class MarketoRestClientTest
72
72
  configSource.set("max_return", 2);
73
73
  MarketoRestClient.PluginTask task = configSource.loadConfig(MarketoRestClient.PluginTask.class);
74
74
  mockRetryHelper = Mockito.mock(Jetty92RetryHelper.class);
75
- MarketoRestClient realRestClient = new MarketoRestClient(task, mockRetryHelper);
75
+ MarketoRestClient realRestClient = new MarketoRestClient(task);
76
76
  marketoRestClient = Mockito.spy(realRestClient);
77
77
  }
78
78
 
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.6.9
4
+ version: 0.6.10.alpha
5
5
  platform: ruby
6
6
  authors:
7
7
  - uu59
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-04-16 00:00:00.000000000 Z
13
+ date: 2018-05-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  requirement: !ruby/object:Gem::Requirement
@@ -73,6 +73,7 @@ files:
73
73
  - src/main/java/org/embulk/input/marketo/delegate/ActivityBulkExtractInputPlugin.java
74
74
  - src/main/java/org/embulk/input/marketo/delegate/CampaignInputPlugin.java
75
75
  - src/main/java/org/embulk/input/marketo/delegate/LeadBulkExtractInputPlugin.java
76
+ - src/main/java/org/embulk/input/marketo/delegate/LeadServiceResponseMapperBuilder.java
76
77
  - src/main/java/org/embulk/input/marketo/delegate/LeadWithListInputPlugin.java
77
78
  - src/main/java/org/embulk/input/marketo/delegate/LeadWithProgramInputPlugin.java
78
79
  - src/main/java/org/embulk/input/marketo/delegate/MarketoBaseBulkExtractInputPlugin.java
@@ -97,6 +98,7 @@ files:
97
98
  - src/test/java/org/embulk/input/marketo/delegate/ActivityBulkExtractInputPluginTest.java
98
99
  - src/test/java/org/embulk/input/marketo/delegate/CampaignInputPluginTest.java
99
100
  - src/test/java/org/embulk/input/marketo/delegate/LeadBulkExtractInputPluginTest.java
101
+ - src/test/java/org/embulk/input/marketo/delegate/LeadServiceResponseMapperBuilderTest.java
100
102
  - src/test/java/org/embulk/input/marketo/delegate/LeadWithListInputPluginTest.java
101
103
  - src/test/java/org/embulk/input/marketo/delegate/LeadWithProgramInputPluginTest.java
102
104
  - src/test/java/org/embulk/input/marketo/delegate/MarketoBaseBulkExtractInputPluginTest.java
@@ -124,9 +126,9 @@ files:
124
126
  - src/test/resources/fixtures/program_response.json
125
127
  - classpath/jetty-http-9.2.14.v20151106.jar
126
128
  - classpath/embulk-base-restclient-0.5.3.jar
129
+ - classpath/embulk-input-marketo-0.6.10.alpha.jar
127
130
  - classpath/jetty-client-9.2.14.v20151106.jar
128
131
  - classpath/jetty-util-9.2.14.v20151106.jar
129
- - classpath/embulk-input-marketo-0.6.9.jar
130
132
  - classpath/embulk-util-retryhelper-jetty92-0.5.3.jar
131
133
  - classpath/jetty-io-9.2.14.v20151106.jar
132
134
  homepage: https://github.com/treasure-data/embulk-input-marketo
@@ -144,9 +146,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
146
  version: '0'
145
147
  required_rubygems_version: !ruby/object:Gem::Requirement
146
148
  requirements:
147
- - - '>='
149
+ - - '>'
148
150
  - !ruby/object:Gem::Version
149
- version: '0'
151
+ version: 1.3.1
150
152
  requirements: []
151
153
  rubyforge_project:
152
154
  rubygems_version: 2.1.9