Exemple #1
0
int
ndmca_test_check_expect (struct ndmconn *conn, int rc, ndmp9_error expect_err)
{
	ndmp9_error		errs[2];

	errs[0] = expect_err;
	errs[1] = -1;

	return ndmca_test_check_expect_errs (conn, rc, errs);
}
Exemple #2
0
int
ndmca_tt_basic_read (struct ndm_session *sess)
{
	int		rc, ix;
	char		buf[2048];
	ndmp9_error	expect_errs[5];

	ndmca_test_phase (sess, "T-BR", "Tape Read Basics");

	rc = ndmca_test_tape_read (sess, NDMP9_DEV_NOT_OPEN_ERR, buf, 1024);
	if (rc) return rc;


	/*
	 * Read w/ bogus lengths -- mode=READ_MODE
	 */
	rc = ndmca_test_tape_open(sess,NDMP9_NO_ERR,0,NDMP9_TAPE_READ_MODE);
	if (rc) return rc;

	/* read/len=0 MUST be NDMP[23]_NO_ERR or NDMP[23]_ILLEGAL_ARGS */
	/* read/len=0 MUST be NDMP4_NO_ERR */
	ix = 0;
	if (sess->plumb.tape->protocol_version < 4) {
		expect_errs[ix++] = NDMP9_ILLEGAL_ARGS_ERR;
	}
	expect_errs[ix++] = NDMP9_NO_ERR;
	expect_errs[ix++] = -1;

	rc = ndmca_tape_read (sess, buf, 0);

	rc = ndmca_test_check_expect_errs (sess->plumb.tape, rc, expect_errs);
	if (rc) return rc;

	rc = ndmca_test_tape_read(sess,NDMP9_ILLEGAL_ARGS_ERR,buf,0x80000000);
	if (rc) return rc;

	rc = ndmca_test_tape_mtio (sess, NDMP9_NO_ERR, NDMP9_MTIO_REW, 1, 0);
	if (rc) return rc;

	rc = ndmca_test_tape_close (sess, NDMP9_NO_ERR);
	if (rc) return rc;

	/*
	 * Read works -- mode=WRITE_MODE (just to mix it up)
	 */
	rc = ndmca_test_tape_open(sess,NDMP9_NO_ERR,0,NDMP9_TAPE_RDWR_MODE);
	if (rc) return rc;

	rc = ndmca_test_tape_read (sess, NDMP9_NO_ERR, buf, 1024);
	if (rc) return rc;

	rc = ndmca_test_tape_read (sess, NDMP9_EOF_ERR, buf, 1024);
	if (rc) return rc;

	rc = ndmca_test_tape_mtio (sess, NDMP9_NO_ERR, NDMP9_MTIO_REW, 1, 0);
	if (rc) return rc;

	rc = ndmca_test_tape_close (sess, NDMP9_NO_ERR);
	if (rc) return rc;


	/*
	 * Read works w/ oversize -- mode=READ_MODE (just to mix it up)
	 */
	rc = ndmca_test_tape_open(sess,NDMP9_NO_ERR,0,NDMP9_TAPE_READ_MODE);
	if (rc) return rc;

	rc = ndmca_test_tape_read_2cnt (sess, NDMP9_NO_ERR, buf, 2048, 1024);
	if (rc) return rc;

	rc = ndmca_test_tape_read_2cnt (sess, NDMP9_EOF_ERR, buf, 2048, 1024);
	if (rc) return rc;

	rc = ndmca_test_tape_mtio (sess, NDMP9_NO_ERR, NDMP9_MTIO_REW, 1, 0);
	if (rc) return rc;

	rc = ndmca_test_tape_close (sess, NDMP9_NO_ERR);
	if (rc) return rc;


	/*
	 * Read works w/ undersize -- mode=READ_MODE (just to mix it up)
	 */
	rc = ndmca_test_tape_open(sess,NDMP9_NO_ERR,0,NDMP9_TAPE_READ_MODE);
	if (rc) return rc;

	rc = ndmca_test_tape_read_2cnt (sess, NDMP9_NO_ERR, buf, 512, 512);
	if (rc) return rc;

	rc = ndmca_test_tape_read_2cnt (sess, NDMP9_EOF_ERR, buf, 512, 512);
	if (rc) return rc;

	rc = ndmca_test_tape_mtio (sess, NDMP9_NO_ERR, NDMP9_MTIO_REW, 1, 0);
	if (rc) return rc;

	rc = ndmca_test_tape_close (sess, NDMP9_NO_ERR);
	if (rc) return rc;

	return 0;	/* pass */
}
Exemple #3
0
/*
 * Precedes tt_basic_read() so that we can make a "known" tape.
 */
