コード例 #1
0
ファイル: db-bench.c プロジェクト: Fleurer/nessDB
void do_bench(struct nessdb *db, struct random *rnd, uint32_t loop)
{
	uint32_t i;
	int done = 0;;
	int next_report = 100;
	char kbuf[KEY_SIZE];

	for (i = 0; i < loop; i++) {
		uint32_t krnd = rnd_next(rnd);
		snprintf(kbuf, KEY_SIZE, "%016d", krnd);
		char *vbuf = rnd_str(rnd, VAL_SIZE);

		struct msg k = {.data = kbuf, .size = KEY_SIZE};
		struct msg v = {.data = vbuf, .size = VAL_SIZE};
		db_set(db, &k, &v);

		done++;

		if (done >= next_report) {
			if      (next_report < 1000)   next_report += 100;
			else if (next_report < 5000)   next_report += 500;
			else if (next_report < 10000)  next_report += 1000;
			else if (next_report < 50000)  next_report += 5000;
			else if (next_report < 100000) next_report += 10000;
			else if (next_report < 500000) next_report += 50000;
			else                            next_report += 100000;
			fprintf(stderr,
					"random write finished %d ops%30s\r",
					done,
					"");

			fflush(stderr);
		}
	}
}
コード例 #2
0
ファイル: db-bench.c プロジェクト: yqingp/testness
void dbwrite(char *name, int random)
{
    LOG;
	uint32_t i;
	int done = 0;;
	int next_report = 100;
	char kbuf[KEY_SIZE];

	for (i = 0; i < FLAGS_num; i++) {
        printf("current_%d\n", i);
		char *vbuf;
		int key = random ? rand() : i;


        printf("%016d\n", key);
        memset(kbuf, 0, KEY_SIZE);
		snprintf(kbuf, KEY_SIZE, "%016d", key);

        printf("%s\n", kbuf);
		vbuf = rnd_str(rnd, VAL_SIZE);

		struct msg k = {.data = kbuf, .size = strlen(kbuf)};
		struct msg v = {.data = vbuf, .size = VAL_SIZE};

		if (db_set(db, &k, &v) != NESS_OK) {
			fprintf(stderr, " set error\n");
		}

		done++;
		if (done >= next_report) {
			if (next_report < 1000)   next_report += 100;
			else if (next_report < 5000)   next_report += 500;
			else if (next_report < 10000)  next_report += 1000;
			else if (next_report < 50000)  next_report += 5000;
			else if (next_report < 100000) next_report += 10000;
			else if (next_report < 500000) next_report += 50000;
			else                            next_report += 100000;
			fprintf(stderr,
			        "%s finished %d ops%30s\r",
			        name,
			        done,
			        "");
			fflush(stderr);
		}
	}
}
コード例 #3
0
ファイル: db-bench.c プロジェクト: zouxiaoliang/nessDB
void dbwrite(char *name, int random)
{
	uint32_t i;
	int done = 0;;
	int next_report = 100;
	char kbuf[KEY_SIZE];

	for (i = 0; i < FLAGS_num; i++) {
		char *vbuf;
		int key = random ? rnd_next(rnd) % FLAGS_num : i;

		memset(kbuf, 0, KEY_SIZE);
		snprintf(kbuf, KEY_SIZE, "%016d", key);
		vbuf = rnd_str(rnd, VAL_SIZE);

		if (ness_db_set(db, kbuf, strlen(kbuf), vbuf, VAL_SIZE) != NESS_OK) {
			fprintf(stderr, " set error\n");
		}

		done++;
		if (done >= next_report) {
			if (next_report < 1000)   next_report += 100;
			else if (next_report < 5000)   next_report += 500;
			else if (next_report < 10000)  next_report += 1000;
			else if (next_report < 50000)  next_report += 5000;
			else if (next_report < 100000) next_report += 10000;
			else if (next_report < 500000) next_report += 50000;
			else                            next_report += 100000;
			fprintf(stderr,
			        "%s finished %d ops%30s\r",
			        name,
			        done,
			        "");
			fflush(stderr);
		}
	}
}
コード例 #4
0
ファイル: test_tsmapi.c プロジェクト: tstibor/ltsm
void test_fcalls(CuTest *tc)
{
	int rc;
	struct login_t login;
	char fpath[][5 + LEN_RND_STR + 1] = {"/tmp/",
					     "/tmp/",
					     "/tmp/",
					     "/tmp/"};

	for (uint8_t r = 0; r < sizeof(fpath)/sizeof(fpath[0]); r++) {
		char rnd_s[LEN_RND_STR + 1] = {0};
		rnd_str(rnd_s, LEN_RND_STR);
		snprintf(fpath[r] + 5, LEN_RND_STR + 1, "%s", rnd_s);
	}

	login_fill(&login, SERVERNAME, NODE, PASSWORD,
		   OWNER, LINUX_PLATFORM, DEFAULT_FSNAME,
		   DEFAULT_FSTYPE);

	struct session_t session;
	memset(&session, 0, sizeof(struct session_t));

	rc = tsm_init(DSM_SINGLETHREAD);
	CuAssertIntEquals(tc, DSM_RC_SUCCESSFUL, rc);

	rc = tsm_fconnect(&login, &session);
	CuAssertIntEquals(tc, DSM_RC_SUCCESSFUL, rc);

	srand(time(NULL));
	FILE *file = NULL;

        for (uint8_t r = 0; r < sizeof(fpath)/sizeof(fpath[0]); r++) {

		unlink(fpath[r]);

                file = fopen(fpath[r], "w+");
		CuAssertPtrNotNull(tc, file);

		rc = tsm_fopen(DEFAULT_FSNAME, fpath[r], "written by cutest",
			       &session);
		CuAssertIntEquals(tc, DSM_RC_SUCCESSFUL, rc);

                unsigned char *buf = NULL;
                for (uint8_t b = 0; b < 16; b++) {
			size_t buf_size = 1 + (rand() % 1048576); /* 2^20 = 1 MiB */
			buf = calloc(buf_size, sizeof(unsigned char));
			CuAssertPtrNotNull(tc, buf);

			for (size_t r = 0; r < buf_size; r++)
				buf[r] = rand() % 256;

			size_t written = 0;
			size_t total_written = 0;
			size_t rand_nmemb;
			size_t to_write = buf_size;

			size_t written_tsm = 0;
			size_t total_written_tsm = 0;
			do {
				rand_nmemb = 1 + (rand() % buf_size);
				written = fwrite(buf, 1, rand_nmemb, file);
				total_written += written;
				written_tsm = tsm_fwrite(buf, 1, rand_nmemb, &session);
				total_written_tsm += written_tsm;

				buf_size -= rand_nmemb;
			} while (buf_size != 0 || written == 0);

			CuAssertIntEquals(tc, to_write, total_written);
			CuAssertIntEquals(tc, to_write, total_written_tsm);
			free(buf);
		}

		fclose(file);
		file = NULL;

		uint32_t crc32sum = 0;
		rc = crc32file(fpath[r], &crc32sum);
		CuAssertIntEquals(tc, 0, rc);

		CuAssertIntEquals(tc, crc32sum ,
				  session.tsm_file->archive_info.obj_info.crc32);

		rc = tsm_fclose(&session);
		CuAssertIntEquals(tc, DSM_RC_SUCCESSFUL, rc);

		rc = tsm_delete_fpath(DEFAULT_FSNAME, fpath[r], &session);
		CuAssertIntEquals(tc, DSM_RC_SUCCESSFUL, rc);
	}

	tsm_fdisconnect(&session);
	tsm_cleanup(DSM_SINGLETHREAD);
}