package io.urmia.md.service; import io.netty.handler.codec.http.DefaultFullHttpRequest; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.HttpVersion; import io.netty.util.concurrent.Future; import io.netty.util.concurrent.GenericFutureListener; import io.netty.util.concurrent.ImmediateEventExecutor; import io.urmia.md.repo.MetadataRepository; import io.urmia.md.mock.MockMetadataRepositoryImpl; import io.urmia.md.model.*; import io.urmia.md.model.storage.ExtendedObjectAttributes; import io.urmia.md.model.storage.FullObjectName; import io.urmia.md.model.storage.ObjectName; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; public class DefaultMetadataServiceImplTest { private static final Logger log = LoggerFactory.getLogger(DefaultMetadataServiceImplTest.class); private static HttpRequest httpRequest(HttpMethod method, String uri) { return new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, method, uri); } private static MetadataRepository mockRepository() { List<FullObjectName> objectNames = new ArrayList<FullObjectName>(); ExtendedObjectAttributes eoa = new ExtendedObjectAttributes(false, 1, "==md5==", "--etag--", 2, System.currentTimeMillis()); objectNames.add(new FullObjectName(ObjectName.of("/a/stor/c").get(), eoa)); List<String> storageNodes = new ArrayList<String>(); //StorageNode node01 = new StorageNode("some-storage-location", 1, "some-host", 0); storageNodes.add("some-storage-location"); return new MockMetadataRepositoryImpl(objectNames, storageNodes); } @Test public void testList_01() throws InterruptedException { MetadataRepository repository = mockRepository(); MetadataService mds = new DefaultMetadataServiceImpl(repository); ObjectRequest request = new ObjectRequest(httpRequest(HttpMethod.GET, "/owner/index/parent/path")); mds.list(ImmediateEventExecutor.INSTANCE, request).addListener( new GenericFutureListener<Future<? super ObjectResponse>>() { @Override public void operationComplete(Future<? super ObjectResponse> future) throws Exception { if (future.isSuccess()) { log.info("fetched: {}", future.get()); } else { log.debug("failed: {}", future.cause()); } } } ).sync(); } }