Uploaded image for project: 'Apache NiFi'
  1. Apache NiFi
  2. NIFI-10862

Tests in TestXMLReader use non-deterministic HashMap

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Trivial
    • Resolution: Fixed
    • None
    • 1.19.0
    • Extensions
    • None
    • Apache Maven 3.6.0;
      openjdk version "1.8.0_342";
      OpenJDK Runtime Environment (build 1.8.0_342-8u342-b07-0ubuntu1~20.04-b07);
      OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode);

    Description

      1. org.apache.nifi.xml.TestXMLReader.testAttributePrefix
      2. org.apache.nifi.xml.TestXMLReader.testInferSchemaContentFieldNameNotSetSubElementExists
      3. org.apache.nifi.xml.TestXMLReader.testInferSchema
      4. org.apache.nifi.xml.TestXMLReader.testInferSchemaContentFieldNameSetSubElementExistsNoNameClash
      5. org.apache.nifi.xml.TestXMLReader.testInferSchemaIgnoreAttributes
      6. org.apache.nifi.xml.TestXMLReader.testInferSchemaContentFieldNameNotSet
      7. org.apache.nifi.xml.TestXMLReader.testContentField
      8. org.apache.nifi.xml.TestXMLReader.testInferSchemaContentFieldNameSetSubElementExistsNameClash

      This is a flaky test, it can pass mvn test while but when run using the tool NonDex, it fails. NonDex is a tool that will introduce non-determinism in certain java collections.

      The test shows below:

      1. org.apache.nifi.xml.TestXMLReader.testAttributePrefix
      [ERROR]   TestXMLReader.testAttributePrefix:150 expected: <MapRecord[{COUNTRY=USA, ATTR_ID=P1, NAME=Cleve Butler, AGE=42}]> but was: <MapRecord[{AGE=42, ATTR_ID=P1, NAME=Cleve Butler, COUNTRY=USA}]>
      
      2. org.apache.nifi.xml.TestXMLReader.testInferSchemaContentFieldNameNotSetSubElementExists
      [ERROR]   TestXMLReader.testInferSchemaContentFieldNameNotSetSubElementExists:239 expected: <MapRecord[{field_with_attribute=MapRecord[{attr=attr_content, value=123}]}]> but was: <MapRecord[{field_with_attribute=MapRecord[{value=123, attr=attr_content}]}]>
      
      3. org.apache.nifi.xml.TestXMLReader.testInferSchema
      [ERROR]   TestXMLReader.testInferSchema:201 expected: <MapRecord[{software=MapRecord[{content_field=Apache NiFi, favorite=true}], num=123, name=John Doe}]> but was: <MapRecord[{name=John Doe, num=123, software=MapRecord[{content_field=Apache NiFi, favorite=true}]}]>
      
      4. org.apache.nifi.xml.TestXMLReader.testInferSchemaContentFieldNameSetSubElementExistsNoNameClash
      [ERROR]   TestXMLReader.testInferSchemaContentFieldNameSetSubElementExistsNoNameClash:280 expected: <MapRecord[{field_with_attribute=MapRecord[{content_field=content of field, attr=attr_content, value=123}]}]> but was: <MapRecord[{field_with_attribute=MapRecord[{attr=attr_content, value=123, content_field=content of field}]}]>
      
      5. org.apache.nifi.xml.TestXMLReader.testInferSchemaIgnoreAttributes
      [ERROR]   TestXMLReader.testInferSchemaIgnoreAttributes:299 expected: <MapRecord[{software=Apache NiFi, num=123, name=John Doe}]> but was: <MapRecord[{name=John Doe, software=Apache NiFi, num=123}]>
      
      6. org.apache.nifi.xml.TestXMLReader.testInferSchemaContentFieldNameNotSet
      [ERROR]   TestXMLReader.testInferSchemaContentFieldNameNotSet:220 expected: <MapRecord[{software=MapRecord[{favorite=true}], num=123, name=John Doe}]> but was: <MapRecord[{name=John Doe, num=123, software=MapRecord[{favorite=true}]}]>
      
      7. org.apache.nifi.xml.TestXMLReader.testContentField
      [ERROR]   TestXMLReader.testContentField:177 expected: <MapRecord[{ID=P1, NAME=MapRecord[{CONTENT=Cleve Butler, ATTR=attr content, INNER=inner content}], AGE=42}]> but was: <MapRecord[{NAME=MapRecord[{CONTENT=Cleve Butler, ATTR=attr content, INNER=inner content}], ID=P1, AGE=42}]>
      
      8. org.apache.nifi.xml.TestXMLReader.testInferSchemaContentFieldNameSetSubElementExistsNameClash
      [ERROR]   TestXMLReader.testInferSchemaContentFieldNameSetSubElementExistsNameClash:259 expected: <MapRecord[{field_with_attribute=MapRecord[{attr=attr_content, value=content of field}]}]> but was: <MapRecord[{field_with_attribute=MapRecord[{value=content of field, attr=attr_content}]}]>

      Steps to reproduce the failure:

      1. Run the following command in nifi:
      2. First, build the module:
      mvn install -pl nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services -DskipTests -Drat.skip -am
      1. Then run the test using NonDex
      1. org.apache.nifi.xml.TestXMLReader.testAttributePrefix
      mvn -pl nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services edu.illinois:nondex-maven-plugin:1.1.2:nondex -Dtest=org.apache.nifi.xml.TestXMLReader#testAttributePrefix
      
      2. org.apache.nifi.xml.TestXMLReader.testInferSchemaContentFieldNameNotSetSubElementExists
      mvn -pl nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services edu.illinois:nondex-maven-plugin:1.1.2:nondex -Dtest=org.apache.nifi.xml.TestXMLReader#testInferSchemaContentFieldNameNotSetSubElementExists
      
      3. org.apache.nifi.xml.TestXMLReader.testInferSchema
      mvn -pl nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services edu.illinois:nondex-maven-plugin:1.1.2:nondex -Dtest=org.apache.nifi.xml.TestXMLReader#testInferSchema
      
      4. org.apache.nifi.xml.TestXMLReader.testInferSchemaContentFieldNameSetSubElementExistsNoNameClash
      mvn -pl nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services edu.illinois:nondex-maven-plugin:1.1.2:nondex -Dtest=org.apache.nifi.xml.TestXMLReader#testInferSchemaContentFieldNameSetSubElementExistsNoNameClash
      
      5. org.apache.nifi.xml.TestXMLReader.testInferSchemaIgnoreAttributes
      mvn -pl nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services edu.illinois:nondex-maven-plugin:1.1.2:nondex -Dtest=org.apache.nifi.xml.TestXMLReader#testInferSchemaIgnoreAttributes
      
      6. org.apache.nifi.xml.TestXMLReader.testInferSchemaContentFieldNameNotSet
      mvn -pl nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services edu.illinois:nondex-maven-plugin:1.1.2:nondex -Dtest=org.apache.nifi.xml.TestXMLReader#testInferSchemaContentFieldNameNotSet
      
      7. org.apache.nifi.xml.TestXMLReader.testContentField
      mvn -pl nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services edu.illinois:nondex-maven-plugin:1.1.2:nondex -Dtest=org.apache.nifi.xml.TestXMLReader#testContentField
      
      8. org.apache.nifi.xml.TestXMLReader.testInferSchemaContentFieldNameSetSubElementExistsNameClash
      mvn -pl nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services edu.illinois:nondex-maven-plugin:1.1.2:nondex -Dtest=org.apache.nifi.xml.TestXMLReader#testInferSchemaContentFieldNameSetSubElementExistsNameClash

       

      The result will be saved under the module folder in .nondex

      Attachments

        1. org.apache.nifi.xml.TestXMLReader.txt
          66 kB
          Sopan Phaltankar

        Issue Links

          Activity

            People

              sopan98 Sopan Phaltankar
              sopan98 Sopan Phaltankar
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m