/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.datamanagement.internal;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
import de.rcenvironment.core.communication.common.InstanceNodeId;
import de.rcenvironment.core.communication.common.NodeIdentifierTestUtils;
import de.rcenvironment.core.communication.testutils.PlatformServiceDefaultStub;
import de.rcenvironment.core.datamanagement.backend.DataBackend;
import de.rcenvironment.core.datamanagement.backend.MetaDataBackendService;
import de.rcenvironment.core.datamanagement.commons.BinaryReference;
import de.rcenvironment.core.datamanagement.commons.DataReference;
import de.rcenvironment.core.datamanagement.commons.MetaData;
import de.rcenvironment.core.datamanagement.commons.MetaDataKeys;
import de.rcenvironment.core.datamanagement.commons.MetaDataSet;
import de.rcenvironment.core.datamodel.api.CompressionFormat;
import de.rcenvironment.core.utils.common.rpc.RemoteOperationException;
/**
* Test cases for {@link RemotableFileDataServiceImpl}.
*
* @author Juergen Klein
* @author Robert Mischke (8.0.0 id adaptations)
*/
public class FileDataServiceImplTest {
private final URI location = URI.create("test");
private InstanceNodeId nodeId;
private UUID drId;
private DataReference dr;
private DataReference anotherDr;
private RemotableFileDataServiceImpl fileDataService;
/** Set up. */
@Before
public void setUp() {
nodeId = NodeIdentifierTestUtils.createTestInstanceNodeIdWithDisplayName("dummy");
drId = UUID.randomUUID();
Set<BinaryReference> birefs = new HashSet<BinaryReference>();
birefs.add(new BinaryReference(UUID.randomUUID().toString(), CompressionFormat.GZIP, "1"));
dr = new DataReference(drId.toString(), nodeId, birefs);
birefs = new HashSet<BinaryReference>();
birefs.add(new BinaryReference(UUID.randomUUID().toString(), CompressionFormat.GZIP, "1"));
anotherDr = new DataReference(UUID.randomUUID().toString(), nodeId, birefs);
fileDataService = new RemotableFileDataServiceImpl();
fileDataService.bindPlatformService(new PlatformServiceDefaultStub());
MetaDataBackendService metaDataBackendService = EasyMock.createNiceMock(MetaDataBackendService.class);
EasyMock.replay(metaDataBackendService);
new BackendSupportTest().setUp();
new BackendSupport().activate(BackendSupportTest.createBundleContext(metaDataBackendService, new DummyDataBackend()));
}
/** Test. */
@Test
public void testGetStreamFromDataReference() {
fileDataService.getStreamFromDataReference(dr, true);
}
/**
* Test.
*
* @throws RemoteOperationException standard remote operation exception
*/
@Test
public void testNewReferenceFromStream() throws RemoteOperationException {
InputStream is = new InputStream() {
@Override
public int read() throws IOException {
return 0;
}
};
MetaDataSet meta = new MetaDataSet();
meta.setValue(new MetaData(MetaDataKeys.COMPONENT_RUN_ID, true, true), "7");
fileDataService.newReferenceFromStream(is, meta);
}
/**
* Test implementation of {@link DataBackend}.
*
* @author Doreen Seider
*/
private class DummyDataBackend implements DataBackend {
@Override
public URI suggestLocation(UUID guid) {
return null;
}
@Override
public long put(URI loc, Object object) {
return 0;
}
@Override
public boolean delete(URI loc) {
return false;
}
@Override
public Object get(URI loc) {
if (location.equals(loc)) {
return new InputStream() {
@Override
public int read() throws IOException {
return 0;
}
};
}
return null;
}
}
}