appium / java-client

Java language binding for writing Appium Tests, conforms to W3C WebDriver Protocol

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AppiumDriverLocalService dosent spawn on MultiThreading

saikrishna321 opened this issue · comments

@TikhomirovSergey i was trying to execute the appium android test in parallel where i wanted to start the appium-server programmatically for every thread.

TestNG by default provides a way were u can run methods in parallel and set the thread-count. When i trigger the appium server with AppiumLocalSerive it always hooks to a single thread.

When i start the appium server as we do from command line it works fine. I have a sample project to reproduce it.

https://github.com/saikrishna321/TestNGParallelThreads

When i set the ParallelMode.CLASSES i see the the appium server and the application launched on two thread(two devices) as expected. Please check the gist for logs

https://gist.github.com/saikrishna321/8a2e49ccc080a3faf014

When i set the ParallelMode.METHODS i dont see the methods executing in parallel, check the gist for logs and also i noticed the AfterClass for one of the has not completed, i see the process still running

https://gist.github.com/saikrishna321/6592f680dee7d70be59c

@saikrishna321 Thank you for the detailed report. I'll run into this problem as soon as possible.

@TikhomirovSergey More info: i'm running my test with TestNG framework and below the testng.xml used to trigger the tests

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="2" name="Suite" parallel="methods">
    <test name="Test">
        <classes>
            <class name="com.test.classes.TestNGMethodSelector">
                <methods>
                    <include name="methodOne" />
                    <include name="methodTwo" />
                </methods>
            </class>
            <class name="com.test.classes.DemoClassWithManyMethodsTest">
                <methods>
                    <include name="methodOne_1" />
                    <include name="methodTwo_2" />
                </methods>
            </class>
        </classes>
    </test> <!-- Test -->
</suite> <!-- Suite -->


@TikhomirovSergey any updates in this.. i have updated the repo link .. all that i'm trying to do is just trigger appium server session as per the testng.xml

@saikrishna321
I'm working on .Net client, today or tomorrow going to finish this work.

The main idea is that it is not a bug (however, who knows :) ). AppiumDriverLocalService was designed as thread safe feature...

@TikhomirovSergey hey thanks a lot for getting back..

Looking forward for you take a look at this .

There is a progress. Now I'm suspecting a bug!

@TikhomirovSergey Great 👍 waiting to hear from you

Well. There are problems

First of all your samle code has some issues. I'm doubting that it was able to be run in multi-threads. Here is my improvement:

saikrishna321/TestNGParallelThreads#1

You can take a look at this. It is not necessary to merge this PR :)

Also there are problems on Java client side. It is possible to hang AppiumDriverLocalService in multiple threads. I've fixed it and I've got an improved build locally. The PR with this fix is coming soon.

Also ... even the Selenium Java client has an issue. :) It is reproduced on Windows 7/8. I've tried to run your code with ChromeDriverService and the result is the same. This bug can be avoided on the Appium Java client side.

@TikhomirovSergey That's awesome ... I already have a project running AppiumDriverLocalService on multiple thread at class level parallelization it works .. but i have noticed that sometimes the app just opens n closes .. not sure why..

Looking for the PR with latest version.

Here is the repo:
https://github.com/saikrishna321/AppiumTestDistribution

Thoughts ?

@saikrishna321 I've ideas for now. Please open one more issue. I think it is the another problem and it is not related to this. ... And provide deatails as many as you can :).

But the new PR will be proposed very soon (this issue fix).

@TikhomirovSergey sure i'm gonna do that.. i'm keeping this issue open until the new PR is out ..

@TikhomirovSergey when will the 4.0.0 be released ?

I don't know. Maybe with #214. I'm working on it.

Oh okie ... How do I build the jar locally so that I can test the fix of multi threading or can you push a SNAPSHOT ?

I can't. May be @Jonahss can push a SNAPSHOT.
You can run
mvn clean
mvn install -Dmaven.test.skip=true
at the directory of your java-client clone. You build will be failed because of gpg. However desired jars should be build and then you can place them at your local repository. Or... you can configure gpg on your computer.

@Jonahss is it possible to push a SNAPSHOT it will be helpfull.
@TikhomirovSergey i get the below error when trying to build with the command provided and What is gpg ?

