Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Invalid Decimals which are data defined as decimal but which do not fulfil fulfill the definition of that format, ; and

  2. Binary Zero Decimals which are literal 0x00 (ASCII null) bytes in the memory space, which we are attempting MettleCI attempts to interpret as '0.0' but can be considered valid in their as-supplied form by DataStage if the fix_zero option is specified.

For Unit Testing to operate correctly it needs to be able to read (during Unit Test Interception) and write (during Unit Test Execution) both of these types of decimal values. Unfortunately, the Java Integration Stage can’t successfully is unable to do this for either type of invalid data. MettleCI implements

MettleCI does implement a workaround to avoid the exception reported when reading one of these types of invalid decimal values:

...

. However, DataStage doesn’t provide a way for MettleCI to write Invalid Decimals, or to read or write Binary Zero Decimals. The situation at the time of writing is summarised in the following table.

DataStage limitations on MettleCI support for invalid decimal data

Read

Write

Invalid Decimal

✔️

✖️

Binary Zero

✖️

✖️

Despite this there is still no way for MettleCI to write Invalid Decimals, or to read or write Binary Zero Decimals.

In use, MettleCI captures the invalid decimals during Unit Test Interception but . However, when a Unit Test is executed the MettleCI Unit Test harness Harness attempts to read those Unit Test data containing invalid decimals the Unit Test Harness will display and generates an error message.

The benefits of this approach are:

  1. Invalid Decimals are likely to be rare and possibly unexpected, so capturing them allows users to capture all useful data and then either manually change the Invalid Decimal values or remove them entirely using the Unit Test Data editor.

  2. Unit Testing would still be remains able to produce failed test results a (failure) test result when the expected Job output does not contain Invalid Decimals but the actual output does. This is a lot more useful then more user-friendly than aborting a Unit Test where in which the Job produces unexpected Invalid Decimals

  3. When a user intercepts data and then attempts to run the resulting MettleCI unit test MettleCI , we can present the user with a very clear is presented with an unambiguous message stating its not it isn’t supported. This will hopefully prevent unnecessary support requests

Unfortunately, we’ll still crash out with Binary Zero decimals will still cause aborts but there isn’t anything we MettleCI can do about that (including specific error message) for now.

Solution

Edit the intercepted unit test data to remove the invalid values. You can do this by either replacing individual values with invalid values, or removing the rows containing invalid values entirely.