⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.java

📁 Chord package into p2psim
💻 JAVA
字号:
/***************************************************************************
 *                                                                         *
 *                             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>();
		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -