### Program Information

Name: Ad-hoc on-demand distance vector(AODV) Simulator
Domain: Algorithm
Functionality: identify potential problems of the implemented protocol
Input: a number of nodes
Output: latency and throughput

#### Reference

Conformance Testing of Network Simulators Based on Metamorphic Testing Technique    https://doi.org/10.1007/978-3-642-02138-1_19

### MR Information

#### MR1------

Description:
Property: change the the locations of node A and node B, the resultant latency and throughput should be nearly the same
Source input: A sends a data packet P to B
Source output: $l_{1}$ and $r_{1}$
Follow-up input: A sends a data packet P to B
Follow-up output: $l_{2}$ and $r_{2}$
Input relation: change the locations of A and B
Output relation: $l_{1} \approx l_{2}$, $r_{1} \approx r_{2}$
Pattern:

#### MR2------

Description:
Property: Change the direction of communication ,the resultant latency and throughput should be nearly the same
Source input: A sends a data packet P to B
Source output: $l_{1}$ and $r_{1}$
Follow-up input: B sends a data packet P to A
Follow-up output: $l_{2}$ and $r_{2}$
Input relation: change the direction of communication
Output relation: $l_{1} \approx l_{2}$, $r_{1} \approx r_{2}$
Pattern:

#### MR3------

Description:
Property: Under different channel delays,the resultant latency should satisfied$\frac {l_{1}}{c_{1}} \approx \frac {l_{2}}{c_{2}}$
Source input: A sends a data packet P to B with channel delay $c_{1}$
Source output: $l_{1}$
Follow-up input: A sends a data packet P to B with channel delay $c_{2}$
Follow-up output: $l_{2}$
Input relation: different channel delays
Output relation: $\frac {l_{1}}{c_{1}} \approx \frac {l_{2}}{c_{2}}$
Pattern:

#### MR4------

Description:
Property: Change the data packets size, the resultant throughput should satisfied $\frac {r_{1}}{s_{1}} \approx \frac {r_{2}}{s_{2}}$
Source input: A sends a data packet P1 with packet size s1 to B
Source output: $s_{1}$
Follow-up input: A sends a data packet P2 with packet size s2 to B
Follow-up output: $s_{2}$
Input relation: different data packets size
Output relation: $\frac {r_{1}}{s_{1}} \approx \frac {r_{2}}{s_{2}}$
Pattern:

#### MR5------

Description:
Property: The source test case is that the routing table of A contains the route $p_{1}$ to B. The follow-up test case is that all route entries in A’s routing table are deleted, and then A requests to identify a new route $p_{2}$ to B. We should have the relation $p_{1} = p_{2}$
Source input: the routing table of A contains the route $p_{1}$ to B
Source output: $p_{1}$
Follow-up input: all route entries in A’s routing table are deleted, and then A requests to identify a new route $p_{2}$ to B.
Follow-up output: $p_{2}$
Input relation: all route entries in A’s routing table are deleted
Output relation: $p_{1} = p_{2}$
Pattern:

#### MR6------

Description:
Property: The source test case is that A sends a data packet P to B via a route with $h_{1}$ hops. The resultant latency is $l_{1}$. The follow-up test case is that the route from A to B is changed to a new one with $h_{2}$ hops, and then A sends the same data packet P to B. The resultant latency is $l_{2}$. We should have the relation that if $h_{1} >h_{2}$, then $l_{1} >l_{2}$
Source input: A sends a data packet P to B via a route with h1 hops
Source output: $l_{1}$
Follow-up input: the route from A to B is changed to a new one with $h_{2}$ hops, and then A sends the same data packet P to B.
Follow-up output: $l_{2}$
Input relation: $h_{1} >h_{2}$
Output relation: $l_{1} >l_{2}$
Pattern:

#### MR7------

Description:
Property: The source test case is that A sends a data packet P to B via a route with $h_{1}$ hops. The resultant sequence number is $q_{1}$. The follow-up test case is that the route from A to B is changed to a new one with $h_{2}$ hops, and then A sends the same data packet P to B. The resultant sequence number is $q_{2}$. We should have the relation that if $h_{1} >h_{2}$, then $q_{1} >q_{2}$
Source input: A sends a data packet P to B via a route with $h_{1}$ hops
Source output: The resultant sequence number is $q_{1}$
Follow-up input: the route from A to B is changed to a new one with $h_{2}$ hops, and then A sends the same data packet P to B
Follow-up output: The resultant sequence number is $q_{2}$
Input relation: $h_{1} >h_{2}$
Output relation: $q_{1} >q_{2}$
Pattern:

