Search in sources :

Example 21 with Record

use of org.apache.avro.generic.GenericData.Record in project components by Talend.

the class MarketoListOperationWriterTest method testRetryOperationFailRecoverableErrror.

@Test
public void testRetryOperationFailRecoverableErrror() throws Exception {
    IndexedRecord record = new Record(MarketoConstants.getListOperationRESTSchema());
    record.put(0, 12345);
    record.put(1, 54321);
    doReturn(getFailedSyncResult("REST", "602", "expired header")).when(client).addToList(any(ListOperationParameters.class));
    doReturn(true).when(client).isErrorRecoverable(any(List.class));
    props.dieOnError.setValue(false);
    when(sink.getProperties()).thenReturn(props);
    int minDelay = props.connection.maxReconnAttemps.getValue() * props.connection.attemptsIntervalTime.getValue();
    long start = System.currentTimeMillis();
    writer.open("test");
    writer.write(record);
    MarketoResult result = (MarketoResult) writer.close();
    long end = System.currentTimeMillis();
    assertEquals((long) props.connection.maxReconnAttemps.getValue(), result.apiCalls);
    assertEquals(Collections.emptyList(), writer.getSuccessfulWrites());
    assertTrue(minDelay <= (end - start));
    List<IndexedRecord> rejects = writer.getRejectedWrites();
    IndexedRecord reject = rejects.get(0);
    assertNotNull(reject);
    assertEquals("failed", reject.get(2));
    assertTrue(String.valueOf(reject.get(3)).contains("602"));
}
Also used : IndexedRecord(org.apache.avro.generic.IndexedRecord) ListOperationParameters(org.talend.components.marketo.runtime.client.type.ListOperationParameters) Record(org.apache.avro.generic.GenericData.Record) IndexedRecord(org.apache.avro.generic.IndexedRecord) List(java.util.List) Test(org.junit.Test)

Example 22 with Record

use of org.apache.avro.generic.GenericData.Record in project components by Talend.

the class MarketoListOperationWriterTest method testRetryOperationFailDieOnError.

@Test
public void testRetryOperationFailDieOnError() throws Exception {
    IndexedRecord record = new Record(MarketoConstants.getListOperationRESTSchema());
    record.put(0, 12345);
    record.put(1, 54321);
    doReturn(false).when(client).isErrorRecoverable(any(List.class));
    doReturn(getFailedSyncResult("REST", "902", "Invalid operation")).when(client).addToList(any(ListOperationParameters.class));
    writer.open("test");
    writer.write(record);
    try {
        writer.close();
        fail("Should not be here");
    } catch (Exception e) {
        assertTrue(e.getMessage().contains("902"));
    }
}
Also used : IndexedRecord(org.apache.avro.generic.IndexedRecord) ListOperationParameters(org.talend.components.marketo.runtime.client.type.ListOperationParameters) Record(org.apache.avro.generic.GenericData.Record) IndexedRecord(org.apache.avro.generic.IndexedRecord) List(java.util.List) Test(org.junit.Test)

Example 23 with Record

use of org.apache.avro.generic.GenericData.Record in project components by Talend.

the class MarketoListOperationWriterTest method testWriteREST.

@Test
public void testWriteREST() throws Exception {
    doReturn(getFailedSyncResult(true)).when(client).addToList(any(ListOperationParameters.class));
    doReturn(getSuccessSyncResult("added")).when(client).removeFromList(any(ListOperationParameters.class));
    doReturn(getFailedSyncResult(true)).when(client).isMemberOfList(any(ListOperationParameters.class));
    IndexedRecord record = new Record(MarketoConstants.getListOperationRESTSchema());
    record.put(0, 12345);
    record.put(1, 54321);
    try {
        writer.write(record);
        fail("Should not be here");
    } catch (Exception e) {
    }
    props.dieOnError.setValue(false);
    props.multipleOperation.setValue(true);
    when(sink.getProperties()).thenReturn(props);
    writer.open("test");
    writer.write(record);
    writer.write(record);
    writer.write(record);
    writer.write(record);
    writer.write(record);
    record.put(0, 66666);
    writer.write(record);
    assertNotNull(writer.close());
    // 
    doReturn(getSuccessSyncResult("added")).when(client).addToList(any(ListOperationParameters.class));
    writer.open("test");
    writer.write(record);
    assertNotNull(writer.close());
    // 
    props.listOperation.setValue(ListOperation.isMemberOf);
    when(sink.getProperties()).thenReturn(props);
    writer.open("test");
    writer.write(record);
    assertNotNull(writer.close());
    // 
    props.listOperation.setValue(ListOperation.removeFrom);
    when(sink.getProperties()).thenReturn(props);
    writer.open("test");
    writer.write(record);
    assertNotNull(writer.close());
}
Also used : IndexedRecord(org.apache.avro.generic.IndexedRecord) ListOperationParameters(org.talend.components.marketo.runtime.client.type.ListOperationParameters) Record(org.apache.avro.generic.GenericData.Record) IndexedRecord(org.apache.avro.generic.IndexedRecord) Test(org.junit.Test)

