[
https://issues.apache.org/jira/browse/DAFFODIL-2007?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Beckerle reassigned DAFFODIL-2007:
------------------------------------------
Assignee: Steve Lawrence
> 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
> Assignee: Steve Lawrence
> Priority: Major
>
> 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)