Hi,
first of all, thanks for testing :-) comments below... Am 02.01.2017 um 20:11 schrieb Marshall Schor: > Hi, > > I'm testing UIMA version 3 with Ruta Core. Found 1 bug (and fixed it) in v3 > :-). > > A lot of the Ruta core tests work at this point. > > One test, the SubAtomicTest, fails with an assertion failure at the assertions > in lines 68-71. When I "single step" the call in line 61 to > RutaTestUtils.process, (running large parts at full speed, others single > stepping), it works. At full speed, it seems to add fewer Annotations to the > CAS indexes. > > So I'm trying to guess what might be going wrong at full speed. > > Does this test or Ruta make any use of multi-threading? No multi-threading. Parallelization is only applied on component or pipeline level. There should of course no difference at all when debugging. > > What is this test doing that's different from the many other tests (that > run OK)? Not so much. The test checks if the internal "indexing" works if another component adds annotations that are smaller than the usual ones. This forces the implementation to update the RutaBasic annotations > The single stepping is hard to comprehend (for me) because there's lots of > indirection and deep calling stacks. Is there some general debugging switch I > should turn on to make this more comprehensible what's going wrong? I have > the > advantage of two identical implementations (only changing the underlying UIMA > version) so I can run them side-by-side and look at where the difference > happens. There is no additional debugging help. The implementation is actually designed this way in order to make debugging easier :-( (Well, in contrast to processing all language elements of one rule within one loop. There are also some historical reasons.) I had a similar problem one time when there was a different Java version. Something changed in the behavior of TreeMaps/TreeSets. Do both checkouts use the same java version? I assume you use the current trunk of Ruta? First, I would check the RutaBasic annotations in the CAS before and after method RutaStream.initalizeBasics(), especially for the second process() in the test. I'll try to reproduce the problem today. Peter > -Marshall > >
