13 #include "sw/device/lib/dif/autogen/dif_adc_ctrl_autogen.h"
14 #include "sw/device/lib/dif/autogen/dif_aes_autogen.h"
15 #include "sw/device/lib/dif/autogen/dif_alert_handler_autogen.h"
16 #include "sw/device/lib/dif/autogen/dif_aon_timer_autogen.h"
17 #include "sw/device/lib/dif/autogen/dif_clkmgr_autogen.h"
18 #include "sw/device/lib/dif/autogen/dif_csrng_autogen.h"
19 #include "sw/device/lib/dif/autogen/dif_edn_autogen.h"
20 #include "sw/device/lib/dif/autogen/dif_entropy_src_autogen.h"
21 #include "sw/device/lib/dif/autogen/dif_flash_ctrl_autogen.h"
22 #include "sw/device/lib/dif/autogen/dif_gpio_autogen.h"
23 #include "sw/device/lib/dif/autogen/dif_hmac_autogen.h"
24 #include "sw/device/lib/dif/autogen/dif_i2c_autogen.h"
25 #include "sw/device/lib/dif/autogen/dif_keymgr_autogen.h"
26 #include "sw/device/lib/dif/autogen/dif_kmac_autogen.h"
27 #include "sw/device/lib/dif/autogen/dif_lc_ctrl_autogen.h"
28 #include "sw/device/lib/dif/autogen/dif_otbn_autogen.h"
29 #include "sw/device/lib/dif/autogen/dif_otp_ctrl_autogen.h"
30 #include "sw/device/lib/dif/autogen/dif_pattgen_autogen.h"
31 #include "sw/device/lib/dif/autogen/dif_pinmux_autogen.h"
32 #include "sw/device/lib/dif/autogen/dif_pwm_autogen.h"
33 #include "sw/device/lib/dif/autogen/dif_pwrmgr_autogen.h"
34 #include "sw/device/lib/dif/autogen/dif_rom_ctrl_autogen.h"
35 #include "sw/device/lib/dif/autogen/dif_rstmgr_autogen.h"
36 #include "sw/device/lib/dif/autogen/dif_rv_core_ibex_autogen.h"
37 #include "sw/device/lib/dif/autogen/dif_rv_plic_autogen.h"
38 #include "sw/device/lib/dif/autogen/dif_rv_timer_autogen.h"
39 #include "sw/device/lib/dif/autogen/dif_sensor_ctrl_autogen.h"
40 #include "sw/device/lib/dif/autogen/dif_spi_device_autogen.h"
41 #include "sw/device/lib/dif/autogen/dif_spi_host_autogen.h"
42 #include "sw/device/lib/dif/autogen/dif_sram_ctrl_autogen.h"
43 #include "sw/device/lib/dif/autogen/dif_sysrst_ctrl_autogen.h"
44 #include "sw/device/lib/dif/autogen/dif_uart_autogen.h"
45 #include "sw/device/lib/dif/autogen/dif_usbdev_autogen.h"
46 #include "sw/device/lib/testing/alert_handler_testutils.h"
47 #include "sw/device/lib/testing/test_framework/FreeRTOSConfig.h"
48 #include "sw/device/lib/testing/test_framework/check.h"
49 #include "sw/device/lib/testing/test_framework/ottf_test_config.h"
51 #include "alert_handler_regs.h"
54 OTTF_DEFINE_TEST_CONFIG();
56 static dif_alert_handler_t alert_handler;
57 static dif_adc_ctrl_t adc_ctrl_aon;
59 static dif_aon_timer_t aon_timer_aon;
60 static dif_clkmgr_t clkmgr_aon;
61 static dif_csrng_t csrng;
62 static dif_edn_t edn0;
63 static dif_edn_t edn1;
64 static dif_entropy_src_t entropy_src;
65 static dif_flash_ctrl_t flash_ctrl;
66 static dif_gpio_t gpio;
67 static dif_hmac_t hmac;
68 static dif_i2c_t i2c0;
69 static dif_i2c_t i2c1;
70 static dif_i2c_t i2c2;
71 static dif_keymgr_t keymgr;
72 static dif_kmac_t kmac;
73 static dif_lc_ctrl_t lc_ctrl;
74 static dif_otbn_t otbn;
75 static dif_otp_ctrl_t otp_ctrl;
76 static dif_pattgen_t pattgen;
77 static dif_pinmux_t pinmux_aon;
78 static dif_pwm_t pwm_aon;
79 static dif_pwrmgr_t pwrmgr_aon;
80 static dif_rom_ctrl_t rom_ctrl;
81 static dif_rstmgr_t rstmgr_aon;
82 static dif_rv_core_ibex_t rv_core_ibex;
83 static dif_rv_plic_t rv_plic;
84 static dif_rv_timer_t rv_timer;
85 static dif_sensor_ctrl_t sensor_ctrl_aon;
86 static dif_spi_device_t spi_device;
87 static dif_spi_host_t spi_host0;
88 static dif_spi_host_t spi_host1;
89 static dif_sram_ctrl_t sram_ctrl_main;
90 static dif_sram_ctrl_t sram_ctrl_ret_aon;
91 static dif_sysrst_ctrl_t sysrst_ctrl_aon;
92 static dif_uart_t uart0;
93 static dif_uart_t uart1;
94 static dif_uart_t uart2;
95 static dif_uart_t uart3;
96 static dif_usbdev_t usbdev;
101 static void init_peripherals(
void) {
104 CHECK_DIF_OK(dif_alert_handler_init(base_addr, &alert_handler));
107 CHECK_DIF_OK(dif_adc_ctrl_init(base_addr, &adc_ctrl_aon));
110 CHECK_DIF_OK(dif_aes_init(base_addr, &aes));
113 CHECK_DIF_OK(dif_aon_timer_init(base_addr, &aon_timer_aon));
116 CHECK_DIF_OK(dif_clkmgr_init(base_addr, &clkmgr_aon));
119 CHECK_DIF_OK(dif_csrng_init(base_addr, &csrng));
122 CHECK_DIF_OK(dif_edn_init(base_addr, &edn0));
125 CHECK_DIF_OK(dif_edn_init(base_addr, &edn1));
128 CHECK_DIF_OK(dif_entropy_src_init(base_addr, &entropy_src));
131 CHECK_DIF_OK(dif_flash_ctrl_init(base_addr, &flash_ctrl));
134 CHECK_DIF_OK(dif_gpio_init(base_addr, &gpio));
137 CHECK_DIF_OK(dif_hmac_init(base_addr, &hmac));
140 CHECK_DIF_OK(dif_i2c_init(base_addr, &i2c0));
143 CHECK_DIF_OK(dif_i2c_init(base_addr, &i2c1));
146 CHECK_DIF_OK(dif_i2c_init(base_addr, &i2c2));
149 CHECK_DIF_OK(dif_keymgr_init(base_addr, &keymgr));
152 CHECK_DIF_OK(dif_kmac_init(base_addr, &kmac));
155 CHECK_DIF_OK(dif_lc_ctrl_init(base_addr, &lc_ctrl));
158 CHECK_DIF_OK(dif_otbn_init(base_addr, &otbn));
161 CHECK_DIF_OK(dif_otp_ctrl_init(base_addr, &otp_ctrl));
164 CHECK_DIF_OK(dif_pattgen_init(base_addr, &pattgen));
167 CHECK_DIF_OK(dif_pinmux_init(base_addr, &pinmux_aon));
170 CHECK_DIF_OK(dif_pwm_init(base_addr, &pwm_aon));
173 CHECK_DIF_OK(dif_pwrmgr_init(base_addr, &pwrmgr_aon));
176 CHECK_DIF_OK(dif_rom_ctrl_init(base_addr, &rom_ctrl));
179 CHECK_DIF_OK(dif_rstmgr_init(base_addr, &rstmgr_aon));
182 CHECK_DIF_OK(dif_rv_core_ibex_init(base_addr, &rv_core_ibex));
185 CHECK_DIF_OK(dif_rv_plic_init(base_addr, &rv_plic));
188 CHECK_DIF_OK(dif_rv_timer_init(base_addr, &rv_timer));
191 CHECK_DIF_OK(dif_sensor_ctrl_init(base_addr, &sensor_ctrl_aon));
194 CHECK_DIF_OK(dif_spi_device_init(base_addr, &spi_device));
197 CHECK_DIF_OK(dif_spi_host_init(base_addr, &spi_host0));
200 CHECK_DIF_OK(dif_spi_host_init(base_addr, &spi_host1));
203 CHECK_DIF_OK(dif_sram_ctrl_init(base_addr, &sram_ctrl_main));
206 CHECK_DIF_OK(dif_sram_ctrl_init(base_addr, &sram_ctrl_ret_aon));
209 CHECK_DIF_OK(dif_sysrst_ctrl_init(base_addr, &sysrst_ctrl_aon));
212 CHECK_DIF_OK(dif_uart_init(base_addr, &uart0));
215 CHECK_DIF_OK(dif_uart_init(base_addr, &uart1));
218 CHECK_DIF_OK(dif_uart_init(base_addr, &uart2));
221 CHECK_DIF_OK(dif_uart_init(base_addr, &uart3));
224 CHECK_DIF_OK(dif_usbdev_init(base_addr, &usbdev));
233 static void alert_handler_config(
void) {
241 alert_classes[i] = kDifAlertHandlerClassA;
247 .duration_cycles = 2000}};
251 .accumulator_threshold = 0,
252 .irq_deadline_cycles = 10000,
253 .escalation_phases = esc_phases,
254 .escalation_phases_len =
ARRAYSIZE(esc_phases),
262 kDifAlertHandlerClassB};
265 .alert_classes = alert_classes,
268 .class_configs = class_configs,
270 .ping_timeout = 1000,
273 CHECK_STATUS_OK(alert_handler_testutils_configure_all(&alert_handler, config,
280 static void trigger_alert_test(
void) {
285 for (dif_adc_ctrl_alert_t i = 0; i < 1; ++i) {
286 CHECK_DIF_OK(dif_adc_ctrl_alert_force(&adc_ctrl_aon, kDifAdcCtrlAlertFatalFault + i));
291 &alert_handler, exp_alert, &is_cause));
292 CHECK(is_cause,
"Expect alert %d!", exp_alert);
296 &alert_handler, exp_alert));
300 for (dif_aes_alert_t i = 0; i < 2; ++i) {
301 CHECK_DIF_OK(dif_aes_alert_force(&aes, kDifAesAlertRecovCtrlUpdateErr + i));
306 &alert_handler, exp_alert, &is_cause));
307 CHECK(is_cause,
"Expect alert %d!", exp_alert);
311 &alert_handler, exp_alert));
315 for (dif_aon_timer_alert_t i = 0; i < 1; ++i) {
316 CHECK_DIF_OK(dif_aon_timer_alert_force(&aon_timer_aon, kDifAonTimerAlertFatalFault + i));
321 &alert_handler, exp_alert, &is_cause));
322 CHECK(is_cause,
"Expect alert %d!", exp_alert);
326 &alert_handler, exp_alert));
330 for (dif_clkmgr_alert_t i = 0; i < 2; ++i) {
331 CHECK_DIF_OK(dif_clkmgr_alert_force(&clkmgr_aon, kDifClkmgrAlertRecovFault + i));
336 &alert_handler, exp_alert, &is_cause));
337 CHECK(is_cause,
"Expect alert %d!", exp_alert);
341 &alert_handler, exp_alert));
345 for (dif_csrng_alert_t i = 0; i < 2; ++i) {
346 CHECK_DIF_OK(dif_csrng_alert_force(&csrng, kDifCsrngAlertRecovAlert + i));
351 &alert_handler, exp_alert, &is_cause));
352 CHECK(is_cause,
"Expect alert %d!", exp_alert);
356 &alert_handler, exp_alert));
360 for (dif_edn_alert_t i = 0; i < 2; ++i) {
361 CHECK_DIF_OK(dif_edn_alert_force(&edn0, kDifEdnAlertRecovAlert + i));
366 &alert_handler, exp_alert, &is_cause));
367 CHECK(is_cause,
"Expect alert %d!", exp_alert);
371 &alert_handler, exp_alert));
375 for (dif_edn_alert_t i = 0; i < 2; ++i) {
376 CHECK_DIF_OK(dif_edn_alert_force(&edn1, kDifEdnAlertRecovAlert + i));
381 &alert_handler, exp_alert, &is_cause));
382 CHECK(is_cause,
"Expect alert %d!", exp_alert);
386 &alert_handler, exp_alert));
390 for (dif_entropy_src_alert_t i = 0; i < 2; ++i) {
391 CHECK_DIF_OK(dif_entropy_src_alert_force(&entropy_src, kDifEntropySrcAlertRecovAlert + i));
396 &alert_handler, exp_alert, &is_cause));
397 CHECK(is_cause,
"Expect alert %d!", exp_alert);
401 &alert_handler, exp_alert));
405 for (dif_flash_ctrl_alert_t i = 0; i < 5; ++i) {
406 CHECK_DIF_OK(dif_flash_ctrl_alert_force(&flash_ctrl, kDifFlashCtrlAlertRecovErr + i));
411 &alert_handler, exp_alert, &is_cause));
412 CHECK(is_cause,
"Expect alert %d!", exp_alert);
416 &alert_handler, exp_alert));
420 for (dif_gpio_alert_t i = 0; i < 1; ++i) {
421 CHECK_DIF_OK(dif_gpio_alert_force(&gpio, kDifGpioAlertFatalFault + i));
426 &alert_handler, exp_alert, &is_cause));
427 CHECK(is_cause,
"Expect alert %d!", exp_alert);
431 &alert_handler, exp_alert));
435 for (dif_hmac_alert_t i = 0; i < 1; ++i) {
436 CHECK_DIF_OK(dif_hmac_alert_force(&hmac, kDifHmacAlertFatalFault + i));
441 &alert_handler, exp_alert, &is_cause));
442 CHECK(is_cause,
"Expect alert %d!", exp_alert);
446 &alert_handler, exp_alert));
450 for (dif_i2c_alert_t i = 0; i < 1; ++i) {
451 CHECK_DIF_OK(dif_i2c_alert_force(&i2c0, kDifI2cAlertFatalFault + i));
456 &alert_handler, exp_alert, &is_cause));
457 CHECK(is_cause,
"Expect alert %d!", exp_alert);
461 &alert_handler, exp_alert));
465 for (dif_i2c_alert_t i = 0; i < 1; ++i) {
466 CHECK_DIF_OK(dif_i2c_alert_force(&i2c1, kDifI2cAlertFatalFault + i));
471 &alert_handler, exp_alert, &is_cause));
472 CHECK(is_cause,
"Expect alert %d!", exp_alert);
476 &alert_handler, exp_alert));
480 for (dif_i2c_alert_t i = 0; i < 1; ++i) {
481 CHECK_DIF_OK(dif_i2c_alert_force(&i2c2, kDifI2cAlertFatalFault + i));
486 &alert_handler, exp_alert, &is_cause));
487 CHECK(is_cause,
"Expect alert %d!", exp_alert);
491 &alert_handler, exp_alert));
495 for (dif_keymgr_alert_t i = 0; i < 2; ++i) {
496 CHECK_DIF_OK(dif_keymgr_alert_force(&keymgr, kDifKeymgrAlertRecovOperationErr + i));
501 &alert_handler, exp_alert, &is_cause));
502 CHECK(is_cause,
"Expect alert %d!", exp_alert);
506 &alert_handler, exp_alert));
510 for (dif_kmac_alert_t i = 0; i < 2; ++i) {
511 CHECK_DIF_OK(dif_kmac_alert_force(&kmac, kDifKmacAlertRecovOperationErr + i));
516 &alert_handler, exp_alert, &is_cause));
517 CHECK(is_cause,
"Expect alert %d!", exp_alert);
521 &alert_handler, exp_alert));
525 for (dif_lc_ctrl_alert_t i = 0; i < 3; ++i) {
526 CHECK_DIF_OK(dif_lc_ctrl_alert_force(&lc_ctrl, kDifLcCtrlAlertFatalProgError + i));
531 &alert_handler, exp_alert, &is_cause));
532 CHECK(is_cause,
"Expect alert %d!", exp_alert);
536 &alert_handler, exp_alert));
540 for (dif_otbn_alert_t i = 0; i < 2; ++i) {
541 CHECK_DIF_OK(dif_otbn_alert_force(&otbn, kDifOtbnAlertFatal + i));
546 &alert_handler, exp_alert, &is_cause));
547 CHECK(is_cause,
"Expect alert %d!", exp_alert);
551 &alert_handler, exp_alert));
557 for (dif_otp_ctrl_alert_t i = 0; i < 5; ++i) {
558 CHECK_DIF_OK(dif_otp_ctrl_alert_force(&otp_ctrl, kDifOtpCtrlAlertFatalMacroError + i));
563 &alert_handler, exp_alert, &is_cause));
564 CHECK(is_cause,
"Expect alert %d!", exp_alert);
568 &alert_handler, exp_alert));
573 for (dif_pattgen_alert_t i = 0; i < 1; ++i) {
574 CHECK_DIF_OK(dif_pattgen_alert_force(&pattgen, kDifPattgenAlertFatalFault + i));
579 &alert_handler, exp_alert, &is_cause));
580 CHECK(is_cause,
"Expect alert %d!", exp_alert);
584 &alert_handler, exp_alert));
588 for (dif_pinmux_alert_t i = 0; i < 1; ++i) {
589 CHECK_DIF_OK(dif_pinmux_alert_force(&pinmux_aon, kDifPinmuxAlertFatalFault + i));
594 &alert_handler, exp_alert, &is_cause));
595 CHECK(is_cause,
"Expect alert %d!", exp_alert);
599 &alert_handler, exp_alert));
603 for (dif_pwm_alert_t i = 0; i < 1; ++i) {
604 CHECK_DIF_OK(dif_pwm_alert_force(&pwm_aon, kDifPwmAlertFatalFault + i));
609 &alert_handler, exp_alert, &is_cause));
610 CHECK(is_cause,
"Expect alert %d!", exp_alert);
614 &alert_handler, exp_alert));
618 for (dif_pwrmgr_alert_t i = 0; i < 1; ++i) {
619 CHECK_DIF_OK(dif_pwrmgr_alert_force(&pwrmgr_aon, kDifPwrmgrAlertFatalFault + i));
624 &alert_handler, exp_alert, &is_cause));
625 CHECK(is_cause,
"Expect alert %d!", exp_alert);
629 &alert_handler, exp_alert));
633 for (dif_rom_ctrl_alert_t i = 0; i < 1; ++i) {
634 CHECK_DIF_OK(dif_rom_ctrl_alert_force(&rom_ctrl, kDifRomCtrlAlertFatal + i));
639 &alert_handler, exp_alert, &is_cause));
640 CHECK(is_cause,
"Expect alert %d!", exp_alert);
644 &alert_handler, exp_alert));
648 for (dif_rstmgr_alert_t i = 0; i < 2; ++i) {
649 CHECK_DIF_OK(dif_rstmgr_alert_force(&rstmgr_aon, kDifRstmgrAlertFatalFault + i));
654 &alert_handler, exp_alert, &is_cause));
655 CHECK(is_cause,
"Expect alert %d!", exp_alert);
659 &alert_handler, exp_alert));
663 for (dif_rv_core_ibex_alert_t i = 0; i < 4; ++i) {
664 CHECK_DIF_OK(dif_rv_core_ibex_alert_force(&rv_core_ibex, kDifRvCoreIbexAlertFatalSwErr + i));
669 &alert_handler, exp_alert, &is_cause));
670 CHECK(is_cause,
"Expect alert %d!", exp_alert);
674 &alert_handler, exp_alert));
678 for (dif_rv_plic_alert_t i = 0; i < 1; ++i) {
679 CHECK_DIF_OK(dif_rv_plic_alert_force(&rv_plic, kDifRvPlicAlertFatalFault + i));
684 &alert_handler, exp_alert, &is_cause));
685 CHECK(is_cause,
"Expect alert %d!", exp_alert);
689 &alert_handler, exp_alert));
693 for (dif_rv_timer_alert_t i = 0; i < 1; ++i) {
694 CHECK_DIF_OK(dif_rv_timer_alert_force(&rv_timer, kDifRvTimerAlertFatalFault + i));
699 &alert_handler, exp_alert, &is_cause));
700 CHECK(is_cause,
"Expect alert %d!", exp_alert);
704 &alert_handler, exp_alert));
708 for (dif_sensor_ctrl_alert_t i = 0; i < 2; ++i) {
709 CHECK_DIF_OK(dif_sensor_ctrl_alert_force(&sensor_ctrl_aon, kDifSensorCtrlAlertRecovAlert + i));
714 &alert_handler, exp_alert, &is_cause));
715 CHECK(is_cause,
"Expect alert %d!", exp_alert);
719 &alert_handler, exp_alert));
723 for (dif_spi_device_alert_t i = 0; i < 1; ++i) {
724 CHECK_DIF_OK(dif_spi_device_alert_force(&spi_device, kDifSpiDeviceAlertFatalFault + i));
729 &alert_handler, exp_alert, &is_cause));
730 CHECK(is_cause,
"Expect alert %d!", exp_alert);
734 &alert_handler, exp_alert));
738 for (dif_spi_host_alert_t i = 0; i < 1; ++i) {
739 CHECK_DIF_OK(dif_spi_host_alert_force(&spi_host0, kDifSpiHostAlertFatalFault + i));
744 &alert_handler, exp_alert, &is_cause));
745 CHECK(is_cause,
"Expect alert %d!", exp_alert);
749 &alert_handler, exp_alert));
753 for (dif_spi_host_alert_t i = 0; i < 1; ++i) {
754 CHECK_DIF_OK(dif_spi_host_alert_force(&spi_host1, kDifSpiHostAlertFatalFault + i));
759 &alert_handler, exp_alert, &is_cause));
760 CHECK(is_cause,
"Expect alert %d!", exp_alert);
764 &alert_handler, exp_alert));
768 for (dif_sram_ctrl_alert_t i = 0; i < 1; ++i) {
769 CHECK_DIF_OK(dif_sram_ctrl_alert_force(&sram_ctrl_main, kDifSramCtrlAlertFatalError + i));
774 &alert_handler, exp_alert, &is_cause));
775 CHECK(is_cause,
"Expect alert %d!", exp_alert);
779 &alert_handler, exp_alert));
783 for (dif_sram_ctrl_alert_t i = 0; i < 1; ++i) {
784 CHECK_DIF_OK(dif_sram_ctrl_alert_force(&sram_ctrl_ret_aon, kDifSramCtrlAlertFatalError + i));
789 &alert_handler, exp_alert, &is_cause));
790 CHECK(is_cause,
"Expect alert %d!", exp_alert);
794 &alert_handler, exp_alert));
798 for (dif_sysrst_ctrl_alert_t i = 0; i < 1; ++i) {
799 CHECK_DIF_OK(dif_sysrst_ctrl_alert_force(&sysrst_ctrl_aon, kDifSysrstCtrlAlertFatalFault + i));
804 &alert_handler, exp_alert, &is_cause));
805 CHECK(is_cause,
"Expect alert %d!", exp_alert);
809 &alert_handler, exp_alert));
813 for (dif_uart_alert_t i = 0; i < 1; ++i) {
814 CHECK_DIF_OK(dif_uart_alert_force(&uart0, kDifUartAlertFatalFault + i));
819 &alert_handler, exp_alert, &is_cause));
820 CHECK(is_cause,
"Expect alert %d!", exp_alert);
824 &alert_handler, exp_alert));
828 for (dif_uart_alert_t i = 0; i < 1; ++i) {
829 CHECK_DIF_OK(dif_uart_alert_force(&uart1, kDifUartAlertFatalFault + i));
834 &alert_handler, exp_alert, &is_cause));
835 CHECK(is_cause,
"Expect alert %d!", exp_alert);
839 &alert_handler, exp_alert));
843 for (dif_uart_alert_t i = 0; i < 1; ++i) {
844 CHECK_DIF_OK(dif_uart_alert_force(&uart2, kDifUartAlertFatalFault + i));
849 &alert_handler, exp_alert, &is_cause));
850 CHECK(is_cause,
"Expect alert %d!", exp_alert);
854 &alert_handler, exp_alert));
858 for (dif_uart_alert_t i = 0; i < 1; ++i) {
859 CHECK_DIF_OK(dif_uart_alert_force(&uart3, kDifUartAlertFatalFault + i));
864 &alert_handler, exp_alert, &is_cause));
865 CHECK(is_cause,
"Expect alert %d!", exp_alert);
869 &alert_handler, exp_alert));
873 for (dif_usbdev_alert_t i = 0; i < 1; ++i) {
874 CHECK_DIF_OK(dif_usbdev_alert_force(&usbdev, kDifUsbdevAlertFatalFault + i));
879 &alert_handler, exp_alert, &is_cause));
880 CHECK(is_cause,
"Expect alert %d!", exp_alert);
884 &alert_handler, exp_alert));
890 alert_handler_config();
891 trigger_alert_test();