Package org.neo4j.batchimport

Source Code of org.neo4j.batchimport.TestDataGenerator

package org.neo4j.batchimport;

import org.junit.Ignore;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;

/**
* @author mh
* @since 13.01.12
*/
@Ignore
public class TestDataGenerator {

    private static final int NODES = * 1000 * 1000;
    private static final int RELS_PER_NODE = 50;
    private static final String[] TYPES = {"ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","TEN"};

    public static void main(String...args) throws IOException {
        System.out.println("Usage: TestDataGenerator NODES RELS_PER_NODE TYPE1,TYPE2,TYPE3 sorted");
        long relCount=0, time = System.currentTimeMillis();

        int nodes = args.length > 0 ? Integer.parseInt(args[0]) : NODES;
        int relsPerNode = args.length > 1 ? Integer.parseInt(args[1]) : RELS_PER_NODE;
        String[] types = args.length > 2 ? args[2].split(",") : TYPES;
        final boolean sorted = args.length > 0 && args[args.length-1].equalsIgnoreCase("sorted");
        System.out.println("Using: TestDataGenerator "+nodes+" "+relsPerNode+" "+ Utils.join(types, ",")+" "+(sorted?"sorted":""));

        BufferedWriter nodeFile = new BufferedWriter(new FileWriter("nodes.csv"));
        nodeFile.write("Node\tRels\tProperty\tCounter:int\n");
        BufferedWriter relFile = new BufferedWriter(new FileWriter("rels.csv"));
        relFile.write("Start\tEnde\tType\tProperty\tCounter:long\n");

        if (sorted) {
            relCount = generateSortedRels(relCount, nodeFile, relFile, nodes, relsPerNode, types);
        } else {
            relCount = generateRandomRels(relCount, nodeFile, relFile, nodes, relsPerNode, types);
        }
        nodeFile.close();
        relFile.close();
        long seconds = (System.currentTimeMillis() - time) / 1000;
        System.out.println("Creating " + nodes + " Nodes and " + relCount + (sorted? " sorted " : "") + " Relationships took " + seconds + " seconds.");
    }

    private static long generateRandomRels(long relCount, BufferedWriter nodeFile, BufferedWriter relFile, int nodes, int relsPerNode, String[] types) throws IOException {
        Random rnd = new Random();
        int numTypes = types.length;
        for (int node = 0; node < nodes; node++) {
            final int rels = rnd.nextInt(relsPerNode);
            nodeFile.write(node+"\t"+rels+"\tTEST\t"+node+"\n");
            for (int rel = rels; rel >= 0; rel--) {
                relCount++;
                final int node1 = rnd.nextInt(nodes);
                final int node2 = rnd.nextInt(nodes);
                relFile.write(node1 + "\t" + node2 + "\t" + types[rel % numTypes] + "\t" + "Property"+"\t" + relCount+ "\n");
            }
        }
        return relCount;
    }
    private static long generateSortedRels(long relCount, BufferedWriter nodeFile, BufferedWriter relFile, int nodes, int relsPerNode, String[] types) throws IOException {
        Random rnd = new Random();
        int numTypes = types.length;
        for (int node = 0; node < nodes; node++) {
            final int rels = rnd.nextInt(relsPerNode);
            nodeFile.write(node+"\t"+rels+"\tTEST\t"+node+"\n");
            for (int rel = rels; rel >= 0; rel--) {
                relCount++;
                final int target = node + rnd.nextInt(nodes -node);
                final boolean outgoing = rnd.nextBoolean();
                if (outgoing) {
                    relFile.write(node + "\t" + target + "\t" + types[rel % numTypes] + "\t" + "Property"+"\t" + relCount+ "\n");
                } else {
                    relFile.write(target + "\t" + node + "\t" + types[rel % numTypes] + "\t" + "Property"+"\t" + relCount+ "\n");
                }
            }
        }
        return relCount;
    }
}
TOP

Related Classes of org.neo4j.batchimport.TestDataGenerator

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.