Re: In memory DB for unit testing

2018-05-15 Thread Malcolm Edgar
We use H2 database extensively for unit tests, it is great for this purpose. regards Malcolm On Thu, May 10, 2018 at 3:57 PM, Andrus Adamchik wrote: > We do. If we are talking about Bootique, for now we decided to focus on > simple examples at https://github.com/bootique-examples . > > But I ca

Re: In memory DB for unit testing

2018-05-09 Thread Andrus Adamchik
We do. If we are talking about Bootique, for now we decided to focus on simple examples at https://github.com/bootique-examples . But I can also find a budget for a part-time tech writer for both Bootique and Cayenne. Most tech writers that I met so far could only write docs for UI apps. So if

Re: In memory DB for unit testing

2018-05-08 Thread Tony Giaccone
Andrus, You need a tech writer, to get all this stuff documented. Tony On 5/3/18 3:19 AM, Andrus Adamchik wrote: I use Derby. From my experience it is the most "serious" choice out of all in-memory Java databases. HSQL/H2 left a bad aftertaste from the days when we used it for the Modeler

Re: In memory DB for unit testing

2018-05-05 Thread Andrus Adamchik
Somehow this has been left out from this discussion, but in the days of Docker and testcontainers lib you can use a real DB without any admin overhead. I mean Cayenne itself has self-contained test profiles for MySQL, PostgreSQL and SQLServer. E.g.: https://travis-ci.org/apache/cayenne/builds/3

Re: In memory DB for unit testing

2018-05-05 Thread Aristedes Maniatis
On 3/5/18 5:59am, Ken Anderson wrote: We’re thinking about setting up an in-memory database in place of SQL Server for doing unit tests. Does anyone have any experience doing this with Cayenne? Any recommendations or warnings? We used to use Derby everywhere (in memory) and it worked pret

Re: In memory DB for unit testing

2018-05-03 Thread Andrus Adamchik
> On May 3, 2018, at 4:09 PM, Mike Kienenberger wrote: > > But I still cringe thinking of how I'd deal with updating one of > Andrus's big cvs data sets. I guess you'd need to reload it into a > database, make changes, and then export it again? Unfortunately yes. Andrus

Re: In memory DB for unit testing

2018-05-03 Thread Mike Kienenberger
There is one place I always use files, and that's for constants and lookup tables. Data that almost never changes. My database test framework always pulls in and populates these for me, so I never have to think about them. I generally import these directly from production. For data that change

Re: In memory DB for unit testing

2018-05-03 Thread Andrus Adamchik
I guess it depends on the situation. API-based is easier to comprehend and manage on the lower end (small/narrow data sets), while CSV scales much better to long/wide datasets. I often generate the later with real SQL against a real DB, then edit in LibreOffice/Excel, then save as a CSV in the p

Re: In memory DB for unit testing

2018-05-03 Thread Ken Anderson
Which do you late less? :) > On May 3, 2018, at 8:32 AM, Andrus Adamchik wrote: > > Hi Mike, > >> Is derby entirely in memory or does it have a filesystem footprint? > > It does. > >> I've found that maintaining tests using standalone data files is far more >> difficult than using helper cla

Re: In memory DB for unit testing

2018-05-03 Thread Andrus Adamchik
Hi Mike, > Is derby entirely in memory or does it have a filesystem footprint? It does. > I've found that maintaining tests using standalone data files is far more > difficult than using helper classes to create default data sets. Bootique tools support both types of datasets: file- and API-bas

Re: In memory DB for unit testing

2018-05-03 Thread Mike Kienenberger
As a general observation after using dbunit for 13 years, I've found that maintaining tests using standalone data files is far more difficult than using helper classes to create default data sets. I ended up with far too many data sets, and things were even worse if I needed a test with many inst

Re: In memory DB for unit testing

2018-05-03 Thread Andrus Adamchik
I use Derby. From my experience it is the most "serious" choice out of all in-memory Java databases. HSQL/H2 left a bad aftertaste from the days when we used it for the Modeler preferences. Though this may not be relevant in the context of unit tests. Beyond that, I use bootique-jdbc-test / bo

Re: In memory DB for unit testing

2018-05-02 Thread Michael Gentry
Yeah, I completely understand, plus in-memory is faster. I never got ambitious enough to make it more configurable so I could pick which location for which test. Ideally, when a test is stable, it should run in-memory, but I still liked the forensics of on-disk. On Wed, May 2, 2018 at 5:40 PM M

Re: In memory DB for unit testing

2018-05-02 Thread Mike Kienenberger
The reason I went with having the db entirely in memory was to run tests in parallel. Once you have a disk presence, you'll have to worry about test collisions. On Wed, May 2, 2018 at 5:35 PM, Michael Gentry wrote: > Hi Ken, > > To add to what Mike said, I've used H2 in the past with pretty good

Re: In memory DB for unit testing

2018-05-02 Thread Michael Gentry
Hi Ken, To add to what Mike said, I've used H2 in the past with pretty good results. You can either let Cayenne create your schema or use something like Flyway/Liquibase if you have that integrated into your application already. One thing I do differently, though, is I create a temporary on-disk

Re: In memory DB for unit testing

2018-05-02 Thread Mike Kienenberger
I use hsqld and dbunit with Cayenne to run my unit and integration tests. Nothing specific comes to mind. General things I did were to use cgen to generate dbunit classes for programmically populating the database tables (external to cayenne) and making sure my tests didn't exceed the connection

In memory DB for unit testing

2018-05-02 Thread Ken Anderson
All, We’re thinking about setting up an in-memory database in place of SQL Server for doing unit tests. Does anyone have any experience doing this with Cayenne? Any recommendations or warnings? Thanks, Ken Confidentiality Notice: This e-mail and accompanying documents contain confidential in