Re: Testing & Map
Joe Baldwin <[email protected]>
| Newsgroups | gmane.comp.java.cayenne.user |
|---|---|
| Message-ID | <[email protected]> |
Tony, > In our models we never specify the schema This sounds like what I was experimenting with. (Except in my case I thought it was “hacking” - I feel much better now :) ) I just manually edited the map.xml file and deleted the schema - cayenne-runtime seems fine with using the connection-url to define the db namespace. Did you set this in the CayenneModeler or via manual editing of the config files? Thanks Joe > On Jul 8, 2019, at 9:23 AM, Tony <[email protected]> wrote: > > Joe, > > We use cayenne with both drone and Jenkins. In our models we never specify the schema. It’s always left unspecified I.e. blank. > > When you do this the schema is determined by the JDBC URL. In our world the schemas are always the same so technically we could specify them but I personally feel the flexibility of determining database instance and schema from the environment is far superior to coding either in the model. > > We set shell variables to the JDBC url and then pick them up form the environment. > > This works flawlessly for us. > > > > Tony Giaccone > >> On Jul 6, 2019, at 9:36 PM, Joe Baldwin <[email protected]> wrote: >> >> I am trying to genericize the map.xml for multiple instances with multiple dbnames (looking for a “use <dbname>” analogue for cayenne config files - or a better idea if you have one) >> >> Details ... >> >> Context: >> cayenne: 4.0.1 >> db: mysql 8.0.16 >> dbname: “cms" / “cmstest" / "cms_<bunch of others suffixes>” (all referring to the same schema) >> >> Goals: >> - migrate to cicd (gradle, git, jenkins, automated testing,etc) >> - support testing configurations, as well as multiple instances of the same app but with unique dbnames >> >> Prob: >> While trying to migrate to fully automated testing (using junit-5) I hit a snag: >> - the cayenne map.xml has the datasource name (“cms” in this instance) embedded in the map.xml config file: >> >> <property name="defaultSchema" value="cms”/> >> ... >> <db-entity name="admin" schema="cms"> >> … >> </db-entity> >> >> So the general idea I had was to create a tmp-test database (cmstest), run the junit tests for unit & complex unit testing configured using gradle, then move on to a more complex testing config downstream. When I deploy it will be to multiple instances (with unique dbnames). >> >> But I cannot figure out how to genericize this map.xml so that I can easily change the datasource name - I could throw sed/awk at it - to change all the schema-name-refs, but I was hoping for something a bit more cayenne-oriented (and less brittle than sed/awk). >> >> Ideally, I am searching for a cayenne-analogue to mysql “use <dbname>” so that I could change the datasource name in one location (vs 25). >> >> Thanks >> Joe >> PS if you have any other gradle tricks that you rely on, please do send a link >>