Code Monkey home page Code Monkey logo

apexunit's People

Contributors

adarsh-ramakrishna-sfdc avatar almircoroneloktana avatar ashwin512 avatar awillia2 avatar code-sagar avatar damiendurant avatar dragon0556 avatar foviedoitba avatar glang avatar istolga avatar leboff avatar pauldavidchristian avatar pmedapuram avatar pventurino avatar rduvvarapu avatar svc-scm avatar vamshi-sfdc avatar vorian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apexunit's Issues

Can't fetch Code coverage

Hi,

I execute my run from jenkins cli, with the following commande line :
mvn -X compile exec:java -Dexec.mainClass="com.sforce.cd.apexUnit.ApexUnitRunner" -Dexec.args="-max.test.execution.time.threshold 2 -regex.for.selecting.source.classes.for.code.coverage.computation RSales*_SearchAccount_CTRL -regex.for.selecting.test.classes.to.execute RSalesST_SearchAccount_CTRL_Te* -org.login.url https://XXXXX--XXXXX.csXX.my.salesforce.com -org.username XXXXXXXX -org.password XXXXXX -org.client.secret XXXXXXX -proxy.host web-XXXXXXXX -proxy.port 3128 -org.client.id XXXXXXXXXXX"

The first part (execution of test class), run sucessefully, therefore it then throw timeout when trying to fetch code converage :

[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitRunner - #################################### Computing code coverage for the team based on the Apex Class names(source class names) provided #################################### [com.sforce.cd.apexUnit.ApexUnitRunner.main()] DEBUG com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer - Fetching apex classes with regex : RSales*_SearchAccount_CTRL [com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex(es): RSales*_SearchAccount_CTRL to fetch apex classes [com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex: "RSales*_SearchAccount_CTRL" to fetch apex classes [com.sforce.cd.apexUnit.ApexUnitRunner.main()] DEBUG com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Fetched Apex classes: [com.sforce.cd.apexUnit.ApexUnitRunner.main()] DEBUG com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - ApexClassId : 01pb00000050stAAAQ ApexClassName : RSalesST_SearchAccount_CTRL [com.sforce.cd.apexUnit.ApexUnitRunner.main()] DEBUG com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Fetched Apex classes: Jul 26, 2018 3:49:25 PM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry INFO: I/O exception (java.net.ConnectException) caught when processing request: Connection timed out (Connection timed out) Jul 26, 2018 3:49:25 PM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry INFO: Retrying request Jul 26, 2018 3:51:32 PM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry INFO: I/O exception (java.net.ConnectException) caught when processing request: Connection timed out (Connection timed out) Jul 26, 2018 3:51:32 PM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry INFO: Retrying request Jul 26, 2018 3:53:40 PM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry INFO: I/O exception (java.net.ConnectException) caught when processing request: Connection timed out (Connection timed out) Jul 26, 2018 3:53:40 PM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry INFO: Retrying request java.net.ConnectException: Connection timed out (Connection timed out) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:673) at sun.security.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:477) at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:153) at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:82) at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:127) at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707) at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323) at com.sforce.cd.apexUnit.client.codeCoverage.WebServiceInvoker.doPost(WebServiceInvoker.java:78) at com.sforce.cd.apexUnit.client.codeCoverage.OAuthTokenGenerator.doPostAndGetOrgToken(OAuthTokenGenerator.java:49) at com.sforce.cd.apexUnit.client.codeCoverage.OAuthTokenGenerator.getOrgToken(OAuthTokenGenerator.java:36) at com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer.calculateAggregatedCodeCoverageUsingToolingAPI(CodeCoverageComputer.java:104) at com.sforce.cd.apexUnit.ApexUnitRunner.main(ApexUnitRunner.java:88) 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.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297) at java.lang.Thread.run(Thread.java:748) [com.sforce.cd.apexUnit.ApexUnitRunner.main()] ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Exception during post method: java.net.ConnectException: Connection timed out (Connection timed out) [com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit java.lang.Exception: Stack trace at java.lang.Thread.dumpStack(Thread.java:1336) at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithErrMsg(ApexUnitUtils.java:48) at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithDebugLog(ApexUnitUtils.java:33) at com.sforce.cd.apexUnit.client.codeCoverage.WebServiceInvoker.doPost(WebServiceInvoker.java:87) at com.sforce.cd.apexUnit.client.codeCoverage.OAuthTokenGenerator.doPostAndGetOrgToken(OAuthTokenGenerator.java:49) at com.sforce.cd.apexUnit.client.codeCoverage.OAuthTokenGenerator.getOrgToken(OAuthTokenGenerator.java:36) at com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer.calculateAggregatedCodeCoverageUsingToolingAPI(CodeCoverageComputer.java:104) at com.sforce.cd.apexUnit.ApexUnitRunner.main(ApexUnitRunner.java:88) 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.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297) at java.lang.Thread.run(Thread.java:748) Build step 'Execute shell' marked build as failure

No report XML or HTML created

At the end of the test process, the following error appear and no XML or HTML reports are created

Jun 22, 2016 2:33:21 PM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: I/O exception (java.net.BindException) caught when processing request: Permission denied
Jun 22, 2016 2:33:22 PM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: Retrying request
Jun 22, 2016 2:33:22 PM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: I/O exception (java.net.BindException) caught when processing request: Permission denied
Jun 22, 2016 2:33:22 PM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: Retrying request
Jun 22, 2016 2:33:22 PM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: I/O exception (java.net.BindException) caught when processing request: Permission denied
Jun 22, 2016 2:33:22 PM org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: Retrying request
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Exception during post method: java.net.BindException: Permission denied
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1365)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithErrMsg(ApexUnitUtils.java:68)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithDebugLog(ApexUnitUtils.java:53)
at com.sforce.cd.apexUnit.client.codeCoverage.WebServiceInvoker.doPost(WebServiceInvoker.java:107)
at com.sforce.cd.apexUnit.client.codeCoverage.OAuthTokenGenerator.doPostAndGetOrgToken(OAuthTokenGenerator.java:68)
at com.sforce.cd.apexUnit.client.codeCoverage.OAuthTokenGenerator.getOrgToken(OAuthTokenGenerator.java:55)
at com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer.calculateAggregatedCodeCoverageUsingToolingAPI(CodeCoverageComputer.java:124)
at com.sforce.cd.apexUnit.ApexUnitRunner.main(ApexUnitRunner.java:88)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
at java.lang.Thread.run(Thread.java:745)

Implement true "regex" support.

Currently the two options -regex.for.selecting.source.classes.for.code.coverage.computation and -regex.for.selecting.test.classes.to.execute can be used to specify a comma separated list of patterns for selecting classes. The patterns support simple wildcard substitution and are converted into SOQL LIKE clauses. For example the pattern Test would be converted into WHERE Name LIKE '%Test%'. This is technically not true regex pattern matching. In order to support true regex pattern matching, I think you would have to query all Apex classes in the specified namespace and then iterate through the result set, and then use the Java Pattern and/or Matcher classes to see if the class names match the specified regex.

java.net.UnknownHostException

Hi!
I'm facing UnknownHostException. As you can see test runs fine with the same Host. Do you have any ideas why it is failing for the coverage calculation?

Thank you

[INFO] --- exec-maven-plugin:1.2.1:java (default-cli) @ ApexUnit-core ---
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitRunner - ####################################   Processing the Apex test classes specified by the user  #################################### 
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.connection.PartnerConnectionConnectorConfig - Default connection time out value is: 0
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.connection.PartnerConnectionConnectorConfig - Updated connection time out value(from config.properties file): 1200000
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.fileReader.ApexManifestFileReader - Reading from Manifest files: ManifestFile_For_Unit_Test_Classes.txt
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.fileReader.ApexManifestFileReader - Reading Manifest file from location : ManifestFile_For_Unit_Test_Classes.txt
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.connection.ConnectionHandler - Bulk connection established.
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.AsyncBulkApiHandler - Creating batch for the test classes to execute using bulk connection....
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.AsyncBulkApiHandler - Async test parent job Id : 7075600000LCC2cAAH
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.AsyncBulkApiHandler - ############################# List of Apex test classes successfully submitted to the Force.com test execution engine #############################
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestExecutor - Parent job ID for the submission of the test classes to the Force.com platform is: 7075600000LCC2cAAH
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestExecutor - ############################# Now executing - Apex tests.. #############################
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler - Total test classes to execute: 1
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler - Now executing the test class: MyTestClass (https://cs42.salesforce.com/01p560000005VxjAAE ) Status : Completed
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler - Test status for MyTestClass:(0/1)
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler - Completed executing the test class: MyTestClass. Time taken by the test: 0 minutes,0 seconds
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler - Total tests executed 1 , Remaining tests 0
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler - All tests have now completed executing!!
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitRunner - ####################################    Computing code coverage for the team based on the Apex Class names(source class names) provided   #################################### 
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.fileReader.ApexManifestFileReader - Reading from Manifest files: ClassManifestFile.txt
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.fileReader.ApexManifestFileReader - Reading Manifest file from location : ClassManifestFile.txt
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.WebServiceInvoker - authorizationServerURL obj = https://cs42.salesforce.com/services/oauth2/token
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Exception during post method: java.net.UnknownHostException: cs42.salesforce.com
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit
java.lang.Exception: Stack trace
	at java.lang.Thread.dumpStack(Thread.java:1333)
	at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithErrMsg(ApexUnitUtils.java:48)
	at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithDebugLog(ApexUnitUtils.java:33)
	at com.sforce.cd.apexUnit.client.codeCoverage.WebServiceInvoker.doPost(WebServiceInvoker.java:90)
	at com.sforce.cd.apexUnit.client.codeCoverage.OAuthTokenGenerator.doPostAndGetOrgToken(OAuthTokenGenerator.java:49)
	at com.sforce.cd.apexUnit.client.codeCoverage.OAuthTokenGenerator.getOrgToken(OAuthTokenGenerator.java:36)
	at com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer.calculateAggregatedCodeCoverageUsingToolingAPI(CodeCoverageComputer.java:104)
	at com.sforce.cd.apexUnit.ApexUnitRunner.main(ApexUnitRunner.java:88)
	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.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
	at java.lang.Thread.run(Thread.java:745)

ApexUnit is unable to distinguish test class names by their namespace.

We've got a rather large code-base with about 100 test classes. This code is part of a managed package. The code also depends on other managed packages, with their own package namespace. So, our development environments contain both un-namespaced Apex test classes that are part of the package we're developing, plus namespaced test classes that are part of managed packages that are installed in the developer org. In some cases, the test class names collide across packages. For example, the installed package with the namespace "PackageA" contains a test class called Test_CustomQualification, and the package under development also contains a test class called Test_CustomQualification. If I create a test class manifest that contains Test_CustomQualification, ApexUnit seems to be unable to distinguish the two identically named test classes, and occasionally runs PackageA.Test_CustomQualification instead of the un-namespaced class that I intended to run.

Detailed Test Report link in report redirect wrongly

So I have successfully build ApexUnit and Reports are generated. but somehow when i click on "Detailed Test Report" it doesn't redirect page to correct apexunitreport.xml, instead it takes <a style="font-size:125%" ; href="C:\Program" files (x86)\jenkins\workspace\apexunittest\apexunitreport.xml>Detailed Test Report

So basically it's redirecting me to "C:\Program"
detailed test report wrong ref

Unable to report for greater than 200 classes

Currently ApexUnit submits the specified test classes to the org and returns a single parent job Id. Async Apex jobs have a max of 200 apex classes, which means when ApexUnit submits >200 classes, those are submitted as multiple async jobs. ApexUnit only returns 1 job Id, so it only reports on the results of the 200 classes submitted as part of the first job. The rest of the tests are actually executed in the org, but ApexUnit is not tracking or reporting on them.

Exception thrown while trying to create Partner Connection!!!Failed to get next element

[Moving from email thread to an issue]

I'm having a spot of bother getting ApexUnit up and running.

Any insight you can provide would be appreciated because I'd very much like to get this tool up and running for us. We develop three managed packages for diverse customers with complex implementations, and being sure all the test pass with optimal coverage is crucial for us.

I'm able to connect with the curl command

curl -v https://login.salesforce.com/services/oauth2/token -d "grant_type=password" -d "client_id=3MVG98XJQQAccJQcC7AAOFrxPf5wo7oCP1h83CjrbS9dKlmFDx_e7xSB5XaN7vBR9IO2uPQID_9LnisG6HRmg" -d "client_secret=1103520132783667035" -d "username=[email protected]" -d "password=$password"

and it returns a token

{"access_token":"00DG00000005KL8!AQwAQJ6uAyNbyTJ3o9PBVZPRZN9uL5L3OUdz7ASSmXW01acvelJS170Kyg9.db7SV.m87hb9wpv8ex1xrFFZxytKy1Yi6rUP","instance_url":"https://na11.salesforce.com","id":"https://login.salesforce.com/id/00DG00000005KL8MAM/005G0000005IPdoIAG","token_type":"Bearer","issued_at":"1456821243980","signature":"N74stPAnX2fj0mHv2kAkwxliPDeftn67HRtw4qH8xt4="}

when I try the Maven command against a fresh checkout of ApexUnit

/opt/apache-maven/bin/mvn compile exec:java -Dexec.mainClass="com.sforce.cd.apexUnit.ApexUnitRunner" -Dexec.args="-org.login.url https://login.salesforce.com/services/oauth2/token -org.client.id 3MVG98XJQQAccJQcC7AAOFrxPf5wo7oCP1h83CjrbS9dKlmFDx_e7xSB5XaN7vBR9IO2uPQID_9LnisG6HRmg -org.client.secret 1103520132783667035 -org.username [email protected] -org.password $password -regex.for.selecting.source.classes.for.code.coverage.computation Action -regex.for.selecting.test.classes.to.execute ActionTest"

the system presents


[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ApexUnit 2.3.2
[INFO] ------------------------------------------------------------------------
[WARNING] The artifact org.apache.commons:commons-io:jar:1.3.2 has been relocated to commons-io:commons-io:jar:1.3.2
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ ApexUnit-core ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 7 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ ApexUnit-core ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] >>> exec-maven-plugin:1.2.1:java (default-cli) > validate @ ApexUnit-core >>>
[INFO]
[INFO] <<< exec-maven-plugin:1.2.1:java (default-cli) < validate @ ApexUnit-core <<<
[INFO]
[INFO] --- exec-maven-plugin:1.2.1:java (default-cli) @ ApexUnit-core ---
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitRunner - #################################### Processing the Apex test classes specified by the user ####################################
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Exception thrown while trying to create Partner Connection!!!Failed to get next element
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1365)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithErrMsg(ApexUnitUtils.java:68)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithDebugLog(ApexUnitUtils.java:53)
at com.sforce.cd.apexUnit.client.connection.ConnectionHandler.createConnection(ConnectionHandler.java:130)
at com.sforce.cd.apexUnit.client.connection.ConnectionHandler.getConnection(ConnectionHandler.java:200)
at com.sforce.cd.apexUnit.client.testEngine.TestExecutor.testExecutionFlow(TestExecutor.java:50)
at com.sforce.cd.apexUnit.ApexUnitRunner.main(ApexUnitRunner.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
at java.lang.Thread.run(Thread.java:745)


The Action and ActionTest classes exist in the target org. For debugging purposes, I'm not trying a wildcard regex but passing two actual class names.

The org is a Developer Edition branch pilot org with a prefix enabled. I've also tried adding the prefix reference with no joy.

I can start over and try it with a scratch org first but I thought you might have a ready answer for this particular error message.

Maven 3.3.9 is installed at /opt/apache-maven and the java -version is

java version "1.7.0_91"
OpenJDK Runtime Environment (amzn-2.6.2.2.63.amzn1-x86_64 u91-b00)
OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)