00 errors
46 warnings
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.677 s
[INFO] Finished at: 2016-01-17T17:34:03+05:30
[INFO] Final Memory: 21M/380M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9.1:jar (attach-javadocs) on project java-client: MavenReportException: Error while creating archive:
[ERROR] Exit code: 1 - /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/AndroidDriver.java:131: warning: no description for @param
[ERROR] * @param text
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/AndroidDriver.java:143: warning: no description for @param
[ERROR] * @param text
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/AndroidDriver.java:270: error: unknown tag: example
[ERROR] * @example driver.startActivity("com.foo.bar", ".MyActivity", null, null, true);
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/AndroidDriver.java:305: error: unknown tag: example
[ERROR] * @example driver.startActivity("com.foo.bar", ".MyActivity", null, null);
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/AndroidDriver.java:319: error: unknown tag: example
[ERROR] * @example
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/AndroidDriver.java:346: warning: no @return
[ERROR] public String currentActivity() {
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/StartsActivity.java:29: error: unknown tag: example
[ERROR] * @example
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/StartsActivity.java:43: error: unknown tag: example
[ERROR] * @example
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/StartsActivity.java:55: error: unknown tag: example
[ERROR] * @example
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/TouchShortcuts.java:57: warning: no description for @param
[ERROR] * @param duration
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/ScrollsTo.java:25: warning: no description for @param
[ERROR] * @param text
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/ScrollsTo.java:27: warning: no @return
[ERROR] T scrollTo(String text);
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/ScrollsTo.java:31: warning: no description for @param
[ERROR] * @param text
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/ScrollsTo.java:33: warning: no @return
[ERROR] T scrollToExact(String text);
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/AndroidDriver.java:59: error: self-closing element not allowed
[ERROR] * Warning (!!!). Allowed types:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/AndroidDriver.java:60: error: self-closing element not allowed
[ERROR] * {@link WebElement}<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/AndroidDriver.java:61: error: reference not found
[ERROR] * {@link TouchableElement}<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/AndroidDriver.java:61: error: self-closing element not allowed
[ERROR] * {@link TouchableElement}<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/AndroidDriver.java:62: error: reference not found
[ERROR] * {@link RemoteWebElement}<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/AndroidDriver.java:62: error: self-closing element not allowed
[ERROR] * {@link RemoteWebElement}<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/android/AndroidDriver.java:63: error: reference not found
[ERROR] * {@link MobileElement}
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/TouchableElement.java:93: warning: no @param for offsetFromStartBorder
[ERROR] void swipe(SwipeElementDirection direction, int offsetFromStartBorder,
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/AppiumDriver.java:48: error: self-closing element not allowed
[ERROR] * Warning (!!!). Allowed types:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/AppiumDriver.java:49: error: self-closing element not allowed
[ERROR] * {@link WebElement}<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/AppiumDriver.java:50: error: self-closing element not allowed
[ERROR] * {@link TouchableElement}<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/AppiumDriver.java:51: error: self-closing element not allowed
[ERROR] * {@link RemoteWebElement}<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/NetworkConnectionSetting.java:47: warning: no description for @param
[ERROR] * @param bitmask
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/NoSuchContextException.java:22: error: reference not found
[ERROR] * Thrown by {@link org.openqa.selenium.WebDriver.TargetLocator#context(String) WebDriver.switchTo().context(String
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/NoSuchContextException.java:26: warning - Tag @link: can't find context(String) in org.openqa.selenium.WebDriver.TargetLocator
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/ios/IOSDriver.java:44: error: self-closing element not allowed
[ERROR] * Warning (!!!). Allowed types:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/ios/IOSDriver.java:45: error: self-closing element not allowed
[ERROR] * {@link WebElement}<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/ios/IOSDriver.java:46: error: reference not found
[ERROR] * {@link TouchableElement}<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/ios/IOSDriver.java:46: error: self-closing element not allowed
[ERROR] * {@link TouchableElement}<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/ios/IOSDriver.java:47: error: reference not found
[ERROR] * {@link RemoteWebElement}<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/ios/IOSDriver.java:47: error: self-closing element not allowed
[ERROR] * {@link RemoteWebElement}<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/ios/IOSDriver.java:48: error: reference not found
[ERROR] * {@link MobileElement}
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/pagefactory/AppiumFieldDecorator.java:50: error: unknown tag: WebElement
[ERROR] * WebElement fields and 2) List<WebElement> fields that have
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/pagefactory/OverrideWidget.java:50: warning: no @return
[ERROR] Class<? extends Widget> androidUIAutomator() default Widget.class;
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/pagefactory/OverrideWidget.java:43: warning: no @return
[ERROR] Class<? extends Widget> html() default Widget.class;
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/pagefactory/OverrideWidget.java:57: warning: no @return
[ERROR] Class<? extends Widget> iOSUIAutomation() default Widget.class;
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/pagefactory/OverrideWidget.java:64: warning: no @return
[ERROR] Class<? extends Widget> selendroid() default Widget.class;
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/pagefactory/bys/builder/AppiumByBuilder.java:159: warning: no @param for annotated
[ERROR] public void setAnnotated(AnnotatedElement annotated) {
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:22: error: unexpected text
[ERROR] * The full list is available here: {@link http://appium.io/slate/en/master/?ruby#appium-server-arguments}
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:25: warning - Tag @link:illegal character: "58" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:25: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:25: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:25: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:25: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:25: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:25: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:25: warning - Tag @link:illegal character: "63" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:25: warning - Tag @link:illegal character: "45" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:25: warning - Tag @link:illegal character: "45" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:41: error: self-closing element not allowed
[ERROR] * from your package (e.g., MainActivity)<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:42: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:62: error: self-closing element not allowed
[ERROR] * Passed to -w in adb shell am instrument -e coverage true -w <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:63: error: self-closing element not allowed
[ERROR] * Sample: <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:56: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:48: error: self-closing element not allowed
[ERROR] * (e.g., com.example.android.MyApp)<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:49: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:68: error: self-closing element not allowed
[ERROR] * Name of the avd to launch<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:69: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:74: error: self-closing element not allowed
[ERROR] * Additional emulator arguments to launch the avd<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:75: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:27: error: self-closing element not allowed
[ERROR] * Port to use on device to talk to Appium<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:28: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:81: error: self-closing element not allowed
[ERROR] * ready<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:82: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:149: error: self-closing element not allowed
[ERROR] * restart<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:150: error: self-closing element not allowed
[ERROR] * Default: false<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:119: error: self-closing element not allowed
[ERROR] * Intent action which will be used to start activity<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:120: error: self-closing element not allowed
[ERROR] * Default: android.intent.action.MAIN<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:121: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:141: error: self-closing element not allowed
[ERROR] * activity<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:142: error: self-closing element not allowed
[ERROR] * Default: null<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:143: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:126: error: self-closing element not allowed
[ERROR] * Intent category which will be used to start activity<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:127: error: self-closing element not allowed
[ERROR] * Default: android.intent.category.LAUNCHER<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:128: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:133: error: self-closing element not allowed
[ERROR] * Flags that will be used to start activity<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:134: error: self-closing element not allowed
[ERROR] * Default: 0x10200000<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:135: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:109: error: self-closing element not allowed
[ERROR] * Key alias<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:114: error: self-closing element not allowed
[ERROR] * Key password<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:104: error: self-closing element not allowed
[ERROR] * Password to keystore<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:98: error: self-closing element not allowed
[ERROR] * Path to keystore<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:99: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:34: error: self-closing element not allowed
[ERROR] * com.example.android.MyApp)<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:35: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:87: error: self-closing element not allowed
[ERROR] * Local port used for communication with Selendroid<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:88: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:155: error: self-closing element not allowed
[ERROR] * instance<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:156: error: self-closing element not allowed
[ERROR] * Default: false<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/AndroidServerFlag.java:93: error: self-closing element not allowed
[ERROR] * When set the keystore will be used to sign apks.<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:22: error: unexpected text
[ERROR] * The full list is available here: {@link http://appium.io/slate/en/master/?ruby#appium-server-arguments}
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:24: warning - Tag @link:illegal character: "58" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:24: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:24: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:24: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:24: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:24: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:24: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:24: warning - Tag @link:illegal character: "63" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:24: warning - Tag @link:illegal character: "45" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:24: warning - Tag @link:illegal character: "45" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:30: error: self-closing element not allowed
[ERROR] * IOS: abs path to simulator-compiled .app file or the bundle_id of the desired target on device; Android: abs path to .apk file<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:31: error: self-closing element not allowed
[ERROR] * Sample <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:114: error: self-closing element not allowed
[ERROR] * Name of the automation tool: Appium or Selendroid<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:115: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:120: error: self-closing element not allowed
[ERROR] * Name of the mobile browser: Safari or Chrome<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:121: error: self-closing element not allowed
[ERROR] * Sample: <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:42: error: self-closing element not allowed
[ERROR] * callback IP Address (default: same as address) <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:43: error: self-closing element not allowed
[ERROR] * Sample <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:48: error: self-closing element not allowed
[ERROR] * callback port (default: same as port)<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:49: error: self-closing element not allowed
[ERROR] * Sample <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:156: error: self-closing element not allowed
[ERROR] * Port upon which ChromeDriver will run<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:157: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:177: error: self-closing element not allowed
[ERROR] * still be overridden by newCommandTimeout cap<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:138: error: self-closing element not allowed
[ERROR] * Configuration JSON file to register Appium with selenium grid<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:139: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:194: error: self-closing element not allowed
[ERROR] * Add exaggerated spacing in logs to help with visual inspection<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:96: error: self-closing element not allowed
[ERROR] * Name of the mobile device to use<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:97: error: self-closing element not allowed
[ERROR] * Sample: <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:126: error: self-closing element not allowed
[ERROR] * Language for the iOS simulator / Android Emulator <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:127: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:80: error: self-closing element not allowed
[ERROR] * Use local timezone for timestamps <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:132: error: self-closing element not allowed
[ERROR] * Locale for the iOS simulator / Android Emulator<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:133: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:69: error: self-closing element not allowed
[ERROR] * The message log level to be shown <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:70: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:85: error: self-closing element not allowed
[ERROR] * Don’t use colors in console output <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:75: error: self-closing element not allowed
[ERROR] * Show timestamps in console output <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:171: error: self-closing element not allowed
[ERROR] * Bypass Appium’s checks to ensure we can read/write necessary files<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:59: error: self-closing element not allowed
[ERROR] * Don’t reset app state between sessions (IOS: don’t delete app plist files; Android: don’t uninstall app before new session)<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:102: error: self-closing element not allowed
[ERROR] * Name of the mobile platform: iOS, Android, or FirefoxOS <br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/GeneralServerFlag.java:103: error: self-closing element not allowed
[ERROR] * Sample:<br/>
[ERROR] ^
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/IOSServerFlag.java:25: warning - Tag @link:illegal character: "58" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/IOSServerFlag.java:25: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/IOSServerFlag.java:25: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/IOSServerFlag.java:25: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/IOSServerFlag.java:25: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/IOSServerFlag.java:25: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/IOSServerFlag.java:25: warning - Tag @link:illegal character: "47" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/IOSServerFlag.java:25: warning - Tag @link:illegal character: "63" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/IOSServerFlag.java:25: warning - Tag @link:illegal character: "45" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR] /Users/saikrisv/git/java-client/src/main/java/io/appium/java_client/service/local/flags/IOSServerFlag.java:25: warning - Tag @link:illegal character: "45" in "http://appium.io/slate/en/master/?ruby#appium-server-arguments"
[ERROR]
[ERROR] Command line was: /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/bin/javadoc @options @packages
[ERROR]
[ERROR] Refer to the generated Javadoc files in '/Users/saikrisv/git/java-client/target/apidocs' dir.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

@saikrishna321 No.
It's probably your maven. It couldn't generate javadoc. It is weird. Which maven biuld do you use?
I use v3.2.1 usually on Windows. May be it is another issue. If you can reproduce it with >v3.2.1 please report it. I'll improve javadoc markdown.

@TikhomirovSergey i use version 3.3.3,details below

Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T17:27:37+05:30)
Maven home: /usr/local/Cellar/maven/3.3.3/libexec
Java version: 1.8.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.10.4", arch: "x86_64", family: "mac"

Should i raise a defect for this ?

If the error is the same

elf-closing element not allowed
[ERROR] * Show timestamps in console output

[ERROR] ^

please open a new one.

@TikhomirovSergey i have raised an issue for above comment #294

FYI, i was able to get the dependency from jitpack

https://jitpack.io/#appium/java-client/881294d978

@TikhomirovSergey i merged your changes to the sampletest repo

https://github.com/saikrishna321/TestNGParallelThreads/

I'm still unable to run the methods in parallel when the AndroidDriver is added. I see same device UDID is picked on two sessions. Take a look at the log below

https://gist.github.com/saikrishna321/79d220e0724f6a334276

To reproduce

  1. Connect two devices/genymotion
  2. Replace the device UDID in this line
    https://github.com/saikrishna321/TestNGParallelThreads/blob/master/src/test/java/com/test/classes/BaseTestServer.java#L7
  3. Run the testng.xml

@TikhomirovSergey did u get chance to take a look at this ?

I think it is not the problem of a service and it is the problem of your code. It looks like you are trying to to start two sessions on the same service. Appium service doesn't support multisession mode till v2.0.

https://github.com/saikrishna321/TestNGParallelThreads/blob/master/src/test/java/com/test/classes/AppiumServer.java#L43.

I told you that it is not necessary to merge my PRs. They were made only for demonstration.

So now it is possible to use one service instance per driver.

@TikhomirovSergey thanks for looking into it 👍

If i start two threads and start AppiumLocalService on individual threads with different port numbers should the appium server be started ?

@TikhomirovSergey you had mentioned above that Appium service doesn't support multisession mode till v2.0, is this on the server end. I heard appium v1.5 would support multiple server session in single node instance. Can you please point out the implementation, if done ?