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

"Cannot send file to ReportPortal java.lang.NullPointerException" on running CucumberWithSerenity.class #52

Closed
nstbushneva opened this issue Nov 15, 2018 · 4 comments
Assignees
Labels
Milestone

Comments

@nstbushneva
Copy link

nstbushneva commented Nov 15, 2018

I have created a dummy test project that contains Serenity and CucumberWithSerenity tests in order to verify their integration with Report Portal.
This project configured with:

  • serenity-reportportal-integration [1.2.2-SNAPSHOT]
  • maven-failsafe-plugin [2.19.1]
  • serenity-core [1.9.45]
  • serenity-cucumber [1.9.8]
    By running Serenity test everything goes fine and I am getting test results in RP.
    However, when I execute CucumberWithSerenity class, it throws an exception

[main] ERROR com.epam.reportportal.service.ReportPortal - Cannot send file to ReportPortal
java.lang.NullPointerException

, even though I am not sending any files.

The full stack trace is:

[main] ERROR com.epam.reportportal.service.ReportPortal - Cannot send file to ReportPortal
java.lang.NullPointerException
        at com.epam.reportportal.service.ReportPortal$3.apply(ReportPortal.java:210)
        at com.epam.reportportal.service.ReportPortal$3.apply(ReportPortal.java:199)
        at com.epam.reportportal.service.LoggingContext$4.apply(LoggingContext.java:163)
        at com.epam.reportportal.service.LoggingContext$4.apply(LoggingContext.java:160)
        at io.reactivex.internal.operators.maybe.MaybeMap$MapMaybeObserver.onSuccess(MaybeMap.java:82)
        at io.reactivex.internal.operators.maybe.MaybeCache.subscribeActual(MaybeCache.java:66)
        at io.reactivex.Maybe.subscribe(Maybe.java:4096)
        at io.reactivex.internal.operators.maybe.MaybeMap.subscribeActual(MaybeMap.java:40)
        at io.reactivex.Maybe.subscribe(Maybe.java:4096)
        at io.reactivex.internal.operators.maybe.MaybeToFlowable.subscribeActual(MaybeToFlowable.java:45)
        at io.reactivex.Flowable.subscribe(Flowable.java:14419)
        at io.reactivex.Flowable.subscribe(Flowable.java:14365)
        at io.reactivex.internal.operators.flowable.FlowableFlatMap$MergeSubscriber.onNext(FlowableFlatMap.java:163)
        at io.reactivex.internal.operators.flowable.FlowableOnBackpressureBuffer$BackpressureBufferSubscriber.drain(FlowableOnBackpressureBuffer.java:187)
        at io.reactivex.internal.operators.flowable.FlowableOnBackpressureBuffer$BackpressureBufferSubscriber.onNext(FlowableOnBackpressureBuffer.java:112)
        at io.reactivex.internal.operators.flowable.FlowableFromObservable$SubscriberObserver.onNext(FlowableFromObservable.java:52)
        at io.reactivex.subjects.PublishSubject$PublishDisposable.onNext(PublishSubject.java:309)
        at io.reactivex.subjects.PublishSubject.onNext(PublishSubject.java:229)
        at com.epam.reportportal.service.LoggingContext.emit(LoggingContext.java:160)
        at com.epam.reportportal.service.ReportPortal.emitLog(ReportPortal.java:147)
        at com.epam.reportportal.service.ReportPortal.emitLog(ReportPortal.java:199)
        at com.github.invictum.reportportal.StepDataExtractorsHolder.lambda$null$0(StepDataExtractorsHolder.java:27)
        at java.util.Collections$SingletonSet.forEach(Collections.java:4767)
        at com.github.invictum.reportportal.StepDataExtractorsHolder.lambda$proceed$1(StepDataExtractorsHolder.java:27)
        at java.lang.Iterable.forEach(Iterable.java:75)
        at com.github.invictum.reportportal.StepDataExtractorsHolder.proceed(StepDataExtractorsHolder.java:25)
        at com.github.invictum.reportportal.handler.FlatHandler.lambda$finishTest$1(FlatHandler.java:92)
        at java.util.ArrayList.forEach(ArrayList.java:1249)
        at com.github.invictum.reportportal.handler.FlatHandler.finishTest(FlatHandler.java:92)
        at com.github.invictum.reportportal.ReportPortalListener.testFinished(ReportPortalListener.java:51)
        at net.thucydides.core.steps.StepEventBus.testFinished(StepEventBus.java:297)
        at cucumber.runtime.formatter.SerenityReporter.handleTestCaseFinished(SerenityReporter.java:268)
        at cucumber.runtime.formatter.SerenityReporter.lambda$new$2(SerenityReporter.java:118)
        at cucumber.runner.EventBus.send(EventBus.java:28)
        at cucumber.api.TestCase.run(TestCase.java:65)
        at cucumber.runner.Runner.runPickle(Runner.java:80)
        at cucumber.runtime.junit.PickleRunners$NoStepDescriptions.run(PickleRunners.java:140)
        at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:68)
        at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:23)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:73)
        at cucumber.api.junit.Cucumber.runChild(Cucumber.java:117)
        at cucumber.api.junit.Cucumber.runChild(Cucumber.java:55)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        at cucumber.api.junit.Cucumber$1.evaluate(Cucumber.java:126)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
