Details
-
Bug
-
Resolution: Obsolete
-
Minor
-
None
-
5.1.5.FINAL
-
Workaround Exists
-
Description
I recently tried to run the test suite with private maven repo and it failed with
WARN [ClassFinder] (testng-CommandIdUniquenessTest) From jar path javax/transaction/RollbackException.class could not load class null java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(String.java:1931) at org.infinispan.util.ClassFinder.toClassName(ClassFinder.java:194) at org.infinispan.util.ClassFinder.findClassesOnPath(ClassFinder.java:155) at org.infinispan.util.ClassFinder.infinispanClasses(ClassFinder.java:112) at org.infinispan.util.ClassFinder.infinispanClasses(ClassFinder.java:94) at org.infinispan.util.ClassFinder.isAssignableFrom(ClassFinder.java:90) at org.infinispan.commands.CommandIdUniquenessTest.testCommandIdUniqueness(CommandIdUniquenessTest.java:38) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:74) at org.testng.internal.Invoker.invokeMethod(Invoker.java:673) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:846) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1170) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) at org.testng.TestRunner.runWorkers(TestRunner.java:1147) at org.testng.TestRunner.privateRun(TestRunner.java:749) at org.testng.TestRunner.run(TestRunner.java:600) at org.testng.SuiteRunner.runTest(SuiteRunner.java:317) at org.testng.SuiteRunner.access$000(SuiteRunner.java:34) at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:351) at org.testng.internal.thread.ThreadUtil$CountDownLatchedRunnable.run(ThreadUtil.java:147) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619)
After few hours I figured out the cause. I had the private repo located in https://hudson.qa.jboss.com/hudson/view/EDG6/view/EDG-REPORTS-FUNC/job/edg-60-infinispan-testsuite-rhel/jdk=java16_default,label=RHEL5_x86_64/ws/private-maven-repo and the ClassFinder class was trying to parse all jars that contained "infinispan" in its name. The method toClassName then tried to find last index of "org" which was not there for some libraries in the private repo.
As a results, I cannot have a jenkins job (or my private repo) that contains "infinispan" in its name. I think this parsing could be done better.