Hi All,

I have a question related to combined testing for functional correctness,
scalability and fault tolerance for Apex operators.
Is it possible to test for all these three at the same time? Or should we
treat each in isolation?

I will take an example of testing the Filter operator to make my point.

The usual scenario is to first test for functional correctness using a test
application which is capable of validating the results. For example, for
testing a Filter operator, we can have a random data generator which is
pumping data to the Filter operator. We can use validator operators (
*ValidateOutput* and *ValidateFiltered*) at two ports - *output* and
*filtered* which can validate whether the tuples they are getting are as
expected. Note that this will need us to configure the Validator operators
as per the filter expression same as that of the Filter operator.

This test application may not be able to run at scale as we increase the
Filter operator partitions. The reason is that the validation may be slower
than the processing, since there are lot of FIlter operator partitions. We
can choose to partition the validators as well. They now become part of the
application logic. So now, it is not just validating the operator
correctness and scalability but also for the Validator operator (which is
simple enough, but still there).

If we add fault tolerance as part of this testing, it becomes much more
complicated and the design of the validation application may itself be a
large enough task which needs much more effort than the operator being
tested.

Filter operator was just an example; this may become much more complicated
with more complex operators or input output connectors.

What is the suggested approach for this scenario?

~ Bhupesh

Reply via email to