Invictum / serenity-reportportal-integration

Serenity TAF integration with Report Portal
Apache License 2.0
20 stars 19 forks source link

Finish launch is not allowed. Launch '5be4330e42eba40001f5189a' has items '[5be4331a42eba40001f5189e]' with 'IN_PROGRESS' status #46

Closed Maheshkhandave closed 5 years ago

Maheshkhandave commented 5 years ago

I am trying to integrate serenity with report portal with below combination. My project is configured as Serenity-Junit

  1. Fail-safe plugin- 2.22.1
  2. Junit- 4.12
  3. Serenity-Version- 2.0.11
  4. serenity-reportportal-integration- 1.2.0 also tried 1.2.1
  5. Report portal build- 4.3
  6. Launching the test through Intellj ID using mvn command, I am launching selective test based on the tag

In every execution my browser get launched and reach up to navigating to logging page and then it is getting closed by throwing below exception on console.

[rp-io-10] ERROR com.epam.reportportal.service.Launch - [57] ReportPortal execution error com.epam.reportportal.exception.ReportPortalException: Report Portal returned error Status code: 406 Status message: Not Acceptable Error Message: Finish launch is not allowed. Launch '5be4330e42eba40001f5189a' has items '[5be4331a42eba40001f5189e]' with 'IN_PROGRESS' status Error Type: FINISH_LAUNCH_NOT_ALLOWED

    at com.epam.reportportal.service.ReportPortalErrorHandler.handleError(ReportPortalErrorHandler.java:83)
    at com.epam.reportportal.service.ReportPortalErrorHandler.handle(ReportPortalErrorHandler.java:59)
    at com.epam.reportportal.restendpoint.http.HttpClientRestEndpoint$1.subscribe(HttpClientRestEndpoint.java:517)
    at io.reactivex.internal.operators.maybe.MaybeCreate.subscribeActual(MaybeCreate.java:45)
    at io.reactivex.Maybe.subscribe(Maybe.java:3727)
    at io.reactivex.internal.operators.maybe.MaybeCache.subscribeActual(MaybeCache.java:77)
    at io.reactivex.Maybe.subscribe(Maybe.java:3727)
    at io.reactivex.internal.operators.maybe.MaybeSubscribeOn$SubscribeTask.run(MaybeSubscribeOn.java:54)
    at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38)
    at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

the test run get updated in report portal with status as in-progress invalid run.

Please advise, I also tried different version of serenity along with commenting Junit dependency but got same exception.

Invictum commented 5 years ago

@Maheshkhandave Can you provide your ‘pom.xml’ file as well as exact command you used to run tests?

Maheshkhandave commented 5 years ago

<?xml version="1.0" encoding="UTF-8"?> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<packaging>jar</packaging>

<name></name>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <serenity.version>2.0.11</serenity.version>
    <serenity.maven.version>2.0.11</serenity.maven.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <webdriver.base.url></webdriver.base.url>
    <webdriver.driver>firefox</webdriver.driver>
    <webdriver.gecko.driver></webdriver.gecko.driver>
    <tempabcd.dbName></tempabcd.dbName>
    <tempabcd.userName></tempabcd.userName>
    <tempabcd.password></tempabcd.password>
    <tempabcd.waittimeinterval>40</tempabcd.waittimeinterval>
    <serenity.take.screenshot.for.interactions>FOR_FAILURES</serenity.take.screenshot.for.interactions>
</properties>

