Uploaded image for project: 'Daffodil'
  1. Daffodil
  2. DAFFODIL-2664

PNG DFDL Schema fails regression testing on 3.3.0-SNAPSHOT

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • 3.3.0
    • 3.3.0
    • DFDL Schemas, QA
    • None

    Description

      Just noticed that PNG fails its tests now on 3.3.0-SNAPSHOT as of git hash 62d7bbe69847d85c780f40855c5cfef29a5a7c23

       

      First, it gets a million SDWs, so needs changes to suppress them, or have the things causing all these warnings fixed. 

      One example SDW is this, but there are tons of others also:

      [error] SchemaDefinitionWarning: Schema Definition Warning: Counterintuitive placement detected. Wrap the discriminator or assert in an empty sequence to evaluate before the contents.

      The real backtrace is a Runtime SDE at unparse time:

      [error] SuspensionDeadlockException: Runtime Schema Definition Error: Expressions/Unparsers are circularly deadlocked (mutually defined):
      [error]  - SuspendableExpression(Length, expr={          if (fn:exists(../IHDR)) then dfdl:valueLength(../IHDR, 'bytes')     else if (fn:exists(../PLTE)) then fn:count(../PLTE/Entry) * 3     else if (fn:exists(../IDAT)) then dfdl:valueLength(../IDAT/Data, 'bytes')     else if (fn:exists(../IEND)) then dfdl:valueLength(../IEND, 'bytes')     else if (fn:exists(../cHRM)) then 32     else if (fn:exists(../gAMA)) then dfdl:valueLength(../gAMA/Image_Gamma, 'bytes')     else if (fn:exists(../iCCP)) then dfdl:valueLength(../iCCP/Profile_Name, 'bytes') + dfdl:valueLength(../iCCP/Compressed_Profile, 'bytes') + 2     else if (fn:exists(../sBIT)) then (      if (fn:exists(../sBIT/Color_Type/Color_Type_0)) then 1      else if (fn:exists(../sBIT/Color_Type/Color_Types_2_and_3)) then 3      else if (fn:exists(../sBIT/Color_Type/Color_Type_4)) then 4      else if (fn:exists(../sBIT/Color_Type/Color_Type_6)) then 4      else fn:error('png', 'fn:error called.', .)     )     else if (fn:exists(../sRGB)) then 1     else if (fn:exists(../tEXt)) then dfdl:valueLength(../tEXt/Keyword, 'bytes') + dfdl:valueLength(../tEXt/Text, 'bytes') + 1     else if (fn:exists(../zTXt)) then dfdl:valueLength(../zTXt/Keyword, 'bytes') + dfdl:valueLength(../zTXt/Compressed_Text_Datastream, 'bytes') + 2     else if (fn:exists(../iTXt)) then dfdl:valueLength(../iTXt/Keyword, 'bytes') + dfdl:valueLength(../iTXt/Language_Tag, 'bytes') + dfdl:valueLength(../iTXt/Translated_Keyword, 'bytes') + dfdl:valueLength(../iTXt/Text, 'bytes') + 5     else if (fn:exists(../bKGD)) then (      if (fn:exists(../bKGD/Color_Types_0_and_4)) then 2      else if (fn:exists(../bKGD/Color_Types_2_and_6)) then 6      else if (fn:exists(../bKGD/Color_Type_3)) then 1      else fn:error('png', 'fn:error called.', .)     )     else if (fn:exists(../hIST)) then fn:count(../hIST/Frequency) * 2     else if (fn:exists(../tRNS)) then (      if (fn:exists(../tRNS/Grey)) then 2      else if (fn:exists(../tRNS/Red)) then 6      else if (fn:exists(../tRNS/Alpha)) then fn:count(../tRNS/Alpha)      else fn:error('png', 'fn:error called.', .)     )     else if (fn:exists(../pHYs)) then 9     else if (fn:exists(../sPLT)) then (      if (../sPLT/Sample_Depth eq 8)      then (fn:count(../sPLT/Palette_Entries/Eight_bit_Sample_Depth) * 6) + dfdl:valueLength(../sPLT/Palette_Name, 'bytes') + 2      else (fn:count(../sPLT/Palette_Entries/Sixteen_bit_Sample_Depth) * 10) + dfdl:valueLength(../sPLT/Palette_Name, 'bytes') + 2     )     else if (fn:exists(../tIME)) then 7     else fn:error('png', 'fn:error called.', .)     })
      [error]  - target length for element reference {}IEND expr <EvaluatableExpression eName='Chunk/element reference {}IEND' expr='{ ../Length }' />
      [error]  - AlignmentFillUnparserSuspendableOperation for sequence[1]
      [error] Schema context: Length Location line 53 column 14 in file:/home/mbeckerle/Documents/dataiti/git/dfdl-regression-test/dfdl-png/target/classes/com/mitre/png/xsd/png.dfdl.xsd
      [error] Data location was preceding byte 212, took 0.262 sec
      [error]     at org.apache.daffodil.tdml.TDMLException$.apply(TDMLException.scala:33)
      [error]     at org.apache.daffodil.tdml.ParserTestCase.doOnePassRoundTripUnparseExpectSuccess(TDMLRunner.scala:1146)
      [error]     at org.apache.daffodil.tdml.ParserTestCase.runParseExpectSuccess(TDMLRunner.scala:1281)
       
      

       

       

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            mbeckerle Mike Beckerle
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: