Exemple #1
0
/**
 * Test RP processing of an invalid messages.
 */
static void
rp_msg_neg_test(void **state)
{
    int rc = 0;
    rp_session_t *session = NULL;
    Sr__Msg *msg = NULL;

    rp_ctx_t *rp_ctx = *state;
    assert_non_null(rp_ctx);

    ac_ucred_t credentials = { 0 };
    credentials.e_uid = getuid();
    credentials.e_gid = getgid();

    /* generate some request */
    rc = sr_gpb_req_alloc(SR__OPERATION__GET_ITEM, 123456, &msg);
    assert_int_equal(rc, SR_ERR_OK);
    assert_non_null(msg);

    /* process the message with NULL session */
    rc = rp_msg_process(rp_ctx, NULL, msg);
    assert_int_equal(rc, SR_ERR_OK);

    /* create a session */
    rc = rp_session_start(rp_ctx, 123456, &credentials, SR_DS_STARTUP, false, &session);
    assert_int_equal(rc, SR_ERR_OK);
    assert_non_null(session);

    /* RP does not implement session start request */
    rc = sr_gpb_req_alloc(SR__OPERATION__SESSION_START, 123456, &msg);
    assert_int_equal(rc, SR_ERR_OK);
    assert_non_null(msg);

    /* process the message */
    rc = rp_msg_process(rp_ctx, session, msg);
    assert_int_equal(rc, SR_ERR_OK);

    /* RP does not implement session start response */
    rc = sr_gpb_resp_alloc(SR__OPERATION__SESSION_START, 123456, &msg);
    assert_int_equal(rc, SR_ERR_OK);
    assert_non_null(msg);

    /* process the message */
    rc = rp_msg_process(rp_ctx, session, msg);
    assert_int_equal(rc, SR_ERR_OK);

    /* stop the session */
    rc = rp_session_stop(rp_ctx, session);
    assert_int_equal(rc, SR_ERR_OK);
}
void
test_rp_sesssion_create(rp_ctx_t *rp_ctx, sr_datastore_t datastore, rp_session_t **rp_session_p)
{
    rp_session_t *session = NULL;
    ac_ucred_t *credentials = NULL;
    int rc = SR_ERR_OK;

    credentials = calloc(1, sizeof(*credentials));

    credentials->r_username = getenv("USER");
    credentials->r_uid = getuid();
    credentials->r_gid = getgid();

    rc = rp_session_start(rp_ctx, 123456, credentials, datastore, SR_SESS_DEFAULT, 0, &session);
    assert_int_equal(SR_ERR_OK, rc);

    *rp_session_p = session;
}
Exemple #3
0
/*
 * Test creating 100 RP sessions.
 */
static void
rp_session_test(void **state)
{
    int rc = 0, i = 0;
    rp_session_t *session = NULL;

    ac_ucred_t credentials = { 0 };
    credentials.e_uid = getuid();
    credentials.e_gid = getgid();

    rp_ctx_t *rp_ctx = *state;
    assert_non_null(rp_ctx);

    for (i = 0; i < 100; i++) {
        /* create a session */
        rc = rp_session_start(rp_ctx, 123456, &credentials, SR_DS_STARTUP, false, &session);
        assert_int_equal(rc, SR_ERR_OK);
        assert_non_null(session);

        /* stop the session */
        rc = rp_session_stop(rp_ctx, session);
        assert_int_equal(rc, SR_ERR_OK);
    }
}