Skip to content

Commit 9a55359

Browse files
committed
Limit size of generators to avoid OOM
Exception in thread "XMLEventReader" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3332) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:137) at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:121) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:622) at java.lang.StringBuilder.append(StringBuilder.java:202) at scala.collection.mutable.StringBuilder.append(StringBuilder.scala:267) at scala.xml.parsing.MarkupParserCommon.xTakeUntil(MarkupParserCommon.scala:253) at scala.xml.parsing.MarkupParser.xCharData(MarkupParser.scala:379) at scala.xml.parsing.MarkupParser.content1(MarkupParser.scala:424) at scala.xml.parsing.MarkupParser.content(MarkupParser.scala:459) at scala.xml.parsing.MarkupParser.element1(MarkupParser.scala:588) at scala.xml.parsing.MarkupParser.content1(MarkupParser.scala:433) at scala.xml.parsing.MarkupParser.document(MarkupParser.scala:247) at scala.xml.pull.XMLEventReader$Parser.$anonfun$run$1(XMLEventReader.scala:96) at scala.xml.pull.XMLEventReader$Parser$$Lambda$2957/1828367442.apply(Unknown Source) at scala.xml.pull.ProducerConsumerIterator.interruptibly(XMLEventReader.scala:125) at scala.xml.pull.XMLEventReader$Parser.run(XMLEventReader.scala:96) at java.lang.Thread.run(Thread.java:745)
1 parent 141269b commit 9a55359

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

Diff for: src/test/scala/scala/xml/DocumentGen.scala

+4-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ trait DocumentGen extends NodeGen
1111
prolog <- genProlog
1212
dtd_ <- Arbitrary.arbitrary[dtd.DTD]
1313
elements <- Arbitrary.arbitrary[Elem]
14-
misc <- Gen.listOf(genMisc)
14+
n <- Gen.choose(0, 4)
15+
misc <- Gen.listOfN(n, genMisc)
1516
} yield {
1617
new Document {
1718
children = prolog
@@ -42,7 +43,8 @@ trait DocumentGen extends NodeGen
4243
// it needed as arguments rather than from class fields.
4344
def genProlog: Gen[NodeSeq] = for {
4445
// xmlDecl <- genXmlDecl
45-
misc <- Gen.listOf(genMisc)
46+
n <- Gen.choose(0, 4)
47+
misc <- Gen.listOfN(n, genMisc)
4648
// docType <- Arbitrary.arbitrary[dtd.DocType]
4749
// misc2 <- Gen.listOf(genMisc)
4850
// prolog2 <- Gen.const(Text(docType.toString) :: misc2)

Diff for: src/test/scala/scala/xml/dtd/DTDGen.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ trait DTDGen extends DeclGen
1414
)
1515
n <- Gen.choose(0, scala.math.sqrt(sz / 2).toInt)
1616
intSubset <- Gen.listOfN(n, Arbitrary.arbitrary[dtd.Decl])
17-
notationDecls <- Arbitrary.arbitrary[Seq[NotationDecl]]
17+
notationDecls <- Gen.listOfN(n, Arbitrary.arbitrary[NotationDecl])
1818
} yield {
1919
new DTD {
2020
externalID = extID

0 commit comments

Comments
 (0)