connectivity/com.nokia.carbide.remoteConnections.tests/src/com/nokia/carbide/remoteconnections/tests/discovery/RandomDiscoveryAgent.java
author dadubrow
Wed, 13 Jan 2010 11:50:49 -0600
changeset 762 360ece94cbb4
parent 719 a6f7bb38d188
child 850 cd20cfc0713f
permissions -rw-r--r--
Refactor API and related from default connection to current + update heuristics
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
719
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
     1
/**
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
     3
* All rights reserved.
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
     4
* This component and the accompanying materials are made available
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
     6
* which accompanies this distribution, and is available
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
     8
*
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
     9
* Initial Contributors:
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    11
*
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    12
* Contributors:
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    13
*
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    14
* Description: 
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    15
*
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    16
*/
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    17
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    18
package com.nokia.carbide.remoteconnections.tests.discovery;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    19
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    20
import java.net.URL;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    21
import java.util.HashSet;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    22
import java.util.Map;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    23
import java.util.Random;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    24
import java.util.Set;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    25
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    26
import org.eclipse.core.runtime.CoreException;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    27
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    28
import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    29
import com.nokia.carbide.remoteconnections.interfaces.IConnectionFactory;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    30
import com.nokia.carbide.remoteconnections.interfaces.IConnectionType;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    31
import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    32
import com.nokia.carbide.remoteconnections.internal.api.IConnection2;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    33
import com.nokia.carbide.remoteconnections.internal.api.IDeviceDiscoveryAgent;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    34
import com.nokia.carbide.remoteconnections.tests.extensions.IntervalConnectionType;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    35
import com.nokia.carbide.remoteconnections.tests.extensions.TestFilter;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    36
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    37
public class RandomDiscoveryAgent implements IDeviceDiscoveryAgent {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    38
	private static final String CONNECTION_TYPE = 
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    39
		"com.nokia.carbide.remoteconnections.tests.extensions.IntervalConnectionType";
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    40
	private Random random = new Random();
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    41
	private Set<IConnection2> connections = new HashSet<IConnection2>();
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    42
	private IConnectionsManager manager = RemoteConnectionsActivator.getConnectionsManager();
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    43
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    44
	private final class DiscoveryThread extends Thread {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    45
		private static final int MAX = 60000;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    46
		private static final int MIN = 10000;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    47
		private volatile boolean keepRunning;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    48
		
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    49
		public void run() {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    50
			keepRunning = true;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    51
			while (keepRunning) {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    52
				try {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    53
					sleep(getRandomCreationIntervalMs());
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    54
				} catch (InterruptedException e) {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    55
					keepRunning = false;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    56
				}
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    57
				if (getRandomIntBetween(0, connections.size() + 1) == 0) {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    58
					createNewConnection();
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    59
				}
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    60
				else if (!connections.isEmpty()) {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    61
					IConnection2 connection = connections.iterator().next();
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    62
					connections.remove(connection);
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    63
					manager.disconnect(connection);
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    64
				}
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    65
			}
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    66
		}
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    67
		
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    68
		private int getRandomCreationIntervalMs() {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    69
			return getRandomIntBetween(MIN, MAX);
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    70
		}
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    71
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    72
		public void stopRunning() {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    73
			keepRunning = false;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    74
		}
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    75
	}
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    76
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    77
	private DiscoveryThread thread = new DiscoveryThread();
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    78
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    79
	public URL getInformation() {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    80
		return null;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    81
	}
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    82
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    83
	private void createNewConnection() {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    84
		IConnectionType connectionType = 
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    85
			RemoteConnectionsActivator.getConnectionTypeProvider().getConnectionType(CONNECTION_TYPE);
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    86
		IConnectionFactory factory = connectionType.getConnectionFactory();
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    87
		Map<String, String> settings = factory.getSettingsFromUI();
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    88
		String val = getRandomIntervalString();
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    89
		settings.put(IntervalConnectionType.KEY, val);
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    90
		IConnection2 connection = (IConnection2) factory.createConnection(settings);
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    91
		connection.setDisplayName(connection.getConnectionType().getDisplayName() + " " + val + " ms");
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    92
		connection.setDynamic(true);
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    93
		connections.add(connection);
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    94
		manager.addConnection(connection);
762
360ece94cbb4 Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 719
diff changeset
    95
		manager.setCurrentConnection(connection);
719
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    96
	}
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    97
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    98
	private String getRandomIntervalString() {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
    99
		int r = getRandomIntBetween(1000, 30000);
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   100
		return Integer.toString(r);
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   101
	}		
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   102
	
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   103
	private int getRandomIntBetween(int min, int max) {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   104
		return (Math.abs(random.nextInt()) % (max - min)) + min;
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   105
	}
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   106
	
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   107
	public void start() throws CoreException {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   108
		if (TestFilter.isTest)
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   109
			thread.start();
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   110
	}
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   111
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   112
	public void stop() throws CoreException {
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   113
		thread.stopRunning();
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   114
	}
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   115
a6f7bb38d188 add test discovery agent
dadubrow
parents:
diff changeset
   116
}