1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #ifndef CLI_STAGES_H
16 #define CLI_STAGES_H
17
18 #include <src/include/pmix_config.h>
19 #include <signal.h>
20 #include <fcntl.h>
21 #include <sys/types.h>
22 #include <sys/socket.h>
23 #include <sys/stat.h>
24 #include <sys/un.h>
25 #include <sys/wait.h>
26 #include <sys/time.h>
27 #include <time.h>
28 #include <errno.h>
29 #include "src/include/pmix_globals.h"
30 #include "pmix_server.h"
31 #include "src/class/pmix_list.h"
32 #include "src/mca/ptl/base/base.h"
33
34 #include "test_common.h"
35
36
37 typedef enum {
38 CLI_UNINIT, CLI_FORKED, CLI_CONNECTED, CLI_FIN, CLI_DISCONN, CLI_TERM, CLI_UNDEF
39 } cli_state_t;
40
41 typedef struct {
42 pmix_list_t modex;
43 pid_t pid;
44 int sd;
45 pmix_event_t *ev;
46 cli_state_t state;
47 cli_state_t next_state[CLI_TERM+1];
48 pmix_rank_t rank;
49 char *ns;
50 } cli_info_t;
51
52 extern cli_info_t *cli_info;
53 extern int cli_info_cnt;
54 extern bool test_abort;
55
56 int cli_rank(cli_info_t *cli);
57 void cli_init(int nprocs);
58 void cli_connect(cli_info_t *cli, int sd, struct event_base * ebase, event_callback_fn callback);
59 void cli_finalize(cli_info_t *cli);
60 void cli_disconnect(cli_info_t *cli);
61 void cli_terminate(cli_info_t *cli);
62 void cli_cleanup(cli_info_t *cli);
63 void cli_wait_all(double timeout);
64 void cli_kill_all(void);
65
66 bool test_terminated(void);
67
68 void errhandler(size_t evhdlr_registration_id,
69 pmix_status_t status,
70 const pmix_proc_t *source,
71 pmix_info_t info[], size_t ninfo,
72 pmix_info_t results[], size_t nresults,
73 pmix_event_notification_cbfunc_fn_t cbfunc,
74 void *cbdata);
75
76 void op_callbk(pmix_status_t status,
77 void *cbdata);
78
79 void errhandler_reg_callbk (pmix_status_t status,
80 size_t errhandler_ref,
81 void *cbdata);
82
83 #endif