Example 24 with Record

use of org.apache.avro.generic.GenericData.Record in project components by Talend.

the class MarketoListOperationWriterTest method testRetryOperationSuccess.

@Test
public void testRetryOperationSuccess() throws Exception {
    IndexedRecord record = new Record(MarketoConstants.getListOperationRESTSchema());
    record.put(0, 12345);
    record.put(1, 54321);
    doReturn(getSuccessSyncResult("added")).when(client).addToList(any(ListOperationParameters.class));
    doReturn(false).when(client).isErrorRecoverable(any(List.class));
    writer.open("test");
    writer.write(record);
    MarketoResult result = (MarketoResult) writer.close();
    assertEquals(1, result.apiCalls);
}
Also used : IndexedRecord(org.apache.avro.generic.IndexedRecord) ListOperationParameters(org.talend.components.marketo.runtime.client.type.ListOperationParameters) Record(org.apache.avro.generic.GenericData.Record) IndexedRecord(org.apache.avro.generic.IndexedRecord) List(java.util.List) Test(org.junit.Test)

Example 25 with Record

use of org.apache.avro.generic.GenericData.Record in project components by Talend.

the class MarketoListOperationWriterTest method testRetryOperationFailNonRecoverableErrror.

@Test
public void testRetryOperationFailNonRecoverableErrror() throws Exception {
    IndexedRecord record = new Record(MarketoConstants.getListOperationRESTSchema());
    record.put(0, 12345);
    record.put(1, 54321);
    doReturn(false).when(client).isErrorRecoverable(any(List.class));
    doReturn(getFailedSyncResult("REST", "902", "Invalid operation")).when(client).addToList(any(ListOperationParameters.class));
    props.dieOnError.setValue(false);
    when(sink.getProperties()).thenReturn(props);
    writer.open("test");
    writer.write(record);
    MarketoResult result = (MarketoResult) writer.close();
    assertEquals(1, result.apiCalls);
    assertEquals(Collections.emptyList(), writer.getSuccessfulWrites());
    List<IndexedRecord> rejects = writer.getRejectedWrites();
    IndexedRecord reject = rejects.get(0);
    assertNotNull(reject);
    assertEquals("failed", reject.get(2));
    assertTrue(String.valueOf(reject.get(3)).contains("902"));
}
Also used : IndexedRecord(org.apache.avro.generic.IndexedRecord) ListOperationParameters(org.talend.components.marketo.runtime.client.type.ListOperationParameters) Record(org.apache.avro.generic.GenericData.Record) IndexedRecord(org.apache.avro.generic.IndexedRecord) List(java.util.List) Test(org.junit.Test)

Aggregations

Record (org.apache.avro.generic.GenericData.Record)96 Test (org.junit.Test)44 IndexedRecord (org.apache.avro.generic.IndexedRecord)43 Schema (org.apache.avro.Schema)33 ArrayList (java.util.ArrayList)24 GenericRecord (org.apache.avro.generic.GenericRecord)14 Field (org.apache.avro.Schema.Field)11 List (java.util.List)10 GenericData (org.apache.avro.generic.GenericData)10 TestRunner (org.apache.nifi.util.TestRunner)8 GenericRecordBuilder (org.apache.avro.generic.GenericRecordBuilder)7 JsonObject (com.google.gson.JsonObject)6 DataFileStream (org.apache.avro.file.DataFileStream)6 DataFileWriter (org.apache.avro.file.DataFileWriter)6 GenericDatumReader (org.apache.avro.generic.GenericDatumReader)6 Utf8 (org.apache.avro.util.Utf8)6 TMarketoOutputProperties (org.talend.components.marketo.tmarketooutput.TMarketoOutputProperties)6 ActivityRecord (com.marketo.mktows.ActivityRecord)5 ArrayOfLeadRecord (com.marketo.mktows.ArrayOfLeadRecord)5 LeadChangeRecord (com.marketo.mktows.LeadChangeRecord)5