#### MR8------

Description:
Property: The source test case is that A requests to transmit a data packet P to B (ﬁrst transmission). The follow-up test case is that after a while, A requests to transmit the same packet P to B again (second transmission). We should have the relation (1) if the ﬁrst transmission is successful, the second transmission should also be successful, or (2) if A only broadcasts a Route Request (RREQ) packet for searching a route to B but does not forward the packet at the ﬁrst transmission, A should buﬀer the data packet at the second transmission
Source input: A requests to transmit a data packet P to B (ﬁrst transmission)
Source output:
Follow-up input: after a while, A requests to transmit the same packet P to B again (second transmission)
Follow-up output:
Input relation: (1) if the ﬁrst transmission is successful   (2)if A only broadcasts a Route Request (RREQ) packet for searching a route to B but does not forward the packet at the ﬁrst transmission
Output relation: (1) the second transmission should also be successful  (2) A should buﬀer the data packet at the second transmission
Pattern:

#### MR9------

Description:
Property: The source test case is that A requests to transmit a data packet P to B (ﬁrst transmission). The follow-up test case is that A’s neighbor node C requests to transmit the same packet P to B (second transmission). We should have the relation (1) if the ﬁrst transmission is successful, A should reply to C a Route Reply (RREP) packet at the second transmission, or (2) if A only broadcasts RREQ for searching a route to B but does not forward P at the ﬁrst transmission, it should broadcast RREQ again for searching a route to B at the second transmission
Source input: A requests to transmit a data packet P to B (ﬁrst transmission)
Source output:
Follow-up input: The follow-up test case is that A’s neighbor node C requests to transmit the same packet P to B (second transmission)
Follow-up output:
Input relation: (1) if the ﬁrst transmission is successful  (2) if A only broadcasts RREQ for searching a route to B but does not forward P at the ﬁrst transmission
Output relation: (1) A should reply to C a Route Reply (RREP) packet at the second transmission   (2) it should broadcast RREQ again for searching a route to B at the second transmission
Pattern:

#### MR10------

Description:
Property: The source test case is that A’s neighbor node C requests to transmit a data packet P to B (ﬁrst transmission).The follow-up test case is that A requests to transmit the same packet P to B (second transmission). We should have the relation (1)if A replies to C an RREP packet at the ﬁrst transmission ,the second transmission should be successful ,or (2)if A only broadcasts RREQ for searching a route to B and C does not forward the packet at the ﬁrst transmission , A should broadcast RREQ again for searching a route to B at the second transmission
Source input: A’s neighbor node C requests to transmit a data packet P to B (ﬁrst transmission)
Source output:
Follow-up input: A requests to transmit the same packet P to B (second transmission)
Follow-up output:
Input relation: (1)if A replies to C an RREP packet at the ﬁrst transmission   (2) if A only broad casts RREQ for searching a route to B and C does not forward the packet at the ﬁrst transmission
Output relation: (1)the second transmission should be successful   (2) A should broadcast RREQ again for searching a route to B at the second transmission
Pattern:

#### MR11------

Description:
Property: The source test case is that A is put into the black list of B, and then A requests to transmit a data packet P to B. B will reply with a certain number ($n_{1}$) of RREP packets to A. The follow-up test case is that A is deleted from the black list of B, and then A requests to transmit the same packet P to B. B will reply with a certain number ($n_{2}$) of RREP packets to A. We should have the relation $n_{1} < n_{2}$
Source input: A is put into the black list of B, and then A requests to transmit a data packet P to B
Source output: B will reply with a certain number ($n_{1}$) of RREP packets to A
Follow-up input: A is deleted from the black list of B, and then A requests to transmit the same packet P to B
Follow-up output: B will reply with a certain number ($n_{2}$) of RREP packets to A
Input relation: whether A is in the black list of B
Output relation: $n_{1} < n_{2}$
Pattern:
Insert title here