-Ted.

---------- Forwarded message ----------
From: Adarsh Ramakrishna [email protected]
Date: Tue, Mar 1, 2016 at 5:07 PM
Subject: Re: ApexUnit - Exception thrown while trying to create Partner Connection!!!Failed to get next element
To: Ted Husted NU [email protected]
Cc: IT-CD [email protected]

Hi Ted,
Welcome to ApexUnit community! Thanks for reaching out to us.
Do you mind logging this issue on github for tracking purpose?
Our suggestion is:
Please try using -org.login.url https://login.salesforce.com/ over to using -org.login.url https://login.salesforce.com/services/oauth2/token in the maven command. Let us know how it goes.

Also,
The curl command is for verifying Tooling API connection for code coverage computation and has no impact on the partner connection handling which is used to execute the tests. I am glad that you verified it, code coverage computation should work for you with your current setup.
Thanks,
Adarsh

Is there a limitation of 200 test classes?

Hi,

I tried using ApexUnit for our app which has around 300+ test classes. The final report however shows 200 test classes executed. Is there any limitation on number of test classes that can be executed using ApexUnit?

Thanks,
Jinesh

Testclass run with more then 170 Testclasses

I will get the following error with the last testclass run:

[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex(es): * to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex: "*" to fetch apex classes
Mar 09, 2016 8:24:43 AM org.apache.commons.httpclient.HttpMethodBase processCookieHeaders
WARNING: Cookie rejected: "$Version=0; BrowserId=I6Erwt9HSmKP8v26ExKX6w; $Path=/; $Domain=.salesforce.com". Domain attribute ".salesforce.com" violates RFC 2109: host minus domain may not contain any dots
Mar 09, 2016 8:24:43 AM org.apache.commons.httpclient.HttpMethodBase getResponseBody
WARNING: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Encountered IO exception when executing get method using OAuth authentication for the url https://cceag--rdev3.cs8.my.salesforce.com/services/data/v32.0/tooling/query/?q=select+ApexClassorTriggerId%2CNumLinesCovered%2CNumLinesUncovered%2CCoverage+FROM+ApexCodeCoverageAggregate+WHERE+ApexClassOrTriggerId+IN+%28%2701pD0000000JLs2IAG%27%2C%2701pD0000000JLqpIAG%27%2C%2701pD0000000KbRdIAK%27%2C%2701pD0000000JLsaIAG%27%2C%2701pL0000000HKFtIAO%27%2C%2701pD0000000JLrMIAW%27%2C%2701pD0000000KT1lIAG%27%2C%2701qL0000000DJjGIAW%27%2C%2701pD0000000JLvUIAW%27%2C%2701pL0000000PyDnIAK%27%2C%2701pD0000000JLtZIAW%27%2C%2701qD0000000QErRIAW%27%2C%2701pD0000000JLvYIAW%27%2C%2701pD0000000JLsmIAG%27%2C%2701pD0000000JyexIAC%27%2C%2701pD0000000JLpUIAW%27%2C%2701pD0000000KWfiIAG%27%2C%2701pL0000000QL3SIAW%27%2C%2701pD0000000JLukIAG%27%2C%2701pL0000000Qik0IAC%27%2C%2701pD0000000JLtBIAW%27%2C%2701pD0000000JLtGIAW%27%2C%2701qD0000000Q4eWIAS%27%2C%2701pD0000000JLsyIAG%27%2C%2701pD0000000JLuxIAG%27%2C%2701pD0000000JyfYIAS%27%2C%2701pD0000000JLq6IAG%27%2C%2701pD0000000JLotIAG%27%2C%2701qD0000000QFlSIAW%27%2C%2701qD0000000Q3JuIAK%27%2C%2701pL0000000HBFaIAO%27%2C%2701qL00000004yFWIAY%27%2C%2701pD0000000Ka94IAC%27%2C%2701pL0000000LlJhIAK%27%2C%2701pD0000000JLsfIAG%27%2C%2701pD0000000KWfpIAG%27%2C%2701pD0000000JLtJIAW%27%2C%2701pD0000000JLpsIAG%27%2C%2701pD0000000JLr5IAG%27%2C%2701pD0000000JLvAIAW%27%2C%2701pD0000000JR20IAG%27%2C%2701pD0000000JLrQIAW%27%2C%2701pD0000000KG0MIAW%27%2C%2701pD0000000JLrHIAW%27%2C%2701pD0000000JLutIAG%27%2C%2701pD0000000JLs1IAG%27%2C%2701pD0000000JLqoIAG%27%2C%2701pL0000000QTKFIA4%27%2C%2701qD0000000QFPlIAO%27%2C%2701pD0000000KT2MIAW%27%2C%2701pD0000000JLqlIAG%27%2C%2701pD0000000JR1tIAG%27%2C%2701pD0000000JLqTIAW%27%2C%2701pD0000000JLviIAG%27%2C%2701pD0000000KG0KIAW%27%2C%2701pD0000000JLrJIAW%27%2C%2701pL0000000HKjPIAW%27%2C%2701qD0000000Q3K6IAK%27%2C%2701pD0000000JR1zIAG%27%2C%2701pL0000000QlFAIA0%27%2C%2701pD0000000JLqEIAW%27%2C%2701pD0000000JLqiIAG%27%2C%2701pL0000000QqZjIAK%27%2C%2701pD0000000JLrAIAW%27%2C%2701pD0000000KWg8IAG%27%2C%2701pD0000000KFzsIAG%27%2C%2701pD0000000KZCcIAO%27%2C%2701pL0000000QbTvIAK%27%2C%2701pD0000000JR1vIAG%27%2C%2701pD0000000JLsiIAG%27%2C%2701pD0000000KWfYIAW%27%2C%2701pD0000000KWfWIAW%27%2C%2701pL0000000HPlpIAG%27%2C%2701pD0000000JLpPIAW%27%2C%2701pD0000000KHjPIAW%27%2C%2701pD0000000KG0IIAW%27%2C%2701pD0000000JLo9IAG%27%2C%2701pD0000000KT20IAG%27%2C%2701pD0000000KS1ZIAW%27%2C%2701pL0000000Qc7lIAC%27%2C%2701pD0000000JLpdIAG%27%2C%2701pD0000000KFzpIAG%27%2C%2701pD0000000JLtNIAW%27%2C%2701pL0000000HADTIA4%27%2C%2701qL0000000DJLnIAO%27%2C%2701pD0000000JLo7IAG%27%2C%2701pD0000000JLryIAG%27%2C%2701pD0000000KdMHIA0%27%2C%2701pD0000000JLnyIAG%27%2C%2701pD0000000KHjIIAW%27%2C%2701pL0000000HIGfIAO%27%2C%2701pD0000000JLuWIAW%27%2C%2701pD0000000JLoNIAW%27%2C%2701pD0000000JLsZIAW%27%2C%2701pD0000000JLoZIAW%27%2C%2701pL0000000QL3rIAG%27%2C%2701pD0000000JLoLIAW%27%2C%2701pD0000000KWfwIAG%27%2C%2701pL0000000HW4iIAG%27%2C%2701pD0000000KPjtIAG%27%2C%2701pL0000000HVJIIA4%27%2C%2701pD0000000KFzrIAG%27%2C%2701pD0000000KdMPIA0%27%2C%2701pD0000000KT2aIAG%27%2C%2701pD0000000JLu1IAG%27%2C%2701pD0000000JLsoIAG%27%2C%2701pD0000000KT2PIAW%27%2C%2701pL0000000PyDqIAK%27%2C%2701pD0000000JLu7IAG%27%2C%2701pD0000000JLsuIAG%27%2C%2701pD0000000KT2eIAG%27%2C%2701pD0000000KX5xIAG%27%2C%2701pD0000000JLv8IAG%27%2C%2701pD0000000JLtvIAG%27%2C%2701pD0000000JcVDIA0%27%2C%2701pL0000000QcdrIAC%27%2C%2701pD0000000KT1oIAG%27%2C%2701pD0000000KWfqIAG%27%2C%2701pD0000000JR1cIAG%27%2C%2701pD0000000JyfcIAC%27%2C%2701pD0000000JLtVIAW%27%2C%2701pD0000000Kd0YIAS%27%2C%2701pD0000000KX5yIAG%27%2C%2701pD0000000KFzvIAG%27%2C%2701pD0000000JLtjIAG%27%2C%2701pD0000000KfUlIAK%27%2C%2701pD0000000JLoEIAW%27%2C%2701pD0000000KS1aIAG%27%2C%2701qD0000000Q3K9IAK%27%2C%2701pL0000000QjDqIAK%27%2C%2701pL0000000PyDpIAK%27%2C%2701pD0000000KS1cIAG%27%2C%2701pD0000000Jyf6IAC%27%2C%2701pL0000000HEBbIAO%27%2C%2701pL0000000Ql4WIAS%27%2C%2701pD0000000JLuKIAW%27%2C%2701pD0000000Jyf9IAC%27%2C%2701qD0000000Q3JoIAK%27%2C%2701qD0000000Q3JsIAK%27%2C%2701pD0000000JR28IAG%27%2C%2701pD0000000JLoKIAW%27%2C%2701pD0000000KPjyIAG%27%2C%2701pL0000000PyDhIAK%27%2C%2701qD0000000Q3JqIAK%27%2C%2701pD0000000JLqXIAW%27%2C%2701pL0000000QW0jIAG%27%2C%2701pD0000000JLvHIAW%27%2C%2701pD0000000KT2dIAG%27%2C%2701pL0000000QMaIIAW%27%2C%2701pD0000000KfUhIAK%27%2C%2701pD0000000JLvLIAW%27%2C%2701pL0000000QTKKIA4%27%2C%2701pD0000000JaYrIAK%27%2C%2701pD0000000JLpwIAG%27%2C%2701pD0000000JLr9IAG%27%2C%2701pL0000000HKBhIAO%27%2C%2701pL0000000HUiMIAW%27%2C%2701pD0000000JLugIAG%27%2C%2701qD0000000QAhkIAG%27%2C%2701pL0000000QTKMIA4%27%2C%2701pL0000000HYScIAO%27%2C%2701pL0000000QddxIAC%27%2C%2701pD0000000JyzgIAC%27%2C%2701pD0000000JLsFIAW%27%2C%2701pD0000000JLpgIAG%27%2C%2701pD0000000JLqKIAW%27%2C%2701pD0000000JLplIAG%27%2C%2701pL0000000HIHsIAO%27%2C%2701pD0000000JLofIAG%27%2C%2701qL00000000o1JIAQ%27%2C%2701pD0000000Ka8nIAC%27%2C%2701pL0000000HEs6IAG%27%2C%2701pD0000000JR1iIAG%27%2C%2701pD0000000JLv5IAG%27%2C%2701pD0000000JLtsIAG%27%2C%2701pL0000000HUjFIAW%27%2C%2701pD0000000JLsrIAG%27%2C%2701pD0000000JLu4IAG%27%2C%2701pD0000000Kd0cIAC%27%2C%2701pL0000000QeXqIAK%27%2C%2701pD0000000KFzcIAG%27%2C%2701pD0000000JLvcIAG%27%2C%2701pD0000000JR2DIAW%27%2C%2701pL0000000LrsxIAC%27%2C%2701pD0000000Ka8jIAC%27%2C%2701pD0000000JLtSIAW%27%2C%2701pL0000000HFNJIA4%27%2C%2701qD0000000QFMJIA4%27%2C%2701pD0000000KWfyIAG%27%2C%2701pD0000000JLqMIAW%27%2C%2701pD0000000JLpjIAG%27%2C%2701pD0000000JRS6IAO%27%2C%2701pD0000000JyfPIAS%27%2C%2701pD0000000JLpGIAW%27%2C%2701pD0000000KPjrIAG%27%2C%2701pD0000000JLtPIAW%27%2C%2701pD0000000KG0HIAW%27%2C%2701pD0000000JLsBIAW%27%2C%2701pL0000000HHDkIAO%27%2C%2701pD0000000JLvuIAG%27%2C%2701pD0000000JLtcIAG%27%2C%2701pD0000000JLvDIAW%27%2C%2701pD0000000KWfTIAW%27%2C%2701pL0000000LtdpIAC%27%2C%2701pL0000000H6uiIAC%27%2C%2701pD0000000Kd0LIAS%27%2C%2701pD0000000JLpOIAW%27%2C%2701pD0000000JLuoIAG%27%2C%2701pL0000000H8XbIAK%27%2C%2701pD0000000KFzJIAW%27%2C%2701pD0000000JLraIAG%27%2C%2701pD0000000JLuDIAW%27%2C%2701pD0000000KT2IIAW%27%2C%2701pD0000000JLucIAG%27%2C%2701pD0000000JLvqIAG%27%2C%2701pD0000000JLq0IAG%27%2C%2701pD0000000JLonIAG%27%2C%2701pL0000000QlYCIA0%27%2C%2701pD0000000KT1SIAW%27%2C%2701pD0000000KPjvIAG%27%2C%2701pL0000000Q4JeIAK%27%2C%2701pD0000000KT1hIAG%27%2C%2701pD0000000KT28IAG%27%2C%2701pD0000000KT2AIAW%27%2C%2701pD0000000JLtzIAG%27%2C%2701pD0000000KWfhIAG%27%2C%2701pD0000000KFzzIAG%27%2C%2701pD0000000Ka8zIAC%27%2C%2701pD0000000JLoWIAW%27%2C%2701pL0000000HHvNIAW%27%2C%2701pL0000000HPlaIAG%27%2C%2701pD0000000JR1xIAG%27%2C%2701pD0000000KT24IAG%27%2C%2701pD0000000JLreIAG%27%2C%2701pD0000000JyfJIAS%27%2C%2701pD0000000KT1WIAW%27%2C%2701pL0000000HW9JIAW%27%2C%2701pD0000000JLnvIAG%27%2C%2701pD0000000JLp8IAG%27%2C%2701pL0000000QpxaIAC%27%2C%2701pD0000000JyfWIAS%27%2C%2701pD0000000JLsUIAW%27%2C%2701pD0000000JyevIAC%27%2C%2701pD0000000KWfQIAW%27%2C%2701pD0000000KWfzIAG%27%2C%2701pD0000000JLq1IAG%27%2C%2701pD0000000JLooIAG%27%2C%2701pD0000000JLpMIAW%27%2C%2701pL0000000Q0oDIAS%27%2C%2701pD0000000JLq8IAG%27%2C%2701pD0000000JLovIAG%27%2C%2701pL0000000QMbaIAG%27%2C%2701pD0000000KFzPIAW%27%2C%2701pD0000000KPjpIAG%27%2C%2701pL0000000Qc7qIAC%27%2C%2701pL0000000QTKEIA4%27%2C%2701pD0000000KWfUIAW%27%2C%2701pD0000000Kd0TIAS%27%2C%2701pD0000000JLuNIAW%27%2C%2701pD0000000JLpWIAW%27%2C%2701pL0000000LnyXIAS%27%2C%2701pD0000000JLqzIAG%27%2C%2701pL0000000QdhkIAC%27%2C%2701pD0000000JyfGIAS%27%2C%2701pL0000000QrDPIA0%27%2C%2701pD0000000KT1XIAW%27%2C%2701pD0000000KWg6IAG%27%2C%2701pL0000000LlJXIA0%27%2C%2701pL0000000QjmlIAC%27%2C%2701pL0000000HPIYIA4%27%2C%2701pL0000000PyDlIAK%27%2C%2701pL0000000HWKgIAO%27%2C%2701pD0000000KWg2IAG%27%2C%2701pD0000000JLrtIAG%27%2C%2701pD0000000JLt6IAG%27%2C%2701pD0000000KWfKIAW%27%2C%2701pD0000000KWg5IAG%27%2C%2701pD0000000JLolIAG%27%2C%2701pD0000000JaYuIAK%27%2C%2701pD0000000KWfMIAW%27%2C%2701pL0000000QTKAIA4%27%2C%2701pD0000000KT29IAG%27%2C%2701pD0000000JLsNIAW%27%2C%2701pL0000000HPPjIAO%27%2C%2701qD0000000QDGCIA4%27%2C%2701pD0000000KT1rIAG%27%2C%2701pD0000000KdMCIA0%27%2C%2701pD0000000KdMTIA0%27%2C%2701pD0000000KdMLIA0%27%2C%2701pD0000000KFzVIAW%27%2C%2701pD0000000KdMJIA0%27%2C%2701pD0000000JLrmIAG%27%2C%2701pD0000000KT2SIAW%27%2C%2701pD0000000KG0EIAW%27%2C%2701pD0000000JLqgIAG%27%2C%2701pD0000000KT1fIAG%27%2C%2701pL0000000QbObIAK%27%2C%2701pD0000000Jyf7IAC%27%2C%2701pD0000000JLsEIAW%27%2C%2701pD0000000JLveIAG%27%2C%2701pD0000000JLvrIAG%27%2C%2701pL0000000HD3HIAW%27%2C%2701pD0000000Kd0PIAS%27%2C%2701pL0000000Lr3GIAS%27%2C%2701pD0000000KFzNIAW%27%2C%2701pD0000000JLtmIAG%27%2C%2701pD0000000KT2GIAW%27%2C%2701pD0000000KdMVIA0%27%2C%2701pL0000000QdiOIAS%27%2C%2701pL0000000QnmpIAC%27%2C%2701pD0000000JLrdIAG%27%2C%2701pD0000000KbX3IAK%27%2C%2701pL0000000HQvgIAG%27%2C%2701qD0000000Q3JxIAK%27%2C%2701pD0000000JLqHIAW%27%2C%2701pD0000000KT2HIAW%27%2C%2701pL0000000Qp1bIAC%27%2C%2701pD0000000JLrYIAW%27%2C%2701pD0000000KWffIAG%27%2C%2701pD0000000JLuiIAG%27%2C%2701pD0000000JLueIAG%27%2C%2701pD0000000JR26IAG%27%2C%2701pD0000000JLuwIAG%27%2C%2701qD0000000Q4eVIAS%27%2C%2701pD0000000JLqQIAW%27%2C%2701pD0000000JR1jIAG%27%2C%2701pD0000000JR2CIAW%27%2C%2701pD0000000JLqxIAG%27%2C%2701pD0000000JLvQIAW%27%2C%2701pD0000000KG0BIAW%27%2C%2701pL0000000HWyqIAG%27%2C%2701pD0000000JLvFIAW%27%2C%2701pD0000000JR1qIAG%27%2C%2701pL0000000HVQEIA4%27%2C%2701pD0000000JLppIAG%27%2C%2701pD0000000JLr2IAG%27%2C%2701pD0000000JLuCIAW%27%2C%2701pD0000000JLpYIAW%27%2C%2701pD0000000JR1sIAG%27%2C%2701pD0000000JLupIAG%27%2C%2701qL0000000DLI7IAO%27%2C%2701pD0000000JLtRIAW%27%2C%2701pD0000000JLvpIAG%27%2C%2701pL0000000PyDgIAK%27%2C%2701qD0000000Q3K1IAK%27%2C%2701pD0000000JLpFIAW%27%2C%2701pD0000000JLtbIAG%27%2C%2701pD0000000JLtgIAG%27%2C%2701pD0000000JLoxIAG%27%2C%2701qD0000000Q3KBIA0%27%2C%2701pL0000000HCEsIAO%27%2C%2701pD0000000KS1WIAW%27%2C%2701pL0000000PyDeIAK%27%2C%2701pD0000000KWfbIAG%27%2C%2701pD0000000JLoeIAG%27%2C%2701pL0000000HVhjIAG%27%2C%2701pD0000000JLsbIAG%27%2C%2701pD0000000KG0DIAW%27%2C%2701pL0000000QjBkIAK%27%2C%2701pD0000000JLq9IAG%27%2C%2701pD0000000JLowIAG%27%2C%2701pD0000000JLsjIAG%27%2C%2701pD0000000KWftIAG%27%2C%2701pL0000000PyDUIA0%27%2C%2701pD0000000JLqcIAG%27%2C%2701pL0000000QpxGIAS%27%2C%2701pL0000000HKIxIAO%27%2C%2701pD0000000JLslIAG%27%2C%2701pL0000000QbPZIA0%27%2C%2701pD0000000KG02IAG%27%2C%2701pD0000000JLpLIAW%27%2C%2701pD0000000JLo3IAG%27%2C%2701pD0000000JR1yIAG%27%2C%2701pL0000000HHDpIAO%27%2C%2701pD0000000KZCbIAO%27%2C%2701pD0000000JLtCIAW%27%2C%2701pD0000000JLs5IAG%27%2C%2701pD0000000JLqsIAG%27%2C%2701pD0000000JLpXIAW%27%2C%2701pD0000000JLrDIAW%27%2C%2701pD0000000JLsqIAG%27%2C%2701pD0000000JLu3IAG%27%2C%2701pD0000000JyfNIAS%27%2C%2701pD0000000KdMEIA0%27%2C%2701pD0000000JyfKIAS%27%2C%2701pD0000000Ka93IAC%27%2C%2701pD0000000KT2ZIAW%27%2C%2701pD0000000Jyf3IAC%27%2C%2701pD0000000KT1wIAG%27%2C%2701pD0000000KfUiIAK%27%2C%2701pD0000000KT1uIAG%27%2C%2701pD0000000KWfvIAG%27%2C%2701pD0000000JyzhIAC%27%2C%2701pD0000000Kd0aIAC%27%2C%2701pD0000000KT1yIAG%27%2C%2701pD0000000JLqAIAW%27%2C%2701pD0000000JLtKIAW%27%2C%2701pL0000000HPUeIAO%27%2C%2701pL0000000QeZIIA0%27%2C%2701pD0000000JLtMIAW%27%2C%2701pD0000000Ka8pIAC%27%2C%2701pD0000000KT2VIAW%27%2C%2701pD0000000KWfrIAG%27%2C%2701pD0000000JLvJIAW%27%2C%2701pL0000000QTKJIA4%27%2C%2701pD0000000KT2kIAG%27%2C%2701pD0000000JLvfIAG%27%2C%2701pD0000000KS1XIAW%27%2C%2701pD0000000KFzLIAW%27%2C%2701pL0000000HW9dIAG%27%2C%2701pD0000000KT2TIAW%27%2C%2701pD0000000JLsIIAW%27%2C%2701pD0000000Kd0NIAS%27%2C%2701qL00000000oQYIAY%27%2C%2701pD0000000JLuhIAG%27%2C%2701pD0000000KT1sIAG%27%2C%2701qD0000000Q3JvIAK%27%2C%2701pD0000000JyvBIAS%27%2C%2701pD0000000KT2hIAG%27%2C%2701qD0000000QDG7IAO%27%2C%2701pL0000000Qb8TIAS%27%2C%2701pD0000000JLvIIAW%27%2C%2701pL0000000QLJaIAO%27%2C%2701pD0000000JLvjIAG%27%2C%2701pD0000000KFzTIAW%27%2C%2701pD0000000JLrTIAW%27%2C%2701pD0000000JLv7IAG%27%2C%2701pD0000000JLtuIAG%27%2C%2701pD0000000JLoCIAW%27%2C%2701pD0000000JyerIAC%27%2C%2701pD0000000JLokIAG%27%2C%2701pD0000000JyfbIAC%27%2C%2701pD0000000JLoHIAW%27%2C%2701pL0000000HLD0IAO%27%2C%2701pL0000000QlYWIA0%27%2C%2701pD0000000JLrhIAG%27%2C%2701qD0000000QAXsIAO%27%2C%2701pL0000000H7F2IAK%27%2C%2701pL0000000Qp1HIAS%27%2C%2701pD0000000JaYmIAK%27%2C%2701pD0000000JLoBIAW%27%2C%2701pL0000000QnndIAC%27%2C%2701pD0000000KdMSIA0%27%2C%2701pL0000000Lp1mIAC%27%2C%2701pD0000000JLuHIAW%27%2C%2701pD0000000JNXHIA4%27%2C%2701pD0000000JLrSIAW%27%2C%2701pL0000000PyDmIAK%27%2C%2701pD0000000JLpIIAW%27%2C%2701pL0000000QL33IAG%27%2C%2701pD0000000JNXJIA4%27%2C%2701pL0000000HD0wIAG%27%2C%2701pL0000000QTKOIA4%27%2C%2701pD0000000JLtOIAW%27%2C%2701pL0000000PyDsIAK%27%2C%2701pD0000000KfUpIAK%27%2C%2701pD0000000JLuTIAW%27%2C%2701pD0000000KPjxIAG%27%2C%2701pD0000000JNXFIA4%27%2C%2701pD0000000JLsOIAW%27%2C%2701pD0000000JLoFIAW%27%2C%2701pD0000000JRbhIAG%27%2C%2701pD0000000JLuVIAW%27%2C%2701pL0000000HF4RIAW%27%2C%2701qD0000000QAXoIAO%27%2C%2701pL0000000HEBWIA4%27%2C%2701qD0000000QErPIAW%27%2C%2701pD0000000Ka92IAC%27%2C%2701qD0000000Q3JtIAK%27%2C%2701pD0000000JLrnIAG%27%2C%2701pD0000000JLt0IAG%27%2C%2701pD0000000KdMGIA0%27%2C%2701pD0000000JLrBIAW%27%2C%2701pL0000000HDn0IAG%27%2C%2701pD0000000JLvdIAG%27%2C%2701pD0000000KWfeIAG%27%2C%2701pD0000000JLuLIAW%27%2C%2701pD0000000JLs4IAG%27%2C%2701pD0000000JLqrIAG%27%2C%2701pL0000000HX6LIAW%27%2C%2701pD0000000KG05IAG%27%2C%2701qD0000000Q3JpIAK%27%2C%2701pD0000000Jm6sIAC%27%2C%2701pD0000000Ka8fIAC%27%2C%2701pD0000000KZLOIA4%27%2C%2701pD0000000KFzwIAG%27%2C%2701pD0000000JLohIAG%27%2C%2701pD0000000JLu0IAG%27%2C%2701pD0000000JLsnIAG%27%2C%2701pD0000000JLqaIAG%27%2C%2701pD0000000JLvlIAG%27%2C%2701pD0000000KbReIAK%27%2C%2701pD0000000JLpRIAW%27%2C%2701pD0000000JR1fIAG%27%2C%2701pL0000000HLCvIAO%27%2C%2701pL0000000H7jvIAC%27%2C%2701pD0000000JY3zIAG%27%2C%2701pD0000000Ka8rIAC%27%2C%2701pD0000000JLrkIAG%27%2C%2701pL0000000QdyqIAC%27%2C%2701pD0000000Kd0hIAC%27%2C%2701qD0000000QEXoIAO%27%2C%2701pL0000000QTKBIA4%27%2C%2701pD0000000JLrlIAG%27%2C%2701pL0000000Qkm3IAC%27%2C%2701pL0000000H9XhIAK%27%2C%2701pD0000000JLtkIAG%27%2C%2701pD0000000JLshIAG%27%2C%2701pL0000000HPlVIAW%27%2C%2701pD0000000KT2QIAW%27%2C%2701pD0000000KT1kIAG%27%2C%2701pD0000000KFzoIAG%27%2C%2701qD0000000QErUIAW%27%2C%2701pL0000000HPQhIAO%27%2C%2701pL0000000QpwSIAS%27%2C%2701pL0000000Qr9SIAS%27%2C%2701pD0000000JLpDIAW%27%2C%2701pD0000000JLsMIAW%27%2C%2701pD0000000KFzOIAW%27%2C%2701pD0000000KdMAIA0%27%2C%2701pD0000000JLtIIAW%27%2C%2701pD0000000JLp5IAG%27%2C%2701pD0000000JyeyIAC%27%2C%2701qD0000000QDG4IAO%27%2C%2701pD0000000JaYpIAK%27%2C%2701pD0000000KT1pIAG%27%2C%2701pL0000000H7k0IAC%27%2C%2701pD0000000Ka8kIAC%27%2C%2701pD0000000KPjqIAG%27%2C%2701pD0000000Kd0eIAC%27%2C%2701pL0000000HD11IAG%27%2C%2701pD0000000JyetIAC%27%2C%2701pD0000000JLoTIAW%27%2C%2701pD0000000JyfZIAS%27%2C%2701pD0000000JLtoIAG%27%2C%2701pD0000000KFziIAG%27%2C%2701pD0000000JLv1IAG%27%2C%2701pD0000000JLqVIAW%27%2C%2701pD0000000KT1dIAG%27%2C%2701pD0000000JLoSIAW%27%2C%2701pD0000000KFzgIAG%27%2C%2701pD0000000JyfUIAS%27%2C%2701pD0000000JLpuIAG%27%2C%2701pD0000000JLr7IAG%27%2C%2701pD0000000JR1mIAG%27%2C%2701qL0000000DIFAIA4%27%2C%2701pD0000000KWfHIAW%27%2C%2701pD0000000JLp4IAG%27%2C%2701pL0000000PyDaIAK%27%2C%2701pD0000000Ka8yIAC%27%2C%2701pL0000000HPteIAG%27%2C%2701pD0000000KG07IAG%27%2C%2701pD0000000JSpEIAW%27%2C%2701pD0000000Kd0kIAC%27%2C%2701pD0000000Kd0iIAC%27%2C%2701pL0000000H7qcIAC%27%2C%2701pD0000000Kd0QIAS%27%2C%2701pD0000000K4VFIA0%27%2C%2701pD0000000JLq3IAG%27%2C%2701pD0000000JLoqIAG%27%2C%2701pD0000000KT2EIAW%27%2C%2701pD0000000KWfnIAG%27%2C%2701pL0000000QjnAIAS%27%2C%2701pD0000000JR1uIAG%27%2C%2701pD0000000KG03IAG%27%2C%2701pL0000000QkdaIAC%27%2C%2701pL0000000QTKSIA4%27%2C%2701pD0000000JLqSIAW%27%2C%2701pL0000000H6unIAC%27%2C%2701pD0000000KdMIIA0%27%2C%2701pD0000000KdMUIA0%27%2C%2701pL0000000QbOWIA0%27%2C%2701pL0000000PyDYIA0%27%2C%2701pL0000000QksVIAS%27%2C%2701pD0000000KFzRIAW%27%2C%2701pD0000000KdM8IAK%27%2C%2701pD0000000JLrbIAG%27%2C%2701pL0000000HAERIA4%27%2C%2701pL0000000LltkIAC%27%2C%2701pD0000000JLszIAG%27%2C%2701pD0000000JyfBIAS%27%2C%2701qD0000000QDG8IAO%27%2C%2701pL0000000HKA0IAO%27%2C%2701pL0000000Qnn9IAC%27%2C%2701pD0000000KFzxIAG%27%2C%2701pD0000000JLvtIAG%27%2C%2701pD0000000KT2CIAW%27%2C%2701pD0000000JLsCIAW%27%2C%2701pD0000000KWfVIAW%27%2C%2701pD0000000KdMMIA0%27%2C%2701pD0000000JLozIAG%27%2C%2701pL0000000HKd7IAG%27%2C%2701pD0000000JLoJIAW%27%2C%2701pD0000000KWfNIAW%27%2C%2701pD0000000KdMQIA0%27%2C%2701pD0000000JLvhIAG%27%2C%2701pD0000000KT1bIAG%27%2C%2701pL0000000QTK8IAO%27%2C%2701pD0000000JLprIAG%27%2C%2701pD0000000JLr4IAG%27%2C%2701pD0000000JLqJIAW%27%2C%2701pL0000000HUuXIAW%27%2C%2701pD0000000JLuPIAW%27%2C%2701pD0000000JLpzIAG%27%2C%2701pL0000000QQodIAG%27%2C%2701pD0000000JLtAIAW%27%2C%2701qD0000000QErSIAW%27%2C%2701pD0000000JLrpIAG%27%2C%2701pD0000000JLt2IAG%27%2C%2701qD0000000QAXqIAO%27%2C%2701pL0000000HPUZIA4%27%2C%2701pD0000000KdM9IAK%27%2C%2701pD0000000JLogIAG%27%2C%2701pD0000000JLpiIAG%27%2C%2701pD0000000Jyf2IAC%27%2C%2701pD0000000JLpaIAG%27%2C%2701pL0000000HErNIAW%27%2C%2701pL0000000QTKQIA4%27%2C%2701pD0000000JyfEIAS%27%2C%2701qD0000000Q3K5IAK%27%2C%2701pD0000000KJawIAG%27%2C%2701pD0000000JLocIAG%27%2C%2701pL0000000HVi8IAG%27%2C%2701pD0000000JLvmIAG%27%2C%2701pD0000000JR1dIAG%27%2C%2701pD0000000KT2LIAW%27%2C%2701pL0000000HF2aIAG%27%2C%2701qD0000000Q3JmIAK%27%2C%2701pD0000000JLqBIAW%27%2C%2701pD0000000JR1gIAG%27%2C%2701pL0000000PyDiIAK%27%2C%2701pD0000000JLv9IAG%27%2C%2701pD0000000JR2EIAW%27%2C%2701pD0000000JLtwIAG%27%2C%2701pD0000000KWg7IAG%27%2C%2701pD0000000KFzKIAW%27%2C%2701pD0000000KT1gIAG%27%2C%2701pD0000000KWfJIAW%27%2C%2701pD0000000JLsQIAW%27%2C%2701pL0000000QdY4IAK%27%2C%2701pD0000000JR23IAG%27%2C%2701pD0000000Kd0XIAS%27%2C%2701pD0000000JLuXIAW%27%2C%2701pD0000000JLrPIAW%27%2C%2701pD0000000JLvXIAW%27%2C%2701pD0000000KWfkIAG%27%2C%2701pD0000000JLuZIAW%27%2C%2701qD0000000Q8vZIAS%27%2C%2701pD0000000JLuGIAW%27%2C%2701qD0000000Q3JyIAK%27%2C%2701pD0000000JRbgIAG%27%2C%2701pD0000000JyfVIAS%27%2C%2701pL0000000QmwFIAS%27%2C%2701pL0000000PyDVIA0%27%2C%2701pD0000000JLpAIAW%27%2C%2701pD0000000JyfHIAS%27%2C%2701pD0000000JLtfIAG%27%2C%2701pD0000000JR1nIAG%27%2C%2701pL0000000QTsEIAW%27%2C%2701pD0000000JLtyIAG%27%2C%2701pD0000000JLuzIAG%27%2C%2701pD0000000KWfjIAG%27%2C%2701qD0000000QDjoIAG%27%2C%2701pD0000000JyvAIAS%27%2C%2701pD0000000JLqmIAG%27%2C%2701pL0000000HPObIAO%27%2C%2701pL0000000QbWzIAK%27%2C%2701pD0000000JaYqIAK%27%2C%2701pD0000000KPjuIAG%27%2C%2701qD0000000Q3JrIAK%27%2C%2701pD0000000JLpcIAG%27%2C%2701pD0000000KT2NIAW%27%2C%2701pL0000000H6s3IAC%27%2C%2701pD0000000JR21IAG%27%2C%2701pD0000000KT1nIAG%27%2C%2701qD0000000QDGBIA4%27%2C%2701pL0000000HUcdIAG%27%2C%2701pD0000000KWfaIAG%27%2C%2701pL0000000HCH8IAO%27%2C%2701pL0000000Qr98IAC%27%2C%2701pL0000000Qpw8IAC%27%2C%2701pD0000000JyeuIAC%27%2C%2701pD0000000KT1mIAG%27%2C%2701pD0000000KT2OIAW%27%2C%2701pL0000000QTKHIA4%27%2C%2701pD0000000JLujIAG%27%2C%2701pD0000000KdMRIA0%27%2C%2701pD0000000JLrcIAG%27%2C%2701pD0000000KS1bIAG%27%2C%2701pD0000000KG0FIAW%27%2C%2701pD0000000KHjJIAW%27%2C%2701pD0000000JLulIAG%27%2C%2701pD0000000JLs8IAG%27%2C%2701pD0000000JLqvIAG%27%2C%2701pD0000000JLvsIAG%27%2C%2701pD0000000KG0CIAW%27%2C%2701pL0000000HMmaIAG%27%2C%2701pD0000000JLsDIAW%27%2C%2701pD0000000KfUnIAK%27%2C%2701pD0000000KbRKIA0%27%2C%2701pD0000000JLrWIAW%27%2C%2701pD0000000KWg1IAG%27%2C%2701pL0000000QLImIAO%27%2C%2701pD0000000JLq2IAG%27%2C%2701pD0000000JLopIAG%27%2C%2701pD0000000JLuaIAG%27%2C%2701pD0000000KT2WIAW%27%2C%2701pD0000000JLu8IAG%27%2C%2701pD0000000JLsvIAG%27%2C%2701pD0000000JLrsIAG%27%2C%2701pD0000000JLt5IAG%27%2C%2701pD0000000JLrNIAW%27%2C%2701pD0000000JLvbIAG%27%2C%2701pL0000000QONuIAO%27%2C%2701pD0000000JLpQIAW%27%2C%2701pD0000000JLvBIAW%27%2C%2701pD0000000KbX4IAK%27%2C%2701pD0000000JLsgIAG%27%2C%2701qL00000000rUxIAI%27%2C%2701pD0000000KT1vIAG%27%2C%2701pL0000000HUuDIAW%27%2C%2701pD0000000JLo8IAG%27%2C%2701pD0000000JLvKIAW%27%2C%2701pD0000000JLtWIAW%27%2C%2701pD0000000Ka8mIAC%27%2C%2701pD0000000JLvMIAW%27%2C%2701pD0000000JLrKIAW%27%2C%2701pD0000000JR2FIAW%27%2C%2701pD0000000KG01IAG%27%2C%2701pD0000000JLu9IAG%27%2C%2701pD0000000JLswIAG%27%2C%2701pD0000000JLqFIAW%27%2C%2701pD0000000JyfOIAS%27%2C%2701pD0000000KdM6IAK%27%2C%2701qD0000000QFMIIA4%27%2C%2701pD0000000KT2cIAG%27%2C%2701pD0000000Kd0VIAS%27%2C%2701pD0000000JLo1IAG%27%2C%2701pD0000000JLtiIAG%27%2C%2701pD0000000JLvSIAW%27%2C%2701pD0000000KWg3IAG%27%2C%2701pD0000000JRS5IAO%27%2C%2701pD0000000JLpkIAG%27%2C%2701pD0000000JLtDIAW%27%2C%2701pD0000000JLtXIAW%27%2C%2701pD0000000JLrOIAW%27%2C%2701pL0000000Qp9uIAC%27%2C%2701pD0000000KFzlIAG%27%2C%2701pD0000000KWfZIAW%27%2C%2701pD0000000JyfCIAS%27%2C%2701pD0000000JLuSIAW%27%2C%2701pL0000000HP0jIAG%27%2C%2701pD0000000JLscIAG%27%2C%2701pD0000000JLsRIAW%27%2C%2701pD0000000JLoMIAW%27%2C%2701pD0000000KHjOIAW%27%2C%2701pD0000000KT1eIAG%27%2C%2701pD0000000JLs0IAG%27%2C%2701pD0000000JLpxIAG%27%2C%2701pD0000000JLqnIAG%27%2C%2701pD0000000JLtrIAG%27%2C%2701pD0000000JLv4IAG%27%2C%2701pD0000000KWfmIAG%27%2C%2701pD0000000JSpDIAW%27%2C%2701pD0000000KG0LIAW%27%2C%2701pD0000000KdMOIA0%27%2C%2701pL0000000LltVIAS%27%2C%2701pL0000000QbPUIA0%27%2C%2701pD0000000JLqYIAW%27%2C%2701pD0000000JLqjIAG%27%2C%2701pD0000000JLvkIAG%27%2C%2701pL0000000PyDrIAK%27%2C%2701pD0000000KFzyIAG%27%2C%2701pL0000000QmgqIAC%27%2C%2701pD0000000JLurIAG%27%2C%2701pD0000000JLqhIAG%27%2C%2701pL0000000HKmxIAG%27%2C%2701pD0000000JLqZIAW%27%2C%2701pD0000000JR2AIAW%27%2C%2701pD0000000KPjwIAG%27%2C%2701pD0000000JLo5IAG%27%2C%2701pD0000000KT2FIAW%27%2C%2701pD0000000JaYkIAK%27%2C%2701pD0000000JLpyIAG%27%2C%2701pL0000000QiBeIAK%27%2C%2701pD0000000KWfgIAG%27%2C%2701pD0000000JR2BIAW%27%2C%2701pD0000000JLpHIAW%27%2C%2701pL0000000PyDXIA0%27%2C%2701pD0000000JLrqIAG%27%2C%2701pD0000000JLt3IAG%27%2C%2701pL0000000HUdCIAW%27%2C%2701pD0000000JLuEIAW%27%2C%2701pD0000000KWfoIAG%27%2C%2701pD0000000KS1dIAG%27%2C%2701pD0000000KPjzIAG%27%2C%2701pD0000000JLpeIAG%27%2C%2701pD0000000JR1eIAG%27%2C%2701pD0000000JLrIIAW%27%2C%2701pL0000000QQcwIAG%27%2C%2701pD0000000KWfRIAW%27%2C%2701qD0000000QDUyIAO%27%2C%2701pD0000000Kd0fIAC%27%2C%2701pD0000000JaYsIAK%27%2C%2701pD0000000JLuJIAW%27%2C%2701pD0000000JLtdIAG%27%2C%2701pD0000000KFztIAG%27%2C%2701pD0000000JLuAIAW%27%2C%2701pD0000000JLpfIAG%27%2C%2701pD0000000KT27IAG%27%2C%2701pD0000000JLoYIAW%27%2C%2701pD0000000KFzfIAG%27%2C%2701pD0000000KeTNIA0%27%2C%2701pL0000000QTKGIA4%27%2C%2701pD0000000JLoOIAW%27%2C%2701pL0000000QdEsIAK%27%2C%2701pL0000000QTKDIA4%27%2C%2701pD0000000JyfAIAS%27%2C%2701pD0000000KdMBIA0%27%2C%2701pL0000000QTKCIA4%27%2C%2701pD0000000KT2iIAG%27%2C%2701pD0000000KWfSIAW%27%2C%2701pD0000000KT1VIAW%27%2C%2701pD0000000JY3yIAG%27%2C%2701pD0000000JLnxIAG%27%2C%2701pD0000000JyfMIAS%27%2C%2701pD0000000JRi4IAG%27%2C%2701pD0000000JLqOIAW%27%2C%2701pD0000000JLpmIAG%27%2C%2701pD0000000Kd0bIAC%27%2C%2701pL0000000HDpGIAW%27%2C%2701pL0000000Qcl7IAC%27%2C%2701pD0000000KT1zIAG%27%2C%2701pL0000000HKgLIAW%27%2C%2701pD0000000KFzMIAW%27%2C%2701pL0000000HKg1IAG%27%2C%2701pD0000000JLoAIAW%27%2C%2701pD0000000KWg4IAG%27%2C%2701pD0000000JLnuIAG%27%2C%2701pD0000000JLp7IAG%27%2C%2701pD0000000Ka8hIAC%27%2C%2701pL0000000LvO3IAK%27%2C%2701pD0000000JLseIAG%27%2C%2701pD0000000KfUkIAK%27%2C%2701pD0000000JLpnIAG%27%2C%2701pD0000000JLr0IAG%27%2C%2701pD0000000JLsHIAW%27%2C%2701pL0000000QbxvIAC%27%2C%2701pD0000000Kd0jIAC%27%2C%2701pD0000000JLoVIAW%27%2C%2701pD0000000JLqGIAW%27%2C%2701pD0000000KHjQIAW%27%2C%2701pD0000000JLtFIAW%27%2C%2701pL0000000Qik5IAC%27%2C%2701pL0000000QcApIAK%27%2C%2701pD0000000JaYwIAK%27%2C%2701pL0000000HUi7IAG%27%2C%2701pD0000000JLp0IAG%27%2C%2701pD0000000KFzdIAG%27%2C%2701pD0000000JLsLIAW%27%2C%2701pD0000000JLp1IAG%27%2C%2701pL0000000HE3SIAW%27%2C%2701pD0000000JaYxIAK%27%2C%2701qD0000000QDG9IAO%27%2C%2701pD0000000JLvEIAW%27%2C%2701pD0000000KG0JIAW%27%2C%2701pD0000000JLunIAG%27%2C%2701pD0000000JLuMIAW%27%2C%2701pL0000000HBxhIAG%27%2C%2701pD0000000Ka8vIAC%27%2C%2701pD0000000JLvoIAG%27%2C%2701pD0000000JLudIAG%27%2C%2701pD0000000Ka8tIAC%27%2C%2701pD0000000JLqLIAW%27%2C%2701pL0000000QOgrIAG%27%2C%2701pD0000000JLq5IAG%27%2C%2701pD0000000JLosIAG%27%2C%2701pD0000000JLtlIAG%27%2C%2701pD0000000JLvOIAW%27%2C%2701pD0000000JyfIIAS%27%2C%2701pD0000000JLoXIAW%27%2C%2701pL0000000Q0mlIAC%27%2C%2701qD0000000QFwkIAG%27%2C%2701pD0000000JLqNIAW%27%2C%2701pD0000000KdMFIA0%27%2C%2701qD0000000QGGGIA4%27%2C%2701pD0000000JLsAIAW%27%2C%2701pD0000000JLpTIAW%27%2C%2701pD0000000JLtTIAW%27%2C%2701pD0000000JLp9IAG%27%2C%2701pD0000000JLnwIAG%27%2C%2701pD0000000JR24IAG%27%2C%2701pD0000000Jm6tIAC%27%2C%2701pL0000000QdyRIAS%27%2C%2701pD0000000JLsTIAW%27%2C%2701pD0000000JLsXIAW%27%2C%2701pD0000000JLssIAG%27%2C%2701pD0000000JLu5IAG%27%2C%2701pL0000000HJ5OIAW%27%2C%2701qD0000000Q3K0IAK%27%2C%2701pL0000000HKbVIAW%27%2C%2701pD0000000KT2JIAW%27%2C%2701pD0000000JLrwIAG%27%2C%2701pD0000000JLt9IAG%27%2C%2701pD0000000JLtpIAG%27%2C%2701pD0000000JLv2IAG%27%2C%2701qL00000000oQnIAI%27%2C%2701pD0000000Kd0MIAS%27%2C%2701pD0000000JR1lIAG%27%2C%2701pD0000000KbX2IAK%27%2C%2701pD0000000JR1pIAG%27%2C%2701pD0000000KWfcIAG%27%2C%2701pL0000000Qp1WIAS%27%2C%2701pD0000000KdMDIA0%27%2C%2701pL0000000Ql4RIAS%27%2C%2701pD0000000KT1RIAW%27%2C%2701pD0000000JLuQIAW%27%2C%2701pD0000000JLomIAG%27%2C%2701pD0000000Kd0ZIAS%27%2C%2701pD0000000K4VDIA0%27%2C%2701qD0000000Q4eUIAS%27%2C%2701pD0000000KFzuIAG%27%2C%2701pL0000000QTK7IAO%27%2C%2701pD0000000KT23IAG%27%2C%2701pD0000000JLoPIAW%27%2C%2701qD0000000Q3K4IAK%27%2C%2701pD0000000JLpVIAW%27%2C%2701pL0000000PyDdIAK%27%2C%2701pD0000000KT21IAG%27%2C%2701pL0000000QiSkIAK%27%2C%2701pL0000000HYS8IAO%27%2C%2701pD0000000KT2KIAW%27%2C%2701pD0000000JLptIAG%27%2C%2701pD0000000JLr6IAG%27%2C%2701pL0000000QWMVIA4%27%2C%2701pL0000000HOfqIAG%27%2C%2701pD0000000JLrgIAG%27%2C%2701pD0000000JyfQIAS%27%2C%2701pD0000000JLq7IAG%27%2C%2701pD0000000JLouIAG%27%2C%2701pD0000000JLqUIAW%27%2C%2701qD0000000Q3K7IAK%27%2C%2701pD0000000JLpNIAW%27%2C%2701pL0000000QcdSIAS%27%2C%2701pD0000000JLqfIAG%27%2C%2701pL0000000PyDbIAK%27%2C%2701pD0000000JLruIAG%27%2C%2701pD0000000JLt7IAG%27%2C%2701pD0000000KT1iIAG%27%2C%2701pL0000000HW9YIAW%27%2C%2701pD0000000KPjsIAG%27%2C%2701pD0000000KFzZIAW%27%2C%2701pD0000000JLrGIAW%27%2C%2701pD0000000JLsVIAW%27%2C%2701pD0000000KFzmIAG%27%2C%2701pD0000000KT1jIAG%27%2C%2701pD0000000KT1YIAW%27%2C%2701pD0000000JLrzIAG%27%2C%2701pL0000000LjGHIA0%27%2C%2701pL0000000HBFVIA4%27%2C%2701qL00000000qtmIAA%27%2C%2701pL0000000LtMZIA0%27%2C%2701pL0000000HUiqIAG%27%2C%2701pD0000000Kd0dIAC%27%2C%2701pD0000000JaYnIAK%27%2C%2701pD0000000KT1qIAG%27%2C%2701pD0000000KT1xIAG%27%2C%2701pD0000000JLqPIAW%27%2C%2701qD0000000QFx4IAG%27%2C%2701pD0000000JLvTIAW%27%2C%2701pD0000000KWg9IAG%27%2C%2701pD0000000JLpKIAW%27%2C%2701pD0000000K6L0IAK%27%2C%2701pD0000000KG00IAG%27%2C%2701pD0000000KT2RIAW%27%2C%2701pD0000000JLrfIAG%27%2C%2701pL0000000QPJ0IAO%27%2C%2701pD0000000JLrLIAW%27%2C%2701pD0000000KT2YIAW%27%2C%2701pD0000000JLvgIAG%27%2C%2701pD0000000JLumIAG%27%2C%2701pD0000000JLvCIAW%27%2C%2701pD0000000JLp3IAG%27%2C%2701pD0000000JLojIAG%27%2C%2701pD0000000KWgAIAW%27%2C%2701pD0000000KWfdIAG%27%2C%2701pD0000000JLuRIAW%27%2C%2701pD0000000JaYjIAK%27%2C%2701pD0000000JLsGIAW%27%2C%2701pD0000000JLo0IAG%27%2C%2701pD0000000JR1rIAG%27%2C%2701pD0000000JLubIAG%27%2C%2701pD0000000Ka8xIAC%27%2C%2701pD0000000JLoRIAW%27%2C%2701pD0000000JLuuIAG%27%2C%2701pL0000000QeBuIAK%27%2C%2701pL0000000QLJBIA4%27%2C%2701pD0000000KfUoIAK%27%2C%2701pD0000000JLskIAG%27%2C%2701pD0000000JLvPIAW%27%2C%2701pD0000000KT2UIAW%27%2C%2701pL0000000Qr93IAC%27%2C%2701pD0000000JR25IAG%27%2C%2701pD0000000JLvVIAW%27%2C%2701pL0000000HPIdIAO%27%2C%2701pD0000000KFzbIAG%27%2C%2701pD0000000JLtqIAG%27%2C%2701pD0000000JLv3IAG%27%2C%2701pD0000000KT1tIAG%27%2C%2701pD0000000JNXIIA4%27%2C%2701pD0000000JLqIIAW%27%2C%2701pD0000000KWfuIAG%27%2C%2701pD0000000KeTOIA0%27%2C%2701pD0000000KHjMIAW%27%2C%2701pD0000000JR29IAG%27%2C%2701qD0000000Q3JnIAK%27%2C%2701pD0000000JLntIAG%27%2C%2701pD0000000JLp6IAG%27%2C%2701qL0000000DKfoIAG%27%2C%2701pL0000000QU8vIAG%27%2C%2701qD0000000Q3JzIAK%27%2C%2701pD0000000JLvNIAW%27%2C%2701pD0000000JLrXIAW%27%2C%2701pD0000000JaYtIAK%27%2C%2701pD0000000JLphIAG%27%2C%2701pD0000000JR27IAG%27%2C%2701pD0000000KfUjIAK%27%2C%2701pD0000000Ka91IAC%27%2C%2701pD0000000KfUgIAK%27%2C%2701pD0000000JLoUIAW%27%2C%2701pL0000000HW6jIAG%27%2C%2701pD0000000JLs9IAG%27%2C%2701pD0000000JLqwIAG%27%2C%2701pD0000000KT2jIAG%27%2C%2701qD0000000QAXrIAO%27%2C%2701pD0000000Ka8lIAC%27%2C%2701pD0000000JLs6IAG%27%2C%2701pD0000000JLqtIAG%27%2C%2701pD0000000JR1kIAG%27%2C%2701pD0000000JLuvIAG%27%2C%2701pD0000000JLuUIAW%27%2C%2701pD0000000JLsxIAG%27%2C%2701pD0000000JLq4IAG%27%2C%2701pD0000000JLorIAG%27%2C%2701pD0000000JLstIAG%27%2C%2701pD0000000JLu6IAG%27%2C%2701pD0000000JLvnIAG%27%2C%2701qD0000000Q3K8IAK%27%2C%2701pD0000000JLrUIAW%27%2C%2701pD0000000JLo2IAG%27%2C%2701pD0000000JLqeIAG%27%2C%2701pD0000000JLtYIAW%27%2C%2701pD0000000JyezIAC%27%2C%2701pD0000000KfUmIAK%27%2C%2701qD0000000Q3JwIAK%27%2C%2701pD0000000JLpSIAW%27%2C%2701pD0000000KFzqIAG%27%2C%2701pL0000000HWKWIA4%27%2C%2701pD0000000JLpZIAW%27%2C%2701pD0000000KbRJIA0%27%2C%2701pD0000000JLuBIAW%27%2C%2701pL0000000HQvbIAG%27%2C%2701pD0000000KS1YIAW%27%2C%2701pD0000000Ka8gIAC%27%2C%2701pD0000000JyfDIAS%27%2C%2701pL0000000QaCFIA0%27%2C%2701pD0000000KT2lIAG%27%2C%2701pD0000000KT2bIAG%27%2C%2701pL0000000QTKNIA4%27%2C%2701pD0000000JLoyIAG%27%2C%2701pD0000000JLv6IAG%27%2C%2701pD0000000JLttIAG%27%2C%2701pD0000000Jp0EIAS%27%2C%2701pD0000000JLtaIAG%27%2C%2701pD0000000JLvWIAW%27%2C%2701pD0000000JLtUIAW%27%2C%2701pD0000000JLtLIAW%27%2C%2701pL0000000PyDcIAK%27%2C%2701pD0000000JLrCIAW%27%2C%2701pD0000000KWflIAG%27%2C%2701pL0000000HE5xIAG%27%2C%2701pD0000000JLrVIAW%27%2C%2701pD0000000KT1TIAW%27%2C%2701pD0000000JLuOIAW%27%2C%2701pD0000000JLqyIAG%27%2C%2701pD0000000JLsdIAG%27%2C%2701pD0000000KG04IAG%27%2C%2701pD0000000JR1oIAG%27%2C%2701pD0000000JLqbIAG%27%2C%2701pD0000000JLrEIAW%27%2C%2701pD0000000KWfGIAW%27%2C%2701pD0000000JLs7IAG%27%2C%2701pD0000000JLquIAG%27%2C%2701pL0000000QTKRIA4%27%2C%2701pD0000000KG08IAG%27%2C%2701pD0000000KT25IAG%27%2C%2701pD0000000JaYlIAK%27%2C%2701pD0000000JLrZIAW%27%2C%2701pD0000000JLtEIAW%27%2C%2701pL0000000HWcVIAW%27%2C%2701pD0000000JLqdIAG%27%2C%2701pD0000000JLrFIAW%27%2C%2701pD0000000JLoIIAW%27%2C%2701pD0000000JLqkIAG%27%2C%2701pL0000000Qj4yIAC%27%2C%2701pL0000000HDVVIA4%27%2C%2701pD0000000JLusIAG%27%2C%2701pL0000000QTKLIA4%27%2C%2701pD0000000KWfxIAG%27%2C%2701pD0000000JaYoIAK%27%2C%2701pD0000000Jyf5IAC%27%2C%2701pD0000000KHjTIAW%27%2C%2701pD0000000JLpoIAG%27%2C%2701pD0000000JLr1IAG%27%2C%2701pL0000000QiczIAC%27%2C%2701pD0000000Kd0KIAS%27%2C%2701pD0000000Jyf1IAC%27%2C%2701pD0000000KT1ZIAW%27%2C%2701pD0000000Jyf4IAC%27%2C%2701pL0000000PyDfIAK%27%2C%2701pD0000000JLtnIAG%27%2C%2701pD0000000JLv0IAG%27%2C%2701pL0000000QbilIAC%27%2C%2701pD0000000KFznIAG%27%2C%2701pD0000000KG0GIAW%27%2C%2701pD0000000KWg0IAG%27%2C%2701pD0000000JLo4IAG%27%2C%2701pL0000000HP0oIAG%27%2C%2701pD0000000JLrxIAG%27%2C%2701pD0000000JLrjIAG%27%2C%2701pD0000000JLpBIAW%27%2C%2701pL0000000QMbVIAW%27%2C%2701pD0000000JLqRIAW%27%2C%2701pD0000000Ka8qIAC%27%2C%2701pL0000000QqBmIAK%27%2C%2701pD0000000KdMNIA0%27%2C%2701pD0000000JLuqIAG%27%2C%2701pD0000000KFzhIAG%27%2C%2701pD0000000JLoaIAG%27%2C%2701pD0000000JLsYIAW%27%2C%2701pD0000000KT1cIAG%27%2C%2701pL0000000Qcs8IAC%27%2C%2701pD0000000JLriIAG%27%2C%2701pD0000000JLtxIAG%27%2C%2701pD0000000JLvGIAW%27%2C%2701pD0000000Ka8iIAC%27%2C%2701pD0000000JyesIAC%27%2C%2701pD0000000JLvZIAW%27%2C%2701pD0000000Jyf8IAC%27%2C%2701pD0000000JR1hIAG%27%2C%2701pD0000000JyfRIAS%27%2C%2701pD0000000JLqWIAW%27%2C%2701pL0000000Q4JdIAK%27%2C%2701pD0000000JLs3IAG%27%2C%2701pD0000000JLqqIAG%27%2C%2701pL0000000HU00IAG%27%2C%2701pD0000000JLuYIAW%27%2C%2701pD0000000JLufIAG%27%2C%2701pL0000000QVNSIA4%27%2C%2701pD0000000JLuyIAG%27%2C%2701pD0000000KWfOIAW%27%2C%2701pD0000000JLsKIAW%27%2C%2701pD0000000JLpvIAG%27%2C%2701pD0000000JLr8IAG%27%2C%2701pD0000000JLthIAG%27%2C%2701pD0000000KdM7IAK%27%2C%2701pL0000000QTK9IAO%27%2C%2701pD0000000JyewIAC%27%2C%2701pL0000000H7maIAC%27%2C%2701pL0000000Qlb6IAC%27%2C%2701pD0000000JLp2IAG%27%2C%2701pD0000000Ka8uIAC%27%2C%2701pL0000000HYRtIAO%27%2C%2701pD0000000JLtQIAW%27%2C%2701pD0000000JyfXIAS%27%2C%2701pD0000000JLsJIAW%27%2C%2701pD0000000JRi5IAG%27%2C%2701pD0000000JLrRIAW%27%2C%2701qD0000000Q4eXIAS%27%2C%2701pL0000000QlbQIAS%27%2C%2701pL0000000QQHoIAO%27%2C%2701pD0000000JLroIAG%27%2C%2701pD0000000JLt1IAG%27%2C%2701pD0000000K0jQIAS%27%2C%2701pL0000000PyDkIAK%27%2C%2701pD0000000KHjNIAW%27%2C%2701pL0000000PyDoIAK%27%2C%2701pD0000000JLvRIAW%27%2C%2701pD0000000Ka8sIAC%27%2C%2701pD0000000JLu2IAG%27%2C%2701pD0000000JLspIAG%27%2C%2701pD0000000KT1QIAW%27%2C%2701qL00000000qJyIAI%27%2C%2701pD0000000KFzaIAG%27%2C%2701pD0000000JRbiIAG%27%2C%2701pL0000000Lr7rIAC%27%2C%2701pD0000000KFzYIAW%27%2C%2701pD0000000JR22IAG%27%2C%2701pD0000000JLuIIAW%27%2C%2701pD0000000JLoDIAW%27%2C%2701pL0000000PyDjIAK%27%2C%2701pD0000000KT22IAG%27%2C%2701pD0000000JLpqIAG%27%2C%2701pD0000000JLr3IAG%27%2C%2701pL0000000LmY9IAK%27%2C%2701pD0000000JyfFIAS%27%2C%2701pD0000000Ka90IAC%27%2C%2701pD0000000JLoQIAW%27%2C%2701pL0000000HWKlIAO%27%2C%2701pD0000000KdMKIA0%27%2C%2701pL0000000PyDZIA0%27%2C%2701pL0000000QTKPIA4%27%2C%2701pD0000000KFzSIAW%27%2C%2701pD0000000KWfPIAW%27%2C%2701qD0000000QErTIAW%27%2C%2701qD0000000QAXpIAO%27%2C%2701pL0000000QrDUIA0%27%2C%2701qD0000000QDG6IAO%27%2C%2701pD0000000JLsPIAW%27%2C%2701pL0000000LlsrIAC%27%2C%2701pD0000000Kd0gIAC%27%2C%2701qD0000000Q3KAIA0%27%2C%2701pD0000000KT1UIAW%27%2C%2701pD0000000JLpJIAW%27%2C%2701pL0000000HKxMIAW%27%2C%2701pD0000000K4VEIA0%27%2C%2701pD0000000KT2BIAW%27%2C%2701pL0000000QcAuIAK%27%2C%2701pD0000000KFzeIAG%27%2C%2701pD0000000JLtHIAW%27%2C%2701pL0000000PyDWIA0%27%2C%2701pL0000000Lm36IAC%27%2C%2701pD0000000KT26IAG%27%2C%2701pL0000000QeDWIA0%27%2C%2701pD0000000K4VGIA0%27%2C%2701pD0000000KT1aIAG%27%2C%2701pD0000000JLqCIAW%27%2C%2701pD0000000Kd0WIAS%27%2C%2701pL0000000HTzvIAG%27%2C%2701qD0000000Q3K3IAK%27%2C%2701pD0000000JLoiIAG%27%2C%2701pD0000000JLo6IAG%27%2C%2701pD0000000Jyf0IAC%27%2C%2701pD0000000KT1NIAW%27%2C%2701pD0000000JyfdIAC%27%2C%2701pL0000000QWMaIAO%27%2C%2701pD0000000JLuFIAW%27%2C%2701pD0000000KWfIIAW%27%2C%2701pD0000000JyfaIAC%27%2C%2701pD0000000KWfsIAG%27%2C%2701pL0000000QcdhIAC%27%2C%2701pL0000000QbOgIAK%27%2C%2701pD0000000Ka8oIAC%27%2C%2701pD0000000JLoGIAW%27%2C%2701pD0000000JLobIAG%27%2C%2701pD0000000JLpbIAG%27%2C%2701pD0000000Kd0UIAS%27%2C%2701qL00000000rVHIAY%27%2C%2701pD0000000KT2fIAG%27%2C%2701pD0000000JacqIAC%27%2C%2701pD0000000Kd0SIAS%27%2C%2701pL0000000HEs1IAG%27%2C%2701pD0000000JLteIAG%27%2C%2701pD0000000JLodIAG%27%2C%2701pD0000000JLsSIAW%27%2C%2701pD0000000Kd0RIAS%27%2C%2701pD0000000KT2DIAW%27%2C%2701pD0000000JLpCIAW%27%2C%2701pD0000000JLrvIAG%27%2C%2701pD0000000JLt8IAG%27%2C%2701pD0000000KT2gIAG%27%2C%2701pD0000000JNXGIA4%27%2C%2701qD0000000Q3K2IAK%27%2C%2701pD0000000JLrrIAG%27%2C%2701pD0000000JLnzIAG%27%2C%2701pD0000000JyfLIAS%27%2C%2701pD0000000JLt4IAG%27%2C%2701pD0000000JLqDIAW%27%2C%2701pD0000000Ju1bIAC%27%2C%2701pD0000000JLpEIAW%27%2C%2701pD0000000Kd0OIAS%27%2C%2701pD0000000JLsWIAW%27%2C%2701pL0000000QTKIIA4%27%2C%2701pD0000000KG06IAG%27%2C%2701pD0000000KWfXIAW%27%2C%2701pD0000000JR1wIAG%27%2C%2701pD0000000JaYvIAK%27%2C%2701pD0000000KWfLIAW%27%29. The error says: Connection reset
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1365)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithErrMsg(ApexUnitUtils.java:68)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithDebugLog(ApexUnitUtils.java:53)
at com.sforce.cd.apexUnit.client.codeCoverage.WebServiceInvoker.executeHTTPMethod(WebServiceInvoker.java:241)
at com.sforce.cd.apexUnit.client.codeCoverage.WebServiceInvoker.doGet(WebServiceInvoker.java:158)
at com.sforce.cd.apexUnit.client.codeCoverage.WebServiceInvoker.doGet(WebServiceInvoker.java:130)
at com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer.calculateAggregatedCodeCoverageUsingToolingAPI(CodeCoverageComputer.java:124)
at com.sforce.cd.apexUnit.ApexUnitRunner.main(ApexUnitRunner.java:88)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
at java.lang.Thread.run(Thread.java:745)

