void server(int whoami, Test_SRE *sre) { static int cnt = 1; int ferr; int len; char *p; Util_AA<char> recv_buffer(BUFSIZ); Util_AA<short> recv_buffer2(BUFSIZ); bool reply = true; if (abortserver) { cnt++; if (cnt >= loop * maxc * maxcp) util_abort_core_free(); } ferr = XMSG_READCTRL_(sre->sre.sre_msgId, // msgid &recv_buffer2, // reqctrl 1); // bytecount util_check("XMSG_READCTRL_", ferr); ferr = XMSG_READDATA_(sre->sre.sre_msgId, // msgid &recv_buffer, // reqdata BUFSIZ); // bytecount util_check("XMSG_READDATA_", ferr); if (verbose) printf("s-%d: received %s\n", whoami, &recv_buffer); strcat(&recv_buffer, "- reply from "); strcat(&recv_buffer, my_name); if (abortserver) { p = index(&recv_buffer, '='); if (atoi(&p[1]) == (loop - 1)) reply = false; } if (reply) { len = 100; if (verbose) printf("s-%d: sending %s\n", whoami, &recv_buffer); XMSG_REPLY_(sre->sre.sre_msgId, // msgid &recv_buffer2, // replyctrl sre->sre.sre_reqCtrlSize, // replyctrlsize &recv_buffer, // replydata (ushort) len, // replydatasize 0, // errorclass NULL); // newphandle } }
void handle_sig(int, siginfo_t *, void *) { if (gverbosepp) pp_printf("handle-sig pid=%d\n", getpid()); util_abort_core_free(); }
int main(int argc, char *argv[]) { SB_Array<int> array(MAX_OUT); int client = false; int disable = 0; int ferr; int inx; int lerr; int linker = false; int listener = false; int oid; int req_ctrl_size; int req_data_size; int rep_ctrl_size; int rep_data_size; RT results; TPT_DECL (phandle); TAD zargs[] = { { "-client", TA_Bool, TA_NOMAX, &client }, { "-linker", TA_Bool, TA_NOMAX, &linker }, { "-listener", TA_Bool, TA_NOMAX, &listener }, { "-server", TA_Ign, TA_NOMAX, NULL }, { "", TA_End, TA_NOMAX, NULL } }; msfs_util_init(&argc, &argv, msg_debug_hook); arg_proc_args(zargs, false, argc, argv); util_test_start(client); ferr = msg_mon_process_startup(!client); // system messages TEST_CHK_FEOK(ferr); if (client) { ferr = msg_mon_open_process((char *) "$srv", // name TPT_REF(phandle), &oid); TEST_CHK_FEOK(ferr); for (inx = 0; inx < MAX_OUT; inx++) { req_ctrl_size = (inx + 1) % MAX_DATA; req_data_size = (inx + 2) % MAX_DATA; ferr = XMSG_LINK_(TPT_REF(phandle), // phandle &msgids[inx], // msgid send_cli_c_buffer[inx], // reqctrl (ushort) req_ctrl_size, // reqctrlsize recv_cli_c_buffer[inx], // replyctrl (ushort) MAX_DATA, // replyctrlmax send_cli_d_buffer[inx], // reqdata (ushort) req_data_size, // reqdatasize recv_cli_d_buffer[inx], // replydata (ushort) MAX_DATA, // replydatamax 0, // linkertag 0, // pri 0, // xmitclass 0); // linkopts util_check("XMSG_LINK_", ferr); } if (linker) { sleep(1); util_abort_core_free(); } for (inx = 0; inx < MAX_OUT; inx++) { array.add(); array.set_val(inx, inx); } for (inx = 0; inx < MAX_OUT; inx++) { int rnd = (int) (1.0 * array.get_size() * rand_r(&seed) / (RAND_MAX + 1.0)); int xinx = array.get_val(rnd); array.remove(rnd); rep_ctrl_size = (xinx + 3) % MAX_DATA; rep_data_size = (xinx + 4) % MAX_DATA; if (listener) disable = msg_test_assert_disable(); ferr = XMSG_BREAK_(msgids[xinx], results.u.s, TPT_REF(phandle)); if (listener) { assert(ferr == XZFIL_ERR_PATHDOWN); msg_test_assert_enable(disable); } else { util_check("XMSG_BREAK_", ferr); assert(results.u.t.ctrl_size == (unsigned short) rep_ctrl_size); assert(results.u.t.data_size == (unsigned short) rep_data_size); } } printf("if there were no asserts, all is well\n"); } else { for (inx = 0; inx < MAX_OUT; inx++) { lerr = XWAIT(LREQ, -1); TEST_CHK_WAITIGNORE(lerr); do { lerr = XMSG_LISTEN_((short *) &sres[inx], // sre 0, // listenopts 0); // listenertag if (lerr == XSRETYPE_NOWORK) util_time_sleep_ms(1); } while (lerr == XSRETYPE_NOWORK); } for (inx = 0; inx < MAX_OUT; inx++) { array.add(); array.set_val(inx, inx); } for (inx = 0; inx < MAX_OUT; inx++) { int rnd = (int) (1.0 * array.get_size() * rand_r(&seed) / (RAND_MAX + 1.0)); int xinx = array.get_val(rnd); array.remove(rnd); req_ctrl_size = (xinx + 1) % MAX_DATA; req_data_size = (xinx + 2) % MAX_DATA; assert(req_ctrl_size == sres[xinx].sre_reqCtrlSize); assert(req_data_size == sres[xinx].sre_reqDataSize); ferr = XMSG_READCTRL_(sres[xinx].sre_msgId, // msgid recv_srv_c_buffer[xinx], // reqctrl sres[xinx].sre_reqCtrlSize); // bytecount util_check("XMSG_READCTRL_", ferr); ferr = XMSG_READDATA_(sres[xinx].sre_msgId, // msgid recv_srv_d_buffer[xinx], // reqdata sres[xinx].sre_reqDataSize); // bytecount util_check("XMSG_READDATA_", ferr); } for (inx = 0; inx < MAX_OUT; inx++) { array.add(); array.set_val(inx, inx); } if (linker) sleep(1); if (listener) util_abort_core_free(); for (inx = 0; inx < MAX_OUT; inx++) { int rnd = (int) (1.0 * array.get_size() * rand_r(&seed) / (RAND_MAX + 1.0)); int xinx = array.get_val(rnd); array.remove(rnd); rep_ctrl_size = (xinx + 3) % MAX_DATA; rep_data_size = (xinx + 4) % MAX_DATA; XMSG_REPLY_(sres[xinx].sre_msgId, // msgid recv_srv_c_buffer[xinx], // replyctrl (ushort) rep_ctrl_size, // replyctrlsize recv_srv_d_buffer[xinx], // replydata (ushort) rep_data_size, // replydatasize 0, // errorclass NULL); // newphandle } } if (client) { ferr = msg_mon_close_process(TPT_REF(phandle)); TEST_CHK_FEOK(ferr); } ferr = msg_mon_process_shutdown(); TEST_CHK_FEOK(ferr); if (linker) util_test_finish(!client); else util_test_finish(client); return 0; }
int main(int argc, char *argv[]) { bool client = false; bool disable = false; int ferr; int lerr; int msgid; int oid; TPT_DECL (phandle); RT results; MS_SRE sre; TAD zargs[] = { { "-client", TA_Bool, TA_NOMAX, &client }, { "-server", TA_Ign, TA_NOMAX, NULL }, { "", TA_End, TA_NOMAX, NULL } }; msfs_util_init(&argc, &argv, msg_debug_hook); arg_proc_args(zargs, false, argc, argv); util_test_start(client); ferr = msg_mon_process_startup(!client); // system messages? TEST_CHK_FEOK(ferr); if (client) { ferr = msg_mon_open_process((char *) "$srv", // name TPT_REF(phandle), &oid); TEST_CHK_FEOK(ferr); } util_gethostname(my_name, sizeof(my_name)); if (client) { sprintf(send_buffer, "hello, greetings from %s", my_name); ferr = XMSG_LINK_(TPT_REF(phandle), // phandle &msgid, // msgid NULL, // reqctrl 0, // reqctrlsize NULL, // replyctrl 0, // replyctrlmax send_buffer, // reqdata 39000, // reqdatasize recv_buffer, // replydata 40000, // replydatamax 0, // linkertag 0, // pri 0, // xmitclass 0); // linkopts util_check("XMSG_LINK_", ferr); disable = msg_test_assert_disable(); ferr = XMSG_BREAK_(msgid, results.u.s, TPT_REF(phandle)); msg_test_assert_enable(disable); assert(ferr == XZFIL_ERR_PATHDOWN); disable = msg_test_assert_disable(); ferr = XMSG_LINK_(TPT_REF(phandle), // phandle &msgid, // msgid NULL, // reqctrl 0, // reqctrlsize NULL, // replyctrl 0, // replyctrlmax send_buffer, // reqdata 39000, // reqdatasize recv_buffer, // replydata 40000, // replydatamax 0, // linkertag 0, // pri 0, // xmitclass 0); // linkopts util_check("XMSG_LINK_", ferr); msg_test_assert_enable(disable); ferr = XMSG_ABANDON_(msgid); util_check("XMSG_ABANDON_", ferr); } else { for (;;) { do { lerr = XWAIT(LREQ, -1); TEST_CHK_WAITIGNORE(lerr); lerr = XMSG_LISTEN_((short *) &sre, // sre 0, // listenopts 0); // listenertag } while (lerr == XSRETYPE_NOWORK); util_abort_core_free(); } } if (client) { ferr = msg_mon_close_process(TPT_REF(phandle)); TEST_CHK_FEOK(ferr); } ferr = msg_mon_process_shutdown(); TEST_CHK_FEOK(ferr); util_test_finish(client); return 0; }
int main(int argc, char *argv[]) { bool abort1 = false; bool abort2 = false; void *buf; _xcc_status cc; bool client = false; int count_read; int count_written; int count_xferred; int dsize = 1024; int ferr; short filenum; int inx; int loop = 10; short mt; char my_name[BUFSIZ]; bool verbose = false; SB_Tag_Type tag; short tfilenum; int timeout = -1; TAD zargs[] = { { "-abort1", TA_Bool, TA_NOMAX, &abort1 }, { "-abort2", TA_Bool, TA_NOMAX, &abort2 }, { "-client", TA_Bool, TA_NOMAX, &client }, { "-loop", TA_Int, TA_NOMAX, &loop }, { "-server", TA_Ign, TA_NOMAX, NULL }, { "-v", TA_Bool, TA_NOMAX, &verbose }, { "", TA_End, TA_NOMAX, NULL } }; ferr = file_init(&argc, &argv); TEST_CHK_FEOK(ferr); msfs_util_init_fs(&argc, &argv, file_debug_hook); arg_proc_args(zargs, false, argc, argv); util_test_start(client); ferr = file_mon_process_startup(!client); // system messages? TEST_CHK_FEOK(ferr); ferr = msg_mon_get_my_process_name(my_name, BUFSIZ); util_check("msg_mon_get_my_process_name", ferr); if (client) { ferr = BFILE_OPEN_((char *) "$srv", 4, &filenum, 0, 0, (short) 1, // nowait 0, 0, 0, 0, NULL); if (verbose) printf("client open ferr=%d\n", ferr); TEST_CHK_FEOK(ferr); for (inx = 0; inx < loop; inx++) { sprintf(send_buffer, "hello, greetings from %s, inx=%d", my_name, inx); cc = BWRITEREADX(filenum, send_buffer, (unsigned short) (strlen(send_buffer) + 1), // cast 0, &count_read, 0); if (verbose) printf("client wr cc=%d\n", cc); TEST_CHK_CCEQ(cc); tfilenum = -2; cc = BAWAITIOX(&tfilenum, &buf, &count_xferred, &tag, timeout, NULL); if (verbose) printf("client awaitiox cc=%d, fn=%d\n", cc, tfilenum); if (abort1) { if (_xstatus_ne(cc)) { sleep(1); inx--; continue; } } else { TEST_CHK_CCEQ(cc); } printf("%s\n", send_buffer); } } else { ferr = BFILE_OPEN_((char *) "$RECEIVE", 8, &filenum, 0, 0, (short) 0, 1, 0, // sys msg 0, 0, NULL); TEST_CHK_FEOK(ferr); if (abort1) { } else if (abort2) { loop -= 2; } else { loop += 2; } for (inx = 0; inx < loop; inx++) { if (abort1 && (inx == 3)) util_abort_core_free(); cc = BREADUPDATEX(filenum, recv_buffer, (int) dsize, // cast &count_read, 0); if (verbose) { memcpy(&mt, recv_buffer, sizeof(mt)); printf("server cc=%d, mt=%d\n", cc, mt); } cc = BREPLYX(recv_buffer, 0, &count_written, 0, XZFIL_ERR_OK); TEST_CHK_CCEQ(cc); } } if (client) { ferr = BFILE_CLOSE_(filenum, 0); TEST_CHK_FEOK(ferr); } else { ferr = BFILE_CLOSE_(filenum, 0); TEST_CHK_FEOK(ferr); } ferr = file_mon_process_shutdown(); TEST_CHK_FEOK(ferr); util_test_finish(client); return 0; }
int main(int argc, char *argv[]) { bool chook = false; bool client = false; FILE *f; bool fail = false; int ferr; int lerr; int msgid; int oid; TPT_DECL (phandle); MS_Result_Type results; MS_SRE sre; TAD zargs[] = { { "-chook", TA_Bool, TA_NOMAX, &chook }, { "-client", TA_Bool, TA_NOMAX, &client }, { "-cluster", TA_Ign, TA_NOMAX, NULL }, { "-fail", TA_Bool, TA_NOMAX, &fail }, { "-verbose", TA_Ign, TA_NOMAX, NULL }, { "", TA_End, TA_NOMAX, NULL } }; arg_proc_args(zargs, false, argc, argv); if (chook) test_debug_hook("c", "c"); util_test_start(true); if (client) { f = NULL; while (f == NULL) { f = fopen("z100", "r"); if (f == NULL) sleep(1); } fclose(f); } if (client) ferr = msg_init_attach(&argc, &argv, true, (char *) "$CLI"); else ferr = msg_init(&argc, &argv); TEST_CHK_FEOK(ferr); ferr = msg_mon_process_startup(!client); // system messages TEST_CHK_FEOK(ferr); if (client) { ferr = msg_mon_open_process((char *) "$SRV", TPT_REF(phandle), &oid); TEST_CHK_FEOK(ferr); if (fail) util_abort_core_free(); ferr = XMSG_LINK_(TPT_REF(phandle), // phandle &msgid, // msgid NULL, // reqctrl 0, // reqctrlsize recv_buffer3, // replyctrl 0, // replyctrlmax NULL, // reqdata 0, // reqdatasize recv_buffer, // replydata 0, // replydatamax 0, // linkertag 0, // pri 0, // xmitclass 0); // linkopts TEST_CHK_FEOK(ferr); ferr = XMSG_BREAK_(msgid, (short *) &results, TPT_REF(phandle)); TEST_CHK_FEOK(ferr); } else { f = fopen("z100", "w"); assert(f != NULL); fclose(f); for (;;) { do { lerr = XWAIT(LREQ, 20); TEST_CHK_WAITIGNORE(lerr); if (!lerr) continue; lerr = XMSG_LISTEN_((short *) &sre, // sre 0, // listenopts 0); // listenertag } while (lerr == XSRETYPE_NOWORK); if (sre.sre_flags & XSRE_MON) printf("server received mon message\n"); else printf("server received regular message\n"); XMSG_REPLY_(sre.sre_msgId, // msgid recv_buffer2, // replyctrl 0, // replyctrlsize recv_buffer, // replydata 0, // replydatasize 0, // errorclass NULL); // newphandle if ((sre.sre_flags & XSRE_MON) == 0) break; } } ferr = msg_mon_process_shutdown(); TEST_CHK_FEOK(ferr); util_test_finish(true); return 0; }
int main(int argc, char *argv[]) { bool client = false; bool client1 = false; bool client2 = false; bool client3 = false; int ferr; int inx; int lerr; int loop = 10; int msgid; int oid; TPT_DECL (phandle); MS_Result_Type results; MS_SRE sre; MS_Mon_Transid_Type transid; TAD zargs[] = { { "-client1", TA_Bool, TA_NOMAX, &client1 }, { "-client2", TA_Bool, TA_NOMAX, &client2 }, { "-client3", TA_Bool, TA_NOMAX, &client3 }, { "-loop", TA_Int, TA_NOMAX, &loop }, { "-server", TA_Ign, TA_NOMAX, NULL }, { "", TA_End, TA_NOMAX, NULL } }; msfs_util_init(&argc, &argv, msg_debug_hook); arg_proc_args(zargs, false, argc, argv); if (client1) client = true; if (client2) client = true; if (client3) client = true; util_test_start(client); ferr = msg_mon_process_startup(!client); // system messages? TEST_CHK_FEOK(ferr); if (client) { ferr = msg_mon_open_process((char *) "$srv", // name TPT_REF(phandle), &oid); TEST_CHK_FEOK(ferr); } util_gethostname(my_name, sizeof(my_name)); if (client) { if (client1) sleep(5); else if (client2) { util_abort_core_free(); } else { ferr = XMSG_LINK_(TPT_REF(phandle), // phandle &msgid, // msgid NULL, // reqctrl 0, // reqctrlsize NULL, // replyctrl 0, // replyctrlmax send_buffer, // reqdata 0, // reqdatasize recv_buffer, // replydata 0, // replydatamax 0, // linkertag 0, // pri 0, // xmitclass 0); // linkopts util_check("XMSG_LINK_", ferr); ferr = XMSG_BREAK_(msgid, (short *) &results, TPT_REF(phandle)); util_check("XMSG_BREAK_", ferr); } } else { msg_mon_enable_mon_messages(true); for (inx = 0; inx < 7; inx++) { do { lerr = XWAIT(LREQ, -1); TEST_CHK_WAITIGNORE(lerr); lerr = XMSG_LISTEN_((short *) &sre, // sre 0, // listenopts 0); // listenertag } while (lerr == XSRETYPE_NOWORK); ferr = XMSG_READDATA_(sre.sre_msgId, // msgid recv_buffer, // reqdata 40000); // bytecount util_check("XMSG_READDATA_", ferr); if (sre.sre_flags & XSRE_MON) { MS_Mon_Msg *msg = (MS_Mon_Msg *) recv_buffer; if (msg->type == MS_MsgType_Open) { if (strcasecmp(msg->u.open.target_process_name, "$cli2") == 0) { transid.id[0] = -1; transid.id[1] = -1; transid.id[2] = -1; transid.id[3] = -1; ferr = msg_mon_deregister_death_notification(-1, // msg->u.open.nid, -1, // msg->u.open.pid, transid); TEST_CHK_FEOK(ferr); } } printf("server reply type=%d, inx=%d\n", msg->type, inx); } else printf("server reply inx=%d\n", inx); XMSG_REPLY_(sre.sre_msgId, // msgid NULL, // replyctrl 0, // replyctrlsize recv_buffer, // replydata 0, // replydatasize 0, // errorclass NULL); // newphandle } } if (client) { ferr = msg_mon_close_process(TPT_REF(phandle)); TEST_CHK_FEOK(ferr); } ferr = msg_mon_process_shutdown(); TEST_CHK_FEOK(ferr); util_test_finish(client); return 0; }
int main(int argc, char *argv[]) { bool abortclose = false; bool client = false; int ferr; int inx; int lerr; int oid; int proc; void *res; int status; int thr; TAD zargs[] = { { "-abortclose", TA_Bool, TA_NOMAX, &abortclose }, { "-abortserver", TA_Bool, TA_NOMAX, &abortserver }, { "-client", TA_Bool, TA_NOMAX, &client }, { "-debug", TA_Bool, TA_NOMAX, &debug }, { "-event", TA_Bool, TA_NOMAX, &event }, { "-inst", TA_Int, TA_NOMAX, &inst }, { "-loop", TA_Int, TA_NOMAX, &loop }, { "-maxc", TA_Int, MAX_THR_C, &maxc }, { "-maxcp", TA_Int, TA_NOMAX, &maxcp }, { "-maxs", TA_Int, MAX_THR_S, &maxs }, { "-maxsp", TA_Int, TA_NOMAX, &maxsp }, { "-mq", TA_Bool, TA_NOMAX, &mq }, { "-name", TA_Str, TA_NOMAX, &name }, { "-noshutdown", TA_Bool, TA_NOMAX, &shutdown }, { "-quiet", TA_Bool, TA_NOMAX, &quiet }, { "-server", TA_Ign, TA_NOMAX, NULL }, { "-thrlisten", TA_Bool, TA_NOMAX, &thrlisten }, { "-txrate", TA_Bool, TA_NOMAX, &txrate }, { "-v", TA_Bool, TA_NOMAX, &verbose }, { "", TA_End, TA_NOMAX, NULL } }; msfs_util_init(&argc, &argv, msg_debug_hook); arg_proc_args(zargs, false, argc, argv); // setup threads if (client) { for (inx = 0; inx < maxc; inx++) { char lname[10]; sprintf(lname, "c%d", inx); thrc[inx] = new SB_Thread::Thread(client_thr, lname); } } else { for (inx = 0; inx < maxs; inx++) { char lname[10]; sprintf(lname, "s%d", inx); thrs[inx] = new SB_Thread::Thread(server_thr, lname); } } util_test_start(client); ferr = msg_mon_process_startup(!client); // system messages TEST_CHK_FEOK(ferr); if (client) { printf("inst=%d, loop=%d, maxc=%d, maxcp=%d, maxs=%d, maxsp=%d, shutdown=%d, thrlisten=%d, txrate=%d\n", inst, loop, maxc, maxcp, maxs, maxsp, shutdown, thrlisten, txrate); ferr = msg_mon_open_process((char *) "$srv", // name TPT_REF(phandle), &oid); TEST_CHK_FEOK(ferr); } util_gethostname(my_name, sizeof(my_name)); if (client) { for (inx = 0; inx < maxc; inx++) thrc[inx]->start(); for (inx = 0; inx < maxc; inx++) { status = thrc[inx]->join(&res); TEST_CHK_STATUSOK(status); printf("joined with client %d\n", inx); } } else { for (inx = 0; inx < MAX_SRES; inx++) free_q.add(&sres[inx].link); for (inx = 0; inx < maxs; inx++) thrs[inx]->start(); if (!thrlisten) { Test_SRE *sre = NULL; for (proc = 0; proc < maxcp; proc++) { for (thr = 0; thr < maxc; thr++) { for (inx = 0; inx < loop;) { lerr = XWAIT(LREQ, -1); TEST_CHK_WAITIGNORE(lerr); do { if (sre == NULL) { sre = (Test_SRE *) free_q.remove(); assert(sre != NULL); } sre->fin = false; lerr = XMSG_LISTEN_((short *) &sre->sre, // sre 0, // listenopts 0); // listenertag if (lerr == XSRETYPE_IREQ) { assert(sre->sre.sre_msgId > 0); if (verbose) printf("s-main: queue work inx=%d\n", inx); work_q.add(&sre->link); sre = NULL; inx++; } } while (lerr == XSRETYPE_IREQ); } } } for (inx = 0; inx < maxs; inx++) { Test_SRE *quit_sre = (Test_SRE *) free_q.remove(); quit_sre->fin = true; if (verbose) printf("s-main: fin inx=%d\n", inx); work_q.add(&quit_sre->link); util_time_sleep_ms(1); } } for (inx = 0; inx < maxs; inx++) { status = thrs[inx]->join(&res); TEST_CHK_STATUSOK(status); printf("joined with server %d\n", inx); } } if (abortclose) util_abort_core_free(); if (client) { ferr = msg_mon_close_process(TPT_REF(phandle)); TEST_CHK_FEOK(ferr); } if (shutdown) { ferr = msg_mon_process_shutdown(); TEST_CHK_FEOK(ferr); } util_test_finish(client); return 0; }
int main(int argc, char *argv[]) { int arg; char buf[BUFSIZ]; bool client = false; int disable; int ferr; int inx; int len; int lerr; int oid; void *result; MS_SRE sre; int status; SB_Thread::Thread *thr_send[MAX_THREADS]; TAD zargs[] = { { "-client", TA_Bool, TA_NOMAX, &client }, { "-loop", TA_Int, TA_NOMAX, &loop }, { "-server", TA_Ign, TA_NOMAX, NULL }, { "-threads", TA_Int, MAX_THREADS, &threads }, { "-v", TA_Bool, TA_NOMAX, &verbose }, { "", TA_End, TA_NOMAX, NULL } }; msfs_util_init(&argc, &argv, msg_debug_hook); gargc = &argc; gargv = argv; arg_proc_args(zargs, false, argc, argv); for (arg = 1; arg < argc; arg++) { if (strcmp(argv[arg], "-client") == 0) // start_process argv[arg] = (char *) "-server"; // set to server for start-process } if (threads < 1) threads = 1; if (client) strcpy(who, "client"); else strcpy(who, "server"); util_test_start(client); ferr = msg_mon_process_startup(true); // system messages? TEST_CHK_FEOK(ferr); if (client) { if (verbose) printf("%s - opening server\n", who); ferr = msg_mon_open_process((char *) "$srv", // name TPT_REF(phandle), &oid); TEST_CHK_FEOK(ferr); } util_gethostname(my_name, sizeof(my_name)); if (client) { disable = msg_test_assert_disable(); for (inx = 0; inx < threads; inx++) { sprintf(buf, "%d", inx); thr_send[inx] = new SB_Thread::Thread(thread_send_fun, buf); thr_send[inx]->start(); } for (inx = 0; inx < threads; inx++) { status = thr_send[inx]->join(&result); TEST_CHK_STATUSOK(status); delete thr_send[inx]; } thread_send_fun(NULL); msg_test_assert_enable(disable); } else { inx = 0; for (;;) { do { lerr = XWAIT(LREQ, -1); TEST_CHK_WAITIGNORE(lerr); lerr = XMSG_LISTEN_((short *) &sre, // sre 0, // listenopts 0); // listenertag } while (lerr == XSRETYPE_NOWORK); inx++; if (inx > 4) util_abort_core_free(); // don't reply ferr = XMSG_READCTRL_(sre.sre_msgId, // msgid NULL, // reqctrl 0); // bytecount util_check("XMSG_READCTRL_", ferr); ferr = XMSG_READDATA_(sre.sre_msgId, // msgid recv_buffer, // reqdata 40000); // bytecount util_check("XMSG_READDATA_", ferr); strcat(recv_buffer, "- reply from "); strcat(recv_buffer, my_name); len = (int) strlen(recv_buffer) + 1; len = len; // touch XMSG_REPLY_(sre.sre_msgId, // msgid NULL, // replyctrl 0, // replyctrlsize recv_buffer, // replydata 39000, // replydatasize 0, // errorclass NULL); // newphandle if (sre.sre_reqDataSize == 0) break; } } if (client) { ferr = msg_mon_close_process(TPT_REF(phandle)); TEST_CHK_FEOK(ferr); } ferr = msg_mon_process_shutdown(); TEST_CHK_FEOK(ferr); util_test_finish(client); return 0; }
int main(int argc, char *argv[]) { bool client = false; int disable; int ferr; int inx; int lerr; int loop = 10; int msgid; int oid; TPT_DECL (phandle); RT results; MS_SRE sre; TAD zargs[] = { { "-client", TA_Bool, TA_NOMAX, &client }, { "-loop", TA_Int, TA_NOMAX, &loop }, { "-server", TA_Ign, TA_NOMAX, NULL }, { "", TA_End, TA_NOMAX, NULL } }; msfs_util_init(&argc, &argv, msg_debug_hook); arg_proc_args(zargs, false, argc, argv); util_test_start(client); ferr = msg_mon_process_startup(!client); // system messages? TEST_CHK_FEOK(ferr); if (client) { ferr = msg_mon_open_process((char *) "$srv", // name TPT_REF(phandle), &oid); TEST_CHK_FEOK(ferr); } util_gethostname(my_name, sizeof(my_name)); if (client) { for (inx = 0; inx < loop; inx++) { disable = msg_test_assert_disable(); ferr = XMSG_LINK_(TPT_REF(phandle), // phandle &msgid, // msgid NULL, // reqctrl 0, // reqctrlsize NULL, // replyctrl 0, // replyctrlmax send_buffer, // reqdata 0, // reqdatasize recv_buffer, // replydata 0, // replydatamax 0, // linkertag 0, // pri 0, // xmitclass 0); // linkopts util_check("XMSG_LINK_", ferr); ferr = XMSG_BREAK_(msgid, results.u.s, TPT_REF(phandle)); assert(ferr); msg_test_assert_enable(disable); } } else { msg_mon_enable_mon_messages(true); do { lerr = XWAIT(LREQ, -1); TEST_CHK_WAITIGNORE(lerr); lerr = XMSG_LISTEN_((short *) &sre, // sre 0, // listenopts 0); // listenertag } while (lerr == XSRETYPE_NOWORK); XMSG_REPLY_(sre.sre_msgId, // msgid NULL, // replyctrl 0, // replyctrlsize recv_buffer, // replydata 0, // replydatasize 0, // errorclass NULL); // newphandle util_abort_core_free(); } if (client) { ferr = msg_mon_close_process(TPT_REF(phandle)); TEST_CHK_FEOK(ferr); } else { ferr = msg_mon_process_close(); TEST_CHK_FEOK(ferr); } ferr = msg_mon_process_shutdown(); TEST_CHK_FEOK(ferr); util_test_finish(client); return 0; }
int main(int argc, char *argv[]) { int arg; _xcc_status cc; bool client = false; unsigned short count_read; unsigned short count_written; bool death = false; #ifdef SQ_PHANDLE_VERIFIER int disable; #endif int ferr; short filenumr; short filenums; #ifdef SQ_PHANDLE_VERIFIER short filenums2; #endif int inxl; short len; #ifdef SQ_PHANDLE_VERIFIER short len2; #endif int loop = 10; int nid; int pid; char prog[MS_MON_MAX_PROCESS_PATH]; char retname[BUFSIZ]; char sname[10]; char sname_seq1[40]; #ifdef SQ_PHANDLE_VERIFIER char sname_seq2[40]; #endif int status; bool verbose = false; TAD zargs[] = { { "-client", TA_Bool, TA_NOMAX, &client }, { "-death", TA_Bool, TA_NOMAX, &death }, { "-loop", TA_Int, TA_NOMAX, &loop }, { "-server", TA_Ign, TA_NOMAX, NULL }, { "-v", TA_Bool, TA_NOMAX, &verbose }, { "", TA_End, TA_NOMAX, NULL } }; ferr = file_init(&argc, &argv); TEST_CHK_FEOK(ferr); msfs_util_init_fs(&argc, &argv, file_debug_hook); arg_proc_args(zargs, false, argc, argv); for (arg = 1; arg < argc; arg++) { if (strcmp(argv[arg], "-client") == 0) // start_process argv[arg] = (char *) "-server"; } util_test_start(client); if (death) ferr = file_mon_process_startup(true); // system messages? else ferr = file_mon_process_startup(!client); // system messages? TEST_CHK_FEOK(ferr); ferr = msg_mon_get_my_process_name(my_name, BUFSIZ); util_check("msg_mon_get_my_process_name", ferr); if (client) { if (death) { ferr = XFILE_OPEN_((char *) "$RECEIVE", 8, &filenumr, 0, 0, 0, 1, 0, // sys msg 0, 0, NULL); TEST_CHK_FEOK(ferr); } strcpy(sname, "$srv"); if (verbose) printf("client starting server %s\n", sname); sprintf(prog, "%s/%s", getenv("PWD"), argv[0]); nid = -1; ferr = msg_mon_start_process_nowait_cb(cb, // callback prog, // prog sname, // name retname, // ret-name argc, // argc argv, // argv MS_ProcessType_Generic,// ptype 0, // priority false, // debug false, // backup 0, // tag &nid, // nid &pid, // pid NULL, // infile NULL); // outfile TEST_CHK_FEOK(ferr); if (verbose) printf("client waiting for server=%s start\n", sname); status = cv.wait(true); assert(status == 0); #ifdef SQ_PHANDLE_VERIFIER ferr = msg_mon_create_name_seq(sname, srv_verifier, sname_seq1, (int) sizeof(sname_seq1)); TEST_CHK_FEOK(ferr); ferr = msg_mon_create_name_seq(sname, srv_verifier + 99, sname_seq2, (int) sizeof(sname_seq2)); TEST_CHK_FEOK(ferr); #else strcpy(sname_seq1, sname); #endif len = (short) strlen(sname_seq1); if (verbose) printf("client opening server %s\n", sname); ferr = XFILE_OPEN_(sname_seq1, len, &filenums, 0, 0, 0, 0, 0, 0, 0, NULL); TEST_CHK_FEOK(ferr); #ifdef SQ_PHANDLE_VERIFIER len2 = (short) strlen(sname_seq2); disable = msg_test_assert_disable(); // make sure seq # is checked ferr = XFILE_OPEN_(sname_seq2, len2, &filenums2, 0, 0, 0, 0, 0, 0, 0, NULL); assert(ferr != XZFIL_ERR_OK); msg_test_assert_enable(disable); #endif if (verbose) printf("open filenums=%d\n", filenums); for (inxl = 0; inxl < loop; inxl++) { sprintf(send_buffer, "hello, greetings from %s, inx=%d", my_name, inxl); cc = XWRITEREADX(filenums, send_buffer, (unsigned short) (strlen(send_buffer) + 1), // cast BUFSIZ, &count_read, 0); TEST_CHK_CCEQ(cc); printf("%s\n", send_buffer); } disable = msg_test_assert_disable(); ferr = XFILE_CLOSE_(filenums, 0); TEST_CHK_FEOK(ferr); msg_test_assert_enable(disable); if (death) { sleep(2); } if (verbose) printf("client calling shutdown\n"); } else { ferr = XFILE_OPEN_((char *) "$RECEIVE", 8, &filenumr, 0, 0, 0, 1, 0, // sys msg 0, 0, NULL); TEST_CHK_FEOK(ferr); cc = XREADUPDATEX(filenumr, recv_buffer, BUFSIZ, &count_read, 0); TEST_CHK_CCNE(cc); count_read = 0; cc = XREPLYX(recv_buffer, count_read, &count_written, 0, XZFIL_ERR_OK); TEST_CHK_CCEQ(cc); for (inxl = 0; inxl < loop; inxl++) { cc = XREADUPDATEX(filenumr, recv_buffer, BUFSIZ, &count_read, 0); TEST_CHK_CCEQ(cc); strcat(recv_buffer, "- reply from "); strcat(recv_buffer, my_name); count_read = (unsigned short) (strlen(recv_buffer) + 1); // cast cc = XREPLYX(recv_buffer, count_read, &count_written, 0, XZFIL_ERR_OK); TEST_CHK_CCEQ(cc); } if (death) { sleep(1); util_abort_core_free(); } } ferr = file_mon_process_shutdown(); TEST_CHK_FEOK(ferr); util_test_finish(client); return 0; }