/*************************************************************************** * * * Test.java * * ------------------- * * date : 26.02.2008, 13:37:22 * * copyright : (C) 2004-2008 Distributed and * * Mobile Systems Group * * Lehrstuhl fuer Praktische Informatik * * Universitaet Bamberg * * http://www.uni-bamberg.de/pi/ * * email : {sven.kaffille}@uni-bamberg.de * * * * * ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * A copy of the license can be found in the license.txt file supplied * * with this software or at: http://www.gnu.org/copyleft/gpl.html * * * ***************************************************************************/ package de.uniba.wiai.lspi.chord.com; import java.net.MalformedURLException; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; import de.uniba.wiai.lspi.chord.data.ID; import de.uniba.wiai.lspi.chord.data.URL; import de.uniba.wiai.lspi.chord.service.PropertiesLoader; public class Test { private Test() { } static final String URL1 = "ocrmi://localhost:4245/"; static final String URL2 = "ocrmi://localhost/"; public static void main(String[] args) throws MalformedURLException, CommunicationException { PropertiesLoader.loadPropertyFile(); try { if (args[0] != null) { NodeImpl node = new NodeImpl(URL2); Endpoint ep = Endpoint.createEndpoint(node, node.nodeURL); ep.listen(); ep.acceptEntries(); } } catch (Exception e) { // TODO: handle exception NodeImpl node = new NodeImpl(URL1); Endpoint ep = Endpoint.createEndpoint(node, node.nodeURL); ep.listen(); ep.acceptEntries(); Node proxy = Proxy.createConnection(new URL(URL1), new URL(URL2)); List<Long> millis = new LinkedList<Long>(); long start = System.currentTimeMillis(); proxy.findSuccessor(node.nodeID); long end = System.currentTimeMillis(); System.out.println("findSuccessor took " + (end - start) + "ms"); millis.add((end - start)); start = System.currentTimeMillis(); proxy.getNodeID(); end = System.currentTimeMillis(); System.out.println("getNodeID took " + (end - start) + "ms"); millis.add((end - start)); start = System.currentTimeMillis(); proxy.insertEntry(new Entry(node.nodeID, "test")); end = System.currentTimeMillis(); System.out.println("insertEntry took " + (end - start) + "ms"); millis.add((end - start)); start = System.currentTimeMillis(); proxy.insertReplicas(new HashSet<Entry>()); end = System.currentTimeMillis(); System.out.println("insertReplicas took " + (end - start) + "ms"); millis.add((end - start)); start = System.currentTimeMillis(); proxy.removeEntry(new Entry(node.nodeID, "test")); end = System.currentTimeMillis(); System.out.println("removeEntry took " + (end - start) + "ms"); millis.add((end - start)); start = System.currentTimeMillis(); proxy.leavesNetwork(node); end = System.currentTimeMillis(); System.out.println("leavesNetwork took " + (end - start) + "ms"); millis.add((end - start)); start = System.currentTimeMillis(); proxy.removeReplicas(node.nodeID, new HashSet<Entry>()); end = System.currentTimeMillis(); System.out.println("removeReplicas took " + (end - start) + "ms"); millis.add((end - start)); start = System.currentTimeMillis(); proxy.notify(node); end = System.currentTimeMillis(); System.out.println("notify took " + (end - start) + "ms"); millis.add((end - start)); proxy.notifyAndCopyEntries(node); end = System.currentTimeMillis(); System.out.println("notifyAndCopyEntries took " + (end - start) + "ms"); millis.add((end - start)); start = System.currentTimeMillis(); proxy.retrieveEntries(node.nodeID); end = System.currentTimeMillis(); System.out.println("retrieveEntries took " + (end - start) + "ms"); millis.add((end - start)); start = System.currentTimeMillis(); proxy.ping(); end = System.currentTimeMillis(); System.out.println("ping took " + (end - start) + "ms"); millis.add((end - start)); long calls = 0; long total = 0; for (Long time : millis) { total += time; calls++; } System.out .println("Average duration of a call: " + (total / calls)); proxy.disconnect(); ep.disconnect(); } } private static class NodeImpl extends Node { NodeImpl(String url) { try { this.nodeURL = new URL(url); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); System.exit(-1); } this.nodeID = new ID(this.nodeURL.toString().getBytes()); } @Override public void disconnect() { // TODO Auto-generated method stub } @Override public Node findSuccessor(ID key) throws CommunicationException { return this; } @Override public void insertEntry(Entry entryToInsert) throws CommunicationException { // TODO Auto-generated method stub } @Override public void insertReplicas(Set<Entry> entries) throws CommunicationException { // TODO Auto-generated method stub } @Override public void leavesNetwork(Node predecessor) throws CommunicationException { // TODO Auto-generated method stub } @Override public List<Node> notify(Node potentialPredecessor) throws CommunicationException { return new LinkedList<Node>(); } @Override public RefsAndEntries notifyAndCopyEntries(Node potentialPredecessor) throws CommunicationException { return new RefsAndEntries(new LinkedList<Node>(), new HashSet<Entry>()); } @Override public void ping() throws CommunicationException { // TODO Auto-generated method stub } @Override public void removeEntry(Entry entryToRemove) throws CommunicationException { // TODO Auto-generated method stub } @Override public void removeReplicas(ID sendingNode, Set<Entry> replicasToRemove) throws CommunicationException { // TODO Auto-generated method stub } @Override public Set<Entry> retrieveEntries(ID id) throws CommunicationException { return new HashSet<Entry>(); } } }