Problem running test

Hi, we are trying to run the example you provided in the README file as follows:

mvn compile exec:java -Dexec.mainClass="com.sforce.cd.apexUnit.ApexUnitRunner" -Dexec.args="-org.login.url ‘https://medctr-ucsf--stage.cs8.my.salesforce.com’ -org.username [email protected] -org.password xXxXxXxX -org.client.id xXxXxXxXxX -org.client.secret xXxXxXxXxXxX -org.wide.code.coverage.threshold 50 -team.code.coverage.threshold 50 -regex.for.selecting.source.classes.for.code.coverage.computation Test1 -regex.for.selecting.test.classes.to.execute Class1"

However, we got the following exception:

.. WARNING: Cookie rejected: "$Version=0; BrowserId=WoAiW7M7Ru2XYetBKiFLEw; $Path=/; $Domain=.salesforce.com". Domain attribute ".salesforce.com" violates RFC 2109: host minus domain may not contain any dots Feb 18, 2016 4:58:11 PM org.apache.commons.httpclient.HttpMethodBase getResponseBody WARNING: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended. [com.sforce.cd.apexUnit.ApexUnitRunner.main()] ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Unable to get access_token for OAuth authentication and hence unable to establish connection with the web services.Terminating the process.. [com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit java.lang.Exception: Stack trace ..

I hope you can help us with this issue, probably we are missing something.

Thanks

Destination URL not reset. The URL returned from login must be set

com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex(es): ZT* to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex: "ZT*" to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestExecutor - ***** debuging[Ljava.lang.String;@4b4172b8
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.connection.ConnectionHandler - Bulk connection established.
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Caught AsyncApiException exception while trying to deal with bulk connection: InvalidUrl : Destination URL not reset. The URL returned from login must be set
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1329)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithErrMsg(ApexUnitUtils.java:48)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithDebugLog(ApexUnitUtils.java:33)
at com.sforce.cd.apexUnit.client.testEngine.AsyncBulkApiHandler.handleBulkApiFlow(AsyncBulkApiHandler.java:92)
at com.sforce.cd.apexUnit.client.testEngine.TestExecutor.testExecutionFlow(TestExecutor.java:81)
at com.sforce.cd.apexUnit.ApexUnitRunner.main(ApexUnitRunner.java:74)
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:497)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
at java.lang.Thread.run(Thread.java:745)

