Merge ~djacobs98/checkbox-iiotg/+git/checkbox-provider-intliotg-3:tsn-refactor into ~checkbox-dev/checkbox-iiotg/+git/checkbox-provider-intliotg:master

Proposed by Doug Jacobs
Status: Merged
Approved by: Doug Jacobs
Approved revision: 15e38724ea011119ef018cfda13e82f65c24a815
Merged at revision: 30092d25af115b60690e7b443c43be3e420c7262
Proposed branch: ~djacobs98/checkbox-iiotg/+git/checkbox-provider-intliotg-3:tsn-refactor
Merge into: ~checkbox-dev/checkbox-iiotg/+git/checkbox-provider-intliotg:master
Diff against target: 360 lines (+18/-278)
1 file modified
units/tsn/jobs.pxu (+18/-278)
Reviewer Review Type Date Requested Status
Vic Liu Approve
PeiYao Chang Pending
Review via email: mp+443243@code.launchpad.net

Commit message

Change. Refactor the TSN tests to refer to the test document for the commands.
https://docs.google.com/document/d/14fNcjUzxh6H-mWK8tXV8HoUxrgFirOhDksUZfd44OTY/edit#heading=h.v0ljmsfxoxqo

The old method just created tests with too many instructions making it hard to read. This should be easier for the tester. Each test links to the section of the document for that test case.

To post a comment you must log in.
Revision history for this message
Doug Jacobs (djacobs98) wrote :

Pastebin showing output from checkbox running refactored test cases:
https://pastebin.canonical.com/p/dWfVb9nWCq/

Revision history for this message
Vic Liu (zongminl) wrote :

There was a "TSN setup for Checkbox" document mentioned in steps field from the previous version but now is missing, is this no longer required?

review: Needs Information
Revision history for this message
Vic Liu (zongminl) wrote :

There was a "TSN setup for Checkbox" document mentioned in steps field from the previous version but now is missing, is this no longer required?

review: Needs Information
Revision history for this message
Doug Jacobs (djacobs98) wrote :

> There was a "TSN setup for Checkbox" document mentioned in steps field from
> the previous version but now is missing, is this no longer required?

The setup document pointed to the setup chapter of the Test Plan.

I've incorporated (copied) this information into the Test Instructions document for simplicity.

Revision history for this message
Vic Liu (zongminl) wrote :

