Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stack overflow error when asserJ aspects was enabled #305

Closed
1 of 3 tasks
admizh opened this issue Aug 31, 2017 · 3 comments · Fixed by #322
Closed
1 of 3 tasks

Stack overflow error when asserJ aspects was enabled #305

admizh opened this issue Aug 31, 2017 · 3 comments · Fixed by #322
Labels
theme:assertj AssertJ related issue type:bug Something isn't working work:backlog No work on this issue at the moment

Comments

@admizh
Copy link

admizh commented Aug 31, 2017

I'm submitting a ...

  • bug report
  • feature request
  • support request

What is the current behavior?

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space, when generate report via gradle allure plugin.

allprojects {
    allure {
        version = "2.3.4"
    }
}

task generateReport(type: AllureReport) {
    setGroup("reports")
    reportDir = file(allureReportsDir)
    resultsDirs = [file(allureResultsDir)]
}

Trace:

16:10:38 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
16:10:38 	at java.util.Arrays.copyOfRange(Arrays.java:3664)
16:10:38 	at java.lang.String.<init>(String.java:207)
16:10:38 	at com.fasterxml.jackson.core.util.TextBuffer.contentsAsString(TextBuffer.java:344)
16:10:38 	at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._finishAndReturnString(UTF8StreamJsonParser.java:2470)
16:10:38 	at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.getText(UTF8StreamJsonParser.java:315)
16:10:38 	at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:31)
16:10:38 	at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:11)
16:10:38 	at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:499)
16:10:38 	at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:108)
16:10:38 	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276)
16:10:38 	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
16:10:38 	at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:499)
16:10:38 	at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:108)
16:10:38 	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276)
16:10:38 	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
16:10:38 	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:287)
16:10:38 	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:259)
16:10:38 	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:26)
16:10:38 	at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:499)
16:10:38 	at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:108)
16:10:38 	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276)
16:10:38 	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
16:10:38 	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:287)
16:10:38 	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:259)
16:10:38 	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:26)
16:10:38 	at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:499)
16:10:38 	at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:108)
16:10:38 	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276)
16:10:38 	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
16:10:38 	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:287)
16:10:38 	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:259)
16:10:38 	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:26)

.... 

16:10:45 Exception in thread "main" java.lang.StackOverflowError
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.lambda$convert$7(Allure2Plugin.java:178)
16:10:45 	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)
16:10:45 	at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
16:10:45 	at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
16:10:45 	at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
16:10:45 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
16:10:45 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
16:10:45 	at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
16:10:45 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
16:10:45 	at java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:469)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.convert(Allure2Plugin.java:179)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.convert(Allure2Plugin.java:165)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.lambda$convert$6(Allure2Plugin.java:170)
16:10:45 	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
16:10:45 	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
16:10:45 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
16:10:45 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
16:10:45 	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
16:10:45 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
16:10:45 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.convert(Allure2Plugin.java:103)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.convert(Allure2Plugin.java:170)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.lambda$convert$6(Allure2Plugin.java:170)
16:10:45 	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
16:10:45 	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
16:10:45 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
16:10:45 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
16:10:45 	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
16:10:45 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
16:10:45 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.convert(Allure2Plugin.java:103)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.convert(Allure2Plugin.java:170)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.lambda$convert$6(Allure2Plugin.java:170)
16:10:45 	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
16:10:45 	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
16:10:45 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
16:10:45 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
16:10:45 	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
16:10:45 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
16:10:45 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.convert(Allure2Plugin.java:103)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.convert(Allure2Plugin.java:170)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.lambda$convert$6(Allure2Plugin.java:170)
16:10:45 	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
16:10:45 	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
16:10:45 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
16:10:45 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
16:10:45 	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
16:10:45 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
16:10:45 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.convert(Allure2Plugin.java:103)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.convert(Allure2Plugin.java:170)
16:10:45 	at io.qameta.allure.allure2.Allure2Plugin.lambda$convert$6(Allure2Plugin.java:170)
16:10:45 ERROR: Build step failed with exception
16:10:45 ru.yandex.qatools.allure.jenkins.exception.AllurePluginException: Can not generate Allure Report, exit code: 1
16:10:45 	at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.generateReport(AllureReportPublisher.java:265)
16:10:45 	at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.perform(AllureReportPublisher.java:186)
16:10:45 	at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:81)
16:10:45 	at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
16:10:45 	at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:736)
16:10:45 	at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:682)
16:10:45 	at hudson.model.Build$BuildExecution.post2(Build.java:186)
16:10:45 	at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:627)
16:10:45 	at hudson.model.Run.execute(Run.java:1764)
16:10:45 	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
16:10:45 	at hudson.model.ResourceController.execute(ResourceController.java:97)
16:10:45 	at hudson.model.Executor.run(Executor.java:419)