Detailed Test Report - Missing?

I've made my first successful run of ApexUnit, and I'm eager to make it part of our continuous delivery and continuous support processes. Thank you so much.

The GitHub page says


On successful completion - the command should give you build success and it should generate two report files - ApexUnitReport.xml (This is the test report in JUnit format) and Report/ApexUnitReport.html (This is the code coverage report in html format)


And I see both of those files (attached). The ApexUnitReport.html includes this link:


<a style="font-size:125%"; href=/opt/ApexUnit/ApexUnitReport.xml>Detailed Test Report


Is this link working as designed?

My expectation would be that link would lead to a ApexUnitReportDetail.html or some such.

A hard-coded link to the original XML file doesn't seem correct.

Although the files are generated, I am seeing a stack trace.


[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1365)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithErrMsg(ApexUnitUtils.java:68)
at com.sforce.cd.apexUnit.ApexUnitRunner.main(ApexUnitRunner.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
at java.lang.Thread.run(Thread.java:745)

Earlier, there is also a cookie warning


WARNING: Cookie rejected: "$Version=0; BrowserId=MkyULpRrSUO0IoBBw13Ejw; $Path=/; $Domain=.salesforce.com". Domain attribute ".salesforce.com" violates RFC 2109: host minus domain may not contain any dots


The org uses a my domain, which I specify in the login url.

org.login.url https://nc-source.my.salesforce.com

I'm using a fresh checkout of ApexUnit and Maven 3.3.9 on Java 1.7.0_95

Is there suppose to be a detail page available?

Is the error preventing the page from being completed?

ApexUnitReport.xml.txt

ApexUnitReport.html.txt

Connection exception brings testrun down

I startet a run with about 200 testclasses, after 134 the run stops with the following exception.
Total tests executed 134 , Remaining tests 66

[com.sforce.cd.apexUnit.ApexUnitRunner.main()] ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Connection exception encountered while executing query :Select Id, ApexClassId, ApexClass.Name, ExtendedStatus, ParentJobId, Status, SystemModstamp, CreatedDate From ApexTestQueueItem Where ParentJobId = '707L000000XPeYyIAL'
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1365)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithErrMsg(ApexUnitUtils.java:68)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithDebugLog(ApexUnitUtils.java:53)
at com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler.waitForTestsToComplete(TestStatusPollerAndResultHandler.java:302)
at com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler.fetchResultsFromParentJobId(TestStatusPollerAndResultHandler.java:66)
at com.sforce.cd.apexUnit.client.testEngine.TestExecutor.testExecutionFlow(TestExecutor.java:68)
at com.sforce.cd.apexUnit.ApexUnitRunner.main(ApexUnitRunner.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
at java.lang.Thread.run(Thread.java:745)

"Request-URI Too Long" error when calculating code coverage

I am running into this error when ApexUnit is trying to calculate the cove coverage from the manifest file specified. I'm assuming it's because we have 100's of classes in the manifest file. Here's a snippet from the log:

[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.fileReader.ApexManifestFileReader - Reading from Manifest files: sourceClasses.txt
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.fileReader.ApexManifestFileReader - Reading Manifest file from location : sourceClasses.txt
Mar 13, 2017 8:48:06 PM org.apache.commons.httpclient.HttpMethodBase getResponseBody
WARNING: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.WebServiceInvoker - Status code : 414 Status message from the get request:Request-URI Too Long Reason phrase: Request-URI Too Long
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Code coverage metrics not computed. Null object returned while processing the JSON response from the Tooling API
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit

Log level to DEBUG

I changed the the log level to "debug" on the logback.xml :

<logger name="com.sforce.cd.apexUnit" level="debug" />
<root level="debug">
	<appender-ref ref="STDOUT" />
</root>

but nothing happen on the console when I run the mvn compile ... All I see is just the INFO.

Any idea ?

Connection Problem

[INFO] Scanning for projects...
[WARNING] The project com.sforce.cd.ApexUnit:ApexUnit-core:jar:2.3.6 uses prerequisites which is only intended for maven-plugin projects but not for non maven-plugin projects. For such purposes you should use the maven-enforcer-plugin. See https://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html
[INFO]
[INFO] ----------------< com.sforce.cd.ApexUnit:ApexUnit-core >----------------
[INFO] Building ApexUnit 2.3.6
[INFO] --------------------------------[ jar ]---------------------------------
[WARNING] The artifact org.apache.commons:commons-io:jar:1.3.2 has been relocated to commons-io:commons-io:jar:1.3.2
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ ApexUnit-core ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 7 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ ApexUnit-core ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
[INFO] Compiling 28 source files to C:\Program Files (x86)\Jenkins\workspace\Test\target\classes
[WARNING] /C:/Program Files (x86)/Jenkins/workspace/Test/src/main/java/com/sforce/cd/apexUnit/client/codeCoverage/WebServiceInvoker.java: C:\Program Files (x86)\Jenkins\workspace\Test\src\main\java\com\sforce\cd\apexUnit\client\codeCoverage\WebServiceInvoker.java uses unchecked or unsafe operations.
[WARNING] /C:/Program Files (x86)/Jenkins/workspace/Test/src/main/java/com/sforce/cd/apexUnit/client/codeCoverage/WebServiceInvoker.java: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] >>> exec-maven-plugin:1.2.1:java (default-cli) > validate @ ApexUnit-core >>>
[INFO]
[INFO] <<< exec-maven-plugin:1.2.1:java (default-cli) < validate @ ApexUnit-core <<<
[INFO]
[INFO]
[INFO] --- exec-maven-plugin:1.2.1:java (default-cli) @ ApexUnit-core ---
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitRunner - #################################### Processing the Apex test classes specified by the user ####################################
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.connection.PartnerConnectionConnectorConfig - Default connection time out value is: 0
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.connection.PartnerConnectionConnectorConfig - Updated connection time out value(from config.properties file): 1200000
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Connection Exception encountered The connection exception description says : null Object dump for the Connection object:
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1336)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithErrMsg(ApexUnitUtils.java:48)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithDebugLog(ApexUnitUtils.java:33)
at com.sforce.cd.apexUnit.client.connection.ConnectionHandler.createConnection(ConnectionHandler.java:113)
at com.sforce.cd.apexUnit.client.connection.ConnectionHandler.getConnection(ConnectionHandler.java:164)
at com.sforce.cd.apexUnit.client.testEngine.TestExecutor.testExecutionFlow(TestExecutor.java:42)
at com.sforce.cd.apexUnit.ApexUnitRunner.main(ApexUnitRunner.java:74)
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.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
at java.lang.Thread.run(Thread.java:748)
Sending e-mails to: [email protected]
Finished: SUCCESS

