Package org.openbel.framework.test

Source Code of org.openbel.framework.test.BELCompilerIT

package org.openbel.framework.test;

import static org.hamcrest.CoreMatchers.is;
import static org.openbel.framework.test.WebAPIHelper.createWebAPI;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.junit.Assert.assertThat;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.BeforeClass;
import org.junit.Test;
import org.openbel.framework.ws.model.BelStatement;
import org.openbel.framework.ws.model.EdgeFilter;
import org.openbel.framework.ws.model.FindKamEdgesRequest;
import org.openbel.framework.ws.model.FindKamEdgesResponse;
import org.openbel.framework.ws.model.FindKamNodesByPatternsRequest;
import org.openbel.framework.ws.model.FindKamNodesByPatternsResponse;
import org.openbel.framework.ws.model.GetCatalogResponse;
import org.openbel.framework.ws.model.GetSupportingEvidenceRequest;
import org.openbel.framework.ws.model.GetSupportingEvidenceResponse;
import org.openbel.framework.ws.model.KAMLoadStatus;
import org.openbel.framework.ws.model.Kam;
import org.openbel.framework.ws.model.KamEdge;
import org.openbel.framework.ws.model.KamHandle;
import org.openbel.framework.ws.model.KamNode;
import org.openbel.framework.ws.model.LoadKamRequest;
import org.openbel.framework.ws.model.LoadKamResponse;
import org.openbel.framework.ws.model.ObjectFactory;
import org.openbel.framework.ws.model.RelationshipType;
import org.openbel.framework.ws.model.RelationshipTypeFilterCriteria;
import org.openbel.framework.ws.model.WebAPI;

public class BELCompilerIT {

    private static final ObjectFactory factory = new ObjectFactory();
    private static Map<String, Kam> name2Kams;
    private static EdgeFilter allEdges;
    private static WebAPI webAPI = createWebAPI();
    static {
        // factory.create edge filter for all rtypes
        allEdges = new EdgeFilter();
        final RelationshipTypeFilterCriteria rcrit =
                new RelationshipTypeFilterCriteria();
        rcrit.getValueSet().addAll(Arrays.asList(RelationshipType.values()));
        allEdges.getRelationshipCriteria().add(rcrit);
    }

    @BeforeClass
    public static void establishWebAPI() {
        assertThat(webAPI, is(not(nullValue())));

        final GetCatalogResponse catres = webAPI.getCatalog(null);
        assertThat(catres, is(not(nullValue())));

        final List<Kam> catalog = catres.getKams();
        assertThat(catalog, is(not(nullValue())));
        assertThat(catalog.isEmpty(), is(false));

        name2Kams = new HashMap<String, Kam>(catalog.size());
        for (final Kam kam : catalog) {
            name2Kams.put(kam.getName(), kam);
        }
    }

    @Test
    public void unitTest1() {
        runKamTest("test1a", 6, 5);
        runKamTest("test1b", 10, 10);
        runKamTest("test1c", 2, 1);
    }

    @Test
    public void unitTest2() {
        runKamTest("test2a", 13, 12);
        runKamTest("test2b", 4, 3);
    }

    @Test
    public void unitTest3() {
        runKamTest("test3a", 19, 18);
    }

    @Test
    public void unitTest4() {
        runKamTest("test4a", 34, 32);
        runKamTest("test4b", 14, 12);
    }

    @Test
    public void unitTest5() {
        runKamTest("test5a", 4, 4);
    }

    @Test
    public void unitTest6() {
        runKamTest("test6a", 5, 4);
    }

    @Test
    public void unitTest7() {
        runKamTest("test7a", 16, 15);
    }

    @Test
    public void unitTest8() {
        runKamTest("test8a", 14, 15);
    }

    @Test
    public void unitTest9() {
        runKamTest("test9a", 18, 16);
    }

    @Test
    public void unitTest10() {
        runKamTest("test10a", 25, 24);
    }

    @Test
    public void unitTest12() {
        runKamTest("test12", 12, 12);
    }

