public void testMaxNdnPacketSize() { // Construct an interest whose encoding is one byte larger than getMaxNdnPacketSize. int targetSize = net.named_data.jndn.Face.getMaxNdnPacketSize() + 1; // Start with an interest which is almost the right size. Interest interest = new Interest(); interest.getName().append(new byte[targetSize]); int initialSize = interest.wireEncode().size(); // Now replace the component with the desired size which trims off the extra encoding. interest.setName(new Name().append(new byte[targetSize - (initialSize - targetSize)])); int interestSize = interest.wireEncode().size(); AssertEquals("Wrong interest size for MaxNdnPacketSize", targetSize, interestSize); CallbackCounter counter = new CallbackCounter(); bool gotError = true; try { face.expressInterest(interest, counter, counter); gotError = false; } catch (Exception ex) { } if (!gotError) Fail("expressInterest didn't throw an exception when the interest size exceeds getMaxNdnPacketSize()"); }
// Returns a CallbackCounter object so we can test data callback, nack callback // and timeout behavior. private static CallbackCounter runExpressNameTest(Face face, String interestName, double timeout, bool useOnNack) { Name name = new Name(interestName); CallbackCounter counter = new CallbackCounter(); try { if (useOnNack) // Debug: Use one of the simpler forms face.expressInterest(new Interest(name), counter, counter, counter, net.named_data.jndn.encoding.WireFormat.getDefaultWireFormat()); else face.expressInterest(name, counter, counter); } catch (IOException ex) { ILOG.J2CsMapping.Util.Logging.Logger.getLogger(typeof(TestFaceInterestMethods).FullName).log( ILOG.J2CsMapping.Util.Logging.Level.SEVERE, null, ex); return null; } double startTime = getNowMilliseconds(); while (getNowMilliseconds() - startTime < timeout && counter.onDataCallCount_ == 0 && counter.onTimeoutCallCount_ == 0 && counter.onNetworkNackCallCount_ == 0) { try { try { face.processEvents(); } catch (IOException ex_0) { ILOG.J2CsMapping.Util.Logging.Logger.getLogger(typeof(TestFaceInterestMethods).FullName) .log(ILOG.J2CsMapping.Util.Logging.Level.SEVERE, null, ex_0); break; } catch (EncodingException ex_1) { ILOG.J2CsMapping.Util.Logging.Logger.getLogger(typeof(TestFaceInterestMethods).FullName) .log(ILOG.J2CsMapping.Util.Logging.Level.SEVERE, null, ex_1); break; } // We need to sleep for a few milliseconds so we don't use 100% of the CPU. ILOG.J2CsMapping.Threading.ThreadWrapper.sleep(10); } catch (ThreadInterruptedException ex_2) { ILOG.J2CsMapping.Util.Logging.Logger.getLogger(typeof(TestFaceInterestMethods).FullName).log( ILOG.J2CsMapping.Util.Logging.Level.SEVERE, null, ex_2); break; } } return counter; }
public void testRemovePending() { Name name = new Name("/ndn/edu/ucla/remap/"); CallbackCounter counter = new CallbackCounter(); long interestID; try { interestID = face.expressInterest(name, counter, counter); } catch (IOException ex) { Fail("Error in expressInterest: " + ex); return; } face.removePendingInterest(interestID); double timeout = 10000; double startTime = getNowMilliseconds(); while (getNowMilliseconds() - startTime < timeout && counter.onDataCallCount_ == 0 && counter.onTimeoutCallCount_ == 0) { try { face.processEvents(); } catch (IOException ex_0) { Fail("Error in processEvents: " + ex_0); return; } catch (EncodingException ex_1) { Fail("Error in processEvents: " + ex_1); return; } try { // We need to sleep for a few milliseconds so we don't use 100% of the CPU. ILOG.J2CsMapping.Threading.ThreadWrapper.sleep(10); } catch (ThreadInterruptedException ex_2) { Fail("Error in sleep: " + ex_2); return; } } AssertEquals( "Should not have called data callback after interest was removed", 0, counter.onDataCallCount_); AssertTrue( "Should not have called timeout callback after interest was removed", counter.onTimeoutCallCount_ == 0); }