forcedotcom / apexunit Goto Github PK
View Code? Open in Web Editor NEWApexUnit is a powerful continuous integration tool for the Force.com platform
License: BSD 3-Clause "New" or "Revised" License
ApexUnit is a powerful continuous integration tool for the Force.com platform
License: BSD 3-Clause "New" or "Revised" License
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
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)
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.
https://github.com/forcedotcom/ApexUnit/blob/master/src/main/java/com/sforce/cd/apexUnit/report/ApexUnitTestReportGenerator.java should be enhanced to report , such that this information is parsable by the junit report parser plugin to render the data in jenkins
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)
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.
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
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.
[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
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
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)
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
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)
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?
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)
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
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 ?
Since Apex Tests can now be organized into Test Suites
would it be possible to specify a test suite as a third alternative, along with manifests || wildcards?
[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
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;
}
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.
Ability to test classes in managed packages
update all source and config files to use short form of license header as shown in 83a83e2
Hello we are trying to integrate ApexUnit with concourse to generate xml report for our pipeline.
Does Anyone have an idea how to integrate it
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.
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;
}
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.
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)
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)
A provided password that contains certain special characters would crash ApexUnit due to the fact that it is appended to a url string.
A fix that converts the password to an encoded password before appending it to the url string will be merged soon.
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:
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:
Any ideas? Thanks in advance!
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.