public void testNodes()
{
if (1 == 1) return ; // disable this test, its a performance test
assertNotNull("provider is null", provider);
Node entityRoot = null;
try
{
boolean hasBeenPopulated = false;
Node root = provider.getNode("/", 0);
assertNotNull("root node is null", root);
if (!provider.nodeExists("/portlet_entity", 0))
{
entityRoot = provider.createNode(root, "portlet_entity", 0, "/portlet_entity");
assertNotNull("entity-root node is null", entityRoot);
}
else
{
if (reset)
{
Node pe = provider.getNode("/portlet_entity", 0);
provider.removeNode(root, pe);
entityRoot = provider.createNode(root, "portlet_entity", 0, "/portlet_entity");
assertNotNull("entity-root node is null", entityRoot);
}
else
hasBeenPopulated = true;
}
if (entityRoot == null)
entityRoot = provider.getNode("/portlet_entity", 0);
if (hasBeenPopulated == false)
{
for (int ix = 0; ix < ENTITY_SIZE; ix++)
{
String path = "/portlet_entity/" + ix;
Node entity = provider.createNode(entityRoot, new Integer(ix).toString(), 0, path);
assertNotNull(path, entity);
for (int iy = 0; iy < users.length; iy++)
{
String uPath = "/portlet_entity/" + ix + "/" + users[iy];
Node uEntity = provider.createNode(entity, users[iy], 0, uPath);
assertNotNull(uPath, uEntity);
String pPath = uPath + "/preferences";
Node pEntity = provider.createNode(uEntity, "preferences", 0, pPath);
assertNotNull(pPath, pEntity);
for (int iz = 0; iz < PREF_SIZE; iz++)
{
String zPath = pPath + "/pref-" + iz;
Node zEntity = provider.createNode(pEntity, "pref-" + iz, 0, zPath);
assertNotNull(zPath, zEntity);
// size node
Node size = provider.createNode(zEntity, "size", 0, zPath + "/size" );
assertNotNull(zPath + "/size", size);
// values node
Node values = provider.createNode(zEntity, "values", 0, zPath + "/values" );
assertNotNull(values + "/values", values);
// size property
Property sizeProp = provider.createProperty(size, "size", "1");
size.getNodeProperties().add(sizeProp);
provider.storeNode(size);
// values property
Property valueProp = provider.createProperty(values, "0", new Integer(iz + 1000).toString());
values.getNodeProperties().add(valueProp);
provider.storeNode(values);
}
}
}
}
// Test for data using both new and old paths
if (disableReads == false)
{
long start = System.currentTimeMillis();
for (int ix = 0; ix < ENTITY_SIZE; ix++)
{
for (int iy = 0; iy < users.length; iy++)
{
for (int iz = 0; iz < PREF_SIZE; iz++)
{
Node n;
String key = "/portlet_entity/" + ix + "/" + users[iy] + "/preferences/pref-" + iz;
n = provider.getNode(key, 0);
assertNotNull("null pref: " + key, n);
Collection c = provider.getChildren(n);
assertNotNull("null collection ", c);
Iterator it = c.iterator();
while (it.hasNext())
{
Node child = (Node)it.next();
if (child.getNodeName().equals("size"))
{
Object props[] = child.getNodeProperties().toArray();
assertTrue("props isa ", (props[0] instanceof Property));
Property p = (Property)props[0];
String size = p.getPropertyValue();
assertTrue("child size name ", "size".equals(p.getPropertyName()));
assertTrue("child size value ", "1".equals(size));
}
else if (child.getNodeName().equals("values"))
{
Object props[] = child.getNodeProperties().toArray();
assertTrue("props isa ", (props[0] instanceof Property));
Property p = (Property)props[0];
String value = p.getPropertyValue();
assertTrue("child value name ", "0".equals(p.getPropertyName()));
assertTrue("child value value ", new Integer(iz + 1000).toString().equals(value));