The Unit Test Plan (UTP) will follow the same section breakdown as the Requirements in the Scope & Requirement Document.
The following types of tests shall be included where it makes sense.
Performance Testing cases will be a separate section in this document.
Configuration tests should be done through the DLC direct interface, as well as the YAML interface.
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
cfg-020 | cfg-005, cfg-010, cfg-015,cfg-045, cfg-055, cfg-060, cfg-065 | UT-0005 |
|
UT-0010 |
| ||
UT-0015 |
| ||
UT-0020 |
| ||
cfg-025 | cfg-005, cfg-010, cfg-015,cfg-045, cfg-055, cfg-060, cfg-065 | UT-0025 |
|
cfg-035 | cfg-040, cfg-045, cfg-055, cfg-060, cfg-065 | UT-0030 |
|
UT-0035 |
| ||
UT-0040 |
| ||
UT-0045 |
| ||
UT-0050 |
| ||
cfg-060 | cfg-065 | UT-0055 | Go through the following lnetctl commands and excercise their parameters:
|
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
cfg-020 | cfg-005, cfg-010, cfg-015 | UT-0060 |
|
UT-0065 |
| ||
UT-0070 |
| ||
cfg-060 | cfg-065 | UT-0075 | Go through the following lnetctl commands and excercise their parameters, by providing out of range values:
|
UT-0080 |
|
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
UT-0090 |
| ||
UT-0095 |
| ||
UT-0100 | Go through the following lnetctl commands and excercise their parameters, by providing error values:
| ||
UT-0105 | Delete a non-existent network Should return -EINVAL | ||
UT-0110 | Delete a non existent NID on tcp/o2ib Should return -EINVAL |
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
cfg-070 | UT-0115 |
| |
cfg-070 | UT-0120 |
| |
cfg-070 | UT-0125 |
| |
cfg-070 | UT-0130 |
| |
cfg-070 | UT-0131 |
| |
cfg-070 | UT-0135 |
| |
cfg-070 | UT-0140 |
| |
cfg-070 | UT-0145 |
| |
cfg-075 | UT-0150 |
|
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
UT-0155 |
| ||
UT-0160 |
| ||
UT-0165 |
| ||
UT-0170 |
| ||
UT-0171 |
| ||
UT-0172 |
| ||
UT-0173 |
| ||
UT-0175 |
| ||
UT-0176 |
|
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
cfg-070 | UT-0180 |
| |
cfg-070 | UT-0185 |
| |
cfg-080 | snd-065 | UT-0190 |
|
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
cfg-090 | UT-0195 |
| |
cfg-090 | UT-0200 |
| |
cfg-090 | snd-025 | UT-0205 |
|
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
cfg-090 | UT-0210 |
|
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
cfg-170 | UT-0215 |
|
Note to test NUMA proximity, you can use python psutil to bind a process to a specific CPU then execute a write/read operation to the FS on that CPU.
The CPU distances can be acquired from /proc/sys/lnet/cpu_partition_distance
The NUMA cpu list can be acquired from /sys/devices/system/node/node*/cpulist
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description | Behavior of Note | |
---|---|---|---|---|---|
snd-005 | UT-0220 |
| |||
snd-010 | snd-015 | UT-0225 |
| ||
snd-020 | UT-0230 |
| |||
snd-020 | UT-0235 |
| |||
snd-030 | UT-0240 |
| |||
snd-030 | UT-0245 |
| |||
snd-035 | UT-0250 |
| |||
snd-040 | UT-0255 |
| |||
snd-045 | snd-070 | UT-0260 |
| ||
snd-050 | UT-0265 |
| |||
snd-050 | UT-0270 |
| |||
snd-050 | snd-060, snd-075 | UT-0275 |
| When a peer NID is removed then added or if a new peer NID is added, then it's peer_ni->lpni_seq number will start off at 0. In the case of credits being == then the newly added peer will always be picked until it's lpni_seq number catches up with the other peer NIs sequence numbers. See code below.
This behavior will manifest itself in low bandwidth environment. In high bandwidth environment it is likely that the credits in the selection algorithm will be different and the peer_NI will be picked according to credits. Another scenario to consider is when the lpni_seq number wraps. In low bandwidth environment this could cause the peer NI which wrapped to be picked until it catches up with the other peer NIs sequence numbers. This in itself might not be significant enough, but does raise the question of the benefit of having a seq number to start with. Does it give much of a functional advantage, or having the credits criteria enough. The same issue is present with local NI sequence numbers. | |
snd-055 | snd-060, snd-075 | UT-0280 |
| ||
snd-055 | snd-060, snd-075, snd-085 | UT-0285 |
| ||
snd-055 | snd-060, snd-075, snd-085 | UT-0290 |
| ||
snd-055 | snd-060, snd-075 | UT-0295 |
| ||
snd-080 | UT-0300 |
| |||
snd-080 | UT-0305 |
| |||
UT-0310 |
| ||||
UT-0315 |
| ||||
UT-0320 |
|
The unit tests for peer NID discovery depend on lctl ping
not triggering discovery. To force discovery, use lctl discover
. Note that some of the tests require DLC configuration to include non-existing peer NIDs. These nids are marked with a *.
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
Basic functionality 1-1: discovery of an MR peer via its primary.
| |||
Basic functionality 1-2: discovery of an MR peer via a secondary.
| |||
Basic functionality 1-3: discovery of an MR peer via a tertiary.
| |||
Compatibility 2-1: discovery of a non-MR peer via its primary.
| |||
Compatibility 2-2: discovery of a non-MR peer via a secondary.
| |||
Compatibility 2-3: discovery of a non-MR peer via a tertiary.
| |||
Interaction with DLC 3-1: DLC overrides Discovery of MR peer
| |||
Interaction with DLC 3-2: DLC overrides Discovery of non-MR peer
| |||
Interaction with DLC 3-3: DLC overrides Discovery of MR peer with primary conflict
| |||
Interaction with DLC 3-4: DLC overrides Discovery of non-MR peer with primary conflict
| |||
Interaction with DLC 3-5: "push MR bit" exception to DLC overrides Discovery
| |||
Interaction with DLC 3-6: "push MR bit" exception to DLC overrides Discovery
|
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
dbg-005 | dbg-010, dbg-015, dbg-020, dbg-025, dbg-030, dbg-035, dbg-080 | UT-0325 |
|
dbg-040 | dbg-080, dbg-095 | UT-0330 |
|
dbg-040 | dbg-080 | UT-0335 |
|
dbg-045 | dbg-080 | UT-0340 |
|
dbg-050 | dbg-080, dbg-100 | UT-0345 |
|
dbg-110 | UT-0350 |
| |
dbg-115 | UT-0355 |
| |
dbg-120 | UT-0360 |
|
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
bck-025 | UT-0365 |
|
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
UT-0370 | Testing reconnects. In Large clusters it is possible that servers might need to handle a burst of client connects. The performance of such scenarios needs to be quantified. | ||
Primary Requirement ID | Secondary Requirement ID | Unit Test ID | Unit Test Description |
---|---|---|---|
| |||
| |||
| |||
| |||
| |||
| |||
|