[main] ERROR com.epam.reportportal.service.ReportPortal - Cannot send file to ReportPortal
java.lang.NullPointerException
        at com.epam.reportportal.service.ReportPortal$3.apply(ReportPortal.java:210)
        at com.epam.reportportal.service.ReportPortal$3.apply(ReportPortal.java:199)
        at com.epam.reportportal.service.LoggingContext$4.apply(LoggingContext.java:163)
        at com.epam.reportportal.service.LoggingContext$4.apply(LoggingContext.java:160)
        at io.reactivex.internal.operators.maybe.MaybeMap$MapMaybeObserver.onSuccess(MaybeMap.java:82)
        at io.reactivex.internal.operators.maybe.MaybeCache.subscribeActual(MaybeCache.java:66)
        at io.reactivex.Maybe.subscribe(Maybe.java:4096)
        at io.reactivex.internal.operators.maybe.MaybeMap.subscribeActual(MaybeMap.java:40)
        at io.reactivex.Maybe.subscribe(Maybe.java:4096)
        at io.reactivex.internal.operators.maybe.MaybeToFlowable.subscribeActual(MaybeToFlowable.java:45)
        at io.reactivex.Flowable.subscribe(Flowable.java:14419)
        at io.reactivex.Flowable.subscribe(Flowable.java:14365)
        at io.reactivex.internal.operators.flowable.FlowableFlatMap$MergeSubscriber.onNext(FlowableFlatMap.java:163)
        at io.reactivex.internal.operators.flowable.FlowableOnBackpressureBuffer$BackpressureBufferSubscriber.drain(FlowableOnBackpressureBuffer.java:187)
        at io.reactivex.internal.operators.flowable.FlowableOnBackpressureBuffer$BackpressureBufferSubscriber.onNext(FlowableOnBackpressureBuffer.java:112)
        at io.reactivex.internal.operators.flowable.FlowableFromObservable$SubscriberObserver.onNext(FlowableFromObservable.java:52)
        at io.reactivex.subjects.PublishSubject$PublishDisposable.onNext(PublishSubject.java:309)
        at io.reactivex.subjects.PublishSubject.onNext(PublishSubject.java:229)
        at com.epam.reportportal.service.LoggingContext.emit(LoggingContext.java:160)
        at com.epam.reportportal.service.ReportPortal.emitLog(ReportPortal.java:147)
        at com.epam.reportportal.service.ReportPortal.emitLog(ReportPortal.java:199)
        at com.github.invictum.reportportal.StepDataExtractorsHolder.lambda$null$0(StepDataExtractorsHolder.java:27)
        at java.util.Collections$SingletonSet.forEach(Collections.java:4767)
        at com.github.invictum.reportportal.StepDataExtractorsHolder.lambda$proceed$1(StepDataExtractorsHolder.java:27)
        at java.lang.Iterable.forEach(Iterable.java:75)
        at com.github.invictum.reportportal.StepDataExtractorsHolder.proceed(StepDataExtractorsHolder.java:25)
        at com.github.invictum.reportportal.handler.FlatHandler.lambda$finishTest$1(FlatHandler.java:92)
        at java.util.ArrayList.forEach(ArrayList.java:1249)
        at com.github.invictum.reportportal.handler.FlatHandler.finishTest(FlatHandler.java:92)
        at com.github.invictum.reportportal.ReportPortalListener.testFinished(ReportPortalListener.java:51)
        at net.thucydides.core.steps.StepEventBus.testFinished(StepEventBus.java:297)
        at cucumber.runtime.formatter.SerenityReporter.handleTestCaseFinished(SerenityReporter.java:268)
        at cucumber.runtime.formatter.SerenityReporter.lambda$new$2(SerenityReporter.java:118)
        at cucumber.runner.EventBus.send(EventBus.java:28)
        at cucumber.api.TestCase.run(TestCase.java:65)
        at cucumber.runner.Runner.runPickle(Runner.java:80)
        at cucumber.runtime.junit.PickleRunners$NoStepDescriptions.run(PickleRunners.java:140)
        at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:68)
        at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:23)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:73)
        at cucumber.api.junit.Cucumber.runChild(Cucumber.java:117)
        at cucumber.api.junit.Cucumber.runChild(Cucumber.java:55)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        at cucumber.api.junit.Cucumber$1.evaluate(Cucumber.java:126)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

I have attached the project to the issue.
simple-test-framework-with-serenity-and-cucumber.zip

The command for the Cucumber test execution is
mvn clean verify -Dcucumber.options="--tags @VerifyCucumber"

@Invictum
Copy link
Owner

@nstbushneva
Thanks for issue report. I am able to reproduce it with your project and will fix it shortly.

@Invictum
Copy link
Owner

@nstbushneva
Fix require RP logs emit mechanism rework. As a result it takes more time as expected.

@Invictum
Copy link
Owner

@nstbushneva
Logs emit mechanism was reworked as well as log units approach. Changes introduced break of backward capability, so 1.3.0 release has been drafted.

You may check fix with 1.3.0-SNAPSHOT version.

@nstbushneva
Copy link
Author

Hi @Invictum,
Thank you for the fix. At least, I am not getting this exception in my real test-automation project. 👍

Invictum added a commit that referenced this issue Nov 19, 2018
#52: Implemented reworked log units approach
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants