[jsword-devel] Concurrent Test failure?

DM Smith dmsmith at crosswire.org
Mon Jan 20 09:38:26 MST 2014


We hope to get there. I'm no maven expert so Chris or Douglas "qmx" will be doing it.

-- DM

On Jan 20, 2014, at 11:35 AM, Greg Hellings <greg.hellings at gmail.com> wrote:

> If this gets resolved, would it then be possible for JSword to be hosted in the public Maven repositories? It would make building and deploying against JSword that much easier!
> 
> --Greg
> 
> 
> On Mon, Jan 20, 2014 at 10:33 AM, DM Smith <dmsmith at crosswire.org> wrote:
> Please do!
> 
> I had thought that the problem was that Maven was executing tests in a different order and that it always started with a clean slate. I just checked and the tests do not install the KJV or ESV. So that is needed and it needs to be forced to be early.
> 
> Since I maintain both the KJV and ESV, they are always in my local install.
> 
> In Him,
> 	DM
> 
> On Jan 20, 2014, at 11:21 AM, Chris Burrell <chris at burrell.me.uk> wrote:
> 
>> Apologies I hadn't read the whole thing. If we can include that test, then that would make it work.
>> 
>> Just add something like this in the plugins section in Maven;
>> 
>>  <plugin>
>> 
>> 
>>                 <groupId>org.apache.maven.plugins</groupId>
>> 
>>                 <artifactId>maven-surefire-plugin</artifactId>
>>                 <executions>
>> 
>> 
>>                     <execution>
>>                         <configuration>
>> 
>> 
>>                             <includes>
>>                                 <include>**/BookInstallerTest.java</include>
>> 
>> 
>>                             </includes>
>>                         </configuration>
>> 
>> 
>>                         <phase>process-test-classes</phase>
>> 
>>                         <goals>
>>                             <goal>test</goal>
>> 
>> 
>>                         </goals>
>>                     </execution>
>> 
>>                 </executions>
>>             </plugin>
>> 
>> 
>> 
>> 
>> Chris
>> 
>> 
>> 
>> On 20 January 2014 16:19, Chris Burrell <chris at burrell.me.uk> wrote:
>> Indeed I think that's the issue. With STEP, as part of the Maven process we install the modules automatically. 
>> 
>> https://github.com/tyndale/step/blob/master/step-core/src/test/java/com/tyndalehouse/step/core/prebuild/DownloadJSwordBiblesPreReq.java
>> 
>> The above file is what I use to ensure the tests pass regardless...  With a Maven snippet to ensure that test always run before every other test. 
>> 
>> It uses the STEP service-orientated approach, so you'd have to rewrite bits of bit to make it work for JSword - I suspect it's worth it in the long run however. (Wouldn't take long I suspect)
>> Chris
>> 
>> 
>> 
>> 
>> 
>> 
>> On 20 January 2014 16:13, Martin Denham <mjdenham at gmail.com> wrote:
>> I suppose CloudBees does not have any modules installed?  The errors it reports look similar to the errors I had just now when I didn't have any Books installed on my local drive, before I installed KJV and ESV.
>> 
>> The junits do not seem to install any modules but assume kjv and esv are installed.  I added the following to my local JSword and ran it before the junits and then they all ran fine.  Maybe the fix would be to tell maven to only include AllTests.java and to add BookInstallerTest (below) as the first test in AllTests, but I am no expert with maven or CloudBees:
>> 
>> public class BookInstallerTest extends TestCase {
>> 
>>     private BookInstaller underTest = new BookInstaller();
>>     
>>     @Test
>>     public void testInstallBook() {
>>         try {
>>             if (Books.installed().getBook("KJV")==null) {
>>                 Book kjv = underTest.getRepositoryBook("CrossWire", "KJV");
>>                 underTest.installBook("CrossWire", kjv);
>>             }
>>             if (Books.installed().getBook("ESV")==null) {
>>                 Book esv = underTest.getRepositoryBook("CrossWire", "ESV");
>>                 underTest.installBook("CrossWire", esv);
>>             }
>>         } catch (Exception e) {
>>             e.printStackTrace();
>>             fail(e.getMessage());            
>>         }
>>     }
>> }
>> 
>> Martin
>> 
>> 
>> On 29 October 2013 21:39, Chris Burrell <chris at burrell.me.uk> wrote:
>> I suspect names[i] refers to a module you don't have.
>> 
>> Step's maven build has something which automatically downloads missing modules before tests are run.  Perhaps we can port that across?
>> 
>> Chris
>> 
>> On 29 Oct 2013 16:13, "Greg Hellings" <greg.hellings at gmail.com> wrote:
>> The specific failures I'm seeing are:
>> Running org.crosswire.jsword.book.ConcurrencyTest
>> Exception in thread "Thread-3" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-5" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-7" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-9" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-11" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-13" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-15" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-17" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-19" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-21" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-23" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-25" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-27" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-29" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-31" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-33" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-35" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-37" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-39" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-41" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-43" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-45" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-47" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-49" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-51" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-53" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-55" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-57" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-59" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-61" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-63" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-65" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-67" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-69" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-71" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-73" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-75" java.lang.NullPointerException
>> Exception in thread "Thread-87" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-89" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-91" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-93" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-95" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-97" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-99" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Exception in thread "Thread-101" java.lang.NullPointerException
>> 	at org.crosswire.jsword.book.ConcurrencyTest$2.run(ConcurrencyTest.java:57)
>> 	at java.lang.Thread.run(Thread.java:744)
>> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.123 sec
>> 
>> This seems to be caused because 
>> final Book b0 = Books.installed().getBook(names[1]);
>> returns empty.
>> 
>> I do have modules installed - iterating over the Books.installed().getBooks(); gives me a list of a half-dozen or so entries when I execute it from within Eclipse, but none when I execute it from the command line. I haven't had time to put my debugger on it yet to see what the difference between the two environments is, though. They were installed by the core Sword installmgr into my ~/.sword/ directory.
>> 
>> --Greg
>> 
>> 
>> On Tue, Oct 29, 2013 at 10:57 AM, DM Smith <dmsmith at crosswire.org> wrote:
>> I use ant to build and test. Maybe Chris B can chime in?
>> 
>> I do know that there is a failure in some of the tests because under ant the order is deterministic and a prerequisite of later test is satisfied by an earlier one. Under Jenkins on Cloudbees, which is configured to use maven, it fails. At JavaOne, I talked to the CloudBees folks and we narrowed it down. But we didn't have time to solve it.
>> 
>> Don't know if this is related to the failure that you are seeing.
>> 
>> DM Smith
>> 
>> On Oct 29, 2013, at 11:49 AM, Greg Hellings <greg.hellings at gmail.com> wrote:
>> 
>>> I was just trying to build JSword, but I can't run an 'mvn package' in the current github master because it fails with several NPEs during the Concurrency Test. Is this a known issue?
>>> 
>>> Also, I can't locate a built jar of the core library in any maven repositories around. Is JSword not hosted in any of them?
>>> 
>>> --Greg
>>> _______________________________________________
>>> jsword-devel mailing list
>>> jsword-devel at crosswire.org
>>> http://www.crosswire.org/mailman/listinfo/jsword-devel
>> 
>> 
>> _______________________________________________
>> jsword-devel mailing list
>> jsword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/jsword-devel
>> 
>> 
>> 
>> _______________________________________________
>> jsword-devel mailing list
>> jsword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/jsword-devel
>> 
>> 
>> _______________________________________________
>> jsword-devel mailing list
>> jsword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/jsword-devel
>> 
>> 
>> 
>> _______________________________________________
>> jsword-devel mailing list
>> jsword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/jsword-devel
>> 
>> 
>> 
>> _______________________________________________
>> jsword-devel mailing list
>> jsword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/jsword-devel
> 
> 
> _______________________________________________
> jsword-devel mailing list
> jsword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/jsword-devel
> 
> 
> _______________________________________________
> jsword-devel mailing list
> jsword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/jsword-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/jsword-devel/attachments/20140120/186d94c4/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4145 bytes
Desc: not available
URL: <http://www.crosswire.org/pipermail/jsword-devel/attachments/20140120/186d94c4/attachment-0001.p7s>


More information about the jsword-devel mailing list