Intermittent error while attempting to sort code coverage beans

I'm occasionally experiencing errors at the point at which code coverage beans are sorted in ascending order of coverage percentage, prior to being written to the report file. Here's an example of the error:

[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitRunner - ####################################   Processing the Apex test classes specified by the user  #################################### 
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex(es): Test_Service_Fee to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex: "Test_Service_Fee" to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.connection.ConnectionHandler - Bulk connection established.
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.AsyncBulkApiHandler - Creating batch for the test classes to execute using bulk connection....
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.AsyncBulkApiHandler - Async test parent job Id : 707d0000035JkJuAAK
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.AsyncBulkApiHandler - ############################# List of Apex test classes successfully submitted to the Force.com test execution engine #############################
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestExecutor - Parent job ID for the submission of the test classes to the Force.com platform is: 707d0000035JkJuAAK
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestExecutor - ############################# Now executing - Apex tests.. #############################
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler - Total test classes to execute: 1
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler - Now executing the test class: Test_Service_Fee (https://na14.salesforce.com/01pd00000032yyKAAQ ) Status : Processing
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler - Test status for Test_Service_Fee:(24/24)
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler - Completed executing the test class: Test_Service_Fee. Time taken by the test: 0 minutes,26 seconds
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler - Total tests executed 1 , Remaining tests 0
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.TestStatusPollerAndResultHandler - All tests have now completed executing!!
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitRunner - ####################################    Computing code coverage for the team based on the Apex Class names(source class names) provided  #################################### 
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.fileReader.ApexManifestFileReader - Reading from Manifest files: patronticket_classes.txt
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.fileReader.ApexManifestFileReader - Reading Manifest file from location : patronticket_classes.txt
Jan 08, 2016 9:03:28 AM org.apache.commons.httpclient.HttpMethodBase getResponseBody
WARNING: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.WebServiceInvoker - Status code : 200   Status message from the get request:OK Reason phrase: OK
Jan 08, 2016 9:03:29 AM org.apache.commons.httpclient.HttpMethodBase getResponseBody
WARNING: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer - Record number # 1 : coveredLines : 6 : unCoveredLines : 19 : code coverage % : 24.0 : apexClassOrTriggerId : 01pd0000002roPpAAI : apexClassName : MSU_SectionGroupWrapper : apiVersion : 34.0 : lengthWithoutComments : 1323
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer - Record number # 2 : coveredLines : 87 : unCoveredLines : 14 : code coverage % : 86.13861386138613 : apexClassOrTriggerId : 01pd0000002roPkAAI : apexClassName : MSU_SectionWrapper : apiVersion : 34.0 : lengthWithoutComments : 5662
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer - Record number # 3 : coveredLines : 32 : unCoveredLines : 10 : code coverage % : 76.19047619047619 : apexClassOrTriggerId : 01pd0000002r0cNAAQ : apexClassName : TicketAllocationsSelector : apiVersion : 29.0 : lengthWithoutComments : 3357
.
.
.
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer - Record number # 200 : coveredLines : 292 : unCoveredLines : 78 : code coverage % : 78.91891891891892 : apexClassOrTriggerId : 01pd0000002r0cOAAQ : apexClassName : TicketOrderItems : apiVersion : 29.0 : lengthWithoutComments : 26323
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer - Record number # 201 : coveredLines : 1953 : unCoveredLines : 108 : code coverage % : 94.75982532751091 : apexClassOrTriggerId : 01pd0000002r0cHAAQ : apexClassName : Service_Transaction : apiVersion : 29.0 : lengthWithoutComments : 135166
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer - Record number # 202 : coveredLines : 52 : unCoveredLines : 11 : code coverage % : 82.53968253968253 : apexClassOrTriggerId : 01pd0000002r0cIAAQ : apexClassName : SubscriptionBuyerSelectionLinksSelector : apiVersion : 29.0 : lengthWithoutComments : 4799
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer - Record number # 203 : coveredLines : 192 : unCoveredLines : 1 : code coverage % : 99.48186528497409 : apexClassOrTriggerId : 01pd0000002r0cGAAQ : apexClassName : Service_Payment : apiVersion : 29.0 : lengthWithoutComments : 13124
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer - Record number # 204 : coveredLines : 180 : unCoveredLines : 11 : code coverage % : 94.24083769633508 : apexClassOrTriggerId : 01pd0000002r0cPAAQ : apexClassName : TicketOrderItemsSelector : apiVersion : 29.0 : lengthWithoutComments : 14460
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer - Record number # 205 : coveredLines : 207 : unCoveredLines : 20 : code coverage % : 91.18942731277532 : apexClassOrTriggerId : 01pd0000002r0caAAA : apexClassName : fflib_SObjectDomain : apiVersion : 31.0 : lengthWithoutComments : 13240
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer - ####################################   Summary of code coverage computation for the team..  #################################### 
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer - Total Covered lines : 31282
 Total Uncovered lines : 8963
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.codeCoverage.CodeCoverageComputer - Team code coverage is : 77.72891042365512%
[WARNING] 
java.lang.reflect.InvocationTargetException
    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:497)
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Comparison method violates its general contract!
    at java.util.ComparableTimSort.mergeLo(ComparableTimSort.java:744)
    at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:481)
    at java.util.ComparableTimSort.mergeForceCollapse(ComparableTimSort.java:422)
    at java.util.ComparableTimSort.sort(ComparableTimSort.java:222)
    at java.util.Arrays.sort(Arrays.java:1246)
    at com.sforce.cd.apexUnit.ApexUnitRunner.main(ApexUnitRunner.java:111)
    ... 6 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2:24.903s
