From 3d2394a2fb56211b52b2a3983f483dc5ae23e40f Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Tue, 31 Mar 2020 09:07:39 -0700 Subject: [PATCH] SOCK: Add tmxr (and socket) library tests --- scp.c | 40 +++++++++++++++++++++++++--------------- sim_tmxr.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++- sim_tmxr.h | 1 + 3 files changed, 73 insertions(+), 16 deletions(-) diff --git a/scp.c b/scp.c index 00398c8f..6ed24ab5 100644 --- a/scp.c +++ b/scp.c @@ -15378,26 +15378,36 @@ if (sim_switches & SWMASK ('D')) { } for (i = 0; (dptr = sim_devices[i]) != NULL; i++) { t_stat tstat = SCPE_OK; + t_bool was_disabled = ((dptr->flags & DEV_DIS) != 0); sim_switches = saved_switches; - switch (DEV_TYPE(dptr)) { + if (was_disabled) + tstat = set_dev_enbdis (dptr, NULL, 1, NULL); + if (tstat == SCPE_OK) { + switch (DEV_TYPE(dptr)) { #if defined(USE_SIM_CARD) - case DEV_CARD: - tstat = sim_card_test (dptr); - break; + case DEV_CARD: + tstat = sim_card_test (dptr); + break; #endif - case DEV_DISK: - tstat = sim_disk_test (dptr); - break; - case DEV_ETHER: - tstat = sim_ether_test (dptr); - break; - case DEV_TAPE: - tstat = sim_tape_test (dptr); - break; - default: - break; + case DEV_DISK: + tstat = sim_disk_test (dptr); + break; + case DEV_ETHER: + tstat = sim_ether_test (dptr); + break; + case DEV_TAPE: + tstat = sim_tape_test (dptr); + break; + case DEV_MUX: + tstat = tmxr_sock_test (dptr); + break; + default: + break; + } } + if (was_disabled) + set_dev_enbdis (dptr, NULL, 0, NULL); if (tstat != SCPE_OK) stat = tstat; } diff --git a/sim_tmxr.c b/sim_tmxr.c index 2c3796b0..767cab96 100644 --- a/sim_tmxr.c +++ b/sim_tmxr.c @@ -1038,7 +1038,8 @@ if (mp->last_poll_time == 0) { /* first poll initializa } } -if ((poll_time - mp->last_poll_time) < mp->poll_interval*1000) +if (sim_is_running && + ((poll_time - mp->last_poll_time) < mp->poll_interval*1000)) return -1; /* too soon to try */ srand((unsigned int)poll_time); @@ -5447,3 +5448,48 @@ if ((dptr) && (dbits & dptr->dctrl)) { } } } + +/* Testing of sim_sock and tmxr */ + +#include + +t_stat tmxr_sock_test (DEVICE *dptr) +{ +char cmd[CBUFSIZE]; +int line; +TMXR *tmxr; +TMLN *ln; +t_stat stat = SCPE_OK; +SOCKET sock_mux = INVALID_SOCKET; +SOCKET sock_line = INVALID_SOCKET; +SIM_TEST_INIT; + +sim_printf ("Testing %s:\n", dptr->name); +dptr->dctrl = 0xFFFFFFFF; +dptr->dctrl &= ~TMXR_DBG_TRC; +sprintf (cmd, "%s -u localhost:65500", dptr->name); +SIM_TEST(attach_cmd (0, cmd)); +tmxr = (TMXR *)dptr->units->tmxr; +ln = &tmxr->ldsc[tmxr->lines - 1]; +SIM_TEST(detach_cmd (0, dptr->name)); +if (tmxr->lines > 1) { + tmxr->modem_control = FALSE; + for (line=0; line < tmxr->lines; line++) + tmxr->ldsc[line].modem_control = FALSE; + snprintf (cmd + strlen (cmd), sizeof (cmd) - strlen (cmd), ",Line=%d,localhost:65501", tmxr->lines - 1); + SIM_TEST(attach_cmd (0, cmd)); + sock_line = sim_connect_sock_ex (NULL, "localhost:65501", NULL, NULL, 0); + sim_os_ms_sleep (100); + SIM_TEST((tmxr_poll_conn (tmxr) == tmxr->lines - 1) ? SCPE_OK : SCPE_IERR); + sock_mux = sim_connect_sock ("", "localhost", "65500"); + sim_os_ms_sleep (100); + SIM_TEST((tmxr_poll_conn (tmxr) == 0) ? SCPE_OK : SCPE_IERR); + show_cmd (0, "MUX"); + sim_close_sock (sock_mux); + sock_mux = INVALID_SOCKET; + sim_close_sock (sock_line); + sock_line = INVALID_SOCKET; + SIM_TEST(detach_cmd (0, dptr->name)); + } +return stat; +} diff --git a/sim_tmxr.h b/sim_tmxr.h index 967fed17..9cc820ad 100644 --- a/sim_tmxr.h +++ b/sim_tmxr.h @@ -307,6 +307,7 @@ const char *tmxr_send_line_name (const SEND *snd); const char *tmxr_expect_line_name (const EXPECT *exp); t_stat tmxr_startup (void); t_stat tmxr_shutdown (void); +t_stat tmxr_sock_test (DEVICE *dptr); t_stat tmxr_start_poll (void); t_stat tmxr_stop_poll (void); void _tmxr_debug (uint32 dbits, TMLN *lp, const char *msg, char *buf, int bufsize);