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