    @Test
    public void unitTest13() {
        runKamTest("test13", 4, 4);
    }

    @Test
    public void unitTest14() {
        runKamTest("test14", 4, 4);
    }

    @Test
    public void unitTest15() {
        runKamTest("test15", 8, 6);
    }

    @Test
    public void unitTest16() {
        runKamTest("test16", 46, 46);
    }

    @Test
    public void unitTest17() {
        runKamTest("test17", 4, 3);
    }

    @Test
    public void unitTest18() {
        runKamTest("test18", 7, 6);

        // test 2 statements supporting the => edge
        List<KamEdge> edges = findEdge("test18",
                RelationshipType.DIRECTLY_INCREASES);
        assertThat(edges.size(), is(1));
        KamEdge edge = edges.iterator().next();
        validateStatementCount(edge, 2);
    }

    private void runKamTest(final String kamName, final int nodes,
            final int edges) {
        assertThat(kamName, is(not(nullValue())));

        final KamHandle handle = loadKam(kamName);

        final FindKamNodesByPatternsRequest fknreq =
                factory.createFindKamNodesByPatternsRequest();
        fknreq.getPatterns().add(".*");
        fknreq.setHandle(handle);

        final FindKamNodesByPatternsResponse fknres = webAPI
                .findKamNodesByPatterns(fknreq);
        final List<KamNode> kamNodes = fknres.getKamNodes();

        assertThat(kamNodes, is(not(nullValue())));
        assertThat(kamNodes.size(), is(nodes));

        final FindKamEdgesRequest fkereq = factory.createFindKamEdgesRequest();
        fkereq.setFilter(allEdges);
        fkereq.setHandle(handle);

        final FindKamEdgesResponse fkeres = webAPI.findKamEdges(fkereq);
        final List<KamEdge> kamEdges = fkeres.getKamEdges();

        assertThat(kamEdges, is(not(nullValue())));
        assertThat(kamEdges.size(), is(edges));
    }

    private void validateStatementCount(final KamEdge edge, final int sc) {
        assertThat(edge, is(not(nullValue())));

        GetSupportingEvidenceRequest evreq = factory
                .createGetSupportingEvidenceRequest();
        evreq.setKamEdge(edge);
        GetSupportingEvidenceResponse evres = webAPI.getSupportingEvidence(evreq);

        List<BelStatement> statements = evres.getStatements();
        assertThat(statements.size(), is(sc));
    }

    private List<KamEdge> findEdge(final String kamName,
            final RelationshipType r) {
        assertThat(kamName, is(not(nullValue())));
        assertThat(r, is(not(nullValue())));

        final KamHandle handle = loadKam(kamName);

        EdgeFilter f = factory.createEdgeFilter();
        RelationshipTypeFilterCriteria c = factory
                .createRelationshipTypeFilterCriteria();
        c.getValueSet().add(r);
        f.getRelationshipCriteria().add(c);

        final FindKamEdgesRequest ereq = factory.createFindKamEdgesRequest();
        ereq.setFilter(f);
        ereq.setHandle(handle);
        FindKamEdgesResponse eres = webAPI.findKamEdges(ereq);

        return eres.getKamEdges();
    }

    private KamHandle loadKam(final String kamName) {
        final Kam kam = name2Kams.get(kamName);
        assertThat(kam, is(not(nullValue())));

        final LoadKamRequest lkreq = factory.createLoadKamRequest();
        lkreq.setKam(kam);
        LoadKamResponse lkres = webAPI.loadKam(lkreq);
        KAMLoadStatus status = lkres.getLoadStatus();
        while (status == KAMLoadStatus.IN_PROCESS) {
            // sleep 1/2 a second and retry
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // do nothing
            }

            lkres = webAPI.loadKam(lkreq);
            status = lkres.getLoadStatus();
        }

        final KamHandle handle = lkres.getHandle();
        assertThat(handle, is(not(nullValue())));
        return handle;
    }
}
TOP

Related Classes of org.openbel.framework.test.BELCompilerIT

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.