/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.communication.internal;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.io.IOException;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import de.rcenvironment.core.communication.common.CommonIdBase;
import de.rcenvironment.core.communication.common.InstanceNodeSessionId;
import de.rcenvironment.core.communication.common.impl.NodeIdentifierServiceImpl;
import de.rcenvironment.core.communication.configuration.internal.NodeConfigurationServiceImpl;
import de.rcenvironment.core.configuration.ConfigurationSegment;
import de.rcenvironment.core.configuration.ConfigurationService;
import de.rcenvironment.core.configuration.testutils.ConfigurationSegmentUtils;
import de.rcenvironment.core.configuration.testutils.MockConfigurationService;
import de.rcenvironment.core.configuration.testutils.PersistentSettingsServiceDefaultStub;
import de.rcenvironment.core.utils.common.TempFileServiceAccess;
import de.rcenvironment.toolkit.utils.common.IdGeneratorType;
/**
* Test cases for {@link PlatformServiceImpl}.
*
* @author Doreen Seider
* @author Robert Mischke
*/
public class PlatformServiceImplTest {
private static final int EXPECTED_NODE_ID_LENGTH = CommonIdBase.INSTANCE_PART_LENGTH + 1 + CommonIdBase.SESSION_PART_LENGTH;
private PlatformServiceImpl service;
private BundleContext contextMock;
/**
* Set up.
*
* @throws Exception if an error occur.
**/
@Before
public void setUp() throws Exception {
TempFileServiceAccess.setupUnitTestEnvironment();
contextMock = EasyMock.createNiceMock(BundleContext.class);
Bundle bundleMock = EasyMock.createNiceMock(Bundle.class);
EasyMock.expect(bundleMock.getSymbolicName()).andReturn("bundle").anyTimes();
EasyMock.replay(bundleMock);
EasyMock.expect(contextMock.getBundle()).andReturn(bundleMock).anyTimes();
EasyMock.replay(contextMock);
NodeConfigurationServiceImpl nodeConfigurationService = new NodeConfigurationServiceImpl();
nodeConfigurationService.bindConfigurationService(new DummyConfigurationService());
nodeConfigurationService.bindPersistentSettingsService(new PersistentSettingsServiceDefaultStub());
nodeConfigurationService.bindNodeIdentifierService(new NodeIdentifierServiceImpl(IdGeneratorType.FAST));
nodeConfigurationService.activate(contextMock);
service = new PlatformServiceImpl();
service.bindNodeConfigurationService(nodeConfigurationService);
service.activate();
}
/**
* Tests the returned {@link InstanceNodeSessionId}.
*/
@Test
public void testNodeId() {
InstanceNodeSessionId nodeId = service.getLocalInstanceNodeSessionId();
// basic test: check that the persistent id is defined and of the expected length
assertEquals(CommonIdBase.INSTANCE_SESSION_ID_STRING_LENGTH, nodeId.getInstanceNodeSessionIdString().length());
}
/**
* Test {@link ConfigurationService} implementation.
*
* @author Doreen Seider
* @author Brigitte Boden (added SSH config segment)
*/
private class DummyConfigurationService extends MockConfigurationService.ThrowExceptionByDefault {
@Override
public ConfigurationSegment getConfigurationSegment(String relativePath) {
if ("network".equals(relativePath)) {
try {
return ConfigurationSegmentUtils.readTestConfigurationFromStream(getClass().getResourceAsStream(
"/config-tests/example1.json"));
} catch (IOException e) {
throw new AssertionError("Error loading configuration", e);
}
} else if ("sshRemoteAccess".equals(relativePath)) {
try {
return ConfigurationSegmentUtils.readTestConfigurationFromStream(getClass().getResourceAsStream(
"/config-tests/exampleSsh.json"));
} catch (IOException e) {
throw new AssertionError("Error loading configuration", e);
}
} else {
fail("relativePath must be \"network\" or \"ssh\"");
return null;
}
}
@Override
public boolean getIsWorkflowHost() {
return false;
}
@Override
public boolean getIsRelay() {
return false;
}
@Override
public String getInstanceName() {
return "";
}
@Override
public double[] getLocationCoordinates() {
return new double[] { 0.0, 0.0 };
}
@Override
public String getLocationName() {
return "";
}
@Override
public String getInstanceContact() {
return "";
}
@Override
public String getInstanceAdditionalInformation() {
return "";
}
}
}