I have pretty much completed updating the regression suite to work with the latest 3.5.0 snapshot. Just a few to go, but they are variants of schemas I have fixed, so I do no expect any additional regressions. Below is a summary of the changes that were needed. Note that many of the schema projecs have not been updated since much older versions of Daffodil, like 2.6.0 and 3.1.0, so some changes were required that are not specific to 3.5.0. Those are listed at towards the end.

* DAFFODIL-1704: A number of schemas broke because we now ensure that binary specified lengths are not larger than the associated types. I think this is considered a DFDL schema bug and is a good regression that schema authors should fix.

* DAFFODIL-2683: Changes to OSGI broke a number of test suits. There are a relatively small number of classes that affect the tests and the needed changes are very simple. The relevant classes are:

org.apache.daffodil.core.compiler.Compiler
org.apache.daffodil.lib.api.URISchemaSource
org.apache.daffodil.lib.api.WithDiagnostics
org.apache.daffodil.lib.exceptions.Abort
org.apache.daffodil.lib.exceptions.Assert
org.apache.daffodil.lib.schema.annotation.props.gen.LayerLengthKind
org.apache.daffodil.lib.schema.annotation.props.gen.LayerLengthUnits
org.apache.daffodil.lib.util.Misc
org.apache.daffodil.lib.xml.XMLUtils
org.apache.daffodil.runtime1.dpath.NodeInfo.PrimType
org.apache.daffodil.runtime1.layers.ByteBufferExplicitLengthLayerTransform
org.apache.daffodil.runtime1.layers.LayerCompileInfo
org.apache.daffodil.runtime1.layers.LayerCompiler
org.apache.daffodil.runtime1.layers.LayerRuntimeInfo
org.apache.daffodil.runtime1.layers.LayerTransformerFactory
org.apache.daffodil.runtime1.processors.ParseOrUnparseState
org.apache.daffodil.runtime1.processors.VariableRuntimeData
org.apache.daffodil.runtime1.processors.parsers.ParseError

Note that no changes are needed for the TDML runner or Java/Scala API classes, which I sort of consider the "public" API which tries harder to maintain backwards compatibility.

Some of these, like the Compiler/Diagnostics/etc should probably just be updated to the the more stable Scala/Java API. Others are related to custom layers, but I consider that an experimental API that is still subject to change. Considering this and the ease of changes (only import lines needed to change), while it did cause regressions, I'm not sure it rises to the level of a 4.0.0 release. If we required actual code changes, or broke the TDMLRunner or Scala/Java API's which are more "public", I think that would be a stronger argument.

* DAFFODIL-2158: We changed behavior of textNumberCheckPolicy="strict" so that the pattern is used to determine if a decimal point must exist or not. For example, if text numbers are integers without a decimal, the pattern should not contain a decimal. I believe this was just a bug in Daffodil, and schema authors should update their schemas to either use a lax policy or use a pattern that correctly matches their data.

* DAFFODIL-2818: A regression related to parsing negative zero was found and fixed. This bug was created and fixed in 3.5.0.

* DAFFODIL-2607: Diagnostics were modified/improved when an enumeration key was not found, which some tests checked for. The tests either need to be less specific or check for the new error message. I don't think we make a guarantee that diagnostics will not change.

====

The following changes were required due to Scala/Java API changes, but those went through a deprecation process and were removed prior to 3.5.0. Because it was prior to 3.5.0, I have not looked into exactly which prior release the changes occurred:

* If validation errors are created by a parse but no validation errors are listed in a TDML test cases, the TDML test fails. I am actually not sure if this is a change to Daffodil behavior or if depedent schema update just included new validation checks that now create errors. This may be a schema regression and not a Daffodil regression.

* Some formats had custom tests that use an old Scala/Java API before the introduction of InputSourceInputDataStream. This must be updated to use the new API.

* The setValidateDFDLSchemas function was removed from the Compiler class, which a few classes used to enable schema validation. Schemas are now always validated and the Java/Scala API does not have a way to disable this.

* The setDistinguishedRootNode function was removed from the Compiler class. Instead the root node should be passed as a parameter to the compileSource/File function, or withDistinguishedRootNode should be used on the ProcessorFactory.

* The ParseResult.isAtEnd function was removed from the ParseResult class. Instead, the InputSourceDataInputStream.hasData function should be used.

* A number of test suites still use the old tdml.DFDLTestSuite instead of the new tdml.Runner.




On 2023-06-06 07:42 PM, Mike Beckerle wrote:
Topic: Should this be version 4.0.0, not 3.5.0?

The OGSI-package-name-changes have broken many schemas because the test
rigs used Daffodil internals, and some deprecated things were finally
removed in the current 3.5.0 snapshot.

But as a result, these schemas, many of which are non-public, but
nevertheless can be counted, a long list, which used to work, don't work
any more.
It's possible there are false-negatives here. Nevertheless it is a long
list.

[fail] (04/62) dfdl-bmp
[fail] (11/62) dfdl-examples-hexwords
[fail] (12/62) dfdl-examples-self-descriptive-data
[fail] (13/62) dfdl-examples-xslt-csv
[fail] (22/62) dfdl-imf-icalendar-cse
[fail] (23/62) dfdl-ipf-demo
[fail] (29/62) dfdl-jpeg2000
[fail] (30/62) dfdl-jreap
[fail] (34/62) dfdl-mil-std-2045
[fail] (38/62) dfdl-nitf
[fail] (42/62) dfdl-plc4x-s7
[fail] (43/62) dfdl-png
[fail] (46/62) dfdl-raster
[fail] (49/62) dfdl-stanag-5516
[fail] (50/62) dfdl-stanag-5516-with-nact
[fail] (53/62) dfdl-usmtf
[fail] (54/62) dfdl-usmtf-generic
[fail] (57/62) dfdl-vmf
[fail] (59/62) dfdl-vmf-spock
[fail] (61/62) ibm-dfdl-crosstester

This suggests to me that user-created schemas have some fairly high
likelihood of being clobbered.

We changed the packages of many things. We can claim these were internal
things, but there are many schemas that depend on Daffodil internal things
now. This needs to get fixed so we can torque the internals more without
breaking things, but right now... things are broken.

Every schema using layers, for example as we never hardened the API for
layers, so as it has evolved, schemas have broken.



On Mon, Jun 5, 2023 at 6:07 PM Mike Beckerle <mbecke...@apache.org> wrote:


All critical and blocker type bugs have been fixed including a couple
quite challenging ones in the last few weeks.

I think it is time to create an RC for 3.5.0.

Please discuss through 6pm EDT.US on Thursday June 8. (72 hours) and if
favorable we'll figure out who gets to create the RC.

-mikeb

Mike Beckerle
Apache Daffodil PMC | daffodil.apache.org
OGF DFDL Workgroup Co-Chair | www.ogf.org/ogf/doku.php/standards/dfdl/dfdl
Owl Cyber Defense | www.owlcyberdefense.com





Reply via email to