Then it's good enough, thank you

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/units/tsn/jobs.pxu b/units/tsn/jobs.pxu
2index f454d6f..701398b 100644
3--- a/units/tsn/jobs.pxu
4+++ b/units/tsn/jobs.pxu
5@@ -77,24 +77,8 @@ _purpose:
6 depends: tsn/enabled
7 plugin: manual
8 _steps:
9- Before performing the test steps, please follow the instructions in the
10- configuration document at:
11- https://docs.google.com/document/d/1cN34NR4mZm43-43lj9J93etmL7mjn2dIoWyuHiYqFlQ/edit?usp=share_link
12- Additional SW required: ptp4l (provided by linuxptp)
13- 1. Connect an Ethernet cable from the Secondary System's TSN port directly
14- to the {eth-interface} Ethernet interface of the SUT.
15- 2. Copy the gPTP.cfg file to user u's home directory on the SUT and Secondary.
16- 3. On the secondary, execute the command:
17- sudo ptp4l -P2Hi <secondary-inerface> -f ~/gPTP.cfg --step_threshold=1 -m
18- 3. Wait for the system to announce it is the Grand Master.
19- 4. run the same command on the SUT.
20- 5. The SUT should announce it has selected a foreign master (the Secondary
21- system)
22- 6. Clock readings will appear on both the Secondary and SUT. When the rms
23- value remains below 100, the SUT has successfully synchronized to the clock
24- on the Secondary system.
25- 7. Leave the clock windows running and open - they will be required in futher
26- test cases.
27+ Follow the instructions as described here:
28+ https://docs.google.com/document/d/14fNcjUzxh6H-mWK8tXV8HoUxrgFirOhDksUZfd44OTY/edit#heading=h.pzr6mq4dyb0u
29
30 unit: template
31 template-resource: tsn/tsn-devices
32@@ -108,35 +92,8 @@ _purpose:
33 depends: tsn/enabled
34 plugin: manual
35 _steps:
36- Before performing the test steps, please follow the instructions in the
37- configuration document at:
38- https://docs.google.com/document/d/1cN34NR4mZm43-43lj9J93etmL7mjn2dIoWyuHiYqFlQ/edit?usp=share_link
39- Leave the gPTP clock windows open and execute additional commands in a
40- separate window.
41- 1. Execute the following command on the Secondary, then the SUT:
42- $ sudo pmc -u -b 0 -t 1 "SET GRANDMASTER_SETTINGS_NP clockClass 248\
43- clockAccuracy 0xfe offsetScaledLogVariance 0xffff currentUtcOffset 37\
44- leap61 0 leap59 0 currentUtcOffsetValid 1 ptpTimescale 1 timeTraceable 1\
45- frequencyTraceable 0 timeSource 0xa0"
46- 2. Both the Secondary and SUT should display the settings for its
47- GRANDMASTER_SETTINGS_NP
48- 3. Execute the following command on the Secondary, then the SUT:
49- $ phc2sys -s <interface> -O 0 -c CLOCK_REALTIME --step_threshold=1\
50- kk--transportSpecific=1 -w -m --first_step_threshold=0.0
51- 4. Both systems will display CLOCK_REALTIME data in 4 columns:
52- phc offset : when this is +/- 100ns the offset between the PHC and the local
53- system clock are in sync.
54- \
55- State : This should transition from S0 to S2. S2 means the system is
56- tracking the Primary Clock.
57- \
58- Frequency Offset : (in parts per billion) This value does not affect this
59- test.
60- \
61- Path Delay : This should be 0, indicating the device is using hardware
62- cross-timestamping.
63- \
64- When all of these conditions are met, this test has passed.
65+ Follow the instructions as described here:
66+ https://docs.google.com/document/d/14fNcjUzxh6H-mWK8tXV8HoUxrgFirOhDksUZfd44OTY/edit#heading=h.dxubm4m7zzag
67
68 unit: template
69 template-resource: tsn/tsn-devices
70@@ -150,66 +107,8 @@ _purpose:
71 depends: tsn/enabled
72 plugin: manual
73 _steps:
74- Before performing the test steps, please follow the instructions in the
75- configuration document at:
76- https://docs.google.com/document/d/1cN34NR4mZm43-43lj9J93etmL7mjn2dIoWyuHiYqFlQ/edit?usp=share_link
77- Leave the gPTP clock windows open and execute additional commands in a
78- separate window.
79- Additional SW required:
80- ptp4l (provided by linuxptp)
81- 1. Execute this command on both the SUT and Secondary system to clear any
82- queue configuration:
83- $ sudo tc qdisc del dev <interface> root
84- 2. Execute this command on both the SUT and Secondary system to configure a
85- TAPRIO queue discipline:
86- $ BASE=$(date +%s%N)
87- $ echo "$BASE"
88- $ sudo tc qdisc add dev <interface> parent root handle 100 taprio num_tc 4\
89- queues 1@0 1@1 1@2 1@3 base-time $BASE sched-entry S 01 5000000\
90- S 02 5000000 S 04 5000000 S 08 5000000 flags 0x2 txtime-delay 0
91- 3. Configure an IP address for the TSN Ethernet interfaces on both the SUT
92- and Secondary systems:
93- SUT (Talker):
94- $ sudo ip addr add 192.168.1.11/24 dev <interface>
95- $ sudo ip link set dev <interface> up
96- Secondary (Listener):
97- $ sudo ip addr add 192.168.1.22/24 dev <interface>
98- $ sudo ip link set dev <interface> up
99- 4. On the Secondary system, start iperf3 to listen for traffic:
100- $ iperf3 -s -p 5100 &
101- $ iperf3 -s -p 5101 &
102- $ iperf3 -s -p 5102 &
103- $ iperf3 -s -p 5103 &
104- 5. The output for each command should indicate iperf3 is listening on the
105- indicated port.
106- 6. Prepare tcpdump to capture test traffic on the Secondary:
107- $ tcpdump -Q in -nvvvXXi <interface> –time-stamp-percision=nano\
108- -j adapter_unsynched -B 524288 -s 54 -w filename.pcap
109- 7. On the Secondary, configure cgroups for transmit queues:
110- $ sudo mkdir -p /sys/fs/cgroup/net_prio/grp1
111- $ sudo echo "<interface> 1" > /sys/fs/cgroup/net_prio/grp1/net_prio.ifpriomap
112- \
113- $ sudo mkdir -p /sys/fs/cgroup/net_prio/grp2
114- $ sudo echo "<interface> 2" > /sys/fs/cgroup/net_prio/grp2/net_prio.ifpriomap
115- \
116- $ sudo mkdir -p /sys/fs/cgroup/net_prio/grp3
117- $ sudo echo "<interface> 2" > /sys/fs/cgroup/net_prio/grp3/net_prio.ifpriomap
118- 8. Start transmitting test data from the SUT:
119- $ export TARGET_IP=192.168.1.22
120- \
121- $ iperf3 -u -11000 -b0 -p 5100 -c $TARGET_IP -t 150 >> /dev/null &
122- $ echo $! > /sys/fs/cgroup/net_prio/grp1/cgroup.procs
123- \
124- $ iperf3 -u -11000 -b0 -p 5101 -c $TARGET_IP -t 150 >> /dev/null &
125- $ echo $! > /sys/fs/cgroup/net_prio/grp2/cgroup.procs
126- \
127- $ iperf3 -u -11000 -b0 -p 5102 -c $TARGET_IP -t 150 >> /dev/null &
128- $ echo $! > /sys/fs/cgroup/net_prio/grp3/cgroup.procs
129- 9. On the SUT, watch the queues for transmitted data:
130- $ sudo watch -d -n 0.5 "tc -s qdisc show dev <interface>"
131- \
132- The byte and packet count for 100:1 - 100:4 each increase for half a second
133- before the next queue increases.
134+ Follow the instructions as described here:
135+ https://docs.google.com/document/d/14fNcjUzxh6H-mWK8tXV8HoUxrgFirOhDksUZfd44OTY/edit#heading=h.2mpce0amhrf9
136
137 unit: template
138 template-resource: tsn/tsn-devices
139@@ -223,32 +122,8 @@ _purpose:
140 depends: tsn/enabled
141 plugin: manual
142 _steps:
143- Before performing the test steps, please follow the instructions in the
144- configuration document at:
145- https://docs.google.com/document/d/1cN34NR4mZm43-43lj9J93etmL7mjn2dIoWyuHiYqFlQ/edit?usp=share_link
146- Leave the gPTP clock windows open and execute additional commands in a
147- separate window.
148- Additional software required: udp_tai (part of sw_tsn_tools)
149- 1. Clear any queue discipline (qdisc) configuration on both the SUT and
150- Secondary's TSN interface by running this command on both systems:
151- $ sudo qdisc del dev <interface> root
152- 2. Configure Earliest Transmit-Time First (ETF) Queue Discipline on both
153- systems:
154- $ sudo tc qdisc add dev <interface> handle 8001: parent root mqprio num_tc 4\
155- map 0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 queues 1@0 1@1 1@2 1@3 hw 0
156- $ sudo tc replace dev <interface> parent 8001:4 etf offload clockid CLOCK_TAI delta 500000
157- 3. Verify the qdisc is configured properly on the SUT and Secondary:
158- $ sudo tc qdisc show dev <interface>
159- Should see that ETF qdisc is configured on 8001:4 with a delta of 500000 on both systems
160- 4. Start transmitting data from the SUT every 1ms (1000000ns) starting 6ms in the future.
161- Capture the packets on the Secondary system.
162- (SUT)
163- $ sudo ./udp_tai -c 3 -i <interface> -P 1000000 -p 90 -d 600000
164- (Secondary)
165- $ sudo tcpdump -Q in -ttt -ni <interface> --time-stamp-precision=nano -j adapter_unsynched port 7788 -c 20000
166- 5. Verification:
167- SUT: You should see packets being transmitted.
168- Secondary: >95% of packets should arrive every 1000000ns (+/-500ns)
169+ Follow the instructions as described here:
170+ https://docs.google.com/document/d/14fNcjUzxh6H-mWK8tXV8HoUxrgFirOhDksUZfd44OTY/edit#heading=h.2m1zswmirdvb
171
172 unit: template
173 template-resource: tsn/tsn-devices
174@@ -261,19 +136,8 @@ _purpose:
175 depends: tsn/enabled
176 plugin: manual
177 _steps:
178- Before performing the test steps, please follow the instructions in the
179- configuration document at:
180- https://docs.google.com/document/d/1cN34NR4mZm43-43lj9J93etmL7mjn2dIoWyuHiYqFlQ/edit?usp=share_link
181- This test does not require clock synchronization.
182- NOTE: ethtool 5.16 does not support the --set-frame-preemption feature.
183- You must download a later version from:
184- https://git.kernel.org/pub/scm/network/ethtool/ethtool.git
185- and compile it yourself.
186- 1. Enable FPE on the DUT:
187- $ sudo ethtool --set-frame-preemption <interface> fp on
188- 2. Verify FPE is enabled:
189- $ sudo ethtool --show-frame-preemption <interface>
190- The command should show that frame-preemtpion is enabled.
191+ Follow the instructions as described here:
192+ https://docs.google.com/document/d/14fNcjUzxh6H-mWK8tXV8HoUxrgFirOhDksUZfd44OTY/edit#heading=h.ge4dauxlinm3
193
194 unit: template
195 template-resource: tsn/tsn-devices
196@@ -287,23 +151,8 @@ _purpose:
197 depends: tsn/enabled
198 plugin: manual
199 _steps:
200- Before performing the test steps, please follow the instructions in the
201- configuration document at:
202- https://docs.google.com/document/d/1cN34NR4mZm43-43lj9J93etmL7mjn2dIoWyuHiYqFlQ/edit?usp=share_link
203- Additional SW required: ptp4l (provided by linuxptp)
204- 1. Connect an Ethernet cable from the Secondary System's TSN port directly
205- to the {eth-interface} Ethernet interface of the SUT.
206- 2. Copy the gPTP.cfg file to user u's home directory on the SUT and Secondary.
207- 3. On the SUT, execute the command:
208- sudo ptp4l -P2Hi <secondary-inerface> -f ~/gPTP.cfg --step_threshold=1 -m
209- 3. Wait for the SUT to announce it is the Grand Master.
210- 4. run the same command on the Secondary.
211- 5. The Secondary should announce it has selected a foreign master (the SUT)
212- 6. Clock readings will appear on both the Secondary and SUT. When the rms
213- value remains below 100, the Secondary has successfully synchronized to the clock
214- on the SUT system.
215- 7. Leave the clock windows running and open - they will be required in futher
216- test cases.
217+ Follow the instructions as described here:
218+ https://docs.google.com/document/d/14fNcjUzxh6H-mWK8tXV8HoUxrgFirOhDksUZfd44OTY/edit#heading=h.15f1v79u3km0
219
220 unit: template
221 template-resource: tsn/tsn-devices
222@@ -316,35 +165,8 @@ _purpose:
223 depends: tsn/enabled
224 plugin: manual
225 _steps:
226- Before performing the test steps, please follow the instructions in the
227- configuration document at:
228- https://docs.google.com/document/d/1cN34NR4mZm43-43lj9J93etmL7mjn2dIoWyuHiYqFlQ/edit?usp=share_link
229- Leave the gPTP clock windows open and execute additional commands in a
230- separate window.
231- 1. Execute the following command on the SUT, then the Secondary:
232- $ sudo pmc -u -b 0 -t 1 "SET GRANDMASTER_SETTINGS_NP clockClass 248\
233- clockAccuracy 0xfe offsetScaledLogVariance 0xffff currentUtcOffset 37\
234- leap61 0 leap59 0 currentUtcOffsetValid 1 ptpTimescale 1 timeTraceable 1\
235- frequencyTraceable 0 timeSource 0xa0"
236- 2. Both the Secondary and SUT should display the settings for its
237- GRANDMASTER_SETTINGS_NP
238- 3. Execute the following command on the SUT, then the Secondary:
239- $ phc2sys -s <interface> -O 0 -c CLOCK_REALTIME --step_threshold=1\
240- kk--transportSpecific=1 -w -m --first_step_threshold=0.0
241- 4. Both systems will display CLOCK_REALTIME data in 4 columns:
242- phc offset : when this is +/- 100ns the offset between the PHC and the local
243- system clock are in sync.
244- \
245- State : This should transition from S0 to S2. S2 means the system is
246- tracking the Primary Clock.
247- \
248- Frequency Offset : (in parts per billion) This value does not affect this
249- test.
250- \
251- Path Delay : This should be 0, indicating the device is using hardware
252- cross-timestamping.
253- \
254- When all of these conditions are met, this test has passed.
255+ Follow the instructions as described here:
256+ https://docs.google.com/document/d/14fNcjUzxh6H-mWK8tXV8HoUxrgFirOhDksUZfd44OTY/edit#heading=h.rb5hx7uq4hcr
257
258 unit: template
259 template-resource: tsn/tsn-devices
260@@ -358,66 +180,8 @@ _purpose:
261 depends: tsn/enabled
262 plugin: manual
263 _steps:
264- Before performing the test steps, please follow the instructions in the
265- configuration document at:
266- https://docs.google.com/document/d/1cN34NR4mZm43-43lj9J93etmL7mjn2dIoWyuHiYqFlQ/edit?usp=share_link
267- Leave the gPTP clock windows open and execute additional commands in a
268- separate window.
269- Additional SW required:
270- ptp4l (provided by linuxptp)
271- 1. Execute this command on both the SUT and Secondary system to clear any
272- queue configuration:
273- $ sudo tc qdisc del dev <interface> root
274- 2. Execute this command on both the SUT and Secondary system to configure a
275- TAPRIO queue discipline:
276- $ BASE=$(date +%s%N)
277- $ echo "$BASE"
278- $ sudo tc qdisc add dev <interface> parent root handle 100 taprio num_tc 4\
279- queues 1@0 1@1 1@2 1@3 base-time $BASE sched-entry S 01 5000000\
280- S 02 5000000 S 04 5000000 S 08 5000000 flags 0x2 txtime-delay 0
281- 3. Configure an IP address for the TSN Ethernet interfaces on both the SUT
282- and Secondary systems:
283- SUT (Listener):
284- $ sudo ip addr add 192.168.1.11/24 dev <interface>
285- $ sudo ip link set dev <interface> up
286- Secondary (Talker):
287- $ sudo ip addr add 192.168.1.22/24 dev <interface>
288- $ sudo ip link set dev <interface> up
289- 4. On the SUT, start iperf3 to listen for traffic:
290- $ iperf3 -s -p 5100 &
291- $ iperf3 -s -p 5101 &
292- $ iperf3 -s -p 5102 &
293- $ iperf3 -s -p 5103 &
294- 5. The output for each command should indicate iperf3 is listening on the
295- indicated port.
296- 6. Prepare tcpdump to capture test traffic on the SUT:
297- $ tcpdump -Q in -nvvvXXi <interface> –time-stamp-percision=nano\
298- -j adapter_unsynched -B 524288 -s 54 -w filename.pcap
299- 7. On the SUT, configure cgroups for transmit queues:
300- $ sudo mkdir -p /sys/fs/cgroup/net_prio/grp1
301- $ sudo echo "<interface> 1" > /sys/fs/cgroup/net_prio/grp1/net_prio.ifpriomap
302- \
303- $ sudo mkdir -p /sys/fs/cgroup/net_prio/grp2
304- $ sudo echo "<interface> 2" > /sys/fs/cgroup/net_prio/grp2/net_prio.ifpriomap
305- \
306- $ sudo mkdir -p /sys/fs/cgroup/net_prio/grp3
307- $ sudo echo "<interface> 2" > /sys/fs/cgroup/net_prio/grp3/net_prio.ifpriomap
308- 8. Start transmitting test data from the Secondary:
309- $ export TARGET_IP=192.168.1.11
310- \
311- $ iperf3 -u -11000 -b0 -p 5100 -c $TARGET_IP -t 150 >> /dev/null &
312- $ echo $! > /sys/fs/cgroup/net_prio/grp1/cgroup.procs
313- \
314- $ iperf3 -u -11000 -b0 -p 5101 -c $TARGET_IP -t 150 >> /dev/null &
315- $ echo $! > /sys/fs/cgroup/net_prio/grp2/cgroup.procs
316- \
317- $ iperf3 -u -11000 -b0 -p 5102 -c $TARGET_IP -t 150 >> /dev/null &
318- $ echo $! > /sys/fs/cgroup/net_prio/grp3/cgroup.procs
319- 9. On the Secondary, watch the queues for transmitted data:
320- $ sudo watch -d -n 0.5 "tc -s qdisc show dev <interface>"
321- \
322- The byte and packet count for 100:1 - 100:4 each increase for half a second
323- before the next queue increases.
324+ Follow the instructions as described here:
325+ https://docs.google.com/document/d/14fNcjUzxh6H-mWK8tXV8HoUxrgFirOhDksUZfd44OTY/edit#heading=h.9x7mdm368f70
326
327 unit: template
328 template-resource: tsn/tsn-devices
329@@ -431,29 +195,5 @@ _purpose:
330 depends: tsn/enabled
331 plugin: manual
332 _steps:
333- Before performing the test steps, please follow the instructions in the
334- configuration document at:
335- https://docs.google.com/document/d/1cN34NR4mZm43-43lj9J93etmL7mjn2dIoWyuHiYqFlQ/edit?usp=share_link
336- Leave the gPTP clock windows open and execute additional commands in a
337- separate window.
338- Additional software required: udp_tai (part of sw_tsn_tools)
339- 1. Clear any queue discipline (qdisc) configuration on both the SUT and
340- Secondary's TSN interface by running this command on both systems:
341- $ sudo qdisc del dev <interface> root
342- 2. Configure Earliest Transmit-Time First (ETF) Queue Discipline on both
343- systems:
344- $ sudo tc qdisc add dev <interface> handle 8001: parent root mqprio num_tc 4\
345- map 0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 queues 1@0 1@1 1@2 1@3 hw 0
346- $ sudo tc replace dev <interface> parent 8001:4 etf offload clockid CLOCK_TAI delta 500000
347- 3. Verify the qdisc is configured properly on the SUT and Secondary:
348- $ sudo tc qdisc show dev <interface>
349- Should see that ETF qdisc is configured on 8001:4 with a delta of 500000 on both systems
350- 4. Start transmitting data from the Secondary system every 1ms (1000000ns) starting 6ms in the future.
351- Capture the packets on the SUT.
352- (Secondary)
353- $ sudo ./udp_tai -c 3 -i <interface> -P 1000000 -p 90 -d 600000
354- (SUT)
355- $ sudo tcpdump -Q in -ttt -ni <interface> --time-stamp-precision=nano -j adapter_unsynched port 7788 -c 20000
356- 5. Verification:
357- Secondary: You should see packets being transmitted.
358- SUT: >95% of packets should arrive every 1000000ns (+/-500ns)
359+ Follow the instructions as described here:
360+ https://docs.google.com/document/d/14fNcjUzxh6H-mWK8tXV8HoUxrgFirOhDksUZfd44OTY/edit#heading=h.ozz3peqlqp6g

Subscribers

People subscribed via source and target branches