[INFO] Finished at: Fri Jan 08 09:04:27 EST 2016
[INFO] Final Memory: 10M/149M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:java (default-cli) on project ApexUnit-core: An exception occured while executing the Java class. null: InvocationTargetException: Comparison method violates its general contract! -> [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

I believe this error is due to the fact that the ApexClassCodeCoverageBean.compareTo method is implemented as follows:

public int compareTo(ApexClassCodeCoverageBean codeCoverageBean) {
        // sort in ascending order
        return (int) (this.getCoveragePercentage() - codeCoverageBean.getCoveragePercentage());
}

Here is an excerpt from the Javadocs for the compareTo method:

Compares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.
The implementor must ensure sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) for all x and y. (This implies that x.compareTo(y) must throw an exception iff y.compareTo(x) throws an exception.)

The implementor must also ensure that the relation is transitive: (x.compareTo(y)>0 && y.compareTo(z)>0) implies x.compareTo(z)>0.

Finally, the implementor must ensure that x.compareTo(y)==0 implies that sgn(x.compareTo(z)) == sgn(y.compareTo(z)), for all z.

It is strongly recommended, but not strictly required that (x.compareTo(y)==0) == (x.equals(y)). Generally speaking, any class that implements the Comparable interface and violates this condition should clearly indicate this fact. The recommended language is "Note: this class has a natural ordering that is inconsistent with equals."

