view src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/persistent/DataReadBenchMark.java @ 331:74401cc27a96

fix log again
author suruga
date Sat, 08 Jul 2017 21:46:53 +0900
parents 2a0cb1f0ba4e
children
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.benchMark.persistent;

import jp.ac.u_ryukyu.ie.cr.jungle.Jungle;
import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree;
import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor;
import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeList;
import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeListReader;
import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath;
import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.treeEditor.DefaultTreeEditor;
import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser;
import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error;
import jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations.NetworkNodePath;
import jp.ac.u_ryukyu.ie.cr.jungleNetwork.persistent.PersistentJournal;
import jp.ac.u_ryukyu.ie.cr.jungleNetwork.persistent.PersistentJungle;
import jp.ac.u_ryukyu.ie.cr.jungleNetwork.transaction.JungleUpdater;
import org.junit.Assert;

import java.io.*;
import java.nio.ByteBuffer;

public class DataReadBenchMark {

    static ByteBuffer value = ByteBuffer.wrap("value".getBytes());
    static String key = "key";
    static int pos = 0;

    public static void main(String[] args) throws IOException {

        PersistentJournal journal1 = new PersistentJournal("commit.log");
        Jungle jungle = new PersistentJungle(journal1, "uuid", new DefaultTraverser());
        Jungle jungle2 = new PersistentJungle(journal1, "uuid3",new DefaultTraverser());
        Long t1;
        Long t2;
        PrintWriter readTimeWriter = new PrintWriter(new BufferedWriter(new FileWriter(new File("./time/readTime"))));
        PrintWriter writeTimeWriter = new PrintWriter(new BufferedWriter(new FileWriter(new File("./time/writeTime"))));
        for (int i = 1 ; i <= 20 ; i++) {
            jungle.createNewTree("hoge" + i);
            JungleTree tree1 = jungle.getTreeByName("hoge" + i);
            JungleTreeEditor editor;
            NetworkNodePath path = new NetworkNodePath();
            t1 = System.currentTimeMillis();
            for (int j = 0; j < 100 * i; j++) {
                editor = tree1.getJungleTreeEditor();
                Either<Error, JungleTreeEditor> either = editor.addNewChildAt(path, pos);
                NodePath childPath = path.add(pos);
                Assert.assertFalse(either.isA());
                editor = either.b();
                either = editor.putAttribute(childPath, key, value);
                JungleTreeEditor editor2 = either.b();
                either = editor2.success();
                Assert.assertFalse(either.isA());
            }
            t2 = System.currentTimeMillis();

            writeTimeWriter.println((100 * i) + " " + (t2 - t1));
            System.out.println("write time = " + (t2 - t1));

            PersistentJournal journal2 = new PersistentJournal();
            journal2.setInputFile(new File( journal1.getLogName()));
            journal2.setOutputFile(new File( journal1.getLogName()));
            ChangeListReader reader = journal2.getReader();

            t1 = System.currentTimeMillis();
            for (ChangeList chList : reader) {
                String treeName = chList.getTreeName();
                JungleTree tree2 = jungle2.getTreeByName(treeName);
                if (tree2 == null) {
                    tree2 = jungle2.createNewTree(treeName);
                }
                JungleTreeEditor editor2 = tree2.getJungleTreeEditor();
                Either<Error, JungleTreeEditor> either2 = JungleUpdater.edit(editor2, chList);
                Assert.assertFalse(either2.isA());
                editor2 = either2.b();
                editor2.success();
            }

            t2 = System.currentTimeMillis();
            readTimeWriter.println((100 * i) + " " + (t2 - t1));
            System.out.println("read time = " + (t2 - t1));

        }
        writeTimeWriter.close();
        readTimeWriter.close();
        journal1.close();
    }
}