Package edu.cmu.graphchi

Source Code of edu.cmu.graphchi.TestChiVertex

package edu.cmu.graphchi;

import edu.cmu.graphchi.datablocks.ChiPointer;
import edu.cmu.graphchi.datablocks.DataBlockManager;
import edu.cmu.graphchi.datablocks.FloatConverter;
import edu.cmu.graphchi.engine.auxdata.VertexDegree;
import org.junit.Test;
import static org.junit.Assert.*;

/**
* @author akyrola
*         Date: 7/11/12
*/
public class TestChiVertex {

    @Test
    public void testVertexValue() {
        DataBlockManager blockMgr = new DataBlockManager();

        int blockId = blockMgr.allocateBlock(1024* 1024);

        FloatConverter floatConv = new FloatConverter();

        ChiVertex.edgeValueConverter = floatConv;
        ChiVertex.vertexValueConverter = floatConv;
        ChiVertex.blockManager = blockMgr;
        ChiVertex<Float, Float> vertex = new ChiVertex<Float, Float>(1, new VertexDegree(0, 0));
        assertEquals(vertex.getId(), 1);

        int offset = 1024;
        ChiPointer vertexDataPtr = new ChiPointer(blockId, offset);

        blockMgr.writeValue(vertexDataPtr, floatConv, 3.0f);
        vertex.setDataPtr(vertexDataPtr);

        assertEquals(vertex.getValue(), 3.0f, 1e-15);

        vertex.setValue(999.5f);

        assertEquals(vertex.getValue(), 999.5f, 1e-15f);

        /* Check the data was committed */
        assertEquals(blockMgr.dereference(vertexDataPtr, floatConv), 999.5f, 1e-15f);
    }

    @Test
    public void testInEdges() {
        DataBlockManager blockMgr = new DataBlockManager();

        int blockId = blockMgr.allocateBlock(1024 * 1024);

        FloatConverter floatConv = new FloatConverter();
        int nInedges = 1000;

        ChiVertex.edgeValueConverter = floatConv;
        ChiVertex.vertexValueConverter = floatConv;
        ChiVertex.blockManager = blockMgr;

        ChiVertex<Float, Float> vertex = new ChiVertex<Float, Float>(5, new VertexDegree(nInedges, 0));
        assertEquals(vertex.getId(), 5);

        for(int i=0; i < nInedges; i++) {
            blockMgr.writeValue(new ChiPointer(blockId, i * 4), floatConv, (float) Math.sin(i / 2));
            vertex.addInEdge(blockId, i * 4, i * 7 + 5);
        }
        assertEquals(vertex.numOutEdges(), 0);

        assert(vertex.numInEdges() == nInedges);

        for(int i=nInedges-1; i>=0; i--) {
            ChiEdge<Float> edge = vertex.inEdge(i);
            assertTrue(edge.getVertexId() == i * 7 + 5);
            float val = edge.getValue();
            assertEquals(val, (float) Math.sin(i / 2), 1e-10);
            edge.setValue(i + 2.5f);

            assertEquals(vertex.inEdge(i).getValue(), i + 2.5f, 1e-10);
        }
    }

    @Test
    public void testOutEdges() {
        DataBlockManager blockMgr = new DataBlockManager();

        int blockId = blockMgr.allocateBlock(1024 * 1024);

        FloatConverter floatConv = new FloatConverter();
        int nOutedges = 5559;

        ChiVertex.edgeValueConverter = floatConv;
        ChiVertex.vertexValueConverter = floatConv;
        ChiVertex.blockManager = blockMgr;

        ChiVertex<Float, Float> vertex = new ChiVertex<Float, Float>(5,new VertexDegree(0, nOutedges));
        assertEquals(vertex.getId(), 5);

        assertEquals(vertex.numOutEdges(), 0);

        for(int i=0; i < nOutedges; i++) {
            blockMgr.writeValue(new ChiPointer(blockId, i * 4), floatConv, (float) Math.cos(i / 2));
            vertex.addOutEdge(blockId, i * 4, i * 7 + 5);
            assertEquals(vertex.numOutEdges(), i + 1);
        }
        assertEquals(vertex.numInEdges(), 0);

        assert(vertex.numOutEdges() == nOutedges);

        for(int i=nOutedges-1; i>=0; i--) {
            ChiEdge<Float> edge = vertex.outEdge(i);
            assertTrue(edge.getVertexId() == i * 7 + 5);
            float val = edge.getValue();
            assertEquals(val, (float) Math.cos(i / 2), 1e-10);
            edge.setValue(i + 2.5f);

            assertEquals(vertex.outEdge(i).getValue(), i + 2.5f, 1e-10);
        }
    }


}
TOP

Related Classes of edu.cmu.graphchi.TestChiVertex

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.