Randomized allocation test.
This commit is contained in:
parent
039630df09
commit
6df9f538f4
1 changed files with 97 additions and 7 deletions
|
@ -39,16 +39,22 @@ authors grant the U.S. Government and others acting in its behalf
|
||||||
permission to use and distribute the software in accordance with the
|
permission to use and distribute the software in accordance with the
|
||||||
terms specified in this license.
|
terms specified in this license.
|
||||||
---*/
|
---*/
|
||||||
|
//#include <config.h>
|
||||||
|
|
||||||
|
|
||||||
|
//#include <stdlib.h>
|
||||||
|
//#include <stdio.h>
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
#include <check.h>
|
#include <check.h>
|
||||||
|
#include "../check_includes.h"
|
||||||
|
|
||||||
#include <lladd/allocationPolicy.h>
|
#include <lladd/allocationPolicy.h>
|
||||||
|
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <time.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#include "../check_includes.h"
|
|
||||||
/*
|
/*
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
@ -146,17 +152,101 @@ START_TEST(allocationPolicy_smokeTest)
|
||||||
|
|
||||||
} END_TEST
|
} END_TEST
|
||||||
|
|
||||||
|
#define AVAILABLE_PAGE_COUNT_A 1000
|
||||||
|
#define AVAILABLE_PAGE_COUNT_B 10
|
||||||
|
#define FREE_MUL 100
|
||||||
|
#define XACT_COUNT 1000
|
||||||
|
|
||||||
|
#define PHASE_ONE_COUNT 10000
|
||||||
|
#define PHASE_TWO_COUNT 50000
|
||||||
|
|
||||||
|
static void takeRandomAction(allocationPolicy * ap, int * xids,
|
||||||
|
availablePage ** pages1, availablePage ** pages2) {
|
||||||
|
switch(myrandom(6)) {
|
||||||
|
case 0 : { // find page
|
||||||
|
} break;
|
||||||
|
case 1 : { // xact completed
|
||||||
|
} break;
|
||||||
|
case 2 : { // update freespace unlocked
|
||||||
|
} break;
|
||||||
|
case 3 : { // update freespace locked
|
||||||
|
} break;
|
||||||
|
case 4 : { // lock page
|
||||||
|
} break;
|
||||||
|
case 5 : { // alloced from page
|
||||||
|
} break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
START_TEST(allocationPolicy_randomTest) {
|
||||||
|
|
||||||
|
struct timeval time;
|
||||||
|
gettimeofday(&time,0);
|
||||||
|
long seed = time.tv_usec + time.tv_sec * 1000000;
|
||||||
|
printf("\nSeed = %ld\n", seed);
|
||||||
|
srandom(seed);
|
||||||
|
|
||||||
|
availablePage ** pages1 =
|
||||||
|
malloc((1+AVAILABLE_PAGE_COUNT_A) * sizeof(availablePage *));
|
||||||
|
availablePage ** pages2 =
|
||||||
|
malloc((1+AVAILABLE_PAGE_COUNT_B) * sizeof(availablePage *));
|
||||||
|
|
||||||
|
int * xids = malloc(sizeof(int) * XACT_COUNT);
|
||||||
|
|
||||||
|
for(int i = 0; i < XACT_COUNT; i++) {
|
||||||
|
xids[i] = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < AVAILABLE_PAGE_COUNT_A; i++) {
|
||||||
|
pages1[i] = malloc(sizeof(availablePage));
|
||||||
|
pages1[i]->pageid = i;
|
||||||
|
pages1[i]->freespace = i * FREE_MUL;
|
||||||
|
pages1[i]->lockCount = 0;
|
||||||
|
}
|
||||||
|
pages1[AVAILABLE_PAGE_COUNT_A] = 0;
|
||||||
|
for(int i = 0 ; i < AVAILABLE_PAGE_COUNT_B; i++) {
|
||||||
|
pages2[i] = malloc(sizeof(availablePage));
|
||||||
|
pages2[i]->pageid = AVAILABLE_PAGE_COUNT_A + i;
|
||||||
|
pages2[i]->freespace = (AVAILABLE_PAGE_COUNT_A + i) * FREE_MUL;
|
||||||
|
pages2[i]->lockCount = 0;
|
||||||
|
}
|
||||||
|
pages2[AVAILABLE_PAGE_COUNT_B] = 0;
|
||||||
|
|
||||||
|
allocationPolicy * ap = allocationPolicyInit();
|
||||||
|
|
||||||
|
allocationPolicyAddPages(ap, pages1);
|
||||||
|
|
||||||
|
for(int k = 0; k < PHASE_ONE_COUNT; k++) {
|
||||||
|
// Don't pass in pages2; ap doesn't know about them yet!
|
||||||
|
takeRandomAction(ap, xids, pages1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
allocationPolicyAddPages(ap, pages2);
|
||||||
|
|
||||||
|
for(int k = 0; k < PHASE_ONE_COUNT; k++) {
|
||||||
|
takeRandomAction(ap, xids, pages1, pages2);
|
||||||
|
}
|
||||||
|
|
||||||
|
allocationPolicyDeinit(ap);
|
||||||
|
|
||||||
|
free(pages1);
|
||||||
|
free(pages2);
|
||||||
|
|
||||||
|
} END_TEST
|
||||||
|
|
||||||
Suite * check_suite(void) {
|
Suite * check_suite(void) {
|
||||||
Suite *s = suite_create("lhtable");
|
Suite *s = suite_create("allocationPolicy");
|
||||||
/* Begin a new test */
|
/* Begin a new test */
|
||||||
TCase *tc = tcase_create("lhtable");
|
TCase *tc = tcase_create("allocationPolicy");
|
||||||
|
|
||||||
tcase_set_timeout(tc, 0); // disable timeouts
|
tcase_set_timeout(tc, 0); // disable timeouts
|
||||||
|
|
||||||
|
|
||||||
/* Sub tests are added, one per line, here */
|
/* Sub tests are added, one per line, here */
|
||||||
|
|
||||||
tcase_add_test(tc, allocationPolicy_smokeTest);
|
tcase_add_test(tc, allocationPolicy_smokeTest);
|
||||||
|
tcase_add_test(tc, allocationPolicy_randomTest);
|
||||||
|
|
||||||
/* --------------------------------------------- */
|
/* --------------------------------------------- */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue