You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@isis.apache.org by Stephen Cameron <st...@gmail.com> on 2015/09/04 07:10:50 UTC

integration testing

Hi All,

I am trying to make a start with integration testing, not much success so
far.

I am getting an NullPointerException in the metamodel creation phase I
think.

I tried to set a breakpoint in Eclipse to see what is being translated, but
that does not happen for this exception, do I need to have the Isis code on
the classpath?

Maybe I can get more info on the metamodel validation in the log? I am
mostly just seeing the datanuclues db schema creation to this point.

Perhaps I need to go back to the start, beginning with simpleapp and start
adding things to be truly doing TDD! Retrospective is not easy :)

java.lang.NullPointerException
14:58:11,347  [ObjectReflectorDefault Thread-0   INFO ]  shutting down
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault@6c9499ea
    at
org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated.<init>(NamedFacetTranslated.java:42)
    at
org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.translateName(TranslationFacetFactory.java:98)
    at
org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.process(TranslationFacetFactory.java:61)
    at
org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:324)
    at
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createPropertyFacetedMethodsFromAccessors(FacetedMethodsBuilder.java:385)
    at
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findAndRemovePropertyAccessorsAndCreateCorrespondingFacetedMethods(FacetedMethodsBuilder.java:339)
    at
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:316)
    at
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
    at
org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
    at
org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:344)
    at
org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.catalogNamedQueries(DataNucleusApplicationComponents.java:242)
    at
org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.initialize(DataNucleusApplicationComponents.java:112)
    at
org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.<init>(DataNucleusApplicationComponents.java:103)
    at
org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createDataNucleusApplicationComponentsIfRequired(DataNucleusPersistenceMechanismInstaller.java:134)
    at
org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createObjectStore(DataNucleusPersistenceMechanismInstaller.java:110)
    at
org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.createPersistenceSession(PersistenceSessionFactory.java:95)
    at
org.apache.isis.core.runtime.system.session.IsisSessionFactory.openSession(IsisSessionFactory.java:141)
    at
org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:70)
    at
org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:279)
    at
org.apache.isis.core.runtime.system.IsisSystem.shutdownServices(IsisSystem.java:311)
    at
org.apache.isis.core.runtime.system.IsisSystem.shutdown(IsisSystem.java:300)
    at
org.apache.isis.core.integtestsupport.IsisSystemForTest.shutdown(IsisSystemForTest.java:467)
    at
org.apache.isis.core.integtestsupport.IsisSystemForTest.access$100(IsisSystemForTest.java:74)
    at
org.apache.isis.core.integtestsupport.IsisSystemForTest$Builder$1.run(IsisSystemForTest.java:301)
java.lang.NullPointerException
    at
org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated.<init>(NamedFacetTranslated.java:42)
    at
org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.translateName(TranslationFacetFactory.java:98)
    at
org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.process(TranslationFacetFactory.java:61)
    at
org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:324)
    at
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createPropertyFacetedMethodsFromAccessors(FacetedMethodsBuilder.java:385)
    at
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findAndRemovePropertyAccessorsAndCreateCorrespondingFacetedMethods(FacetedMethodsBuilder.java:339)
    at
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:316)
    at
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
    at
org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
    at
org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecifications(ObjectReflectorDefault.java:415)
    at
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:310)
    at
org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
    at
org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
    at
org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
    at
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:344)
    at
org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.catalogNamedQueries(DataNucleusApplicationComponents.java:242)
    at
org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.initialize(DataNucleusApplicationComponents.java:112)
    at
org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.<init>(DataNucleusApplicationComponents.java:103)
    at
org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createDataNucleusApplicationComponentsIfRequired(DataNucleusPersistenceMechanismInstaller.java:134)
    at
org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createObjectStore(DataNucleusPersistenceMechanismInstaller.java:110)
    at
org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.createPersistenceSession(PersistenceSessionFactory.java:95)
    at
org.apache.isis.core.runtime.system.session.IsisSessionFactory.openSession(IsisSessionFactory.java:141)
    at
org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:70)
    at
org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:279)
    at
org.apache.isis.core.runtime.system.IsisSystem.shutdownServices(IsisSystem.java:311)
    at
org.apache.isis.core.runtime.system.IsisSystem.shutdown(IsisSystem.java:300)
    at
org.apache.isis.core.integtestsupport.IsisSystemForTest.shutdown(IsisSystemForTest.java:467)
    at
org.apache.isis.core.integtestsupport.IsisSystemForTest.access$100(IsisSystemForTest.java:74)
    at
org.apache.isis.core.integtestsupport.IsisSystemForTest$Builder$1.run(IsisSystemForTest.java:301)
14:58:11,442  [ObjectReflectorDefault Thread-1   INFO ]  shutting down
org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault@6c9499ea

Results :

Tests in error:
  TODO: implement me
  TODO: implement me
  TODO: implement me
  TODO: implement me
  TODO: implement me
  TODO: implement me
  ParticipantsIntegTest$Create>SimpleAppIntegTest.initClass:33 » Runtime
java.la...
  ParticipantsIntegTest$ListAll>SimpleAppIntegTest.initClass:33 » Runtime
java.l...

Re: integration testing

Posted by Stephen Cameron <st...@gmail.com>.
On Fri, Sep 4, 2015 at 7:19 PM, Dan Haywood <da...@haywood-associates.co.uk>
wrote:

> +1 on that.
>
> That said, I still find myself conflicted on this.  There's definitely some
> value in spiking a business app, without tests, just in order to validate
> that there's a worthwhile app to build.  But if one takes that road, then
> it's soooo very tempting to keep that prototype rather than throwing it
> away.
>
> Although writing fixture scripts adds some overhead, I think it's
> worthwhile to think of writing them as part of the requirements gathering
> phase: what is the "given" (as in given/when/then) for a particular
> scenario.  If one isn't able to get the app into that initial state, then
> there's probably some other prerequisite stories that still need to be
> written.  And of course, those fixture scripts are useful not only for
> demoing the app, but can also be reused in the integration tests.
>
> Anyway, glad you're going back to simpleapp and then adding your own stuff
> in piecemeal.  I suspect it won't take too long to get back to where you
> presently are, but I'm sure you'll tell us one way or another :-)
>
> I'll assume that being ignored is a sign that I've either said too much,
or haven't thought enough!


> Cheers
> Dan
>
> PS: the simpleapp does have a BDD integration with Cucumber.  Although BDD
> is cool, it only makes sense to add the overhead if you are actually doing
> BDD in collaboration with your business users.  If you aren't (ie if
> instead you are "just" deploying the app itself into a UAT environemtn in
> order to obtain feedback / verification of behaviour) then I'd suggest just
> focusing on the regular JUnit tests and remove those BDD specs.
>
> Agreed.

Just a comment on electronic forms, my idea is to interact with the
metamodel, in the way a viewer does I assume, then on anobject create or
update, if any properties of an object aren't in the model the associated
values still get saved as key:value pairs. This is not that far removed
from what happens in the audit module I am guessing. This is simply to
allow the forms to evolve under the control of the users, on a different
cycle to the Java domain model. So the bones of it are there already.

>
> On 4 September 2015 at 10:11, Stephen Cameron <st...@gmail.com>
> wrote:
>
> > Hi,
> >
> > Yes, I could see the probable reason, but couldn't figure out what might
> be
> > a fix it.
> >
> > I have changed strategy and I think it will be better to begin over with
> > simpleapp and add things in. Better to have a starting point that works
> > then I know that the breakage was due to the last thing added, but also
> to
> > do it the TDD way.
> >
> > I looked at fixtures and integtests early on, but was in too much of a
> > hurry to show something to the client. I've decided to go back to the
> right
> > approach.
> >
> > Try to eliminate the stress early (well mid-way) through the project
> rather
> > than it hitting at the end, as I read.
> >
> > On Fri, Sep 4, 2015 at 6:27 PM, Dan Haywood <
> dan@haywood-associates.co.uk>
> > wrote:
> >
> > > Hi Steve,
> > >
> > > I've taken a quick look, and found one issue:
> > >
> > >
> > >
> >
> https://github.com/Stephen-Cameron-Data-Services/isis-chats/blob/master/integtests/src/test/java/au/com/scds/isis/integtests/bootstrap/SimpleAppSystemInitializer.java#L51
> > >
> > > should be "au.com.scds.chats.dom.module".
> > >
> > >
> > > However, the error reporting clearly needs to be better to help track
> > this
> > > down ... I saw an exception regarding the misconfiguration in the
> > console,
> > > but it didn't seem to be written to stdout or stderr, for some reason.
> > >
> > > The subsequent exception that you are seeing (NullPointerException) is
> > > because Isis tries to do a shutdown after a failed initialization, and
> > this
> > > fails - perhaps not surprisingly - because the initialization was
> > > incomplete.  I think this could be improved too, so will look into it.
> > >
> > > ~~~
> > >
> > > With this issue fixed, I did then hit a further issue with respect to
> > > database schemas.  I will take a look at that later today, though I
> have
> > > some other things to work on first, I'm afraid
> > >
> > > HTH
> > > Dan
> > >
> > >
> > >
> > >
> > > On 4 September 2015 at 06:10, Stephen Cameron <
> > steve.cameron.62@gmail.com>
> > > wrote:
> > >
> > > > Hi All,
> > > >
> > > > I am trying to make a start with integration testing, not much
> success
> > so
> > > > far.
> > > >
> > > > I am getting an NullPointerException in the metamodel creation phase
> I
> > > > think.
> > > >
> > > >
> > > The stack trace indicates that the framework can't find an
> implementation
> > > of TranslationService.  Under normal circumstances the implementation
> is
> > > provided by default by the framework
> > > (org.apache.isis.core.runtime.services.i18n.po.TranslationServicePo).
> > >
> > >
> > >
> > >
> > > > I tried to set a breakpoint in Eclipse to see what is being
> translated,
> > > but
> > > > that does not happen for this exception, do I need to have the Isis
> > code
> > > on
> > > > the classpath?
> > > >
> > > > Maybe I can get more info on the metamodel validation in the log? I
> am
> > > > mostly just seeing the datanuclues db schema creation to this point.
> > > >
> > > > Perhaps I need to go back to the start, beginning with simpleapp and
> > > start
> > > > adding things to be truly doing TDD! Retrospective is not easy :)
> > > >
> > > > java.lang.NullPointerException
> > > > 14:58:11,347  [ObjectReflectorDefault Thread-0   INFO ]  shutting
> down
> > > >
> > org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault@6c9499ea
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated.<init>(NamedFacetTranslated.java:42)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.translateName(TranslationFacetFactory.java:98)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.process(TranslationFacetFactory.java:61)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:324)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createPropertyFacetedMethodsFromAccessors(FacetedMethodsBuilder.java:385)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findAndRemovePropertyAccessorsAndCreateCorrespondingFacetedMethods(FacetedMethodsBuilder.java:339)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:316)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:344)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.catalogNamedQueries(DataNucleusApplicationComponents.java:242)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.initialize(DataNucleusApplicationComponents.java:112)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.<init>(DataNucleusApplicationComponents.java:103)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createDataNucleusApplicationComponentsIfRequired(DataNucleusPersistenceMechanismInstaller.java:134)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createObjectStore(DataNucleusPersistenceMechanismInstaller.java:110)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.createPersistenceSession(PersistenceSessionFactory.java:95)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.openSession(IsisSessionFactory.java:141)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:70)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:279)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdownServices(IsisSystem.java:311)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdown(IsisSystem.java:300)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.shutdown(IsisSystemForTest.java:467)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.access$100(IsisSystemForTest.java:74)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest$Builder$1.run(IsisSystemForTest.java:301)
> > > > java.lang.NullPointerException
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated.<init>(NamedFacetTranslated.java:42)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.translateName(TranslationFacetFactory.java:98)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.process(TranslationFacetFactory.java:61)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:324)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createPropertyFacetedMethodsFromAccessors(FacetedMethodsBuilder.java:385)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findAndRemovePropertyAccessorsAndCreateCorrespondingFacetedMethods(FacetedMethodsBuilder.java:339)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:316)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecifications(ObjectReflectorDefault.java:415)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:310)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:344)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.catalogNamedQueries(DataNucleusApplicationComponents.java:242)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.initialize(DataNucleusApplicationComponents.java:112)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.<init>(DataNucleusApplicationComponents.java:103)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createDataNucleusApplicationComponentsIfRequired(DataNucleusPersistenceMechanismInstaller.java:134)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createObjectStore(DataNucleusPersistenceMechanismInstaller.java:110)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.createPersistenceSession(PersistenceSessionFactory.java:95)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.openSession(IsisSessionFactory.java:141)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:70)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:279)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdownServices(IsisSystem.java:311)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdown(IsisSystem.java:300)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.shutdown(IsisSystemForTest.java:467)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.access$100(IsisSystemForTest.java:74)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest$Builder$1.run(IsisSystemForTest.java:301)
> > > > 14:58:11,442  [ObjectReflectorDefault Thread-1   INFO ]  shutting
> down
> > > >
> > org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault@6c9499ea
> > > >
> > > > Results :
> > > >
> > > > Tests in error:
> > > >   TODO: implement me
> > > >   TODO: implement me
> > > >   TODO: implement me
> > > >   TODO: implement me
> > > >   TODO: implement me
> > > >   TODO: implement me
> > > >   ParticipantsIntegTest$Create>SimpleAppIntegTest.initClass:33 »
> > Runtime
> > > > java.la...
> > > >   ParticipantsIntegTest$ListAll>SimpleAppIntegTest.initClass:33 »
> > Runtime
> > > > java.l...
> > > >
> > >
> >
>

Re: integration testing

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
+1 on that.

That said, I still find myself conflicted on this.  There's definitely some
value in spiking a business app, without tests, just in order to validate
that there's a worthwhile app to build.  But if one takes that road, then
it's soooo very tempting to keep that prototype rather than throwing it
away.

Although writing fixture scripts adds some overhead, I think it's
worthwhile to think of writing them as part of the requirements gathering
phase: what is the "given" (as in given/when/then) for a particular
scenario.  If one isn't able to get the app into that initial state, then
there's probably some other prerequisite stories that still need to be
written.  And of course, those fixture scripts are useful not only for
demoing the app, but can also be reused in the integration tests.

Anyway, glad you're going back to simpleapp and then adding your own stuff
in piecemeal.  I suspect it won't take too long to get back to where you
presently are, but I'm sure you'll tell us one way or another :-)

Cheers
Dan

PS: the simpleapp does have a BDD integration with Cucumber.  Although BDD
is cool, it only makes sense to add the overhead if you are actually doing
BDD in collaboration with your business users.  If you aren't (ie if
instead you are "just" deploying the app itself into a UAT environemtn in
order to obtain feedback / verification of behaviour) then I'd suggest just
focusing on the regular JUnit tests and remove those BDD specs.


On 4 September 2015 at 10:11, Stephen Cameron <st...@gmail.com>
wrote:

> Hi,
>
> Yes, I could see the probable reason, but couldn't figure out what might be
> a fix it.
>
> I have changed strategy and I think it will be better to begin over with
> simpleapp and add things in. Better to have a starting point that works
> then I know that the breakage was due to the last thing added, but also to
> do it the TDD way.
>
> I looked at fixtures and integtests early on, but was in too much of a
> hurry to show something to the client. I've decided to go back to the right
> approach.
>
> Try to eliminate the stress early (well mid-way) through the project rather
> than it hitting at the end, as I read.
>
> On Fri, Sep 4, 2015 at 6:27 PM, Dan Haywood <da...@haywood-associates.co.uk>
> wrote:
>
> > Hi Steve,
> >
> > I've taken a quick look, and found one issue:
> >
> >
> >
> https://github.com/Stephen-Cameron-Data-Services/isis-chats/blob/master/integtests/src/test/java/au/com/scds/isis/integtests/bootstrap/SimpleAppSystemInitializer.java#L51
> >
> > should be "au.com.scds.chats.dom.module".
> >
> >
> > However, the error reporting clearly needs to be better to help track
> this
> > down ... I saw an exception regarding the misconfiguration in the
> console,
> > but it didn't seem to be written to stdout or stderr, for some reason.
> >
> > The subsequent exception that you are seeing (NullPointerException) is
> > because Isis tries to do a shutdown after a failed initialization, and
> this
> > fails - perhaps not surprisingly - because the initialization was
> > incomplete.  I think this could be improved too, so will look into it.
> >
> > ~~~
> >
> > With this issue fixed, I did then hit a further issue with respect to
> > database schemas.  I will take a look at that later today, though I have
> > some other things to work on first, I'm afraid
> >
> > HTH
> > Dan
> >
> >
> >
> >
> > On 4 September 2015 at 06:10, Stephen Cameron <
> steve.cameron.62@gmail.com>
> > wrote:
> >
> > > Hi All,
> > >
> > > I am trying to make a start with integration testing, not much success
> so
> > > far.
> > >
> > > I am getting an NullPointerException in the metamodel creation phase I
> > > think.
> > >
> > >
> > The stack trace indicates that the framework can't find an implementation
> > of TranslationService.  Under normal circumstances the implementation is
> > provided by default by the framework
> > (org.apache.isis.core.runtime.services.i18n.po.TranslationServicePo).
> >
> >
> >
> >
> > > I tried to set a breakpoint in Eclipse to see what is being translated,
> > but
> > > that does not happen for this exception, do I need to have the Isis
> code
> > on
> > > the classpath?
> > >
> > > Maybe I can get more info on the metamodel validation in the log? I am
> > > mostly just seeing the datanuclues db schema creation to this point.
> > >
> > > Perhaps I need to go back to the start, beginning with simpleapp and
> > start
> > > adding things to be truly doing TDD! Retrospective is not easy :)
> > >
> > > java.lang.NullPointerException
> > > 14:58:11,347  [ObjectReflectorDefault Thread-0   INFO ]  shutting down
> > >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault@6c9499ea
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated.<init>(NamedFacetTranslated.java:42)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.translateName(TranslationFacetFactory.java:98)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.process(TranslationFacetFactory.java:61)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:324)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createPropertyFacetedMethodsFromAccessors(FacetedMethodsBuilder.java:385)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findAndRemovePropertyAccessorsAndCreateCorrespondingFacetedMethods(FacetedMethodsBuilder.java:339)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:316)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:344)
> > >     at
> > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.catalogNamedQueries(DataNucleusApplicationComponents.java:242)
> > >     at
> > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.initialize(DataNucleusApplicationComponents.java:112)
> > >     at
> > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.<init>(DataNucleusApplicationComponents.java:103)
> > >     at
> > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createDataNucleusApplicationComponentsIfRequired(DataNucleusPersistenceMechanismInstaller.java:134)
> > >     at
> > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createObjectStore(DataNucleusPersistenceMechanismInstaller.java:110)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.createPersistenceSession(PersistenceSessionFactory.java:95)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.openSession(IsisSessionFactory.java:141)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:70)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:279)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdownServices(IsisSystem.java:311)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdown(IsisSystem.java:300)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.shutdown(IsisSystemForTest.java:467)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.access$100(IsisSystemForTest.java:74)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest$Builder$1.run(IsisSystemForTest.java:301)
> > > java.lang.NullPointerException
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated.<init>(NamedFacetTranslated.java:42)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.translateName(TranslationFacetFactory.java:98)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.process(TranslationFacetFactory.java:61)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:324)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createPropertyFacetedMethodsFromAccessors(FacetedMethodsBuilder.java:385)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findAndRemovePropertyAccessorsAndCreateCorrespondingFacetedMethods(FacetedMethodsBuilder.java:339)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:316)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecifications(ObjectReflectorDefault.java:415)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:310)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:344)
> > >     at
> > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.catalogNamedQueries(DataNucleusApplicationComponents.java:242)
> > >     at
> > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.initialize(DataNucleusApplicationComponents.java:112)
> > >     at
> > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.<init>(DataNucleusApplicationComponents.java:103)
> > >     at
> > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createDataNucleusApplicationComponentsIfRequired(DataNucleusPersistenceMechanismInstaller.java:134)
> > >     at
> > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createObjectStore(DataNucleusPersistenceMechanismInstaller.java:110)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.createPersistenceSession(PersistenceSessionFactory.java:95)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.openSession(IsisSessionFactory.java:141)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:70)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:279)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdownServices(IsisSystem.java:311)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdown(IsisSystem.java:300)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.shutdown(IsisSystemForTest.java:467)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.access$100(IsisSystemForTest.java:74)
> > >     at
> > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest$Builder$1.run(IsisSystemForTest.java:301)
> > > 14:58:11,442  [ObjectReflectorDefault Thread-1   INFO ]  shutting down
> > >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault@6c9499ea
> > >
> > > Results :
> > >
> > > Tests in error:
> > >   TODO: implement me
> > >   TODO: implement me
> > >   TODO: implement me
> > >   TODO: implement me
> > >   TODO: implement me
> > >   TODO: implement me
> > >   ParticipantsIntegTest$Create>SimpleAppIntegTest.initClass:33 »
> Runtime
> > > java.la...
> > >   ParticipantsIntegTest$ListAll>SimpleAppIntegTest.initClass:33 »
> Runtime
> > > java.l...
> > >
> >
>

Re: integration testing

Posted by Stephen Cameron <st...@gmail.com>.
Hi,

Yes, I could see the probable reason, but couldn't figure out what might be
a fix it.

I have changed strategy and I think it will be better to begin over with
simpleapp and add things in. Better to have a starting point that works
then I know that the breakage was due to the last thing added, but also to
do it the TDD way.

I looked at fixtures and integtests early on, but was in too much of a
hurry to show something to the client. I've decided to go back to the right
approach.

Try to eliminate the stress early (well mid-way) through the project rather
than it hitting at the end, as I read.

On Fri, Sep 4, 2015 at 6:27 PM, Dan Haywood <da...@haywood-associates.co.uk>
wrote:

> Hi Steve,
>
> I've taken a quick look, and found one issue:
>
>
> https://github.com/Stephen-Cameron-Data-Services/isis-chats/blob/master/integtests/src/test/java/au/com/scds/isis/integtests/bootstrap/SimpleAppSystemInitializer.java#L51
>
> should be "au.com.scds.chats.dom.module".
>
>
> However, the error reporting clearly needs to be better to help track this
> down ... I saw an exception regarding the misconfiguration in the console,
> but it didn't seem to be written to stdout or stderr, for some reason.
>
> The subsequent exception that you are seeing (NullPointerException) is
> because Isis tries to do a shutdown after a failed initialization, and this
> fails - perhaps not surprisingly - because the initialization was
> incomplete.  I think this could be improved too, so will look into it.
>
> ~~~
>
> With this issue fixed, I did then hit a further issue with respect to
> database schemas.  I will take a look at that later today, though I have
> some other things to work on first, I'm afraid
>
> HTH
> Dan
>
>
>
>
> On 4 September 2015 at 06:10, Stephen Cameron <st...@gmail.com>
> wrote:
>
> > Hi All,
> >
> > I am trying to make a start with integration testing, not much success so
> > far.
> >
> > I am getting an NullPointerException in the metamodel creation phase I
> > think.
> >
> >
> The stack trace indicates that the framework can't find an implementation
> of TranslationService.  Under normal circumstances the implementation is
> provided by default by the framework
> (org.apache.isis.core.runtime.services.i18n.po.TranslationServicePo).
>
>
>
>
> > I tried to set a breakpoint in Eclipse to see what is being translated,
> but
> > that does not happen for this exception, do I need to have the Isis code
> on
> > the classpath?
> >
> > Maybe I can get more info on the metamodel validation in the log? I am
> > mostly just seeing the datanuclues db schema creation to this point.
> >
> > Perhaps I need to go back to the start, beginning with simpleapp and
> start
> > adding things to be truly doing TDD! Retrospective is not easy :)
> >
> > java.lang.NullPointerException
> > 14:58:11,347  [ObjectReflectorDefault Thread-0   INFO ]  shutting down
> > org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault@6c9499ea
> >     at
> >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated.<init>(NamedFacetTranslated.java:42)
> >     at
> >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.translateName(TranslationFacetFactory.java:98)
> >     at
> >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.process(TranslationFacetFactory.java:61)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:324)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createPropertyFacetedMethodsFromAccessors(FacetedMethodsBuilder.java:385)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findAndRemovePropertyAccessorsAndCreateCorrespondingFacetedMethods(FacetedMethodsBuilder.java:339)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:316)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:344)
> >     at
> >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.catalogNamedQueries(DataNucleusApplicationComponents.java:242)
> >     at
> >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.initialize(DataNucleusApplicationComponents.java:112)
> >     at
> >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.<init>(DataNucleusApplicationComponents.java:103)
> >     at
> >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createDataNucleusApplicationComponentsIfRequired(DataNucleusPersistenceMechanismInstaller.java:134)
> >     at
> >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createObjectStore(DataNucleusPersistenceMechanismInstaller.java:110)
> >     at
> >
> >
> org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.createPersistenceSession(PersistenceSessionFactory.java:95)
> >     at
> >
> >
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.openSession(IsisSessionFactory.java:141)
> >     at
> >
> >
> org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:70)
> >     at
> >
> >
> org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:279)
> >     at
> >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdownServices(IsisSystem.java:311)
> >     at
> >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdown(IsisSystem.java:300)
> >     at
> >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.shutdown(IsisSystemForTest.java:467)
> >     at
> >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.access$100(IsisSystemForTest.java:74)
> >     at
> >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest$Builder$1.run(IsisSystemForTest.java:301)
> > java.lang.NullPointerException
> >     at
> >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated.<init>(NamedFacetTranslated.java:42)
> >     at
> >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.translateName(TranslationFacetFactory.java:98)
> >     at
> >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.process(TranslationFacetFactory.java:61)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:324)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createPropertyFacetedMethodsFromAccessors(FacetedMethodsBuilder.java:385)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findAndRemovePropertyAccessorsAndCreateCorrespondingFacetedMethods(FacetedMethodsBuilder.java:339)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:316)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecifications(ObjectReflectorDefault.java:415)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:310)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
> >     at
> >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:344)
> >     at
> >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.catalogNamedQueries(DataNucleusApplicationComponents.java:242)
> >     at
> >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.initialize(DataNucleusApplicationComponents.java:112)
> >     at
> >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.<init>(DataNucleusApplicationComponents.java:103)
> >     at
> >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createDataNucleusApplicationComponentsIfRequired(DataNucleusPersistenceMechanismInstaller.java:134)
> >     at
> >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createObjectStore(DataNucleusPersistenceMechanismInstaller.java:110)
> >     at
> >
> >
> org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.createPersistenceSession(PersistenceSessionFactory.java:95)
> >     at
> >
> >
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.openSession(IsisSessionFactory.java:141)
> >     at
> >
> >
> org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:70)
> >     at
> >
> >
> org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:279)
> >     at
> >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdownServices(IsisSystem.java:311)
> >     at
> >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdown(IsisSystem.java:300)
> >     at
> >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.shutdown(IsisSystemForTest.java:467)
> >     at
> >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.access$100(IsisSystemForTest.java:74)
> >     at
> >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest$Builder$1.run(IsisSystemForTest.java:301)
> > 14:58:11,442  [ObjectReflectorDefault Thread-1   INFO ]  shutting down
> > org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault@6c9499ea
> >
> > Results :
> >
> > Tests in error:
> >   TODO: implement me
> >   TODO: implement me
> >   TODO: implement me
> >   TODO: implement me
> >   TODO: implement me
> >   TODO: implement me
> >   ParticipantsIntegTest$Create>SimpleAppIntegTest.initClass:33 » Runtime
> > java.la...
> >   ParticipantsIntegTest$ListAll>SimpleAppIntegTest.initClass:33 » Runtime
> > java.l...
> >
>

Re: integration testing

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
Hi Steve,

I've taken a quick look, and found one issue:

https://github.com/Stephen-Cameron-Data-Services/isis-chats/blob/master/integtests/src/test/java/au/com/scds/isis/integtests/bootstrap/SimpleAppSystemInitializer.java#L51

should be "au.com.scds.chats.dom.module".


However, the error reporting clearly needs to be better to help track this
down ... I saw an exception regarding the misconfiguration in the console,
but it didn't seem to be written to stdout or stderr, for some reason.

The subsequent exception that you are seeing (NullPointerException) is
because Isis tries to do a shutdown after a failed initialization, and this
fails - perhaps not surprisingly - because the initialization was
incomplete.  I think this could be improved too, so will look into it.

~~~

With this issue fixed, I did then hit a further issue with respect to
database schemas.  I will take a look at that later today, though I have
some other things to work on first, I'm afraid

HTH
Dan




On 4 September 2015 at 06:10, Stephen Cameron <st...@gmail.com>
wrote:

> Hi All,
>
> I am trying to make a start with integration testing, not much success so
> far.
>
> I am getting an NullPointerException in the metamodel creation phase I
> think.
>
>
The stack trace indicates that the framework can't find an implementation
of TranslationService.  Under normal circumstances the implementation is
provided by default by the framework
(org.apache.isis.core.runtime.services.i18n.po.TranslationServicePo).




