SOCK: Add tmxr (and socket) library tests

This commit is contained in:
Mark Pizzolato 2020-03-31 09:07:39 -07:00
parent 16e7ffa901
commit 3d2394a2fb
3 changed files with 73 additions and 16 deletions

40
scp.c
View file

@ -15378,26 +15378,36 @@ if (sim_switches & SWMASK ('D')) {
} }
for (i = 0; (dptr = sim_devices[i]) != NULL; i++) { for (i = 0; (dptr = sim_devices[i]) != NULL; i++) {
t_stat tstat = SCPE_OK; t_stat tstat = SCPE_OK;
t_bool was_disabled = ((dptr->flags & DEV_DIS) != 0);
sim_switches = saved_switches; 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) #if defined(USE_SIM_CARD)
case DEV_CARD: case DEV_CARD:
tstat = sim_card_test (dptr); tstat = sim_card_test (dptr);
break; break;
#endif #endif
case DEV_DISK: case DEV_DISK:
tstat = sim_disk_test (dptr); tstat = sim_disk_test (dptr);
break; break;
case DEV_ETHER: case DEV_ETHER:
tstat = sim_ether_test (dptr); tstat = sim_ether_test (dptr);
break; break;
case DEV_TAPE: case DEV_TAPE:
tstat = sim_tape_test (dptr); tstat = sim_tape_test (dptr);
break; break;
default: case DEV_MUX:
break; tstat = tmxr_sock_test (dptr);
break;
default:
break;
}
} }
if (was_disabled)
set_dev_enbdis (dptr, NULL, 0, NULL);
if (tstat != SCPE_OK) if (tstat != SCPE_OK)
stat = tstat; stat = tstat;
} }

View file

@ -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 */ return -1; /* too soon to try */
srand((unsigned int)poll_time); srand((unsigned int)poll_time);
@ -5447,3 +5448,48 @@ if ((dptr) && (dbits & dptr->dctrl)) {
} }
} }
} }
/* Testing of sim_sock and tmxr */
#include <setjmp.h>
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;
}

View file

@ -307,6 +307,7 @@ const char *tmxr_send_line_name (const SEND *snd);
const char *tmxr_expect_line_name (const EXPECT *exp); const char *tmxr_expect_line_name (const EXPECT *exp);
t_stat tmxr_startup (void); t_stat tmxr_startup (void);
t_stat tmxr_shutdown (void); t_stat tmxr_shutdown (void);
t_stat tmxr_sock_test (DEVICE *dptr);
t_stat tmxr_start_poll (void); t_stat tmxr_start_poll (void);
t_stat tmxr_stop_poll (void); t_stat tmxr_stop_poll (void);
void _tmxr_debug (uint32 dbits, TMLN *lp, const char *msg, char *buf, int bufsize); void _tmxr_debug (uint32 dbits, TMLN *lp, const char *msg, char *buf, int bufsize);