Hi,
I'm quite new to Jackrabbit and I have a question regarding
unit/integration tests.
I'm testing if my data are being saved into the repository.
I'm using a TransientRepository for that purpose. But since I don't have
a specific configuration, it saves everything in the file system, which
is fine but slow, too slow for a unit/integration test.
So I googled a bit and found an article about how to speed up tests with
Jackrabbit[1].
The problem is that, if I do the changes they recommend, I lose all my
data between the sessions, which is of course not what I want.
I got this kind of code in my tests :
@Before
public void setUp() {
FileUtils.deleteQuietly(JACKRABBIT_REPOSITORY);
repository = new TransientRepository(JACKRABBIT_CONFIG,
JACKRABBIT_REPOSITORY);
management = new JackrabbitModelManagement();
management.setUsername(username);
management.setPassword(password);
management.setRepository(repository);
}
@After
public void tearDown() {
FileUtils.deleteQuietly(JACKRABBIT_REPOSITORY);
}
@Test
public void testSetModelDescriptorWithoutIdNode() throws Exception {
BaseModelVersionDescriptor descriptor =
new BaseModelVersionDescriptor(new
BaseModelDescriptor(1, "first"), "1.0", 1);
String content = "foo";
InputStream input = IOUtils.toInputStream(content);
// Method to test.
management.setModelDescriptor(descriptor, input);
Session session = repository.login(new
SimpleCredentials(username, password.toCharArray()));
// Retrieve content
Node root = session.getRootNode();
Node node = root.getNode("1/1.0/model/jcr:content");
String actual = node.getProperty("jcr:data").getString();
assertEquals(content, actual);
session.logout();
}
My code used to retrieve the content throws a PathNotFoundException
because data has been lost between the two sessions (my
management.setModelDescriptor() method opens and then closes a session.)
So is there a recommended way to use a "all-in-memory" configuration for
use with tests ?
Regards.
[1]
http://modeshape.wordpress.com/2008/02/22/speedy-unit-testing-with-jackrabbit/
--
Pensez environnement : limitez l'impression de ce mail.
Please don't print this e-mail unless you really need to.