int
ndmca_tt_basic_write (struct ndm_session *sess)
{
	int		rc, ix;
	char		buf[1024];
	ndmp9_error	expect_errs[5];

	ndmca_test_phase (sess, "T-BW", "Tape Write Basics");

	rc = ndmca_test_tape_write (sess, NDMP9_DEV_NOT_OPEN_ERR, buf, 1024);
	if (rc) return rc;

	/*
	 * Write w/ read-only open mode
	 */
	rc = ndmca_test_tape_open(sess,NDMP9_NO_ERR,0,NDMP9_TAPE_READ_MODE);
	if (rc) return rc;

	rc = ndmca_test_tape_write (sess, NDMP9_PERMISSION_ERR, buf, 1024);
	if (rc) return rc;

	rc = ndmca_test_tape_mtio (sess, NDMP9_NO_ERR, NDMP9_MTIO_REW, 1, 0);
	if (rc) return rc;

	rc = ndmca_test_tape_close (sess, NDMP9_NO_ERR);
	if (rc) return rc;

	/*
	 * Write w/ bogus lengths
	 */
	rc = ndmca_test_tape_open(sess,NDMP9_NO_ERR,0,NDMP9_TAPE_RDWR_MODE);
	if (rc) return rc;

	/* OPEN Question: what does len==0 mean? */
	/* write/len=0 MUST be NDMP[234]_NO_ERR or NDMP[234]_ILLEGAL_ARGS */
	/* write/len=0 MUST be NDMP4_NO_ERR */
	ix = 0;
	if (sess->plumb.tape->protocol_version < 5) {
		expect_errs[ix++] = NDMP9_ILLEGAL_ARGS_ERR;
	}
	expect_errs[ix++] = NDMP9_NO_ERR;
	expect_errs[ix++] = -1;

	rc = ndmca_tape_write (sess, buf, 0);

	rc = ndmca_test_check_expect_errs (sess->plumb.tape, rc, expect_errs);
	if (rc) return rc;

	rc = ndmca_test_tape_mtio (sess, NDMP9_NO_ERR, NDMP9_MTIO_REW, 1, 0);
	if (rc) return rc;

	rc = ndmca_test_tape_close (sess, NDMP9_NO_ERR);
	if (rc) return rc;

	/*
	 * TODO: bogus length
	 */

	/*
	 * Write works
	 */
	rc = ndmca_test_tape_open(sess,NDMP9_NO_ERR,0,NDMP9_TAPE_RDWR_MODE);
	if (rc) return rc;

	rc = ndmca_test_tape_write (sess, NDMP9_NO_ERR, buf, 1024);
	if (rc) return rc;

	rc = ndmca_test_tape_mtio (sess, NDMP9_NO_ERR, NDMP9_MTIO_EOF, 1, 0);
	if (rc) return rc;

	rc = ndmca_test_tape_mtio (sess, NDMP9_NO_ERR, NDMP9_MTIO_REW, 1, 0);
	if (rc) return rc;

	rc = ndmca_test_tape_close (sess, NDMP9_NO_ERR);
	if (rc) return rc;

	return 0;	/* pass */
}