]> git.donarmstrong.com Git - qmk_firmware.git/blob - tool/mbed/mbed-sdk/workspace_tools/tests.py
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
[qmk_firmware.git] / tool / mbed / mbed-sdk / workspace_tools / tests.py
1 """
2 mbed SDK
3 Copyright (c) 2011-2013 ARM Limited
4
5 Licensed under the Apache License, Version 2.0 (the "License");
6 you may not use this file except in compliance with the License.
7 You may obtain a copy of the License at
8
9     http://www.apache.org/licenses/LICENSE-2.0
10
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
16 """
17 from workspace_tools.paths import *
18 from workspace_tools.data.support import *
19
20 TEST_CMSIS_LIB = join(TEST_DIR, "cmsis", "lib")
21 TEST_MBED_LIB = join(TEST_DIR, "mbed", "env")
22
23 PERIPHERALS = join(TEST_DIR, "peripherals")
24 BENCHMARKS_DIR = join(TEST_DIR, "benchmarks")
25
26 SD = join(TEST_DIR, "sd")
27 TMP102 = join(PERIPHERALS, 'TMP102')
28
29 """
30 Wiring:
31   * Ground:
32     * LPC1*: p1
33     * KL25Z: GND
34
35   * Vout
36     * LPC1*: p40
37     * KL25Z: P3V3
38
39   * TMP102 (I2C):
40       * LPC1*: (SDA=p28 , SCL=p27)
41       * KL25Z: (SDA=PTC9, SCL=PTC8)
42       * MAXWSNENV: (SDA=TP6, SCL=TP5)
43
44   * digital_loop (Digital(In|Out|InOut), InterruptIn):
45       * Arduino headers: (D0 <-> D7)
46       * LPC1549: (D2 <-> D7)
47       * LPC1*: (p5   <-> p25 )
48       * KL25Z: (PTA5<-> PTC6)
49       * NUCLEO_F103RB: (PC_6 <-> PB_8)
50       * MAXWSNENV: (TP3 <-> TP4)
51       * MAX32600MBED: (P1_0 <-> P4_7)
52
53   * port_loop (Port(In|Out|InOut)):
54       * Arduino headers: (D0 <-> D7), (D1 <-> D6)
55       * LPC1*: (p5   <-> p25), (p6   <-> p26)
56       * KL25Z: (PTA5 <-> PTC6), (PTA4 <-> PTC5)
57       * NUCLEO_F103RB: (PC_6 <-> PB_8), (PC_5 <-> PB_9)
58       * MAXWSNENV: (TP1 <-> TP3), (TP2 <-> TP4)
59       * MAX32600MBED: (P1_0 <-> P4_7), (P1_1 <-> P4_6)
60
61   * analog_loop (AnalogIn, AnalogOut):
62       * Arduino headers: (A0 <-> A5)
63       * LPC1549: (A0 <-> D12)
64       * LPC1*: (p17   <-> p18 )
65       * KL25Z: (PTE30 <-> PTC2)
66
67   * analog_pot (AnalogIn):
68       * Arduino headers: (A0, A1)
69       
70   * SD (SPI):
71       * LPC1*: (mosi=p11 , miso=p12 , sclk=p13 , cs=p14 )
72       * KL25Z: (mosi=PTD2, miso=PTD3, sclk=PTD1, cs=PTD0)
73
74   * MMA7660 (I2C):
75       * LPC1*: (SDA=p28 , SCL=p27)
76
77   * i2c_loop:
78       * LPC1768: (p28 <-> p9), (p27 <-> p10)
79
80   * i2c_eeprom:
81       * LPC1*: (SDA=p28 , SCL=p27)
82       * KL25Z: (SDA=PTE0, SCL=PTE1)
83       
84 """
85 TESTS = [
86     # Automated MBED tests
87     {
88         "id": "MBED_A1", "description": "Basic",
89         "source_dir": join(TEST_DIR, "mbed", "basic"),
90         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
91         "automated": True,
92     },
93     {
94         "id": "MBED_A2", "description": "Semihost file system",
95         "source_dir": join(TEST_DIR, "mbed", "file"),
96         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
97         "automated": True,
98         "mcu": ["LPC1768", "LPC2368", "LPC11U24"]
99     },
100     {
101         "id": "MBED_A3", "description": "C++ STL",
102         "source_dir": join(TEST_DIR, "mbed", "stl"),
103         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
104         "automated": False,
105     },
106     {
107         "id": "MBED_A4", "description": "I2C TMP102",
108         "source_dir": join(TEST_DIR, "mbed", "i2c_TMP102"),
109         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, TMP102],
110         "automated": True,
111         "peripherals": ["TMP102"]
112     },
113     {
114         "id": "MBED_A5", "description": "DigitalIn DigitalOut",
115         "source_dir": join(TEST_DIR, "mbed", "digitalin_digitalout"),
116         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
117         "automated": True,
118         "peripherals": ["digital_loop"]
119     },
120     {
121         "id": "MBED_A6", "description": "DigitalInOut",
122         "source_dir": join(TEST_DIR, "mbed", "digitalinout"),
123         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
124         "automated": True,
125         "peripherals": ["digital_loop"]
126     },
127     {
128         "id": "MBED_A7", "description": "InterruptIn",
129         "source_dir": join(TEST_DIR, "mbed", "interruptin"),
130         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
131         "duration": 15,
132         "automated": True,
133         "peripherals": ["digital_loop"]
134     },
135     {
136         "id": "MBED_A8", "description": "Analog",
137         "source_dir": join(TEST_DIR, "mbed", "analog"),
138         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
139         "automated": True,
140         "peripherals": ["analog_loop"],
141         "mcu": ["LPC1768", "LPC2368", "KL25Z", "K64F", "K22F", "LPC4088", "LPC1549",
142                 "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_F302R8", "NUCLEO_F303RE",
143                 "NUCLEO_F334R8", "NUCLEO_L053R8", "NUCLEO_L073RZ", "NUCLEO_L152RE",
144                 "NUCLEO_F411RE", "DISCO_F407VG", "ARCH_MAX", "MAX32600MBED"]
145     },
146     {
147         "id": "MBED_A9", "description": "Serial Echo at 115200",
148         "source_dir": join(TEST_DIR, "mbed", "echo"),
149         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
150         "automated": True,
151         #"host_test": "echo"
152     },
153     {
154         "id": "MBED_A10", "description": "PortOut PortIn",
155         "source_dir": join(TEST_DIR, "mbed", "portout_portin"),
156         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
157         "peripherals": ["port_loop"],
158         "supported": DEFAULT_SUPPORT,
159         "automated": True,
160     },
161     {
162         "id": "MBED_A11", "description": "PortInOut",
163         "source_dir": join(TEST_DIR, "mbed", "portinout"),
164         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
165         "peripherals": ["port_loop"],
166         "supported": DEFAULT_SUPPORT,
167         "automated": True,
168     },
169     {
170         "id": "MBED_A12", "description": "SD File System",
171         "source_dir": join(TEST_DIR, "mbed", "sd"),
172         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
173         "automated": True,
174         "duration": 15,
175         "peripherals": ["SD"]
176     },
177     {
178         "id": "MBED_A13", "description": "I2C MMA7660 accelerometer",
179         "source_dir": join(TEST_DIR, "mbed", "i2c_MMA7660"),
180         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'MMA7660')],
181         "automated": True,
182         "peripherals": ["MMA7660"]
183     },
184     {
185         "id": "MBED_A14", "description": "I2C Master",
186         "source_dir": join(TEST_DIR, "mbed", "i2c_master"),
187         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
188     },
189     {
190         "id": "MBED_A15", "description": "I2C Slave",
191         "source_dir": join(TEST_DIR, "mbed", "i2c_slave"),
192         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
193     },
194     {
195         "id": "MBED_A16", "description": "SPI Master",
196         "source_dir": join(TEST_DIR, "mbed", "spi_master"),
197         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
198     },
199     {
200         "id": "MBED_A17", "description": "SPI Slave",
201         "source_dir": join(TEST_DIR, "mbed", "spi_slave"),
202         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
203     },
204     {
205         "id": "MBED_A18", "description": "Interrupt vector relocation",
206         "source_dir": join(TEST_DIR, "mbed", "vtor_reloc"),
207         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
208         "mcu": ["LPC1768"],
209         "automated": True,
210     },
211     {
212         "id": "MBED_A19", "description": "I2C EEPROM read/write test",
213         "source_dir": join(TEST_DIR, "mbed", "i2c_eeprom"),
214         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
215         "peripherals": ["24LC256"],
216         "automated": True,
217         "duration": 15,
218     },
219     {
220         "id": "MBED_A20", "description": "I2C master/slave test",
221         "source_dir": join(TEST_DIR, "mbed", "i2c_master_slave"),
222         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
223         "mcu": ["LPC1768", "RZ_A1H"],
224         "peripherals": ["i2c_loop"]
225     },
226     {
227         "id": "MBED_A21", "description": "Call function before main (mbed_main)",
228         "source_dir": join(TEST_DIR, "mbed", "call_before_main"),
229         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
230         "automated": True,
231     },
232     {
233         "id": "MBED_A22", "description": "SPIFI for LPC4088 (test 1)",
234         "source_dir": join(TEST_DIR, "mbed", "spifi1"),
235         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
236         "automated": True,
237         "duration": 30,
238         "mcu": ["LPC4088","LPC4088_DM"]
239     },
240     {
241         "id": "MBED_A23", "description": "SPIFI for LPC4088 (test 2)",
242         "source_dir": join(TEST_DIR, "mbed", "spifi2"),
243         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
244         "automated": True,
245         "duration": 30,
246         "mcu": ["LPC4088","LPC4088_DM"]
247     },
248     {
249         "id": "MBED_A24", "description": "Serial echo with RTS/CTS flow control",
250         "source_dir": join(TEST_DIR, "mbed", "echo_flow_control"),
251         "dependencies": [MBED_LIBRARIES],
252         "automated": "True",
253         "host_test": "echo_flow_control",
254         "mcu": ["LPC1768"],
255         "peripherals": ["extra_serial"]
256     },
257     {
258         "id": "MBED_A25", "description": "I2C EEPROM line read/write test",
259         "source_dir": join(TEST_DIR, "mbed", "i2c_eeprom_line"),
260         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
261         "peripherals": ["24LC256"],
262         "automated": True,
263         "duration": 10,
264     },
265     {
266         "id": "MBED_A26", "description": "AnalogIn potentiometer test",
267         "source_dir": join(TEST_DIR, "mbed", "analog_pot"),
268         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
269         "peripherals": ["analog_pot"],
270         "automated": True,
271         "duration": 10,
272     },
273     {
274         "id": "MBED_BLINKY", "description": "Blinky",
275         "source_dir": join(TEST_DIR, "mbed", "blinky"),
276         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
277         "automated": False,
278     },
279     {
280         "id": "MBED_BUS", "description": "Blinky BUS",
281         "source_dir": join(TEST_DIR, "mbed", "bus"),
282         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
283         "automated": False,
284         "duration": 15,
285     },
286
287     {
288         "id": "MBED_BUSOUT", "description": "BusOut",
289         "source_dir": join(TEST_DIR, "mbed", "bus_out"),
290         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
291         "automated": True,
292         "duration": 15,
293     },
294
295     # Size benchmarks
296     {
297         "id": "BENCHMARK_1", "description": "Size (c environment)",
298         "source_dir": join(BENCHMARKS_DIR, "cenv"),
299         "dependencies": [MBED_LIBRARIES]
300     },
301     {
302         "id": "BENCHMARK_2", "description": "Size (float math)",
303         "source_dir": join(BENCHMARKS_DIR, "float_math"),
304         "dependencies": [MBED_LIBRARIES]
305     },
306     {
307         "id": "BENCHMARK_3", "description": "Size (printf)",
308         "source_dir": join(BENCHMARKS_DIR, "printf"),
309         "dependencies": [MBED_LIBRARIES]
310     },
311     {
312         "id": "BENCHMARK_4", "description": "Size (mbed libs)",
313         "source_dir": join(BENCHMARKS_DIR, "mbed"),
314         "dependencies": [MBED_LIBRARIES]
315     },
316     {
317         "id": "BENCHMARK_5", "description": "Size (all)",
318         "source_dir": join(BENCHMARKS_DIR, "all"),
319         "dependencies": [MBED_LIBRARIES]
320     },
321
322     # performance related tests
323     {
324         "id": "PERF_1", "description": "SD Stdio R/W Speed",
325         "source_dir": join(TEST_DIR, "mbed", "sd_perf_stdio"),
326         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
327         "automated": True,
328         "duration": 15,
329         "peripherals": ["SD"]
330     },
331     {
332         "id": "PERF_2", "description": "SD FileHandle R/W Speed",
333         "source_dir": join(TEST_DIR, "mbed", "sd_perf_fhandle"),
334         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
335         "automated": True,
336         "duration": 15,
337         "peripherals": ["SD"]
338     },
339     {
340         "id": "PERF_3", "description": "SD FatFS R/W Speed",
341         "source_dir": join(TEST_DIR, "mbed", "sd_perf_fatfs"),
342         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
343         "automated": True,
344         "duration": 15,
345         "peripherals": ["SD"]
346     },
347
348
349     # Not automated MBED tests
350     {
351         "id": "MBED_1", "description": "I2C SRF08",
352         "source_dir": join(TEST_DIR, "mbed", "i2c_SRF08"),
353         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'SRF08')],
354         "peripherals": ["SRF08"]
355     },
356     {
357         "id": "MBED_2", "description": "stdio",
358         "source_dir": join(TEST_DIR, "mbed", "stdio"),
359         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
360         "duration": 20,
361         "automated": True,
362         #"host_test": "stdio_auto"
363     },
364     {
365         "id": "MBED_3", "description": "PortOut",
366         "source_dir": join(TEST_DIR, "mbed", "portout"),
367         "dependencies": [MBED_LIBRARIES],
368     },
369     {
370         "id": "MBED_4", "description": "Sleep",
371         "source_dir": join(TEST_DIR, "mbed", "sleep"),
372         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
373         "duration": 30,
374         "mcu": ["LPC1768", "LPC11U24", "LPC4088","LPC4088_DM","NRF51822", "LPC11U68"]
375     },
376     {
377         "id": "MBED_5", "description": "PWM",
378         "source_dir": join(TEST_DIR, "mbed", "pwm"),
379         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
380     },
381     {
382         "id": "MBED_6", "description": "SW Reset",
383         "source_dir": join(TEST_DIR, "mbed", "reset"),
384         "dependencies": [MBED_LIBRARIES],
385         "duration": 15
386     },
387     {
388         "id": "MBED_7", "description": "stdio  benchmark",
389         "source_dir": join(TEST_DIR, "mbed", "stdio_benchmark"),
390         "dependencies": [MBED_LIBRARIES],
391         "duration": 40
392     },
393     {
394         "id": "MBED_8", "description": "SPI",
395         "source_dir": join(TEST_DIR, "mbed", "spi"),
396         "dependencies": [MBED_LIBRARIES],
397     },
398     {
399         "id": "MBED_9", "description": "Sleep Timeout",
400         "source_dir": join(TEST_DIR, "mbed", "sleep_timeout"),
401         "dependencies": [MBED_LIBRARIES],
402     },
403     {
404         "id": "MBED_10", "description": "Hello World",
405         "source_dir": join(TEST_DIR, "mbed", "hello"),
406         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
407         "automated": True,
408         #"host_test": "hello_auto",
409     },
410     {
411         "id": "MBED_11", "description": "Ticker Int",
412         "source_dir": join(TEST_DIR, "mbed", "ticker"),
413         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
414         "automated": True,
415         #"host_test": "wait_us_auto",
416         "duration": 20,
417     },
418     {
419         "id": "MBED_12", "description": "C++",
420         "source_dir": join(TEST_DIR, "mbed", "cpp"),
421         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
422         "automated": True
423     },
424     {
425         "id": "MBED_13", "description": "Heap & Stack",
426         "source_dir": join(TEST_DIR, "mbed", "heap_and_stack"),
427         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
428     },
429     {
430         "id": "MBED_14", "description": "Serial Interrupt",
431         "source_dir": join(TEST_DIR, "mbed", "serial_interrupt"),
432         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
433     },
434     {
435         "id": "MBED_15", "description": "RPC",
436         "source_dir": join(TEST_DIR, "mbed", "rpc"),
437         "dependencies": [MBED_LIBRARIES, join(LIB_DIR, "rpc"), TEST_MBED_LIB],
438         "automated": False,
439         "mcu": ["LPC1768"]
440     },
441     {
442         "id": "MBED_16", "description": "RTC",
443         "source_dir": join(TEST_DIR, "mbed", "rtc"),
444         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
445         "automated": True,
446         #"host_test": "rtc_auto",
447         "duration": 15
448     },
449     {
450         "id": "MBED_17", "description": "Serial Interrupt 2",
451         "source_dir": join(TEST_DIR, "mbed", "serial_interrupt_2"),
452         "dependencies": [MBED_LIBRARIES],
453     },
454     {
455         "id": "MBED_18", "description": "Local FS Directory",
456         "source_dir": join(TEST_DIR, "mbed", "dir"),
457         "dependencies": [MBED_LIBRARIES],
458     },
459     {
460         "id": "MBED_19", "description": "SD FS Directory",
461         "source_dir": join(TEST_DIR, "mbed", "dir_sd"),
462         "dependencies": [MBED_LIBRARIES, FS_LIBRARY],
463         "peripherals": ["SD"]
464     },
465     {
466         "id": "MBED_20", "description": "InterruptIn 2",
467         "source_dir": join(TEST_DIR, "mbed", "interruptin_2"),
468         "dependencies": [MBED_LIBRARIES],
469     },
470     {
471         "id": "MBED_21", "description": "freopen Stream",
472         "source_dir": join(TEST_DIR, "mbed", "freopen"),
473         "dependencies": [MBED_LIBRARIES],
474     },
475     {
476         "id": "MBED_22", "description": "Semihost",
477         "source_dir": join(TEST_DIR, "mbed", "semihost"),
478         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
479         "automated": True,
480         "mcu": ["LPC1768", "LPC2368", "LPC11U24"]
481     },
482     {
483         "id": "MBED_23", "description": "Ticker Int us",
484         "source_dir": join(TEST_DIR, "mbed", "ticker_2"),
485         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
486         "duration": 15,
487         "automated": True,
488         #"host_test": "wait_us_auto"
489     },
490     {
491         "id": "MBED_24", "description": "Timeout Int us",
492         "source_dir": join(TEST_DIR, "mbed", "timeout"),
493         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
494         "duration": 15,
495         "automated": True,
496         #"host_test": "wait_us_auto"
497     },
498     {
499         "id": "MBED_25", "description": "Time us",
500         "source_dir": join(TEST_DIR, "mbed", "time_us"),
501         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
502         "duration": 15,
503         "automated": True,
504         #"host_test": "wait_us_auto"
505     },
506     {
507         "id": "MBED_26", "description": "Integer constant division",
508         "source_dir": join(TEST_DIR, "mbed", "div"),
509         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
510         "automated": True,
511     },
512     {
513         "id": "MBED_27", "description": "SPI ADXL345",
514         "source_dir": join(TEST_DIR, "mbed", "spi_ADXL345"),
515         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'ADXL345')],
516         "peripherals": ["ADXL345"]
517     },
518     {
519         "id": "MBED_28", "description": "Interrupt chaining (InterruptManager)",
520         "source_dir": join(TEST_DIR, "mbed", "interrupt_chaining"),
521         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
522     },
523     {
524         "id": "MBED_29", "description": "CAN network test",
525         "source_dir": join(TEST_DIR, "mbed", "can"),
526         "dependencies": [MBED_LIBRARIES],
527         "mcu": ["LPC1768", "LPC4088", "LPC1549"]
528     },
529     {
530         "id": "MBED_30", "description": "CAN network test using interrupts",
531         "source_dir": join(TEST_DIR, "mbed", "can_interrupt"),
532         "dependencies": [MBED_LIBRARIES],
533         "mcu": ["LPC1768", "LPC4088", "LPC1549"]
534     },
535     {
536         "id": "MBED_31", "description": "PWM LED test",
537         "source_dir": join(TEST_DIR, "mbed", "pwm_led"),
538         "dependencies": [MBED_LIBRARIES],
539     },
540     {
541         "id": "MBED_32", "description": "Pin toggling",
542         "source_dir": join(TEST_DIR, "mbed", "pin_toggling"),
543         "dependencies": [MBED_LIBRARIES],
544     },
545     {
546         "id": "MBED_33", "description": "C string operations",
547         "source_dir": join(TEST_DIR, "mbed", "cstring"),
548         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
549         "duration": 10,
550         "automated": False,
551     },
552     {
553         "id": "MBED_34", "description": "Ticker Two callbacks",
554         "source_dir": join(TEST_DIR, "mbed", "ticker_3"),
555         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
556         "duration": 15,
557         "automated": True,
558         #"host_test": "wait_us_auto"
559     },
560
561
562     # CMSIS RTOS tests
563     {
564         "id": "CMSIS_RTOS_1", "description": "Basic",
565         "source_dir": join(TEST_DIR, "rtos", "cmsis", "basic"),
566         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
567     },
568     {
569         "id": "CMSIS_RTOS_2", "description": "Mutex",
570         "source_dir": join(TEST_DIR, "rtos", "cmsis", "mutex"),
571         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
572         "duration": 20
573     },
574     {
575         "id": "CMSIS_RTOS_3", "description": "Semaphore",
576         "source_dir": join(TEST_DIR, "rtos", "cmsis", "semaphore"),
577         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
578         "duration": 20
579     },
580     {
581         "id": "CMSIS_RTOS_4", "description": "Signals",
582         "source_dir": join(TEST_DIR, "rtos", "cmsis", "signals"),
583         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
584     },
585     {
586         "id": "CMSIS_RTOS_5", "description": "Queue",
587         "source_dir": join(TEST_DIR, "rtos", "cmsis", "queue"),
588         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
589         "duration": 20
590     },
591     {
592         "id": "CMSIS_RTOS_6", "description": "Mail",
593         "source_dir": join(TEST_DIR, "rtos", "cmsis", "mail"),
594         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
595         "duration": 20
596     },
597     {
598         "id": "CMSIS_RTOS_7", "description": "Timer",
599         "source_dir": join(TEST_DIR, "rtos", "cmsis", "timer"),
600         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
601     },
602     {
603         "id": "CMSIS_RTOS_8", "description": "ISR",
604         "source_dir": join(TEST_DIR, "rtos", "cmsis", "isr"),
605         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
606     },
607
608     # mbed RTOS tests
609     {
610         "id": "RTOS_1", "description": "Basic thread",
611         "source_dir": join(TEST_DIR, "rtos", "mbed", "basic"),
612         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
613         "duration": 15,
614         "automated": True,
615         #"host_test": "wait_us_auto",
616         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812",
617                 "KL25Z", "KL05Z", "K64F", "KL46Z",
618                 "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE",
619                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8",
620                 "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC",
621                 "DISCO_F401VC", "NUCLEO_F303RE", "MAXWSNENV", "MAX32600MBED"],
622     },
623     {
624         "id": "RTOS_2", "description": "Mutex resource lock",
625         "source_dir": join(TEST_DIR, "rtos", "mbed", "mutex"),
626         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
627         "duration": 20,
628         "automated": True,
629         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812",
630                 "KL25Z", "KL05Z", "K64F", "KL46Z",
631                 "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE",
632                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8",
633                 "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC",
634                 "DISCO_F401VC", "NUCLEO_F303RE", "MAXWSNENV", "MAX32600MBED"],
635     },
636     {
637         "id": "RTOS_3", "description": "Semaphore resource lock",
638         "source_dir": join(TEST_DIR, "rtos", "mbed", "semaphore"),
639         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
640         "duration": 20,
641         "automated": True,
642         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812",
643                 "KL25Z", "KL05Z", "K64F", "KL46Z",
644                 "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE",
645                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8",
646                 "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC",
647                 "DISCO_F401VC", "NUCLEO_F303RE", "MAXWSNENV", "MAX32600MBED"],
648     },
649     {
650         "id": "RTOS_4", "description": "Signals messaging",
651         "source_dir": join(TEST_DIR, "rtos", "mbed", "signals"),
652         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
653         "automated": True,
654         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812",
655                 "KL25Z", "KL05Z", "K64F", "KL46Z",
656                 "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE",
657                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8",
658                 "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC",
659                 "DISCO_F401VC", "NUCLEO_F303RE", "MAXWSNENV", "MAX32600MBED"],
660     },
661     {
662         "id": "RTOS_5", "description": "Queue messaging",
663         "source_dir": join(TEST_DIR, "rtos", "mbed", "queue"),
664         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
665         "automated": True,
666         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812",
667                 "KL25Z", "KL05Z", "K64F", "KL46Z",
668                 "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE",
669                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8",
670                 "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC",
671                 "DISCO_F401VC", "NUCLEO_F303RE", "MAXWSNENV", "MAX32600MBED"],
672     },
673     {
674         "id": "RTOS_6", "description": "Mail messaging",
675         "source_dir": join(TEST_DIR, "rtos", "mbed", "mail"),
676         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
677         "automated": True,
678         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812",
679                 "KL25Z", "KL05Z", "K64F", "KL46Z",
680                 "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE",
681                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8",
682                 "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC",
683                 "DISCO_F401VC", "NUCLEO_F303RE", "MAXWSNENV", "MAX32600MBED"],
684     },
685     {
686         "id": "RTOS_7", "description": "Timer",
687         "source_dir": join(TEST_DIR, "rtos", "mbed", "timer"),
688         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
689         "duration": 15,
690         "automated": True,
691         #"host_test": "wait_us_auto",
692         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812",
693                 "KL25Z", "KL05Z", "K64F", "KL46Z",
694                 "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE",
695                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8",
696                 "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC",
697                 "DISCO_F401VC", "NUCLEO_F303RE", "MAXWSNENV", "MAX32600MBED"],
698     },
699     {
700         "id": "RTOS_8", "description": "ISR (Queue)",
701         "source_dir": join(TEST_DIR, "rtos", "mbed", "isr"),
702         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
703         "automated": True,
704         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812",
705                 "KL25Z", "KL05Z", "K64F", "KL46Z",
706                 "RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE",
707                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8",
708                 "NUCLEO_L053R8", "DISCO_L053C8", "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC",
709                 "DISCO_F401VC", "NUCLEO_F303RE", "MAXWSNENV", "MAX32600MBED"],
710     },
711     {
712         "id": "RTOS_9", "description": "SD File write-read",
713         "source_dir": join(TEST_DIR, "rtos", "mbed", "file"),
714         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
715         "automated": True,
716         "peripherals": ["SD"],
717         "mcu": ["LPC1768", "LPC11U24", "LPC812", "KL25Z",
718                 "KL05Z", "K64F", "KL46Z", "RZ_A1H",
719                 "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "NUCLEO_F401RE"],
720     },
721
722     # Networking Tests
723     {
724         "id": "NET_1", "description": "TCP client hello world",
725         "source_dir": join(TEST_DIR, "net", "helloworld", "tcpclient"),
726         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
727         "duration": 15,
728         "automated": True,
729         "peripherals": ["ethernet"],
730     },
731     {
732         "id": "NET_2", "description": "NIST Internet Time Service",
733         "source_dir": join(TEST_DIR, "net", "helloworld", "udpclient"),
734         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
735         "duration": 15,
736         "automated": True,
737         "peripherals": ["ethernet"],
738     },
739     {
740         "id": "NET_3", "description": "TCP echo server",
741         "source_dir": join(TEST_DIR, "net", "echo", "tcp_server"),
742         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
743         "automated": True,
744         #"host_test" : "tcpecho_server_auto",
745         "peripherals": ["ethernet"],
746     },
747     {
748         "id": "NET_4", "description": "TCP echo client",
749         "source_dir": join(TEST_DIR, "net", "echo", "tcp_client"),
750         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
751         "automated": True,
752         #"host_test": "tcpecho_client_auto",
753         "peripherals": ["ethernet"]
754     },
755     {
756         "id": "NET_5", "description": "UDP echo server",
757         "source_dir": join(TEST_DIR, "net", "echo", "udp_server"),
758         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
759         "automated": True,
760         #"host_test" : "udpecho_server_auto",
761         "peripherals": ["ethernet"]
762     },
763     {
764         "id": "NET_6", "description": "UDP echo client",
765         "source_dir": join(TEST_DIR, "net", "echo", "udp_client"),
766         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
767         "automated": True,
768         #"host_test" : "udpecho_client_auto",
769         "peripherals": ["ethernet"],
770     },
771     {
772         "id": "NET_7", "description": "HTTP client hello world",
773         "source_dir": join(TEST_DIR, "net", "protocols", "HTTPClient_HelloWorld"),
774         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
775         "automated": True,
776         "duration": 15,
777         "peripherals": ["ethernet"],
778     },
779     {
780         "id": "NET_8", "description": "NTP client",
781         "source_dir": join(TEST_DIR, "net", "protocols", "NTPClient_HelloWorld"),
782         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
783         "automated": True,
784         "peripherals": ["ethernet"],
785     },
786     {
787         "id": "NET_9", "description": "Multicast Send",
788         "source_dir": join(TEST_DIR, "net", "helloworld", "multicast_send"),
789         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
790         "peripherals": ["ethernet"],
791     },
792     {
793         "id": "NET_10", "description": "Multicast Receive",
794         "source_dir": join(TEST_DIR, "net", "helloworld", "multicast_receive"),
795         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
796         "peripherals": ["ethernet"],
797     },
798     {
799         "id": "NET_11", "description": "Broadcast Send",
800         "source_dir": join(TEST_DIR, "net", "helloworld", "broadcast_send"),
801         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
802         "peripherals": ["ethernet"],
803     },
804     {
805         "id": "NET_12", "description": "Broadcast Receive",
806         "source_dir": join(TEST_DIR, "net", "helloworld", "broadcast_receive"),
807         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
808         "peripherals": ["ethernet"],
809     },
810     {
811         "id": "NET_13", "description": "TCP client echo loop",
812         "source_dir": join(TEST_DIR, "net", "echo", "tcp_client_loop"),
813         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
814         "automated": True,
815         "duration": 15,
816         #"host_test": "tcpecho_client_auto",
817         "peripherals": ["ethernet"],
818     },
819     {
820         "id": "NET_14", "description": "UDP PHY/Data link layer",
821         "source_dir": join(TEST_DIR, "net", "echo", "udp_link_layer"),
822         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
823         "automated": False,
824         "duration": 20,
825         "host_test": "udp_link_layer_auto",
826         "peripherals": ["ethernet"],
827     },
828
829     # u-blox tests
830     {
831         "id": "UB_1", "description": "u-blox USB modem: HTTP client",
832         "source_dir": [join(TEST_DIR, "net", "cellular", "http", "ubloxusb"), join(TEST_DIR, "net", "cellular", "http", "common")],
833         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, USB_HOST_LIBRARIES, UBLOX_LIBRARY],
834         "supported": CORTEX_ARM_SUPPORT,
835     },
836     {
837         "id": "UB_2", "description": "u-blox USB modem: SMS test",
838         "source_dir": [join(TEST_DIR, "net", "cellular", "sms", "ubloxusb"), join(TEST_DIR, "net", "cellular", "sms", "common")],
839         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, USB_HOST_LIBRARIES, UBLOX_LIBRARY],
840         "supported": CORTEX_ARM_SUPPORT,
841     },
842
843     # USB Tests
844     {
845         "id": "USB_1", "description": "Mouse",
846         "source_dir": join(TEST_DIR, "usb", "device", "basic"),
847         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
848     },
849     {
850         "id": "USB_2", "description": "Keyboard",
851         "source_dir": join(TEST_DIR, "usb", "device", "keyboard"),
852         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
853     },
854     {
855         "id": "USB_3", "description": "Mouse_Keyboard",
856         "source_dir": join(TEST_DIR, "usb", "device", "keyboard"),
857         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
858     },
859     {
860         "id": "USB_4", "description": "Serial Port",
861         "source_dir": join(TEST_DIR, "usb", "device", "serial"),
862         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
863         "supported": CORTEX_ARM_SUPPORT,
864     },
865     {
866         "id": "USB_5", "description": "Generic HID",
867         "source_dir": join(TEST_DIR, "usb", "device", "raw_hid"),
868         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
869     },
870     {
871         "id": "USB_6", "description": "MIDI",
872         "source_dir": join(TEST_DIR, "usb", "device", "midi"),
873         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
874     },
875     {
876         "id": "USB_7", "description": "AUDIO",
877         "source_dir": join(TEST_DIR, "usb", "device", "audio"),
878         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
879     },
880
881     # CMSIS DSP
882     {
883         "id": "CMSIS_DSP_1", "description": "FIR",
884         "source_dir": join(TEST_DIR, "dsp", "cmsis", "fir_f32"),
885         "dependencies": [MBED_LIBRARIES, DSP_LIBRARIES],
886     },
887
888     # mbed DSP
889     {
890         "id": "DSP_1", "description": "FIR",
891         "source_dir": join(TEST_DIR, "dsp", "mbed", "fir_f32"),
892         "dependencies": [MBED_LIBRARIES, DSP_LIBRARIES],
893     },
894
895     # KL25Z
896     {
897         "id": "KL25Z_1", "description": "LPTMR",
898         "source_dir": join(TEST_DIR, "KL25Z", "lptmr"),
899         "dependencies": [MBED_LIBRARIES],
900         "supported": CORTEX_ARM_SUPPORT,
901         "mcu": ["KL25Z"],
902     },
903     {
904         "id": "KL25Z_2", "description": "PIT",
905         "source_dir": join(TEST_DIR, "KL25Z", "pit"),
906         "dependencies": [MBED_LIBRARIES],
907         "supported": CORTEX_ARM_SUPPORT,
908         "mcu": ["KL25Z"],
909     },
910     {
911         "id": "KL25Z_3", "description": "TSI Touch Sensor",
912         "source_dir": join(TEST_DIR, "mbed", "tsi"),
913         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'TSI')],
914         "mcu": ["KL25Z"],
915     },
916     {
917         "id": "KL25Z_4", "description": "RTC",
918         "source_dir": join(TEST_DIR, "KL25Z", "rtc"),
919         "dependencies": [MBED_LIBRARIES],
920         "mcu": ["KL25Z"],
921     },
922     {
923         "id": "KL25Z_5", "description": "MMA8451Q accelerometer",
924         "source_dir": join(TEST_DIR, "mbed", "i2c_MMA8451Q"),
925         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'MMA8451Q')],
926         "mcu": ["KL25Z", "KL05Z", "KL46Z", "K20D50M"],
927         "automated": True,
928         "duration": 15,
929         },
930
931     # Examples
932     {
933         "id": "EXAMPLE_1", "description": "/dev/null",
934         "source_dir": join(TEST_DIR, "mbed", "dev_null"),
935         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
936         "automated": True,
937         #"host_test" : "dev_null_auto",
938     },
939     {
940         "id": "EXAMPLE_2", "description": "FS + RTOS",
941         "source_dir": join(TEST_DIR, "mbed", "fs"),
942         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB, FS_LIBRARY],
943     },
944
945     # CPPUTEST Library provides Unit testing Framework
946     #
947     # To write TESTs and TEST_GROUPs please add CPPUTEST_LIBRARY to 'dependencies'
948     #
949     # This will also include:
950     # 1. test runner - main function with call to CommandLineTestRunner::RunAllTests(ac, av)
951     # 2. Serial console object to print test result on serial port console
952     #
953
954     # Unit testing with cpputest library
955     {
956         "id": "UT_1", "description": "Basic",
957         "source_dir": join(TEST_DIR, "utest", "basic"),
958         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
959         "automated": False,
960     },
961     {
962         "id": "UT_2", "description": "Semihost file system",
963         "source_dir": join(TEST_DIR, "utest", "semihost_fs"),
964         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
965         "automated": False,
966         "mcu": ["LPC1768", "LPC2368", "LPC11U24"]
967     },
968     {
969         "id": "UT_3", "description": "General tests",
970         "source_dir": join(TEST_DIR, "utest", "general"),
971         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
972         "automated": False,
973     },
974     {
975         "id": "UT_BUSIO", "description": "BusIn BusOut",
976         "source_dir": join(TEST_DIR, "utest", "bus"),
977         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
978         "automated": False,
979     },
980
981     # Tests used for target information purposes
982     {
983         "id": "DTCT_1", "description": "Simple detect test",
984         "source_dir": join(TEST_DIR, "mbed", "detect"),
985         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
986         "automated": True,
987         #"host_test" : "detect_auto",
988     },
989 ]
990
991 # Group tests with the same goals into categories
992 GROUPS = {
993     "core": ["MBED_A1", "MBED_A2", "MBED_A3", "MBED_A18"],
994     "digital_io": ["MBED_A5", "MBED_A6", "MBED_A7", "MBED_A10", "MBED_A11"],
995     "analog_io": ["MBED_A8"],
996     "i2c": ["MBED_A19", "MBED_A20"],
997     "spi": ["MBED_A12"],
998 }
999 GROUPS["rtos"] = [test["id"] for test in TESTS if test["id"].startswith("RTOS_")]
1000 GROUPS["net"] = [test["id"] for test in TESTS if test["id"].startswith("NET_")]
1001 GROUPS["automated"] = [test["id"] for test in TESTS if test.get("automated", False)]
1002 # Look for 'TEST_GROUPS' in private_settings.py and update the GROUPS dictionary
1003 # with the information in test_groups if found
1004 try:
1005     from workspace_tools.private_settings import TEST_GROUPS
1006 except:
1007     TEST_GROUPS = {}
1008 GROUPS.update(TEST_GROUPS)
1009
1010 class Test:
1011     DEFAULTS = {
1012         #'mcu': None,
1013         'description': None,
1014         'dependencies': None,
1015         'duration': 10,
1016         'host_test': 'host_test',
1017         'automated': False,
1018         'peripherals': None,
1019         #'supported': None,
1020         'source_dir': None,
1021         'extra_files': None
1022     }
1023     def __init__(self, n):
1024         self.n = n
1025         self.__dict__.update(Test.DEFAULTS)
1026         self.__dict__.update(TESTS[n])
1027
1028     def is_supported(self, target, toolchain):
1029         if hasattr(self, 'mcu') and not target in self.mcu:
1030             return False
1031         if not hasattr(self, 'supported'):
1032             return True
1033         return (target in self.supported) and (toolchain in self.supported[target])
1034
1035     def get_description(self):
1036         if self.description:
1037             return self.description
1038         else:
1039             return self.id
1040
1041     def __cmp__(self, other):
1042         return cmp(self.n, other.n)
1043
1044     def __str__(self):
1045         return "[%3d] %s: %s" % (self.n, self.id, self.get_description())
1046
1047     def __getitem__(self, key):
1048         if key == "id": return self.id
1049         elif key == "mcu": return self.mcu
1050         elif key == "dependencies": return self.dependencies
1051         elif key == "description": return self.description
1052         elif key == "duration": return self.duration
1053         elif key == "host_test": return self.host_test
1054         elif key == "automated": return self.automated
1055         elif key == "peripherals": return self.peripherals
1056         elif key == "supported": return self.supported
1057         elif key == "source_dir": return self.source_dir
1058         elif key == "extra_files": return self.extra_files
1059         else:
1060             return None
1061
1062 TEST_MAP = dict([(test['id'], Test(i)) for i, test in enumerate(TESTS)])