Exemplo n.º 1
0
int main(int argc, char *argv[]) {
    bool      client = false;
    int       ferr;
    int       inx;
    int       loop = 10;
    int       msgid;
    int       oid;
    RT        results;
    TPT_DECL (phandle);
    int       send_len;
    TAD       zargs[] = {
      { "-loop",      TA_Int,  TA_NOMAX,    &loop      },
      { "",           TA_End,  TA_NOMAX,    NULL       }
    };

    msfs_util_init_role(true, &argc, &argv, msg_debug_hook);
    arg_proc_args(zargs, false, argc, argv);
    client = true;
    util_test_start(client);
    ferr = msg_mon_process_startup(!client); // system messages
    TEST_CHK_FEOK(ferr);
    ferr = msg_mon_open_process((char *) "$srv",      // name
                                TPT_REF(phandle),
                                &oid);
    TEST_CHK_FEOK(ferr);
    util_gethostname(my_name, sizeof(my_name));

    for (inx = 0; inx < loop; inx++) {
        sprintf(send_buffer, "hello, greetings from %s, inx=%d", my_name, inx);
        send_len = (int) strlen(send_buffer) + 1;
        ferr = XMSG_LINK_(TPT_REF(phandle),            // phandle
                          &msgid,                      // msgid
                          send_buffer2,                // reqctrl
                          (ushort) ((inx & 1) + 1),    // reqctrlsize
                          recv_buffer3,                // replyctrl
                          2,                           // replyctrlmax
                          send_buffer,                 // reqdata
                          (ushort) send_len,           // reqdatasize
                          recv_buffer,                 // replydata
                          BUFSIZ,                      // replydatamax
                          0,                           // linkertag
                          0,                           // pri
                          0,                           // xmitclass
                          0);                          // linkopts
         util_check("XMSG_LINK_", ferr);
        ferr = XMSG_BREAK_(msgid, results.u.s, TPT_REF(phandle));
        util_check("XMSG_BREAK_", ferr);
        assert(results.u.t.ctrl_size == (uint) ((inx & 1) + 1));
        assert(results.u.t.data_size > (strlen(send_buffer) + 14));
        assert(results.u.t.errm == RT_DATA_RCVD); // data
        printf("%s\n", recv_buffer);
    }
    ferr = msg_mon_close_process(TPT_REF(phandle));
    printf("close ferr=%d\n", ferr);
    printf("client shutting down\n");
    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    util_test_finish(client);
    return 0;
}
Exemplo n.º 2
0
int main(int argc, char *argv[]) {
    bool       client = false;
    int        disable;
    int        ferr;
    int        oid;
    TPT_DECL  (phandle);
    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(true);  // system messages?
    TEST_CHK_FEOK(ferr);
    if (client) {
        disable = msg_test_assert_disable();
        ferr = msg_mon_open_process((char *) "$srv",      // name
                                    TPT_REF(phandle),
                                    &oid);
        TEST_CHK_FEIGNORE(ferr);
        msg_test_assert_enable(disable);
    }
    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    util_test_finish(client);
    return 0;
}
Exemplo n.º 3
0
void do_set_linux(int fd, short set_file, int rr, int wr, int exc, int count) {
    short ferr;
    short info_count;
    short list_inx;

    add_list[0].z_fnum_fd = fd;
    if (set_file)
        add_list[0].u_z_options.z_options.z_set_file = 1;
    else
        add_list[0].u_z_options.z_options.z_set_file = 0;
    add_list[0].u_z_options.z_options.z_filetype = 1;
    if (rr)
        add_list[0].u_z_options.z_options.z_read_ready = 1;
    else
        add_list[0].u_z_options.z_options.z_read_ready = 0;
    if (wr)
        add_list[0].u_z_options.z_options.z_write_ready = 1;
    else
        add_list[0].u_z_options.z_options.z_write_ready = 0;
    if (exc)
        add_list[0].u_z_options.z_options.z_exception = 1;
    else
        add_list[0].u_z_options.z_options.z_exception = 0;
    ferr = BFILE_COMPLETE_SET_((short *) add_list,
                               1,
                               &list_inx);
    TEST_CHK_FEOK(ferr);
    ferr = BFILE_COMPLETE_GETINFO_((short *) info_list,
                                   MAX_INFO_LIST,
                                   &info_count);
    TEST_CHK_FEOK(ferr);
    assert(info_count == count);
}
Exemplo n.º 4
0
void start_backup(int nid) {
    int ferr;

    nid = nid; // no-warn
    ferr = msg_mon_get_process_info(NULL, &nid, &gpeer_pid);
    TEST_CHK_FEOK(ferr);
    gpeer_nid = 1 - nid;
    gpeer_pid = -1;
    myprintf("starting backup process with open.\n");
    ferr = msg_mon_start_process(gprog,                  // prog
                                 gname,                  // name
                                 NULL,                   // ret name
                                 gargc,
                                 gargp,
                                 TPT_REF(gpeer_phandle),
                                 0,                      // open
                                 &gpeer_oid,
                                 MS_ProcessType_Generic, // type
                                 0,                      // priority
                                 0,                      // debug
                                 1,                      // backup
                                 &gpeer_nid,             // nid
                                 &gpeer_pid,             // pid
                                 NULL,                   // infile
                                 NULL);                  // outfile
    TEST_CHK_FEOK(ferr);
    ferr = msg_mon_open_process_backup(gname,
                                       TPT_REF(gpeer_phandle),
                                       &gpeer_oid);
    TEST_CHK_FEOK(ferr);
    myprintf("after start_backup - peer p-id=%d/%d\n",
             gpeer_nid, gpeer_pid);
    mypairinfo(true);
}
Exemplo n.º 5
0
int main(int argc, char *argv[]) {
    bool attach = false;
    int  ferr;
    int  level = MS_Mon_ShutdownLevel_Normal;
    TAD  zargs[] = {
      { "-attach",    TA_Bool, TA_NOMAX,    &attach    },
      { "-level",     TA_Int,  TA_NOMAX,    &level     },
      { "-server",    TA_Ign,  TA_NOMAX,    NULL       },
      { "",           TA_End,  TA_NOMAX,    NULL       }
    };

    arg_proc_args(zargs, false, argc, argv);
    if (attach)
        msfs_util_init_attach(&argc,
                              &argv,
                              msg_debug_hook,
                              false,
                              (char *) "$cli"); // cast
    else
        msfs_util_init(&argc, &argv, msg_debug_hook);
    util_test_start(true);
    ferr = msg_mon_process_startup(false);             // system messages
    TEST_CHK_FEOK(ferr);
    printf("using shutdown level=%d\n", level);
    ferr = msg_mon_shutdown(level);
    TEST_CHK_FEOK(ferr);
    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    util_test_finish(true);
    return 0;
}
Exemplo n.º 6
0
void *thread_cli(void *arg) {
    _xcc_status cc;
    int         count_read;
    int         ferr;
    short       filenum;
    short       filenum2;
    int         inx;

    arg = arg; // touch

    ferr = file_enable_open_cleanup();
    TEST_CHK_FEOK(ferr);
    ferr = BFILE_OPEN_((char *) sname, 4, &filenum,
                       0, 0, 0, 0, 0, 0, 0, NULL);
    TEST_CHK_FEOK(ferr);
    ferr = BFILE_OPEN_((char *) sname, 4, &filenum2,
                       0, 0, 0, 0, 0, 0, 0, NULL);
    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,
                         (int) (strlen(send_buffer) + 1), // cast
                         BUFSIZ,
                         &count_read,
                         0);
        TEST_CHK_CCEQ(cc);
        printf("%s\n", send_buffer);
    }
    ferr = BFILE_CLOSE_(filenum2);
    TEST_CHK_FEOK(ferr);
    return NULL;
}
Exemplo n.º 7
0
void *thread_test_fun(void *arg) {
    void        *buf;
    _bcc_status  cc;
    int          count_read;
    int          count_xferred;
    int          ferr;
    int          inx;
    SB_Tag_Type  tag1;
    short        tfilenum;
    int          timeout = -1;

    arg = arg; // touch
    ferr = BFILE_OPEN_((char *) sname, 4, &filenum,
                       0, 0, 1,  // nowait
                       0,
                       0x4400,   // nowait-open/tsc
                       0, 0, NULL);
    TEST_CHK_FEOK(ferr);
    tfilenum = get_fn(filenum);
    cc = BAWAITIOXTS(&tfilenum,
                     &buf,
                     &count_xferred,
                     &tag1,
                     timeout,
                     NULL);
    TEST_CHK_CCEQ(cc);
    assert(tag1 == -30);

    for (inx = 0; inx < loop; inx++) {
        sprintf(send_buffer, "hello, greetings from %s, inx=%d",
                my_name, inx);
        cc = BWRITEREADX(filenum,
                         send_buffer,
                         (int) (strlen(send_buffer) + 1), // cast
                         BUFSIZ,
                         &count_read,
                         0);
        TEST_CHK_CCEQ(cc);
        tfilenum = get_fn(filenum);
        cc = BAWAITIOXTS(&tfilenum,
                         &buf,
                         &count_xferred,
                         &tag1,
                         timeout,
                         NULL);
        TEST_CHK_CCEQ(cc);
        printf("%s\n", send_buffer);
    }

    // let thread-exit close
    if (!thread) {
        ferr = BFILE_CLOSE_(filenum, 0);
        TEST_CHK_FEOK(ferr);
    }

    return NULL;
}
Exemplo n.º 8
0
int main(int argc, char *argv[]) {
    bool done = false;
    int  ferr;
    int  recvbuf[3];

    sprintf(gprog, "%s/%s", getenv("PWD"), argv[0]);
    ferr = msfs_util_init_role(false, &argc, &argv, msg_debug_hook);
    assert(ferr == XZFIL_ERR_OK);
    ferr = msg_mon_process_startup(true); // system messages
    assert(ferr == XZFIL_ERR_OK);
    ferr = msg_mon_get_my_process_name(gname, sizeof(gname));
    assert(ferr == XZFIL_ERR_OK);
    msg_mon_enable_mon_messages(true); // get mon messages
    gargc = argc; // after msg_init - it removes args
    gargp = argv;

    if (is_backup()) {
        strcpy(gdisplay_name, gname);
        strcat(gdisplay_name, "-B");
        myprintf("We are the backup process.\n");
        gim_backup = true;
        while (!gtakeover) {
            int len = sizeof(recvbuf);
            ferr = checkpoint(recvbuf, &len);
            if (ferr == XZFIL_ERR_OK)
                process_request(recvbuf);
        }
        myprintf("The backup is now the primary process.\n");
        strcpy(gdisplay_name, gname);
        strcat(gdisplay_name, "-P");
    } else {
        strcpy(gdisplay_name, gname);
        strcat(gdisplay_name, "-P");
        myprintf("We are the primary process.\n");
    }
    start_backup(-1);

    while (!done) {
        int len = sizeof(recvbuf);
        if (!recv(recvbuf, &len)) {
            done = process_request(recvbuf);
            checkpoint(recvbuf, &len);
        }
    }

    ferr = msg_mon_process_close();
    TEST_CHK_FEOK(ferr);

    if (gpeer_nid >= 0) {
        myprintf("stopping backup.\n");
        ferr = msg_mon_stop_process((char*)"", gpeer_nid, gpeer_pid);
        TEST_CHK_FEOK(ferr);
    }
    myprintf("sending exit process message.\n");
    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
}
Exemplo n.º 9
0
int main(int argc, char *argv[]) {
    int     ferr;
    int     inx;
    int     len;
    int     lerr;
    int     loop = 10;
    char    my_name[BUFSIZ];
    char    recv_buffer[BUFSIZ];
    short   recv_buffer2[BUFSIZ];
    MS_SRE  sre;
    TAD     zargs[] = {
      { "-loop",      TA_Int,  TA_NOMAX,    &loop      },
      { "-server",    TA_Ign,  TA_NOMAX,    NULL       },
      { "",           TA_End,  TA_NOMAX,    NULL       }
    };

    msfs_util_init_role(false, &argc, &argv, msg_debug_hook);
    arg_proc_args(zargs, false, argc, argv);
    ferr = msg_mon_process_startup(true); // system messages
    TEST_CHK_FEOK(ferr);
    util_gethostname(my_name, sizeof(my_name));

    for (inx = 0; inx < loop/2; 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_READCTRL_(sre.sre_msgId,  // msgid
                              recv_buffer2,   // reqctrl
                              1);             // bytecount
        util_check("XMSG_READCTRL_", ferr);
        ferr = XMSG_READDATA_(sre.sre_msgId,  // msgid
                              recv_buffer,    // reqdata
                              BUFSIZ);        // bytecount
        util_check("XMSG_READDATA_", ferr);
        strcat(recv_buffer, "- reply from ");
        strcat(recv_buffer, my_name);
        len = (int) strlen(recv_buffer) + 1;
        XMSG_REPLY_(sre.sre_msgId,       // msgid
                    recv_buffer2,        // replyctrl
                    sre.sre_reqCtrlSize, // replyctrlsize
                    recv_buffer,         // replydata
                    (ushort) len,        // replydatasize
                    0,                   // errorclass
                    NULL);               // newphandle
    }
    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    return 0;
}
Exemplo n.º 10
0
void pp_start_backup(int nid) {
    int ferr;

    if (gshutdown) {
        if (gverbosepp)
            pp_printf("NOT starting backup process - shutdown.\n");
        return;
    }

    nid = nid; // no-warn
    ferr = msg_mon_get_process_info(NULL, &nid, &gpeer_pid);
    TEST_CHK_FEOK(ferr);
    for (;;) {
        gpeer_nid = -1;
        if (gnid == 1)
            gpeer_nid = 2;
        else
            gpeer_nid = 1;
        gpeer_pid = -1;
        if (gverbosepp)
            pp_printf("starting backup process with open, nid=%d.\n", gpeer_nid);
        ferr = msg_mon_start_process(gprog,                  // prog
                                     gname,                  // name
                                     NULL,                   // ret name
                                     gargc,
                                     gargp,
                                     TPT_REF(gpeer_phandle),
                                     0,                      // open
                                     &gpeer_oid,
                                     MS_ProcessType_TSE,     // type
                                     0,                      // priority
                                     0,                      // debug
                                     1,                      // backup
                                     &gpeer_nid,             // nid
                                     &gpeer_pid,             // pid
                                     NULL,                   // infile
                                     NULL);                  // outfile
        if (ferr == XZFIL_ERR_OK)
            break;
        printf("backup did not start error=%d\n", ferr);
        sleep(1);
    }
    TEST_CHK_FEOK(ferr);
    ferr = msg_mon_open_process_backup(gname,
                                       TPT_REF(gpeer_phandle),
                                       &gpeer_oid);
    TEST_CHK_FEOK(ferr);
    if (gverbosepp)
        pp_printf("after start_backup - peer p-id=%d/%d\n",
                  gpeer_nid, gpeer_pid);
    pp_pairinfo(true);
}
Exemplo n.º 11
0
int main(int argc, char *argv[]) {
    bool      client = false;
    int       ferr;
    char      my_name[BUFSIZ];
    int       oid;
    TPT_DECL (phandle);
    TAD       zargs[] = {
      { "-client",    TA_Bool, TA_NOMAX,    &client    },
      { "-server",    TA_Ign,  TA_NOMAX,    NULL       },
      { "",           TA_End,  TA_NOMAX,    NULL       }
    };

    msg_mon_enable_mon_messages(true);
    msfs_util_init(&argc, &argv, msg_debug_hook);
    arg_proc_args(zargs, false, argc, argv);
    util_test_start(client);
    ferr = msg_mon_process_startup(true);           // system messages
    TEST_CHK_FEOK(ferr);
    // process-wait for client/server/shell
    ferr = msfs_util_wait_process_count(MS_ProcessType_Generic, 3, NULL, false);
    TEST_CHK_FEOK(ferr);
    if (client) {
        ferr = msg_mon_open_process((char *) "$srv",      // name
                                    TPT_REF(phandle),
                                    &oid);
        TEST_CHK_FEOK(ferr);
        do_readmsg(); // open message
    } else {
        do_readmsg(); // open message
        ferr = msg_mon_open_process((char *) "$cli",      // name
                                    TPT_REF(phandle),
                                    &oid);
        TEST_CHK_FEOK(ferr);
    }
    util_gethostname(my_name, sizeof(my_name));

    if (client) {
        ferr = msg_mon_close_process(TPT_REF(phandle));
        TEST_CHK_FEOK(ferr);
        ferr = msg_mon_process_close();
        TEST_CHK_FEOK(ferr);
        printf("if there were no asserts, all is well\n");
    } else {
        ferr = msg_mon_process_close();
        TEST_CHK_FEOK(ferr);
        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;
}
Exemplo n.º 12
0
int main(int argc, char *argv[]) {
    int     exit = false;
    int     err;
    int     ferr;
    int     len;
    char    recv_buffer[BUFSIZ];
    BMS_SRE sre;

    ferr = msg_init(&argc, &argv);
    TEST_CHK_FEOK(ferr);
    ferr = msg_mon_process_startup(true);  // system messages?
    TEST_CHK_FEOK(ferr);
    msg_mon_enable_mon_messages(true);

    for (;;) {
        do {
            err = XWAIT(LREQ, -1);
            TEST_CHK_WAITIGNORE(err);
            err = BMSG_LISTEN_((short *) &sre, // sre
                               0,              // listenopts
                               0);             // listenertag
        } while (err == BSRETYPE_NOWORK);
        ferr = BMSG_READDATA_(sre.sre_msgId,  // msgid
                              recv_buffer,    // reqdata
                              BUFSIZ);        // bytecount
        TEST_CHK_FEOK(ferr);
        if ((sre.sre_flags & BSRE_MON)) {
            MS_Mon_Msg *msg = (MS_Mon_Msg *) recv_buffer;
            if (msg->type == MS_MsgType_Close)
                exit = true;
        }
        strcat(recv_buffer, "- reply from server");
        len = (int) strlen(recv_buffer) + 1;
        BMSG_REPLY_(sre.sre_msgId,       // msgid
                    NULL,                // replyctrl
                    0,                   // replyctrlsize
                    recv_buffer,         // replydata
                    len,                 // replydatasize
                    0,                   // errorclass
                    NULL);               // newphandle
        if (exit)
            break;
    }

    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    return 0;
}
Exemplo n.º 13
0
int main(int argc, char *argv[]) {
    int     exit;
    int     ferr;
    int     lerr;
    char    name[BUFSIZ];
    char    recv_buffer[BUFSIZ];
    MS_SRE  sre;

    msfs_util_init_role(false, &argc, &argv, msg_debug_hook);
    ferr = msg_mon_process_startup(true); // system messages
    TEST_CHK_FEOK(ferr);
    msg_mon_enable_mon_messages(true);
    ferr = msg_mon_get_my_process_name(name, sizeof(name));
    TEST_CHK_FEOK(ferr);
    exit = 0;
    while (!exit) {
        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
                              BUFSIZ);        // bytecount
        util_check("XMSG_READDATA_", ferr);
        if (sre.sre_flags & XSRE_MON) {
            MS_Mon_Msg *msg = (MS_Mon_Msg *) recv_buffer;
            printf("srv %s: mon message, type=%d\n", name, msg->type);
            if (msg->type == MS_MsgType_Close)
                exit = 1;
        } else {
            printf("srv %s: NON-mon message\n", name);
        }
        XMSG_REPLY_(sre.sre_msgId,       // msgid
                    NULL,                // replyctrl
                    0,                   // replyctrlsize
                    NULL,                // replydata
                    0,                   // replydatasize
                    0,                   // errorclass
                    NULL);               // newphandle
    }
    printf("server %s shutting down\n", name);
    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    return 0;
}
Exemplo n.º 14
0
void pp_shutdown() {
    int ferr;

    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    exit(0);
}
Exemplo n.º 15
0
int pp_checkpoint(void *buf, int *size) {
    int   ferr;

    if (gim_backup) {
        if (gverbosepp)
            pp_printf("waiting for checkpoint.\n");
        ferr = pp_recv(buf, size);
    } else {
        int            msgid;
        MS_Result_Type results;
        if (gverbosepp)
            pp_printf("sending checkpoint.\n");
        ferr = XMSG_LINK_(TPT_REF(gpeer_phandle),               // phandle
                          &msgid,                      // msgid
                          NULL,                        // reqctrl
                          0,                           // reqctrlsize
                          NULL,                        // replyctrl
                          0,                           // replyctrlmax
                          (char *) buf,                // reqdata
                          (ushort) *size,              // reqdatasize
                          NULL,                        // replydata
                          0,                           // replydatamax
                          0,                           // linkertag
                          0,                           // pri
                          0,                           // xmitclass
                          0);                          // linkopts
        TEST_CHK_FEOK(ferr);
        // ignore checkpoint error
        ferr = XMSG_BREAK_(msgid, (short *) &results, TPT_REF(gpeer_phandle));
        TEST_CHK_FEIGNORE(ferr);
    }
    return ferr;
}
Exemplo n.º 16
0
int main(int argc, char *argv[]) {
    int ferr;

    msfs_util_init(&argc, &argv, msg_debug_hook);
    util_test_start(true);
    ferr = msg_mon_process_startup(true); // system messages
    TEST_CHK_FEOK(ferr);
    ferr = msg_mon_mount_device();
    TEST_CHK_FEOK(ferr);

    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    util_test_finish(true);
    printf("if there were no asserts, all is well\n");
    return 0;
}
Exemplo n.º 17
0
bool is_backup() {
    MS_Mon_Process_Info_Type proc_info;

    int ferr = msg_mon_get_process_info_detail(gname, &proc_info);
    TEST_CHK_FEOK(ferr);
    bool backup = proc_info.backup ? true : false;
    return backup;
}
Exemplo n.º 18
0
int main(int argc, char *argv[]) {
    int                 ferr;
    int                 nid;
    int                 pid;
    MS_Mon_Transid_Type transid;

    msfs_util_init(&argc, &argv, msg_debug_hook);
    util_test_start(true);
    ferr = msg_mon_process_startup(true); // system messages
    TEST_CHK_FEOK(ferr);
    ferr = msg_mon_get_process_info((char *) "", &nid, &pid);
    TEST_CHK_FEOK(ferr);
    ferr = msg_mon_trans_register_tmlib(tm_inherit_tx);
    TEST_CHK_FEOK(ferr);
    TRANSID_SET_SEQ(transid, 1);
    ferr = msg_mon_trans_enlist(nid, pid, transid);
    TEST_CHK_FEOK(ferr);
    ferr = msg_mon_trans_delist(nid, pid, transid);
    TEST_CHK_FEOK(ferr);
    ferr = msg_mon_trans_end(nid, pid, transid);
    TEST_CHK_FEOK(ferr);
    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    util_test_finish(true);
    printf("if there were no asserts, all is well\n");
    return 0;
}
Exemplo n.º 19
0
int main(int argc, char *argv[]) {
    bool  chook = false;
    int   ferr;
    int   loop = 10;
    TAD   zargs[] = {
      { "-chook",     TA_Bool, TA_NOMAX,    &chook     },
      { "-client",    TA_Ign,  TA_NOMAX,    NULL       },
      { "-loop",      TA_Int,  TA_NOMAX,    &loop      },
      { "-maxth",     TA_Int,  MAX_THR,     &maxth     },
      { "-server",    TA_Ign,  TA_NOMAX,    NULL       },
      { "-tol",       TA_Int,  TA_NOMAX,    &to_tol    },
      { "-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);
    if (chook)
        msg_debug_hook("c", "c");
    util_test_start(true);
    ferr = msg_mon_process_startup(true);  // system messages?
    TEST_CHK_FEOK(ferr);
    util_gethostname(my_name, sizeof(my_name));

#if 0 // reproduce bug 1570
    // - add sleep(1) in sb_timer_setitimer when pv_to != 0
#endif
    test_cancel();
    test_timers();
    test_timers_alloc();
    test_thread1();
    test_cancel_cb();
    test_timers_cb();
    test_thread3();
#if 0 // reproduce bug 728
// - must add sleep(1) after call-to-sb_timer_comp_q_remove() in MSG_LISTEN_
    test_thread2();
#endif

    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    util_test_finish(true);
    return 0;
}
Exemplo n.º 20
0
int main(int argc, char *argv[]) {
    int                 ferr;
    MS_MON_DEVICE_STATE mirror;
    MS_MON_DEVICE_STATE primary;

    msfs_util_init(&argc, &argv, msg_debug_hook);
    util_test_start(true);
    ferr = msg_mon_process_startup(true); // system messages
    TEST_CHK_FEOK(ferr);
    ferr = msg_mon_mount_device2(&primary, &mirror);
    printf("primary=%d, mirror=%d\n", primary, mirror);
    TEST_CHK_FEOK(ferr);

    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    util_test_finish(true);
    printf("if there were no asserts, all is well\n");
    return 0;
}
Exemplo n.º 21
0
void do_set_guardian(short filenum, short set_file, int count) {
    short ferr;
    short info_count;
    short list_inx;

    add_list[0].z_fnum_fd = filenum;
    if (set_file)
        add_list[0].u_z_options.z_options.z_set_file = 1;
    else
        add_list[0].u_z_options.z_options.z_set_file = 0;
    add_list[0].u_z_options.z_options.z_filetype = 0;
    ferr = BFILE_COMPLETE_SET_((short *) add_list,
                               1,
                               &list_inx);
    TEST_CHK_FEOK(ferr);
    ferr = BFILE_COMPLETE_GETINFO_((short *) info_list,
                                   MAX_INFO_LIST,
                                   &info_count);
    TEST_CHK_FEOK(ferr);
    assert(info_count == count);
}
Exemplo n.º 22
0
bool is_backup() {
    int                      ferr;
    MS_Mon_Process_Info_Type proc_info;

    ferr = msg_mon_get_process_info_detail(gname, &proc_info);
    TEST_CHK_FEOK(ferr);
    gnid = proc_info.nid;
    gpid = proc_info.pid;
    bool backup = proc_info.backup ? true : false;
    if (backup) {
        ferr = msg_mon_register_death_notification(proc_info.parent_nid,
                                                   proc_info.parent_pid);
        assert(ferr == XZFIL_ERR_OK);
    }
    return backup;
}
Exemplo n.º 23
0
void start_server(int argc, char **argv) {
    int  arg;
    int  disable;
    int  ferr;
    char prog[MS_MON_MAX_PROCESS_PATH];
    char ret_name[MS_MON_MAX_PROCESS_NAME];

    sprintf(prog, "%s/%s", getenv("PWD"), argv[0]);
    for (arg = 0; arg < argc; arg++)
        if (strcmp(argv[arg], "-client") == 0) // start_process
            argv[arg] = (char *) "-server";
    // TODO: remove disable/loop
    disable = msg_test_assert_disable();
    do {
        server_nid = my_nid;
        ferr = msg_mon_start_process(prog,                   // prog
                                     (char *) server_name,   // name
                                     ret_name,               // ret name
                                     argc,
                                     argv,
                                     TPT_REF(server_phandle),
                                     0,                      // open
                                     NULL,                   // oid
                                     MS_ProcessType_Generic, // type
                                     0,                      // priority
                                     0,                      // debug
                                     0,                      // backup
                                     &server_nid,            // nid
                                     &server_pid,            // pid
                                     NULL,                   // infile
                                     NULL);                  // outfile
        if (ferr == XZFIL_ERR_BOUNDSERR) {
            printf("TODO: remove this sleep - BOUNDSERR\n");
            sleep(1);
        }
        if (ferr == XZFIL_ERR_FSERR) {
            printf("TODO: remove this sleep - FSERR\n");
            sleep(1);
        }
    } while ((ferr == XZFIL_ERR_BOUNDSERR) || (ferr == XZFIL_ERR_FSERR));
    TEST_CHK_FEOK(ferr);
    msg_test_assert_enable(disable);
}
Exemplo n.º 24
0
void restart_server() {
    int                       disable;
    int                       ferr;
    MS_Mon_Process_Info_Type  info;
    char                      prog[BUFSIZ];
    TPT_DECL                 (server_phandle);

    ferr = msg_mon_get_process_info_detail((char *) "$srv", &info);
    if (ferr == XZFIL_ERR_OK)
        return; // server is alive
    sprintf(prog, "%s/%s", getenv("PWD"), gargv[0]);
    if (verbose)
        printf("%s - starting server\n", who);
    // TODO: remove disable/loop
    disable = msg_test_assert_disable();
    do {
        ferr = msg_mon_start_process(prog,                   // prog
                                     (char *) "$srv",        // name
                                     NULL,                   // ret name
                                     *gargc,
                                     gargv,
                                     TPT_REF(server_phandle),
                                     0,                      // open
                                     NULL,                   // oid
                                     MS_ProcessType_Generic, // type
                                     0,                      // priority
                                     0,                      // debug
                                     0,                      // backup
                                     NULL,                   // nid
                                     NULL,                   // pid
                                     NULL,                   // infile
                                     NULL);                  // outfile
        if (ferr == XZFIL_ERR_BOUNDSERR) {
            printf("TODO: remove this sleep - $srv already in use\n");
            sleep(1);
        }
    } while (ferr == XZFIL_ERR_BOUNDSERR);
    TEST_CHK_FEOK(ferr);
    msg_test_assert_enable(disable);
}
Exemplo n.º 25
0
void restart_server(int argc, char **argv) {
    int  arg;
    int  disable;
    int  ferr;
    char prog[MS_MON_MAX_PROCESS_PATH];
    char ret_name[MS_MON_MAX_PROCESS_NAME];

    sprintf(prog, "%s/%s", getenv("PWD"), argv[0]);
    for (arg = 0; arg < argc; arg++)
        if (strcmp(argv[arg], "-client") == 0) // start_process
            argv[arg] = (char *) "-server";
    printf("restarting server\n");
    for (int inx = 0; inx < 10; inx++) {
        server_nid = -1;
        disable = msg_test_assert_disable(); // allow for errors in start
        ferr = msg_mon_start_process(prog,                   // prog
                                     srv1,                   // name
                                     ret_name,               // ret name
                                     argc,
                                     argv,
                                     TPT_REF(server_phandle),
                                     0,                      // open
                                     NULL,                   // oid
                                     MS_ProcessType_Generic, // type
                                     0,                      // priority
                                     0,                      // debug
                                     0,                      // backup
                                     &server_nid,            // nid
                                     &server_pid,            // pid
                                     NULL,                   // infile
                                     NULL);                  // outfile
        msg_test_assert_enable(disable);
        if (ferr == XZFIL_ERR_OK) break;
        sleep(1);
        printf("retrying-start\n");
    }
    TEST_CHK_FEOK(ferr);
}
Exemplo n.º 26
0
bool pp_is_backup() {
    bool                     backup;
    int                      disable;
    int                      ferr;
    MS_Mon_Node_Info_Type    node_info;
    MS_Mon_Process_Info_Type proc_info;

    ferr = msg_mon_get_process_info_detail(gname, &proc_info);
    TEST_CHK_FEOK(ferr);
    gnid = proc_info.nid;
    gpid = proc_info.pid;
    backup = proc_info.backup ? true : false;
    if (backup) {
        gpeer_nid = proc_info.parent_nid;
        gpeer_pid = proc_info.parent_pid;
        // set this up in case register fails
        strcpy(gdisplay_name, gname);
        sprintf(&gdisplay_name[strlen(gdisplay_name)],
                "-%d-%d-%d-B", gnid, gpid, getpid());
        if (gverbosepp)
            pp_printf("we are the backup process.\n");
        disable = msg_test_assert_disable();
        ferr = msg_mon_register_death_notification(gpeer_nid, gpeer_pid);
        if (ferr != XZFIL_ERR_OK) {
            if (gverbosepp)
                pp_printf("msg_mon_register_death_notification FAILED ferr=%d.\n", ferr);
            ferr = msg_mon_get_node_info_detail(gpeer_nid, &node_info);
            myassert(ferr == XZFIL_ERR_OK);
            if (gverbosepp)
                pp_printf("node-state=%d.\n", node_info.node[0].state);
            if (node_info.node[0].state == MS_Mon_State_Shutdown)
                gshutdown = true;
        }
        msg_test_assert_enable(disable);
    }
    return backup;
}
Exemplo n.º 27
0
int main(int argc, char *argv[]) {
    int        ferr;
    TPT_DECL2 (phandle,MAX_SERVERS);
    int        inx;
    int        lerr;
    int        loop = 10;
    int        max;
    int        maxsp = 1;
    int        oid;
    int        pinx;
    MS_SRE     sre;
    bool       verbose = false;
    TAD        zargs[] = {
      { "-client",    TA_Bool, TA_NOMAX,    &client    },
      { "-loop",      TA_Int,  TA_NOMAX,    &loop      },
      { "-maxcp",     TA_Int,  MAX_CLIENTS, &maxcp     },
      { "-maxsp",     TA_Int,  MAX_SERVERS, &maxsp     },
      { "-server",    TA_Ign,  TA_NOMAX,    NULL       },
      { "-v",         TA_Bool, TA_NOMAX,    &verbose   },
      { "",           TA_End,  TA_NOMAX,    NULL       }
    };

    ferr = msg_init(&argc, &argv);
    TEST_CHK_FEOK(ferr);
    msfs_util_init_fs(&argc, &argv, msg_debug_hook);
    arg_proc_args(zargs, false, argc, argv);
    if (maxcp < 0)
        maxcp = 1;
    if (maxsp < 0)
        maxsp = 1;
    ferr = msg_mon_process_startup(!client);  // system messages?
    TEST_CHK_FEOK(ferr);
    if (!client)
        msg_mon_enable_mon_messages(true);
    ferr = msg_mon_get_my_process_name(my_name, BUFSIZ);
    TEST_CHK_FEOK(ferr);

    // process-wait for clients/servers/shell
    ferr = msfs_util_wait_process_count(MS_ProcessType_Generic,
                                        maxcp + maxsp + 1,
                                        NULL,
                                        verbose);
    TEST_CHK_FEOK(ferr);
    sleep(3); // wait for all process_count's to complete
    if (client) {
        pinx = atoi(&my_name[4]);
        assert(pinx >= 0);
        printf("loop=%d\n", loop);
        for (inx = 0; inx < loop; inx++) {
            for (pinx = 0; pinx < maxsp; pinx++) {
                sprintf(serv, "$srv%d", pinx);
                ferr = msg_mon_open_process(serv,
                                            TPT_REF2(phandle,pinx),
                                            &oid);
                TEST_CHK_FEOK(ferr);
            }
            for (pinx = 0; pinx < maxsp; pinx++) {
                ferr = msg_mon_close_process(TPT_REF2(phandle,pinx));
                TEST_CHK_FEOK(ferr);
                if (verbose)
                    printf("%s-close-count=%d\n", my_name, inx);
            }
        }
    } else {
        max = 2 * maxcp * loop;
        for (inx = 0; inx < max; 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_READCTRL_(sre.sre_msgId,        // msgid
                                  recv_buffer2,         // reqctrl
                                  sre.sre_reqCtrlSize); // bytecount
            util_check("XMSG_READCTRL_", ferr);
            ferr = XMSG_READDATA_(sre.sre_msgId,        // msgid
                                  recv_buffer,          // reqdata
                                  sre.sre_reqDataSize); // bytecount
            util_check("XMSG_READDATA_", ferr);
            XMSG_REPLY_(sre.sre_msgId,         // msgid
                        recv_buffer2,          // replyctrl
                        sre.sre_reqCtrlSize,   // replyctrlsize
                        recv_buffer,           // replydata
                        sre.sre_reqDataSize,   // replydatasize
                        1,                     // errorclass
                        NULL);                 // newphandle
            if (verbose)
                printf("%s-count=%d\n", my_name, inx);
        }
        sleep(5);
    }

    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    util_test_finish(client);
    return 0;
}
Exemplo n.º 28
0
int main(int argc, char *argv[]) {
    bool            exit;
    int             ferr;
    int             lerr;
    int             msgid;
    int             nid;
    int             oid;
    int             pid;
    TPT_DECL       (phandle);
    char            recv_buffer[BUFSIZ];
    short           recv_buffer2[BUFSIZ];
    MS_Result_Type  results;
    MS_SRE          sre;

    ferr = msfs_util_init_role(true, &argc, &argv, msg_debug_hook);
    TEST_CHK_FEOK(ferr);
    util_test_start(true);
    ferr = msg_mon_process_startup(true); // system messages
    TEST_CHK_FEOK(ferr);
    msg_mon_enable_mon_messages(true);
    printf("cli: opening server\n");
    ferr = msg_mon_get_process_info((char *) "$srv", &nid, &pid);
    TEST_CHK_FEOK(ferr);
    printf("cli: server opened\n");
    ferr = msg_mon_open_process((char *) "$srv",      // name
                                TPT_REF(phandle),
                                &oid);
    TEST_CHK_FEOK(ferr);
    exit = false;
    while (!exit) {
        lerr = XWAIT(LREQ, -1);
        TEST_CHK_WAITIGNORE(lerr);
        for (;;) {
            lerr = XMSG_LISTEN_((short *) &sre, // sre
                                0,              // listenopts
                                0);             // listenertag
            if (lerr == XSRETYPE_NOWORK)
                break;
            ferr = XMSG_READDATA_(sre.sre_msgId,  // msgid
                                  recv_buffer,    // reqdata
                                  BUFSIZ);        // bytecount
            util_check("XMSG_READDATA_", ferr);
            if (sre.sre_flags & XSRE_MON) {
                MS_Mon_Msg *msg = (MS_Mon_Msg *) recv_buffer;
                printf("cli: mon message, type=%d\n", msg->type);
                if (msg->type == MS_MsgType_Open) {
                    ferr = msg_mon_get_process_info((char *) "$srv", &nid, &pid);
                    TEST_CHK_FEOK(ferr);
                    assert(msg->u.open.nid == nid);
                    assert(msg->u.open.pid == pid);
                    assert(strcasecmp(msg->u.open.target_process_name, "$srv") == 0);
                    exit = true;
                }
            } else {
                printf("cli: NON-mon message\n");
            }
            XMSG_REPLY_(sre.sre_msgId,       // msgid
                        NULL,                // replyctrl
                        0,                   // replyctrlsize
                        NULL,                // replydata
                        0,                   // replydatasize
                        0,                   // errorclass
                        NULL);               // newphandle
        }
    }
    printf("cli: sending message to server\n");
    ferr = XMSG_LINK_(TPT_REF(phandle),            // phandle
                      &msgid,                      // msgid
                      NULL,                        // reqctrl
                      0,                           // reqctrlsize
                      recv_buffer2,                // replyctrl
                      1,                           // replyctrlmax
                      NULL,                        // reqdata
                      0,                           // reqdatasize
                      recv_buffer,                 // replydata
                      BUFSIZ,                      // 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);
    exit = false;
    while (!exit) {
        lerr = XWAIT(LREQ, -1);
        for (;;) {
            lerr = XMSG_LISTEN_((short *) &sre, // sre
                                0,              // listenopts
                                0);             // listenertag
            if (lerr == XSRETYPE_NOWORK)
                break;
            ferr = XMSG_READDATA_(sre.sre_msgId,  // msgid
                                  recv_buffer,    // reqctrl
                                  BUFSIZ);        // bytecount
            util_check("XMSG_READDATA_", ferr);
            if (sre.sre_flags & XSRE_MON) {
                MS_Mon_Msg *msg = (MS_Mon_Msg *) recv_buffer;
                printf("cli: mon message, type=%d\n", msg->type);
                if (msg->type == MS_MsgType_ProcessDeath) {
                    assert(msg->u.death.nid == nid);
                    assert(msg->u.death.pid == pid);
                    exit = true;
                }
            } else
                printf("cli: NON-mon message\n");
            XMSG_REPLY_(sre.sre_msgId,       // msgid
                        NULL,                // replyctrl
                        0,                   // replyctrlsize
                        NULL,                // replydata
                        0,                   // replydatasize
                        0,                   // errorclass
                        NULL);               // newphandle
        }
    }
    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    util_test_finish(true);
    return 0;
}
Exemplo n.º 29
0
int main(int argc, char *argv[]) {
    bool          chook = false;
    int           client = false;
    int           dinx;
    int           disable;
    int           ferr;
    int           inx;
    char          lname[10];
    bool          mq = false;
    int           oid;
    void         *res;
    bool          rnd = false;
    int           sleept;
    int           snid;
    int           spid;
    int           status;
    TAD           zargs[] =  {
        { "-chook",     TA_Bool, TA_NOMAX,    &chook      },
        { "-client",    TA_Bool, TA_NOMAX,    &client     },
        { "-dloop",     TA_Int,  MAX_OUT,     &gdloop     },
        { "-dsize",     TA_Int,  TA_NOMAX,    &gdsize     },
        { "-ksleep",    TA_Int,  TA_NOMAX,    &gksleep    },
        { "-loop",      TA_Int,  TA_NOMAX,    &gloop      },
        { "-maxc",      TA_Int,  MAX_THR,     &gmaxc      },
        { "-maxs",      TA_Int,  MAX_THR,     &gmaxs      },
        { "-mq",        TA_Bool, TA_NOMAX,    &mq         },
        { "-nodecycle", TA_Bool, TA_NOMAX,    &gnodecycle },
        { "-rnd",       TA_Bool, TA_NOMAX,    &rnd        },
        { "-server",    TA_Ign,  TA_NOMAX,    NULL        },
        { "-v",         TA_Bool, TA_NOMAX,    &gverbose   },
        { "-vpp",       TA_Bool, TA_NOMAX,    &gverbosepp },
        { "",           TA_End,  TA_NOMAX,    NULL        }
    };

    arg_proc_args(zargs, false, argc, argv);
    if (client && chook)
        test_debug_hook("c", "c");
    msfs_util_init(&argc, &argv, msg_debug_hook);
    util_test_start(client);
    if (!client)
        setup_sig();
    ferr = msg_mon_process_startup(true);             // system messages
    TEST_CHK_FEOK(ferr);
    gargc = argc; // after msg_init - it removes args
    gargp = argv;
    sprintf(gprog, "%s/%s", getenv("PWD"), argv[0]);
    gvirtual = (getenv("SQ_VIRTUAL_NODES") != NULL);
    ferr = msg_mon_get_my_process_name(gname, sizeof(gname));
    assert(ferr == XZFIL_ERR_OK);
    if (client) {
        msg_mon_enable_mon_messages(true); // get mon messages
        ferr = msg_mon_get_process_info(NULL, &gcnid, NULL);
        assert(ferr == XZFIL_ERR_OK);
        ferr = XCONTROLMESSAGESYSTEM(XCTLMSGSYS_SETSENDLIMIT,
                                     (short) (gmaxc * gdloop));
        assert(ferr == XZFIL_ERR_OK);
        srand(1);
        sleept = 1000;
        start_server(argc, argv);
        sleep(1);
        ferr = msg_mon_open_process((char *) "$srv",              // name
                                    TPT_REF(gphandle),
                                    &oid);
        TEST_CHK_FEOK(ferr);
        ferr = XPROCESSHANDLE_DECOMPOSE_(TPT_REF(gphandle), &snid, &spid);
        TEST_CHK_FEOK(ferr);
        for (inx = 0; inx < gloop; inx++) {
            if (mq)
                printf("client: inx=%d\n", inx);
            for (dinx = 0; dinx < gmaxc; dinx++) {
                sprintf(lname, "c%d", dinx);
                gthrc[dinx] = new MyThread(client_thr, lname, dinx);
            }
            disable = msg_test_assert_disable();
            for (dinx = 0; dinx < gmaxc; dinx++)
                gthrc[dinx]->start();
            if (rnd)
                sleept = (int) ((float) gksleep * (rand_r(&gseed) / (RAND_MAX + 1.0)));
            usleep(sleept);
            for (dinx = 0; dinx < gmaxc; dinx++) {
                status = gthrc[dinx]->join(&res);
                TEST_CHK_STATUSOK(status);
                if (gverbose)
                    printf("joined with client %d\n", dinx);
            }
            for (dinx = 0; dinx < gmaxc; dinx++)
                delete gthrc[dinx];
            msg_test_assert_enable(disable);
        }
    } else {
        msg_mon_enable_mon_messages(true); // get mon messages
        ferr = XCONTROLMESSAGESYSTEM(XCTLMSGSYS_SETRECVLIMIT,
                                     XMAX_SETTABLE_RECVLIMIT);
        assert(ferr == XZFIL_ERR_OK);
        pp_init();
        if (!gshutdown) {
            for (dinx = 0; dinx < gmaxs; dinx++) {
                char lname[10];
                sprintf(lname, "s%d", dinx);
                gthrs[dinx] = new SB_Thread::Thread(server_thr, lname);
            }
            for (dinx = 0; dinx < gmaxs; dinx++)
                gthrs[dinx]->start();
            for (dinx = 0; dinx < gmaxs; dinx++) {
                status = gthrs[dinx]->join(&res);
                TEST_CHK_STATUSOK(status);
                if (gverbose)
                    printf("joined with server %d\n", dinx);
            }
        }
        if (gverbosepp)
            pp_printf("exit pid=%d\n", getpid());
    }

    if (client) {
        sleep(1);
        ferr = msg_mon_close_process(TPT_REF(gphandle));
        TEST_CHK_FEOK(ferr);
    }
    ferr = msg_mon_process_shutdown();
    TEST_CHK_FEOK(ferr);
    util_test_finish(client);
    return 0;
}
Exemplo n.º 30
0
void start_server(int argc, char **argv) {
    int         arg;
    char        device[MS_MON_MAX_PROCESS_PATH+10];
    int         disable;
    bool        done;
    int         ferr;
    char       *nodes;
    char        prog[MS_MON_MAX_PROCESS_PATH];
    char        server_name[10];
    int         server_nid;
    int         server_pid;
    const char *z0;
    const char *z1;

    strcpy(server_name, "$srv");
    nodes = getenv("SQ_VIRTUAL_NODES");
    if ((nodes != NULL) && (atoi(nodes) > 2)) {
        z0 = "1";
        z1 = "2";
    } else {
        z0 = "0";
        z1 = "1";
    }
    ferr = msg_mon_reg_set(MS_Mon_ConfigType_Process,    // type
                           server_name,                         // group
                           (char *) "ZONE",                     // key
                           (char *) z0);                        // value
    TEST_CHK_FEOK(ferr);
    ferr = msg_mon_reg_set(MS_Mon_ConfigType_Process,    // type
                           server_name,                         // group
                           (char *) "ZONE-B",                   // key
                           (char *) z1);                        // value
    TEST_CHK_FEOK(ferr);
    sprintf(device, "%s/%s", getenv("PWD"), server_name);
    ferr = msg_mon_reg_set(MS_Mon_ConfigType_Process,    // type
                           server_name,                         // group
                           (char *) "DEVICE",                   // key
                           device);                             // value
    TEST_CHK_FEOK(ferr);
    sprintf(prog, "%s/%s", getenv("PWD"), argv[0]);
    for (arg = 0; arg < argc; arg++)
        if (strcmp(argv[arg], "-client") == 0) // start_process
            argv[arg] = (char *) "-server";
    // TODO: remove disable/loop
    disable = msg_test_assert_disable();
    do {
        done = true;
        server_nid = -1;
        ferr = msg_mon_start_process(prog,                   // prog
                                     server_name,            // name
                                     NULL,                   // ret name
                                     argc,
                                     argv,
                                     NULL,                   // phandle
                                     0,                      // open
                                     NULL,                   // oid
                                     MS_ProcessType_TSE,     // type
                                     0,                      // priority
                                     0,                      // debug
                                     0,                      // backup
                                     &server_nid,            // nid
                                     &server_pid,            // pid
                                     NULL,                   // infile
                                     NULL);                  // outfile
        if (ferr == XZFIL_ERR_BOUNDSERR) {
            printf("TODO: remove this sleep - $srv already in use\n");
            sleep(1);
            done = false;
        } else if (ferr == XZFIL_ERR_FSERR) {
            printf("TODO: remove this sleep - $srv already in use\n");
            sleep(1);
            done = false;
        }
    } while (!done);
    TEST_CHK_FEOK(ferr);
    msg_test_assert_enable(disable);
}