@Test public void testExecute_InvalidType() throws Exception { byte[] binaryData=(byte[])PBinary.INSTANCE.getSampleValue(); String encodedBinaryData = Bytes.toString(Base64.getEncoder().encode(binaryData)); R recordWithInvalidType = createRecord(123L, "NameValue", "ThisIsNotANumber", Arrays.asList(1, 2, 3), true, encodedBinaryData, Timestamp.valueOf(TIMESTAMP_WITH_NANOS)); getUpsertExecutor().execute(recordWithInvalidType); verify(upsertListener).errorOnRecord(eq(recordWithInvalidType), any(Throwable.class)); verifyNoMoreInteractions(upsertListener); }
@Test public void testExecute() throws Exception { byte[] binaryData=(byte[])PBinary.INSTANCE.getSampleValue(); String encodedBinaryData = Bytes.toString(Base64.getEncoder().encode(binaryData)); getUpsertExecutor().execute( createRecord(123L, "NameValue", 42, Arrays.asList(1, 2, 3), true, encodedBinaryData, Timestamp.valueOf(TIMESTAMP_WITH_NANOS))); verify(upsertListener).upsertDone(1L); verifyNoMoreInteractions(upsertListener); verify(preparedStatement).setObject(1, Long.valueOf(123L)); verify(preparedStatement).setObject(2, "NameValue"); verify(preparedStatement).setObject(3, Integer.valueOf(42)); verify(preparedStatement).setObject(4, PArrayDataType.instantiatePhoenixArray(PInteger.INSTANCE, new Object[]{1,2,3})); verify(preparedStatement).setObject(5, Boolean.TRUE); verify(preparedStatement).setObject(6, binaryData); verify(preparedStatement).setObject(7, DateUtil.parseTimestamp(TIMESTAMP_WITH_NANOS)); verify(preparedStatement).execute(); verifyNoMoreInteractions(preparedStatement); }
@Test public void testExecute_TooManyFields() throws Exception { byte[] binaryData=(byte[])PBinary.INSTANCE.getSampleValue(); String encodedBinaryData = Bytes.toString(Base64.getEncoder().encode(binaryData)); R recordWithTooManyFields = createRecord(123L, "NameValue", 42, Arrays.asList(1, 2, 3), true, encodedBinaryData, Timestamp.valueOf(TIMESTAMP_WITH_NANOS), "garbage"); getUpsertExecutor().execute(recordWithTooManyFields); verify(upsertListener).upsertDone(1L); verifyNoMoreInteractions(upsertListener); verify(preparedStatement).setObject(1, Long.valueOf(123L)); verify(preparedStatement).setObject(2, "NameValue"); verify(preparedStatement).setObject(3, Integer.valueOf(42)); verify(preparedStatement).setObject(4, PArrayDataType.instantiatePhoenixArray(PInteger.INSTANCE, new Object[]{1,2,3})); verify(preparedStatement).setObject(5, Boolean.TRUE); verify(preparedStatement).setObject(6, binaryData); verify(preparedStatement).setObject(7, DateUtil.parseTimestamp(TIMESTAMP_WITH_NANOS)); verify(preparedStatement).execute(); verifyNoMoreInteractions(preparedStatement); }
@Test public void testExecute_InvalidBoolean() throws Exception { byte[] binaryData=(byte[])PBinary.INSTANCE.getSampleValue(); String encodedBinaryData = Bytes.toString(Base64.getEncoder().encode(binaryData)); R csvRecordWithInvalidType = createRecord("123,NameValue,42,1:2:3,NotABoolean," + encodedBinaryData + "," + TIMESTAMP_WITH_NANOS); getUpsertExecutor().execute(csvRecordWithInvalidType); verify(upsertListener).errorOnRecord(eq(csvRecordWithInvalidType), any(Throwable.class)); }
@Test public void testExecute_NullField() throws Exception { byte[] binaryData=(byte[])PBinary.INSTANCE.getSampleValue(); String encodedBinaryData = Bytes.toString(Base64.getEncoder().encode(binaryData)); getUpsertExecutor().execute( createRecord(123L, "NameValue", null, Arrays.asList(1, 2, 3), false, encodedBinaryData, Timestamp.valueOf(TIMESTAMP_WITH_NANOS))); verify(upsertListener).upsertDone(1L); verifyNoMoreInteractions(upsertListener); verify(preparedStatement).setObject(1, Long.valueOf(123L)); verify(preparedStatement).setObject(2, "NameValue"); verify(preparedStatement).setNull(3, columnInfoList.get(2).getSqlType()); verify(preparedStatement).setObject(4, PArrayDataType.instantiatePhoenixArray(PInteger.INSTANCE, new Object[]{1,2,3})); verify(preparedStatement).setObject(5, Boolean.FALSE); verify(preparedStatement).setObject(6, binaryData); verify(preparedStatement).setObject(7, DateUtil.parseTimestamp(TIMESTAMP_WITH_NANOS)); verify(preparedStatement).execute(); verifyNoMoreInteractions(preparedStatement); }