db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kristian Waagan <Kristian.Waa...@Sun.COM>
Subject Re: cleaning database between test cases
Date Fri, 19 Mar 2010 09:44:37 GMT
On 19.03.10 10:11, Gabriele Kahlout wrote:
> Also, I've copied from the code what I seem to need, and then end up
> with when I use the db again in a 2nd method.
>
> Caused by: java.sql.SQLException: Database '/Volumes/STORE N
> GO/ws/MemorizEasy/test/db.sqlwrapper' not found.
>
> Note that after destroying the schemas, I shut down the db, and delete
> the test folder of the previous method.
>

Hi Gabriele,

I don't know the requirements of your application, but note that in 
general you have three options:

  - clean the database and reuse it
    This is what we're doing in the Derby test framework (see the class 
that Bryan pointed to), because it would take much longer to actually 
delete and recreate the database files all the time. Here we use 
meta-data to detect all objects added to the database during the test, 
and then we drop them.

  - simply just delete the database on disk (i.e. 'rm -R myDbDirectory' 
in *nix) and create a new one for the next test (through JDBC, using 
'jdbc:derby:...;create=true').
    You should shut down the database before deleting the files on disk.

  - if you just need a database for a short period of time or similar, 
use an in-memory db.
    Remember to drop it [1] to free up the memory.

It's hard to tell exactly what went wrong above, but are you sure the 
database is still on disk?
Can you locate the directory? (you should see the directories 
db.sqlwrapper, db.sqlwrapper/seg0 and db.sqlwrapper/log)
If not, why did it get deleted?


-- 
Kristian

[1] Note that proper support for this is added in 10.6, by using the 
"drop=true" attribute. In 10.5, the mechanism is different.

> 2010/3/18, Gabriele Kahlout<gabriele@mysimpatico.com>:
>
>> I reached here:
>> http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/CleanDatabaseTestSetup.java?view=markup
>>
>> But then what do I do? The code relies on some other class, and it
>> seems like I'd have to import the whole package to use it. Is that it?
>> Besides that one cannot delete the APP schema (which is the one i
>> use), while the code seems to want to do that.
>> If not, is there how I can use this without concerning myself with the
>> impl. details?
>>
>> 2010/3/18, Gabriele Kahlout<gabriele@mysimpatico.com>:
>>
>>> Can you provide a link to it? Also, is it in some library I could use?
>>>
>>> 2010/3/18, Bryan Pendleton<bpendleton.derby@gmail.com>:
>>>
>>>>> For testing, how can I make sure the tearDown completely deletes the
>>>>> db, and setUp creates a completely new copy, without using in-memory
>>>>> db?
>>>>>
>>>> We do this in the Derby regression test suite.
>>>>
>>>> Have a look at
>>>> org.apache.derbyTesting.functionTests.junit.CleanDatabaseTestSetup.java
>>>>
>>>> thanks,
>>>>
>>>> bryan
>>>>
>>>>
>>>
>>> --
>>> Regards,
>>> K. Gabriele
>>>
>>> --- unchanged since 25/1/10 ---
>>> P.S. Unless a notification (LON), please reply either with an answer
>>> OR with " ACK" appended to this subject within 48 hours. Otherwise, I
>>> might resend.
>>> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧ IsAnswerTo(x,
>>> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x)) ∧
>>> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>>>
>>> Also note that correspondence may be received only from specified a
>>> priori senders, or if the subject of this email ends with a code, eg.
>>> -LICHT01X, then also from senders whose reply contains it.
>>> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨ (∃y.
>>> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).
>>>
>>>
>>
>> --
>> Regards,
>> K. Gabriele
>>
>> --- unchanged since 25/1/10 ---
>> P.S. Unless a notification (LON), please reply either with an answer
>> OR with " ACK" appended to this subject within 48 hours. Otherwise, I
>> might resend.
>> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧ IsAnswerTo(x,
>> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x)) ∧
>> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>>
>> Also note that correspondence may be received only from specified a
>> priori senders, or if the subject of this email ends with a code, eg.
>> -LICHT01X, then also from senders whose reply contains it.
>> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨ (∃y.
>> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).
>>
>>
>
>


Mime
View raw message