blob: 6910059502e6487e7376f5fc39bd57f798462c4a [file] [log] [blame]
/*
* jndn-utils
* Copyright (c) 2015, Intel Corporation.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU Lesser General Public License,
* version 3, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
* more details.
*/
package com.intel.jndn.utils;
import com.intel.jndn.utils.server.RespondWithData;
import com.intel.jndn.mock.MockFace;
import com.intel.jndn.utils.server.RespondWithBlob;
import java.io.IOException;
import net.named_data.jndn.Data;
import net.named_data.jndn.Interest;
import net.named_data.jndn.Name;
import net.named_data.jndn.OnData;
import net.named_data.jndn.encoding.EncodingException;
import net.named_data.jndn.util.Blob;
import static org.junit.Assert.*;
import org.junit.Test;
/**
* Test {@link SimpleServer}
*
* @author Andrew Brown <andrew.brown@intel.com>
*/
public class SimpleServerTest {
MockFace face = new MockFace();
SimpleServer instance = new SimpleServer(face, new Name("/test/prefix"));
@Test
public void testGetPrefix() {
assertNotNull(instance.getPrefix());
}
@Test
public void testAddPipelineStage() {
instance.addPipelineStage(null);
}
@Test
public void testProcessPipeline() throws Exception {
Data in = new Data(new Name("/test"));
Data out = instance.processPipeline(in);
assertEquals(out, in);
}
@Test
public void testRespond() throws IOException, EncodingException {
instance.respondUsing(new RespondWithData() {
@Override
public Data onInterest(Name prefix, Interest interest) throws Exception {
Data data = new Data(interest.getName());
data.setContent(new Blob("..."));
return data;
}
});
sendAndCheckOneInterest(new Name("/test/prefix/response"));
}
@Test
public void testRespondFromBlob() throws IOException, EncodingException {
instance.respondUsing(new RespondWithBlob() {
@Override
public Blob onInterest(Name prefix, Interest interest) throws Exception {
return new Blob("...");
}
});
sendAndCheckOneInterest(new Name("/test/prefix/response"));
}
private void sendAndCheckOneInterest(Name interestName) throws EncodingException, IOException {
Interest interest = new Interest(interestName);
face.getTransport().clear();
face.expressInterest(interest, new OnData() {
@Override
public void onData(Interest interest, Data data) {
assertEquals("/test/prefix/response", data.getName().toUri());
}
});
face.processEvents();
assertEquals(1, face.getTransport().getSentDataPackets().size());
assertEquals("...", face.getTransport().getSentDataPackets().get(0).getContent().toString());
}
}