16:10:38 > Process 'command 'C:\***\***\.***\workspace\***\.allure\allure-2.3.4\bin\allure.bat'' finished with non-zero exit value 1
Allure version 2.3.4
Test framework [email protected]
Allure adaptor [email protected]
Gradle version 4.1
Generate report using [email protected]
@admizh
Copy link
Author

admizh commented Aug 31, 2017

I found root cause of this, its happens after turning on aspects for assertJ. Seems like no any filtering of pointcuts for abstract-soft assertions. try this code:

@Test()
public void checkSoftAssertions() {
    HashMap<String, String> countriesWithCode = new HashMap<String, String>(){{
        put("RU", "Russia");
    }};
    SoftAssertions softly = new SoftAssertions();
    countriesWithCode.forEach((code, name) -> softly.assertThat(name)
            .as("Country: %s - %s, should be removed from UI", code, name)
            .containsIgnoringCase("Russia"));
    softly.assertAll();
}

@admizh admizh changed the title OutOfMemoryError when generate report via allure gradle plugin Stack overflow error when asserJ aspects was enabled Sep 11, 2017
@baev baev transferred this issue from allure-framework/allure2 Jan 14, 2019
@baev
Copy link
Member

baev commented Feb 12, 2019

@admizh the code you provided works fine for me. The following steps are generated:

"steps": [
    {
      "name": "assertj$setup 'org.assertj.core.api.ProxifyMethodChangingTheObjectUnderTest@42e44f7a org.assertj.core.api.ErrorCollector@434e667b'",
      "status": "passed",
      "statusDetails": null,
      "stage": "finished",
      "description": null,
      "descriptionHtml": null,
      "steps": [],
      "attachments": [],
      "parameters": [],
      "start": 1549984869731,
      "stop": 1549984869734
    },
    {
      "name": "as 'Country: %s - %s, should be removed from UI RU Russia'",
      "status": "passed",
      "statusDetails": null,
      "stage": "finished",
      "description": null,
      "descriptionHtml": null,
      "steps": [
        {
          "name": "describedAs 'Country: %s - %s, should be removed from UI RU Russia'",
          "status": "passed",
          "statusDetails": null,
          "stage": "finished",
          "description": null,
          "descriptionHtml": null,
          "steps": [],
          "attachments": [],
          "parameters": [],
          "start": 1549984869734,
          "stop": 1549984869734
        }
      ],
      "attachments": [],
      "parameters": [],
      "start": 1549984869734,
      "stop": 1549984869735
    },
    {
      "name": "containsIgnoringCase 'Russia'",
      "status": "passed",
      "statusDetails": null,
      "stage": "finished",
      "description": null,
      "descriptionHtml": null,
      "steps": [
        {
          "name": "containsIgnoringCase$accessor$21B3glwH 'Russia'",
          "status": "passed",
          "statusDetails": null,
          "stage": "finished",
          "description": null,
          "descriptionHtml": null,
          "steps": [
            {
              "name": "containsIgnoringCase 'Russia'",
              "status": "passed",
              "statusDetails": null,
              "stage": "finished",
              "description": null,
              "descriptionHtml": null,
              "steps": [],
              "attachments": [],
              "parameters": [],
              "start": 1549984869735,
              "stop": 1549984869735
            }
          ],
          "attachments": [],
          "parameters": [],
          "start": 1549984869735,
          "stop": 1549984869735
        }
      ],
      "attachments": [],
      "parameters": [],
      "start": 1549984869735,
      "stop": 1549984869739
    }
  ]

@baev baev added type:bug Something isn't working work:backlog No work on this issue at the moment theme:assertj AssertJ related issue labels Feb 12, 2019
@baev
Copy link
Member

baev commented Feb 12, 2019

I added tests for this case and everything works as expected. Feel free to reopen issue if problem still occurs, but make sure you provided a sample project (as repository on Github) that reproduces the problem

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
theme:assertj AssertJ related issue type:bug Something isn't working work:backlog No work on this issue at the moment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants