Michael Beckerle created DAFFODIL-2007:
------------------------------------------

             Summary: VMF fails to run tests on MS-Windows
                 Key: DAFFODIL-2007
                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2007
             Project: Daffodil
          Issue Type: Bug
          Components: Windows
    Affects Versions: 2.2.0
            Reporter: Michael Beckerle



Users trying to test VMF on windows report that 'sbt test' works fine on 
mil-std-2045, but fails for VMF.

Some debugging shows that when the DaffodilConstructingLoader creates a 
scala.io.Source from the URI, the resulting source faults on the first hasNext 
call.

I added some instrumentation to DaffodilConstructingLoader.scala:

{{class DaffodilConstructingLoader(uri: URI, errorHandler: 
org.xml.sax.ErrorHandler)
  extends ConstructingParser({
    //
    // Note: we must open the XML carefully since it might be in some non
    // default encoding (we have tests that have UTF-16 for example)
    //
    val is = uri.toURL.openStream()

    System.err.println("URI to open: " + uri)

    val rdr = new XmlStreamReader(is) // apache has a good thing for 
determining XML charset
    val csName = rdr.getEncoding

    System.err.println("Charset is: " + csName)

    import collection.JavaConverters._
    val lines = IOUtils.readLines(rdr).asScala
    System.err.println("First line is " + 
lines.headOption.getOrElse("Nothing."))

    rdr.close()
    val source = Source.fromURL(uri.toURL, csName) // tbd: can one create a 
Source somehow directly from the rdr?

    val hn = source.hasNext
    System.err.println("First hasNext call succeeded with result: " + hn)

    source
  }, true) {}}

The resulting print out for running the single test 
TestVMFFullMessages.test_K00_1 is below. It never gets to the last println in 
the above code. It fails on the hasNext call on the Source. Prior print 
statements show the file can be opened and accessed, so it's something to do 
with the scala.io.Source, and creating one from a URL that is the problem it 
seems.

Here's the error:

{{URI to open: 
file:/E:/dataiti/git/fouo-schemas/vmf/schema/target/classes/com/tresys/mil-std-6017/xsd/vmf.main.gen.dfdl.xsd
Charset is: UTF-8
First line is <?xml version='1.0' encoding='UTF-8'?>
[error] Test com.tresys.vmf.TestVMFFullMessages.test_K00_1 failed: 
java.nio.charset.MalformedInputException: Input length = 1, took 4.901 sec
[error]     at java.nio.charset.CoderResult.throwException(CoderResult.java:281)
[error]     at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)
[error]     at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
[error]     at java.io.InputStreamReader.read(InputStreamReader.java:184)
[error]     at java.io.BufferedReader.fill(BufferedReader.java:161)
[error]     at java.io.BufferedReader.read(BufferedReader.java:182)
[error]     at scala.io.BufferedSource.$anonfun$iter$2(BufferedSource.scala:38)
[error]     at scala.io.Codec.wrap(Codec.scala:69)
[error]     at scala.io.BufferedSource.$anonfun$iter$1(BufferedSource.scala:38)
[error]     at 
scala.runtime.java8.JFunction0$mcI$sp.apply(JFunction0$mcI$sp.java:12)
[error]     at scala.collection.Iterator$$anon$9.next(Iterator.scala:170)
[error]     at scala.collection.Iterator$$anon$15.hasNext(Iterator.scala:652)
[error]     at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:456)
[error]     at scala.io.Source.hasNext(Source.scala:246)
[error]     at scala.xml.parsing.MarkupParser.ch(MarkupParser.scala:103)
[error]     at scala.xml.parsing.MarkupParser.ch$(MarkupParser.scala:101)
[error]     at 
scala.xml.parsing.ConstructingParser.ch(ConstructingParser.scala:48)
[error]     at scala.xml.parsing.MarkupParser.eof(MarkupParser.scala:129)
[error]     at scala.xml.parsing.MarkupParser.eof$(MarkupParser.scala:129)
[error]     at 
scala.xml.parsing.ConstructingParser.eof(ConstructingParser.scala:48)
[error]     at scala.xml.parsing.MarkupParser.xComment(MarkupParser.scala:392)
[error]     at scala.xml.parsing.MarkupParser.xComment$(MarkupParser.scala:389)
[error]     at 
scala.xml.parsing.ConstructingParser.xComment(ConstructingParser.scala:48)
[error]     at scala.xml.parsing.MarkupParser.content1(MarkupParser.scala:428)
[error]     at scala.xml.parsing.MarkupParser.content1$(MarkupParser.scala:419)
[error]     at 
scala.xml.parsing.ConstructingParser.content1(ConstructingParser.scala:48)
[error]     at scala.xml.parsing.MarkupParser.content(MarkupParser.scala:459)
[error]     at scala.xml.parsing.MarkupParser.content$(MarkupParser.scala:442)
[error]     at 
scala.xml.parsing.ConstructingParser.content(ConstructingParser.scala:48)
[error]     at scala.xml.parsing.MarkupParser.document(MarkupParser.scala:244)
[error]     at scala.xml.parsing.MarkupParser.document$(MarkupParser.scala:225)
[error]     at 
scala.xml.parsing.ConstructingParser.document(ConstructingParser.scala:48)
[error]     at 
org.apache.daffodil.xml.DaffodilConstructingLoader.load(DaffodilConstructingLoader.scala:178)
[error]     at 
org.apache.daffodil.xml.DaffodilXMLLoader.load(DaffodilXMLLoader.scala:530)}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to