Bug #3693
closed
integ fails due to improper Exclude usage
Added by Junxiao Shi over 8 years ago.
Updated over 8 years ago.
Category:
Integration Tests
Description
IntegrationTests FIB matching scenario is failing because of improper Exclude usage.
Step 22 sends an Interest ndn:/D Exclude=[,D]
.
The Interest is sent to a traffic generator server which responds a Data with name ndn:/D/<implicit-digest>
.
However, Exclude=[,D]
implies any implicit digest component, as well as generic name component up to "D" are excluded, so this Data will not match the Interest.
This breaks the expectation of the consumer side that a Data will be received.
To solve this problem, the Interest should be changed to ndn:/D Exclude=[...,D]
where ...
denotes a zero-length generic name component.
Step 24 has the same problem.
Files
Also, FIB matching scenario design contains "Do prefix registration using NFD FibMgmt" which is no longer necessary since NFD-RIB is readily available. This clause should be deleted.
- Subject changed from integ fails due to improper Exclude to integ fails due to improper Exclude usage
- Description updated (diff)
- Related to Bug #3665: Exclude doesn't support ranged operations using ImplicitSha256DigestComponent added
- Assignee set to Eric Newberry
- Status changed from New to In Progress
Does [...,D] indicate that ExcludeBefore should include both components ("..." and "D") or that ExcludeAfter should be "..." and ExcludeBefore should be "D"?
Answer to note-6:
[...,D]
is using mathematical notation. It's encoded as <NameComponent/><Any/><NameComponent>D</NameComponent>
and can be created from Exclude().excludeRange(name::Component(), name::Component("D"))
.
- % Done changed from 0 to 90
In order to allow empty Excludes in ndn-traffic-generator, I believe I need to make changes to the client. I've tried adding the ExcludeBeforeEmpty=[0-1] and ExcludeAfterEmpty=[0-1] options and this appears to make the test run successfully. I will submit the ndn-traffic-generator patch to gerrit referencing this issue.
- Status changed from In Progress to Code review
- % Done changed from 90 to 100
Reply to note-8:
The semantics of ExcludeBeforeEmpty
and ExcludeAfterEmpty
are unclear, because there's no corresponding structure in either packet format or ndn::Exclude
class.
It's better to use a structure that matches packet format or ndn::Exclude
class, such as:
ExcludeRange=comp0,comp1
where comp0
and comp1
are two name components in URI representation.
This is converted into a function call exclude.excludeRange(name::Component::fromEscapedString(comp0), name::Component::fromEscapedString(comp1))
.
Also available in: Atom
PDF