> I tried to set a breakpoint in Eclipse to see what is being translated, but
> that does not happen for this exception, do I need to have the Isis code on
> the classpath?
>
> Maybe I can get more info on the metamodel validation in the log? I am
> mostly just seeing the datanuclues db schema creation to this point.
>
> Perhaps I need to go back to the start, beginning with simpleapp and start
> adding things to be truly doing TDD! Retrospective is not easy :)
>
> java.lang.NullPointerException
> 14:58:11,347  [ObjectReflectorDefault Thread-0   INFO ]  shutting down
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault@6c9499ea
>     at
>
> org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated.<init>(NamedFacetTranslated.java:42)
>     at
>
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.translateName(TranslationFacetFactory.java:98)
>     at
>
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.process(TranslationFacetFactory.java:61)
>     at
>
> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:324)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createPropertyFacetedMethodsFromAccessors(FacetedMethodsBuilder.java:385)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findAndRemovePropertyAccessorsAndCreateCorrespondingFacetedMethods(FacetedMethodsBuilder.java:339)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:316)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:344)
>     at
>
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.catalogNamedQueries(DataNucleusApplicationComponents.java:242)
>     at
>
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.initialize(DataNucleusApplicationComponents.java:112)
>     at
>
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.<init>(DataNucleusApplicationComponents.java:103)
>     at
>
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createDataNucleusApplicationComponentsIfRequired(DataNucleusPersistenceMechanismInstaller.java:134)
>     at
>
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createObjectStore(DataNucleusPersistenceMechanismInstaller.java:110)
>     at
>
> org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.createPersistenceSession(PersistenceSessionFactory.java:95)
>     at
>
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.openSession(IsisSessionFactory.java:141)
>     at
>
> org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:70)
>     at
>
> org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:279)
>     at
>
> org.apache.isis.core.runtime.system.IsisSystem.shutdownServices(IsisSystem.java:311)
>     at
>
> org.apache.isis.core.runtime.system.IsisSystem.shutdown(IsisSystem.java:300)
>     at
>
> org.apache.isis.core.integtestsupport.IsisSystemForTest.shutdown(IsisSystemForTest.java:467)
>     at
>
> org.apache.isis.core.integtestsupport.IsisSystemForTest.access$100(IsisSystemForTest.java:74)
>     at
>
> org.apache.isis.core.integtestsupport.IsisSystemForTest$Builder$1.run(IsisSystemForTest.java:301)
> java.lang.NullPointerException
>     at
>
> org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated.<init>(NamedFacetTranslated.java:42)
>     at
>
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.translateName(TranslationFacetFactory.java:98)
>     at
>
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.process(TranslationFacetFactory.java:61)
>     at
>
> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:324)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createPropertyFacetedMethodsFromAccessors(FacetedMethodsBuilder.java:385)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findAndRemovePropertyAccessorsAndCreateCorrespondingFacetedMethods(FacetedMethodsBuilder.java:339)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:316)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecifications(ObjectReflectorDefault.java:415)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:310)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
>     at
>
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
>     at
>
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:344)
>     at
>
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.catalogNamedQueries(DataNucleusApplicationComponents.java:242)
>     at
>
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.initialize(DataNucleusApplicationComponents.java:112)
>     at
>
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.<init>(DataNucleusApplicationComponents.java:103)
>     at
>
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createDataNucleusApplicationComponentsIfRequired(DataNucleusPersistenceMechanismInstaller.java:134)
>     at
>
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createObjectStore(DataNucleusPersistenceMechanismInstaller.java:110)
>     at
>
> org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.createPersistenceSession(PersistenceSessionFactory.java:95)
>     at
>
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.openSession(IsisSessionFactory.java:141)
>     at
>
> org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:70)
>     at
>
> org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:279)
>     at
>
> org.apache.isis.core.runtime.system.IsisSystem.shutdownServices(IsisSystem.java:311)
>     at
>
> org.apache.isis.core.runtime.system.IsisSystem.shutdown(IsisSystem.java:300)
>     at
>
> org.apache.isis.core.integtestsupport.IsisSystemForTest.shutdown(IsisSystemForTest.java:467)
>     at
>
> org.apache.isis.core.integtestsupport.IsisSystemForTest.access$100(IsisSystemForTest.java:74)
>     at
>
> org.apache.isis.core.integtestsupport.IsisSystemForTest$Builder$1.run(IsisSystemForTest.java:301)
> 14:58:11,442  [ObjectReflectorDefault Thread-1   INFO ]  shutting down
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault@6c9499ea
>
> Results :
>
> Tests in error:
>   TODO: implement me
>   TODO: implement me
>   TODO: implement me
>   TODO: implement me
>   TODO: implement me
>   TODO: implement me
>   ParticipantsIntegTest$Create>SimpleAppIntegTest.initClass:33 » Runtime
> java.la...
>   ParticipantsIntegTest$ListAll>SimpleAppIntegTest.initClass:33 » Runtime
> java.l...
>