<dependencies>
    <dependency>
        <groupId>com.github.invictum</groupId>
        <artifactId>serenity-reportportal-integration</artifactId>
        <version>1.2.1</version>
    </dependency>
    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-core</artifactId>
        <version>${serenity.version}</version>
    </dependency>

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3.0</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.7</version>
    </dependency>

    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-junit</artifactId>
        <version>${serenity.version}</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.easytesting</groupId>
        <artifactId>fest-assert</artifactId>
        <version>1.4</version>
    </dependency>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.7.0</version>
    </dependency>

    <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>4.1.0</version>
        <classifier>no_aop</classifier>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>

    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-rest-assured</artifactId>
        <version>${serenity.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.17</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.17</version>
    </dependency>

    <!-- Dependencies for cucumber-->
    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-cucumber</artifactId>
        <version>1.9.3</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>1.2.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.jayway.jsonpath/json-path -->
    <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path</artifactId>
        <version>2.0.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.json/json -->
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20180130</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->

    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1.1</version>
    </dependency>

    <!-- Dependencies for cucumber-->
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.8.1</version>
    </dependency>
    <!-- Dependencies for fetching time-->

    <dependency>
        <groupId>net.sourceforge.jtds</groupId>
        <artifactId>jtds</artifactId>
        <version>1.3.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>6.4.0.jre8</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.4.1212</version>
    </dependency>
    <dependency>
        <groupId>com.sap.cloud.db.jdbc</groupId>
        <artifactId>ngdbc</artifactId>
        <version>2.2.16</version>
        <scope>test</scope>
    </dependency>
    <!-- Dependencies for DB connection-->

</dependencies>
<repositories>
    <repository>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <id>bintray-epam-reportportal</id>
        <name>bintray</name>
        <url>http://dl.bintray.com/epam/reportportal</url>
    </repository>
</repositories>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.1</version>
            <configuration>
                <skip>true</skip>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.22.1</version>
            <configuration>
                <includes>
                    <include>**/*Test.java</include>
                    <include>**/Test*.java</include>
                    <include>**/When*.java</include>
                    <include>**/*TestSuite.java</include>
                </includes>
                <argLine>-Xmx512m</argLine>
                <rerunFailingTestsCount>0</rerunFailingTestsCount>
                <systemPropertyVariables>
                    <webdriver.driver>${webdriver.driver}</webdriver.driver>
                    <webdriver.gecko.driver>${webdriver.gecko.driver}</webdriver.gecko.driver>
                    <!--<webdriver.chrome.driver>${webdriver.chrome.driver}</webdriver.chrome.driver>-->
                    <webdriver.base.url>${webdriver.base.url}</webdriver.base.url>
                    <tempabcd.dbName>${tempabcd.dbName}</tempabcd.dbName>
                    <tempabcd.userName>${tempabcd.userName}</tempabcd.userName>
                    <tempabcd.password>${tempabcd.password}</tempabcd.password>
                    <tempabcd.waittimeinterval>${tempabcd.waittimeinterval}</tempabcd.waittimeinterval>
                    <serenity.take.screenshots.for.interactions>FOR_FAILURES
                    </serenity.take.screenshots.for.interactions>
                    <serenity.take.screenshots>FOR_FAILURES
                    </serenity.take.screenshots>
                </systemPropertyVariables>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.2</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <!--<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.20</version>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>-->
        <plugin>
            <groupId>net.serenity-bdd.maven.plugins</groupId>
            <artifactId>serenity-maven-plugin</artifactId>
            <version>${serenity.maven.version}</version>
            <dependencies>
                <dependency>
                    <groupId>net.serenity-bdd</groupId>
                    <artifactId>serenity-core</artifactId>
                    <version>${serenity.version}</version>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <id>serenity-reports</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>aggregate</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

</build>

Maheshkhandave commented 5 years ago

using command as mvn clean verify -Dtags="Temp1"

Invictum commented 5 years ago

@Maheshkhandave

I am unable to reproduce an issue with pure Serenity. But have some clues: integration 1.2.1 was build with Serenity 1.9.45 as a dependency. But you are trying to use 2.0.11. Exclude Serenity from integration dependencies in your pom file

...

<dependency>
    <groupId>com.github.invictum</groupId>
    <artifactId>serenity-reportportal-integration</artifactId>
    <version>1.2.1</version>
        <exclusions>
            <exclusion>
                <groupId>net.serenity-bdd</groupId>
                <artifactId>serenity-core</artifactId>
            </exclusion>
        </exclusions>
</dependency>

...
Maheshkhandave commented 5 years ago

Thanks for the reply, I tried multiple combinations of versions also tried moving the report portal properties file in different location, however every time i am getting below exception. After looking at the exception i think my project is not creating the log file in the format which is acceptal to reportportal. Any idea on what am i missing in the log file?

[main] ERROR net.thucydides.core.steps.ConsoleLoggingListener - GET /session/fad04782-6299-404a-98cb-ce9716b75dac/log/types did not match a known command [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:1255) 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 net.thucydides.junit.listeners.JUnitStepListener.testFinished(JUnitStepListener.java:98) at org.junit.runner.notification.SynchronizedRunListener.testFinished(SynchronizedRunListener.java:56) at org.junit.runner.notification.RunNotifier$7.notifyListener(RunNotifier.java:190) at org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:72) at org.junit.runner.notification.RunNotifier.fireTestFinished(RunNotifier.java:187) at org.junit.internal.runners.model.EachTestNotifier.fireTestFinished(EachTestNotifier.java:38) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:331) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at net.serenitybdd.junit.runners.SerenityRunner.performRunChild(SerenityRunner.java:460) at net.serenitybdd.junit.runners.SerenityRunner.runChild(SerenityRunner.java:435) at net.serenitybdd.junit.runners.SerenityRunner.runChild(SerenityRunner.java:42) 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 net.serenitybdd.junit.runners.SerenityRunner.run(SerenityRunner.java:239) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365) at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159) at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345) at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)

Invictum commented 5 years ago

@Maheshkhandave Seems like there are several issues.

  1. Let's simplify your pom.xml. Some dependencies are duplicated this may cause version conflicts.
    
    // Exclude serenity-core from integration - you defining it manually
    <dependency>
    <groupId>com.github.invictum</groupId>
    <artifactId>serenity-reportportal-integration</artifactId>
    <version>1.2.1</version>
    <exclusions>
      <exclusion>
         <groupId>net.serenity-bdd</groupId>
         <artifactId>serenity-core</artifactId>
      </exclusion>
    </exclusions>
    </dependency>

// Remove following dependencies - they already included in other modules

net.serenity-bdd serenity-core ${serenity.version} junit junit 4.12 provided org.seleniumhq.selenium selenium-java 3.7.0

// If you don't need a Serenity reporter you may remove

net.serenity-bdd.maven.plugins serenity-maven-plugin ${serenity.maven.version} net.serenity-bdd serenity-core ${serenity.version} serenity-reports post-integration-test aggregate

2. Log type error

[main] ERROR net.thucydides.core.steps.ConsoleLoggingListener - GET /session/fad04782-6299-404a-98cb-ce9716b75dac/log/types did not match a known command

Internal Serenity's mechanism requests log types from Selenium as well as integration do. However something wrong happens here - it seems like capability between selenium client and server issue. This may be fixed after pom.xml simplifying. Also make sure you are using latest versions of drivers (gecko, chrome, etc.)

3. The correct place to store a report portal config is `src/main/test/resources/reportportal.properties`

4. The only two classes that attempt to send a file to report portal are `StepScreenshots` and `StepScreenshots`. Configure custom profile and disable them for debug purposes.

StepsSetProfile profile = StepsSetProfile.CUSTOM; profile.registerExtractors(new StartStep(), new FinishStep()); ReportIntegrationConfig.get().useProfile(profile);



Please, let me know about your results.

If you are able to provide a simple small project that reproduces an issue, I will investigate all these stuff on my side.
Invictum commented 5 years ago

Issue is duplicated by #52