In the foregoing description, the notation sgn(expression) designates the mathematical signum function, which is defined to return one of -1, 0, or 1 according to whether the value of expression is negative, zero or positive.

I suspect this method of comparing object is not adhering to the transitive contract, since there is some integer truncation error in this method. Also, consider "this" bean with a code coverage of 50.1%, and the "other" bean with a code coverage of 50.2%. With this implementation, the compareTo method would return 0 (equals) even though they are clearly not. I suggest changing this method to the following:

public int compareTo(ApexClassCodeCoverageBean codeCoverageBean) {
        if (this.getCoveragePercentage() < codeCoverageBean.getCoveragePercentage()) return -1;
        if (this.getCoveragePercentage() > codeCoverageBean.getCoveragePercentage()) return 1;
        return 0;
}

Compilation error caused by implicit type conversion from String to int

When I do a clean and compile operation, I'm getting a couple of compilation errors:

[INFO] Compiling 22 source files to C:\Users\tom\Development\Java\git\ApexUnit\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] \Users\tom\Development\Java\git\ApexUnit\src\main\java\com\sforce\cd\apexUnit\client\connection\ConnectionHandler.java:[118,92] error: incompatible types: String cannot be converted to int
[ERROR] \Users\tom\Development\Java\git\ApexUnit\src\main\java\com\sforce\cd\apexUnit\client\connection\ConnectionHandler.java:[185,91] error: incompatible types: String cannot be converted to int

