[
https://issues.apache.org/jira/browse/NIFI-4776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16326265#comment-16326265
]
Marco Gaido commented on NIFI-4776:
-----------------------------------
Hi [~nologic]! I can't find any processor which uses `asLong()` for a data
size. Might you please state exactly where this happens? Thanks.
> Test suite behavioral differences
> ---------------------------------
>
> Key: NIFI-4776
> URL: https://issues.apache.org/jira/browse/NIFI-4776
> Project: Apache NiFi
> Issue Type: Bug
> Reporter: Mikhail Sosonkin
> Priority: Major
>
> I think there might a difference in behavior for how processor attributes are
> evaluated in the test suite vs real execution. I'm not entirely sure if it is
> an expected/acceptable behavior. It has to do with the DATA_SIZE_VALIDATOR.
> Mine was defined as follows:
>
> public static final PropertyDescriptor MAX_ROW_SIZE = new
> PropertyDescriptor
> .Builder().name(BigQueryAttributes.MAX_ROW_SIZE_ATTR)
> .displayName("Max row size")
> .description(BigQueryAttributes.MAX_ROW_SIZE_DESC)
> .required(true)
> .defaultValue("1 MB")
> .addValidator(StandardValidators.DATA_SIZE_VALIDATOR)
> .build();
>
> Then I would use it like this in the onTrigger method:
>
> final long max_row_size = context.getProperty(MAX_ROW_SIZE).asLong();
>
> I used it this way based on the examples I've seen in the other processors.
> In the runtime it seems to be working great and gives me the byte values.
> However, in testing it would throw an exception because it would try to parse
> "1 MB" (the default value) as an actual Long. Of course, if I just place a
> long value (like 1024) it would not pass the validation function. So, I did a
> more explicit "cast" using the asDataSize method:
>
> final long max_row_size =
> context.getProperty(MAX_ROW_SIZE).asDataSize(DataUnit.B).longValue();
>
> This solved my problems and makes the code a bit more explicit which is nice.
> The annoying part is that the StandardProcessorTestRunner does not keep the
> stacktrace from the exceptions generated in onTrigger of the processor
> (StandardProcessorTestRunner:199)
>
> final Throwable thrown = future.get();
>
> That is what caused confusion for me. I hadn't realized that the exception
> was being thrown via my code. So, if anything the test suite needs to do a
> better job at delivering stack traces for the exceptions to help with
> debugging. Depending on what you decide, there might be two tasks here.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)