Search in sources :

Example 21 with GenericNode

use of org.structr.core.entity.GenericNode in project structr by structr.

the class BasicTest method test05CheckRelationshipEntities.

/**
 * Create a node for each configured entity class and check the type
 */
@Test
public void test05CheckRelationshipEntities() {
    try (final Tx tx = app.tx()) {
        List<Class> entityList = null;
        try {
            entityList = getClasses("org.structr.core.entity");
        } catch (IOException | ClassNotFoundException ex) {
            logger.error("Unable to get list of entity classes", ex);
        }
        assertTrue(entityList.contains(AbstractRelationship.class));
        assertTrue(entityList.contains(GenericRelationship.class));
        for (Class entityClass : entityList) {
            // Class entityClass = entity.getValue();
            if (AbstractRelationship.class.isAssignableFrom(entityClass)) {
                String type = entityClass.getSimpleName();
                logger.info("Creating relationship of type {}", type);
                List<GenericNode> nodes = createTestNodes(GenericNode.class, 2);
                final NodeInterface startNode = nodes.get(0);
                final NodeInterface endNode = nodes.get(1);
                final RelationshipType relType = RelType.IS_AT;
                NodeHasLocation rel = app.create(startNode, endNode, NodeHasLocation.class);
                assertTrue(rel != null);
                assertTrue(rel.getType().equals(relType.name()));
            }
        }
        tx.success();
    } catch (Throwable ex) {
        logger.warn("", ex);
        logger.error(ex.toString());
        fail("Unexpected exception");
    }
}
Also used : Tx(org.structr.core.graph.Tx) AbstractRelationship(org.structr.core.entity.AbstractRelationship) GenericNode(org.structr.core.entity.GenericNode) RelationshipType(org.structr.api.graph.RelationshipType) IOException(java.io.IOException) GenericRelationship(org.structr.core.entity.GenericRelationship) NodeHasLocation(org.structr.core.entity.relationship.NodeHasLocation) NodeInterface(org.structr.core.graph.NodeInterface) Test(org.junit.Test)

Example 22 with GenericNode

use of org.structr.core.entity.GenericNode in project structr by structr.

the class PerformanceTest method testPerformanceOfRelationshipCreation.

/**
 * Tests basic throughput of relationship creation operations
 *
 * Note that this is just a very rought test as performance is heavily
 * depending on hardware and setup (cache parameters etc.)
 *
 * The assumed rate is low so if this test fails, there may be issues
 * with the test setup.
 *
 * If the test passes, one can expect structr to create relationship with typical performance.
 */
@Test
public void testPerformanceOfRelationshipCreation() {
    try {
        int expected = 1000;
        final App app = StructrApp.getInstance(setup());
        final List<GenericNode> nodes = new ArrayList<>(createNodes(app, GenericNode.class, expected + 1));
        List<NodeHasLocation> rels = new LinkedList<>();
        long t0 = System.nanoTime();
        try (final Tx tx = app.tx()) {
            for (int i = 0; i < expected; i++) {
                final GenericNode n1 = nodes.get(i);
                final GenericNode n2 = nodes.get(i + 1);
                rels.add(app.create(n1, n2, NodeHasLocation.class));
            }
            tx.success();
        }
        long t1 = System.nanoTime();
        assertEquals("Invalid relationship creation result", expected, rels.size());
        DecimalFormat decimalFormat = new DecimalFormat("0.000000000", DecimalFormatSymbols.getInstance(Locale.ENGLISH));
        Double time = (t1 - t0) / 1000000000.0;
        Double rate = expected / ((t1 - t0) / 1000000000.0);
        logger.info("Created {} relationships in {} seconds ({} per s)", new Object[] { expected, decimalFormat.format(time), decimalFormat.format(rate) });
        assertTrue(rate > 50);
    } catch (FrameworkException ex) {
        ex.printStackTrace();
        logger.error(ex.toString());
        fail("Unexpected exception");
    }
}
Also used : StructrApp(org.structr.core.app.StructrApp) App(org.structr.core.app.App) Tx(org.structr.core.graph.Tx) FrameworkException(org.structr.common.error.FrameworkException) DecimalFormat(java.text.DecimalFormat) GenericNode(org.structr.core.entity.GenericNode) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) NodeHasLocation(org.structr.core.entity.relationship.NodeHasLocation) Test(org.junit.Test) StructrUiTest(org.structr.web.StructrUiTest)

Example 23 with GenericNode

use of org.structr.core.entity.GenericNode in project structr by structr.

the class StructrMessagingEngineModuleTest method createTestRelationships.

protected <T extends Relation> List<T> createTestRelationships(final Class<T> relType, final int number) throws FrameworkException {
    List<GenericNode> nodes = createTestNodes(GenericNode.class, 2);
    final NodeInterface startNode = nodes.get(0);
    final NodeInterface endNode = nodes.get(1);
    try (final Tx tx = app.tx()) {
        List<T> rels = new LinkedList<>();
        for (int i = 0; i < number; i++) {
            rels.add((T) app.create(startNode, endNode, relType));
        }
        tx.success();
        return rels;
    }
}
Also used : Tx(org.structr.core.graph.Tx) GenericNode(org.structr.core.entity.GenericNode) NodeInterface(org.structr.core.graph.NodeInterface)

Example 24 with GenericNode

use of org.structr.core.entity.GenericNode in project structr by structr.

the class StructrPaymentModuleTest method createTestRelationships.

protected <T extends Relation> List<T> createTestRelationships(final Class<T> relType, final int number) throws FrameworkException {
    List<GenericNode> nodes = createTestNodes(GenericNode.class, 2);
    final NodeInterface startNode = nodes.get(0);
    final NodeInterface endNode = nodes.get(1);
    try (final Tx tx = app.tx()) {
        List<T> rels = new LinkedList<>();
        for (int i = 0; i < number; i++) {
            rels.add((T) app.create(startNode, endNode, relType));
        }
        tx.success();
        return rels;
    }
}
Also used : Tx(org.structr.core.graph.Tx) GenericNode(org.structr.core.entity.GenericNode) NodeInterface(org.structr.core.graph.NodeInterface) LinkedList(java.util.LinkedList)

Aggregations

GenericNode (org.structr.core.entity.GenericNode)24 Tx (org.structr.core.graph.Tx)21 NodeInterface (org.structr.core.graph.NodeInterface)20 LinkedList (java.util.LinkedList)19 Test (org.junit.Test)5 FrameworkException (org.structr.common.error.FrameworkException)4 NodeHasLocation (org.structr.core.entity.relationship.NodeHasLocation)3 RelationshipInterface (org.structr.core.graph.RelationshipInterface)3 PropertyMap (org.structr.core.property.PropertyMap)2 IOException (java.io.IOException)1 DecimalFormat (java.text.DecimalFormat)1 ArrayList (java.util.ArrayList)1 RelationshipType (org.structr.api.graph.RelationshipType)1 Result (org.structr.core.Result)1 App (org.structr.core.app.App)1 StructrApp (org.structr.core.app.StructrApp)1 AbstractRelationship (org.structr.core.entity.AbstractRelationship)1 GenericRelationship (org.structr.core.entity.GenericRelationship)1 StructrUiTest (org.structr.web.StructrUiTest)1