I believe the type of proxyPort property in CommandLineArguments.java should be changed from a String to an Integer, because the value for the proxy port argument passed to the ConnectionConfig.setProxy method is expected to be an int, and String cannot be implicitly converted to int.

Exclude test classes from code coverage computations

Currently, if you use the -regex.for.selecting.source.classes.for.code.coverage.computation with a pattern of *, it will pull in ALL Apex classes within your default namespace and get the code coverage metrics for them. This includes Apex classes that are annotated with the "IsTest" annotation. The wildcard matching is implemented via a SOQL query against the ApexClass table with a LIKE clause, using the partner connection. This does not provide adequate metadata to identify which classes are annotated with "IsTest". As an enhancement, I think it should be possible to run a query via the Tooling API (you already establish a Tooling API connection to get the code coverage metrics anyway). The query might look something like this:

/services/data/v35.0/tooling/query?q=select+SymbolTable+FROM+ApexClass

Here's an example of one record returned by this query as viewed in Workbench: http://screencast.com/t/QFUnnSg5. You can see that it is possible to identify classes the have the IsTest annotation in this manner. Just something to think about as a possible future enhancement to make the regex options for selecting test classes and source classes more useful.

Processing of regex with namespace is not working right.

I'm seeing that the use of a regexes that looks like NAMESPACE.CLASSNAME is not working in a namespaced org. I have an org with the namespace TomPackage. I define a test class regex that looks like this "TomPackage.fflib_*Test". When I debug the code, I see this get converted into the following SOQL query:

SELECT Id , Name FROM ApexClass WHERE NamespacePrefix =null AND Name like 'TomPackage.fflib_%Test'

I debugged this and determined that ApexClassFetcherUtils.fetchApexClassesBasedOnRegex is not splitting the passed in regex on the . (period) character. It is simply passing a value of null as the namespace parameter to the QueryConstructor.generateQueryToFetchApexClassesBasedOnRegex method. Here is the offending code from ApexClassFetcherUtils:

    /*
     * Utility method This method returns a string array of apex test class id's
     * fetched based on regex pattern given as a command line input
     * 
     * @param connection - partnerConnection for the app to connect to the org
     * using web services
     * 
     * @param classesAsArray - Apex Class Ids passed by the calling method. The
     * returned string array of classes includes classes from this array as well
     * 
     * @param regexes - regex that is used to fetch classes from the org
     */
    private static String[] fetchApexClassesBasedOnRegex(PartnerConnection connection, String[] classesAsArray,
            String regex, Boolean includeTriggers) {
        if (regex != null && !regex.equals(" ")) {
            LOG.info("Using regex: \"" + regex + "\" to fetch apex classes");
            // construct the query
            String namespace = null;
            String soql = QueryConstructor.generateQueryToFetchApexClassesBasedOnRegex(namespace, regex);
            // fire the query using WSC and fetch the results
            String[] classesAsArrayUsingWSC = constructClassIdArrayUsingWSC(connection, soql);
            // if both manifest file and testClass regex expression is provided
            // as command line option, combine the results

            Set<String> uniqueSetOfClasses = new HashSet<String>();
            ArrayList<String> duplicateList = new ArrayList<String>();
            // eliminate duplicates from the given class Ids
            // (just in case duplicates still exist in the class array passed
            // from the calling method)
            if (classesAsArray != null && classesAsArray.length > 0) {
                for (int i = 0; i < classesAsArray.length; i++) {
                    if (!uniqueSetOfClasses.add(classesAsArray[i])) {
                        duplicateList.add(classesAsArray[i]);
                    }
                }
            }
            // eliminate duplicates from the classes fetched using the prefix
            if (classesAsArrayUsingWSC != null && classesAsArrayUsingWSC.length > 0) {
                for (int i = 0; i < classesAsArrayUsingWSC.length; i++) {
                    if (!uniqueSetOfClasses.add(classesAsArrayUsingWSC[i])) {
                        duplicateList.add(classesAsArrayUsingWSC[i]);
                    }
                }
            }

            //if include triggers, add triggers to duplicate list as Triggers cannot be tested on force.com
            if(includeTriggers){
                String soqlForTrigger = QueryConstructor.generateQueryToFetchApexTriggersBasedOnRegex(namespace, regex);
                String[] triggersAsArrayUsingWSC = constructClassIdArrayUsingWSC(connection, soqlForTrigger);

                if (triggersAsArrayUsingWSC != null && triggersAsArrayUsingWSC.length > 0) {
                    for (int i = 0; i < triggersAsArrayUsingWSC.length; i++) {
                        if (!uniqueSetOfClasses.add(triggersAsArrayUsingWSC[i])) {
                            duplicateList.add(triggersAsArrayUsingWSC[i]);
                        }
                    }
                }
            }

            // eliminate duplicates from the triggers fetched using the prefix

            String[] uniqueClassesAsArray = uniqueSetOfClasses.toArray(new String[uniqueSetOfClasses.size()]);

            // log the duplicate classes/triggers found by querying the org with
            // the given regex
            if (duplicateList != null && !duplicateList.isEmpty()) {
                String logDuplicates = "Found duplicates from the classes fetched from the regex: " + regex
                        + ". Skipping multiple execution/code coverage computation of these test class/source class(es) :";
                for (int i = 0; i < duplicateList.size(); i++) {
                    duplicateApexClassMap.put(duplicateList.get(i), apexClassMap.get(duplicateList.get(i)));
                    logDuplicates += " " + apexClassMap.get(duplicateList.get(i)) + ",";
                }
                LOG.info(logDuplicates);
            }

            return uniqueClassesAsArray;
        }
        return classesAsArray;
    }

Connection exception during test execution

When running a moderate number of tests (e.g. 173), the following exception occurs:
22:02:39 INFO c.s.c.a.c.TestStatusPollerAndResultHandler - Total tests executed 93 , Remaining tests 80
22:02:39 INFO c.s.c.a.c.TestStatusPollerAndResultHandler - Now executing the test class: *** (https:///*** ) Status : Queued
22:04:01 ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Connection exception encountered while executing query :Select Id, ApexClassId, ApexClass.Name, ExtendedStatus, ParentJobId, Status, SystemModstamp, CreatedDate From ApexTestQueueItem Where ParentJobId = '************'

This happens despite that all tests have passed on the server. Re-running the tests doesn't seem to fix it. If it's related to timeout, we need to know how to adjust the timeout to make it reflect the fact that all tests have passed.

Error with all test classes wildcard

One more question is it possible to run all apex testclasses and get an report for all apex classes ?
maybe it would be better to switch to an SOSL Query for dynamic getting all Testclasses
FIND {@istest} IN ALL FIELDS RETURNING ApexClass

It tried this with some errors:
-regex.for.selecting.test.classes.to.execute *
-regex.for.selecting.source.classes.for.code.coverage.computation *

[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex(es): * to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex: "*" to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.connection.ConnectionHandler - Bulk connection established.
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.testEngine.AsyncBulkApiHandler - Creating batch for the test classes to execute using bulk connection....
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Error while fetching results for the batch jobFIELD_INTEGRITY_EXCEPTION:Class ID: id value of incorrect type: 01qD0000000Q8vZIAS:ApexClassId --
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1365)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithErrMsg(ApexUnitUtils.java:68)
at com.sforce.cd.apexUnit.client.testEngine.AsyncBulkApiHandler.checkResults(AsyncBulkApiHandler.java:295)
at com.sforce.cd.apexUnit.client.testEngine.AsyncBulkApiHandler.handleBulkApiFlow(AsyncBulkApiHandler.java:100)
at com.sforce.cd.apexUnit.client.testEngine.TestExecutor.testExecutionFlow(TestExecutor.java:61)
at com.sforce.cd.apexUnit.ApexUnitRunner.main(ApexUnitRunner.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
at java.lang.Thread.run(Thread.java:745)

Unknow Exception

com.sforce.cd.apexUnit.ApexUnitRunner.main()] ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Connection Exception encountered The connection exception description says : null Object dump for the Connection object:
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1329)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithErrMsg(ApexUnitUtils.java:48)
at com.sforce.cd.apexUnit.ApexUnitUtils.shutDownWithDebugLog(ApexUnitUtils.java:33)
at com.sforce.cd.apexUnit.client.connection.ConnectionHandler.createConnection(ConnectionHandler.java:113)
at com.sforce.cd.apexUnit.client.connection.ConnectionHandler.getConnection(ConnectionHandler.java:164)
at com.sforce.cd.apexUnit.client.testEngine.TestExecutor.testExecutionFlow(TestExecutor.java:36)
at com.sforce.cd.apexUnit.ApexUnitRunner.main(ApexUnitRunner.java:74)
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:497)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
at java.lang.Thread.run(Thread.java:745)

Problem with Cookie Domain

Hello - long time user first time issue reporter here.

I am having an issue that appears to be identical to an issue that was closed a few years ago: Issue #28 . I'm receiving the following error in running my tests:

WARNING: Cookie rejected: "$Version=0; BrowserId=****YrlEeqX0oUZgzlGmg; $Path=/; $Domain=.salesforce.com". Domain attribute ".salesforce.com" violates RFC 2109: host minus domain may not contain any dots

A couple of things:

  1. We are using custom domains for our sandboxes.
  2. I've run curl commands and I'm able to receive an access token, though the curl response does indicate that the cookie domain is ".salesforce.com".
  3. There has been a recent change in salesforce that was just enforced on sandboxes to "Stabilize the Hostname" on sandboxes: link. This may be applicable as the refresh of sandboxes with this critical update enabled seems to coincide with failure of ApexUnit. NOTE: we have been running this successfully for 2+ years so this is NEW that we are having this problem. We've documented the setup of the Connected App and that has not changed - this is the only thing I can think of that is different.

Here is my curl output for reference.

$ curl -v https://< our my domain >.my.salesforce.com/services/oauth2/token -d "grant_type=password" -d "client_id=******.6IFhNpPozsW7VReCPtBkiLQ6SYhe0_dpLfro_nRDTztg4IKNU0QmvIqXnKwl5kAsswBfuh.4qmWgI" -d "client_secret=******A74B77E07E0CC6A7EBC4635F729F009209A6C00132351B396F50CC6B1" -d "username=< username >" -d "password=< password >"
*   Trying xx.xx.xx.xx:443...
* TCP_NODELAY set
* Connected to < our my domain >.my.salesforce.com (xx.xx.xx.xx) port 443 (#0)
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /Users/*****/opt/anaconda3/ssl/cacert.pem
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: C=US; ST=California; L=San Francisco; O=salesforce.com, inc.; CN=*.cs32.force.com
*  start date: Oct 18 00:00:00 2019 GMT
*  expire date: Oct 18 12:00:00 2020 GMT
*  subjectAltName: host "<our my domain>.my.salesforce.com" matched cert's "*.my.salesforce.com"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert SHA2 Secure Server CA
*  SSL certificate verify ok.
> POST /services/oauth2/token HTTP/1.1
> Host: <our my domain>.my.salesforce.com
> User-Agent: curl/7.68.0
> Accept: */*
> Content-Length: 267
> Content-Type: application/x-www-form-urlencoded
> 
* upload completely sent off: 267 out of 267 bytes
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Thu, 30 Apr 2020 14:39:35 GMT
< Strict-Transport-Security: max-age=31536004; includeSubDomains
< Public-Key-Pins-Report-Only: pin-sha256="******nSRF+W4W4JTq51avSXkWhQB8duS2bxVLfzXsY="; pin-sha256="******w0KjrCAu7eXY5HZdvyCS13BbA0VJG1RSP91w="; pin-sha256="******+22dNXAi+yb8e3UMypgzPUPHlv4+foULwl1g="; max-age=86400; includeSubDomains; report-uri="https://a.forcesslreports.com/hpkp-report/00Dr0000000*****";
< Expect-CT: max-age=86400, report-uri="https://a.forcesslreports.com/Expect-CT-report/00Dr0000000*****"
< X-Robots-Tag: none
< Cache-Control: no-cache,must-revalidate,max-age=0,no-store,private
< Set-Cookie: BrowserId=acdiy4rwEeq_zYtHwfJyVw; **_domain=.salesforce.com_**; path=/; expires=Fri, 30-Apr-2021 14:39:35 GMT; Max-Age=31536000
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< X-ReadOnlyMode: false
< Content-Type: application/json;charset=UTF-8
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
< 
* Connection #0 to host <our my domain>.my.salesforce.com left intact
{"access_token":"00Dr0000000****!******MWb25.1dM.ziwjg0c.r_GD5YAK.dqRkct6hmj80rIZNM1TZ7fI56FQ0cA87VmIxHck.TgV1NlUlgFvo.Y5K6JbKGB2","instance_url":"https://cfpb--<our my domain>.my.salesforce.com","id":"https://test.salesforce.com/id/00Dr0000000*******/005t0000001*******","token_type":"Bearer","issued_at":"1588257576086","signature":"*******t98CN2QnEvArJrmaEBnPKIuo7ZHFg8FlDgQ="}

Other things I've tried:

  1. using the pod instead of the custom domain in the curl call (this works - meaning i receive an access token - but it doesn't fix the domain issue)
  2. I've tried this on 2 different sandboxes and it's failing.

Any ideas? Thanks in advance!

Code coverage metrics not computed if one regex is invalid

There is no Report created if there is no result for one of the given regex.
Maybe you could skip this entries ?

[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex(es): YSL__,SICtrl__,SC_,A_,ECOM_,P_,T* to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex: "YSL__" to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex: "SICtrl__" to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex: "SC_" to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex: "A_" to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex: "ECOM_" to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex: "P_" to fetch apex classes
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.client.utils.ApexClassFetcherUtils - Using regex: "T*" to fetch apex classes

[com.sforce.cd.apexUnit.ApexUnitRunner.main()] ERROR com.sforce.cd.apexUnit.ApexUnitUtils - Code coverage metrics not computed. Null object returned while processing the JSON response from the Tooling API
[com.sforce.cd.apexUnit.ApexUnitRunner.main()] INFO com.sforce.cd.apexUnit.ApexUnitUtils - Shutting down ApexUnit

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.