END_TEST START_TEST(test_connect_to_trqauthd) { int rc; int sock; socket_success = true; close_success = true; connect_success = true; rc = connect_to_trqauthd(&sock); fail_unless(rc == PBSE_NONE, "connect_to_trqauthd failed", rc); socket_success = false; rc = connect_to_trqauthd(&sock); fail_unless(rc == PBSE_SOCKET_FAULT, "connect_to_trqauthd failed", rc); socket_success = true; connect_success = false; rc = connect_to_trqauthd(&sock); fail_unless(rc == PBSE_SOCKET_FAULT, "connect_to_trqauthd failed", rc); }
int terminate_trqauthd() { int rc = PBSE_NONE; int sock = -1; char write_buf[MAX_LINE]; char *read_buf = NULL; char log_buf[MAX_BUF]; long long read_buf_len = MAX_LINE; long long ret_code; uid_t myrealuid; pid_t mypid; struct passwd *pwent; myrealuid = getuid(); pwent = getpwuid(myrealuid); if (pwent == NULL) { snprintf(log_buf, MAX_BUF, "cannot get account info: uid %d, errno %d (%s)\n", (int)myrealuid, errno, strerror(errno)); log_event(PBSEVENT_ADMIN, PBS_EVENTCLASS_SERVER, __func__, log_buf); return(PBSE_SYSTEM); } mypid = getpid(); sprintf(write_buf, "%d|%d|%s|%d|", TRQ_DOWN_TRQAUTHD, (int )strlen(pwent->pw_name), pwent->pw_name, mypid); if((rc = connect_to_trqauthd(&sock)) != PBSE_NONE) { fprintf(stderr, "Could not connect to trqauthd. trqauthd may already be down\n"); } else if ((rc = socket_write(sock, write_buf, strlen(write_buf))) < 0) { fprintf(stderr, "Failed to send termnation request to trqauthd: %d\n", rc); } else if ((rc = socket_read_num(sock, &ret_code)) != PBSE_NONE) { fprintf(stderr, "trqauthd did not give proper response. Check to see if traquthd has terminated: %d\n", rc); } else if (ret_code != PBSE_NONE) { rc = socket_read_str(sock, &read_buf, &read_buf_len); fprintf(stderr, "trqauthd not shutdown. %s\n", read_buf); } else if ((rc = socket_read_str(sock, &read_buf, &read_buf_len)) != PBSE_NONE) { fprintf(stderr, "trqauthd did not respond. Check to see if trqauthd has terminated: %d\n", rc); } else if( (rc = connect_to_trqauthd(&sock)) != PBSE_NONE) /* We do this because the accept loop on trqauthd is still waiting for a command before it realizes it is terminated */ { fprintf(stdout, "\ntrqauthd has been terminated\n"); } else { fprintf(stdout, "\ntrqauthd has been terminated\n"); } if (sock != -1) close(sock); if (read_buf != NULL) { free(read_buf); } return(rc); }