/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.communication.testutils; import java.util.ArrayList; import java.util.List; import org.apache.commons.logging.LogFactory; import de.rcenvironment.core.communication.common.IdentifierException; import de.rcenvironment.core.communication.common.InstanceNodeId; import de.rcenvironment.core.communication.common.InstanceNodeSessionId; import de.rcenvironment.core.communication.common.NodeIdentifierUtils; import de.rcenvironment.core.communication.common.impl.NodeIdentifierServiceImpl; import de.rcenvironment.core.communication.configuration.CommunicationConfiguration; import de.rcenvironment.core.communication.configuration.CommunicationIPFilterConfiguration; import de.rcenvironment.core.communication.configuration.NodeConfigurationService; import de.rcenvironment.core.communication.model.InitialNodeInformation; import de.rcenvironment.core.communication.model.NetworkContactPoint; import de.rcenvironment.core.communication.model.impl.InitialNodeInformationImpl; import de.rcenvironment.core.communication.sshconnection.InitialSshConnectionConfig; import de.rcenvironment.toolkit.utils.common.IdGeneratorType; /** * Replacement {@link NodeConfigurationService} for {@link VirtualInstance} integrations tests. Defines the configuration of * {@link VirtualInstance}s. * * @author Robert Mischke */ public class NodeConfigurationServiceTestStub implements NodeConfigurationService { private static final long TEST_INSTANCES_INITIAL_CONNECT_DELAY_MSEC = 300; private final InstanceNodeSessionId localInstanceSessionId; private final InitialNodeInformationImpl localNodeInformation; private final List<NetworkContactPoint> serverContactPoints; private final List<NetworkContactPoint> initialNetworkPeers; private final boolean isRelay; private NodeIdentifierServiceImpl nodeIdentifierService; public NodeConfigurationServiceTestStub(String predefinedInstanceId, String displayName, boolean isRelay) { nodeIdentifierService = new NodeIdentifierServiceImpl(IdGeneratorType.FAST); final InstanceNodeId localInstanceId; if (predefinedInstanceId != null) { try { localInstanceId = nodeIdentifierService.parseInstanceNodeIdString(predefinedInstanceId); } catch (IdentifierException e) { throw NodeIdentifierUtils.wrapIdentifierException(e); // only used in testing, so use the simple wrapper } } else { localInstanceId = nodeIdentifierService.generateInstanceNodeId(); } localInstanceSessionId = nodeIdentifierService.generateInstanceNodeSessionId(localInstanceId); LogFactory.getLog(getClass()).debug("Created instance session id " + localInstanceSessionId + " for provided instance id"); localNodeInformation = new InitialNodeInformationImpl(localInstanceSessionId); localNodeInformation.setDisplayName(displayName); serverContactPoints = new ArrayList<NetworkContactPoint>(); initialNetworkPeers = new ArrayList<NetworkContactPoint>(); this.isRelay = isRelay; } @Override public NodeIdentifierServiceImpl getNodeIdentifierService() { return nodeIdentifierService; } @Override public InstanceNodeSessionId getInstanceNodeSessionId() { return localInstanceSessionId; } @Override @Deprecated public boolean isWorkflowHost() { return false; } @Override public InitialNodeInformation getInitialNodeInformation() { return localNodeInformation; } @Override public List<NetworkContactPoint> getServerContactPoints() { return serverContactPoints; } @Override public List<NetworkContactPoint> getInitialNetworkContactPoints() { return initialNetworkPeers; } @Override public boolean isRelay() { return isRelay; } @Override public long getDelayBeforeStartupConnectAttempts() { return TEST_INSTANCES_INITIAL_CONNECT_DELAY_MSEC; } @Override public int getRequestTimeoutMsec() { // use the default value for tests, too; can be changed if useful return CommunicationConfiguration.DEFAULT_REQUEST_TIMEOUT_MSEC; } @Override public int getForwardingTimeoutMsec() { // use the default value for tests, too; can be changed if useful return CommunicationConfiguration.DEFAULT_FORWARDING_TIMEOUT_MSEC; } /** * Adds a server ("provided") {@link NetworkContactPoint}. * * @param contactPoint the server {@link NetworkContactPoint} to add */ public void addServerConfigurationEntry(NetworkContactPoint contactPoint) { serverContactPoints.add(contactPoint); } /** * Adds an initial neighbor ("remote") {@link NetworkContactPoint}. * * @param contactPoint the server {@link NetworkContactPoint} to add */ public void addInitialNetworkPeer(NetworkContactPoint contactPoint) { initialNetworkPeers.add(contactPoint); } @Override public CommunicationIPFilterConfiguration getIPFilterConfiguration() { return new CommunicationIPFilterConfiguration(); // return default settings (no filtering) } @Override public List<InitialSshConnectionConfig> getInitialSSHConnectionConfigs() { // TODO Auto-generated method stub return null; } @Override public double[] getLocationCoordinates() { return new double[] { 0, 0 }; } @Override public String getLocationName() { return ""; } @Override public String getInstanceContact() { return ""; } @Override public String getInstanceAdditionalInformation() { return ""; } }