Preliminary blast files for lladd
This commit is contained in:
parent
6b95cefc62
commit
9e8ac01b8f
3 changed files with 185 additions and 0 deletions
150
blast/lladd-blast.c
Normal file
150
blast/lladd-blast.c
Normal file
|
@ -0,0 +1,150 @@
|
||||||
|
/**
|
||||||
|
@file Test cases for blast.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "lladd-blast.h"
|
||||||
|
|
||||||
|
Page * ptr = 0;
|
||||||
|
|
||||||
|
Page * loadPage(int xid, long page) {
|
||||||
|
ptr ++;
|
||||||
|
ptr->id = page;
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char argv[][]) {
|
||||||
|
pass1(0, 0);
|
||||||
|
pass2(0, 0);
|
||||||
|
pass3(0, 0);
|
||||||
|
pass4(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int pass1(int argc, char argv[][]) {
|
||||||
|
int xid = 2;
|
||||||
|
long page = 1;
|
||||||
|
Page * p = 0;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for(i = 0; i < argc; i++) {
|
||||||
|
p = loadPage(xid, page+i);
|
||||||
|
releasePage(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/** @test see if it can handle multiple pages... It doesn't do arrays, unfortunately. :( */
|
||||||
|
int pass2(int argc, char argv[][]) {
|
||||||
|
int xid = 2;
|
||||||
|
long page = 1;
|
||||||
|
int i;
|
||||||
|
Page * p, * q, * r, * s, * t, * u, * v, * w;
|
||||||
|
|
||||||
|
p = 0 ;
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
q = 0 ;
|
||||||
|
q = loadPage(xid, 2);
|
||||||
|
r = 0 ;
|
||||||
|
r = loadPage(xid, 3);
|
||||||
|
s = 0 ;
|
||||||
|
s = loadPage(xid, 4);
|
||||||
|
t = 0 ;
|
||||||
|
t = loadPage(xid, 5);
|
||||||
|
u = 0 ;
|
||||||
|
u = loadPage(xid, 6);
|
||||||
|
v = 0 ;
|
||||||
|
v = loadPage(xid, 7);
|
||||||
|
w = 0 ;
|
||||||
|
w = loadPage(xid, 8);
|
||||||
|
|
||||||
|
}
|
||||||
|
int pass3(int argc, char argv[][]) {
|
||||||
|
int xid = 2;
|
||||||
|
Page * p, * q, * r, * s, * t, * u, * v, * w;
|
||||||
|
|
||||||
|
p = 0 ;
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
q = 0 ;
|
||||||
|
r = 0 ;
|
||||||
|
s = 0 ;
|
||||||
|
t = 0 ;
|
||||||
|
u = 0 ;
|
||||||
|
v = 0 ;
|
||||||
|
w = 0 ;
|
||||||
|
|
||||||
|
q = loadPage(xid, 2);
|
||||||
|
r = loadPage(xid, 3);
|
||||||
|
s = loadPage(xid, 4);
|
||||||
|
releasePage(s);
|
||||||
|
releasePage(q);
|
||||||
|
t = loadPage(xid, 5);
|
||||||
|
u = loadPage(xid, 6);
|
||||||
|
releasePage(t);
|
||||||
|
releasePage(r);
|
||||||
|
v = loadPage(xid, 7);
|
||||||
|
releasePage(u);
|
||||||
|
w = loadPage(xid, 8);
|
||||||
|
releasePage(w);
|
||||||
|
releasePage(v);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int pass4(int argc, char argv[][]) {
|
||||||
|
int xid = 2;
|
||||||
|
Page * p = 0;
|
||||||
|
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int fail1(int argc, char argv[][]) {
|
||||||
|
int xid = 2;
|
||||||
|
Page * p = 0;
|
||||||
|
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
releasePage(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
int fail2(int argc, char argv[][]) {
|
||||||
|
int xid = 2;
|
||||||
|
Page * p = 0, *q = 0;
|
||||||
|
int i;
|
||||||
|
p = loadPage(xid, 1);
|
||||||
|
for(i = 0; i < argc; i++) {
|
||||||
|
|
||||||
|
q = loadPage(xid, 2);
|
||||||
|
|
||||||
|
if(!(argc + i % 3426739)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
releasePage(q);
|
||||||
|
}
|
||||||
|
releasePage(p);
|
||||||
|
}
|
23
blast/lladd-blast.h
Normal file
23
blast/lladd-blast.h
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
typedef unsigned char byte;
|
||||||
|
typedef struct rwl_s rwl;
|
||||||
|
/* This is from page.h */
|
||||||
|
struct Page_s {
|
||||||
|
int id;
|
||||||
|
long LSN;
|
||||||
|
byte *memAddr;
|
||||||
|
byte dirty;
|
||||||
|
struct Page_s *next;
|
||||||
|
struct Page_s *prev;
|
||||||
|
int queue;
|
||||||
|
int inCache;
|
||||||
|
rwl * rwlatch;
|
||||||
|
rwl * loadlatch;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct Page_s Page;
|
||||||
|
|
||||||
|
|
||||||
|
Page * loadPage(int xid, long page);
|
||||||
|
|
||||||
|
void releasePage(Page * p);
|
12
blast/lladd.spc
Normal file
12
blast/lladd.spc
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#include "lladd-blast.h"
|
||||||
|
|
||||||
|
event {
|
||||||
|
pattern { $1 = loadPage($2, $3); }
|
||||||
|
guard { $1 == 0 || $1->id == -1 }
|
||||||
|
}
|
||||||
|
|
||||||
|
event {
|
||||||
|
pattern { releasePage($1); }
|
||||||
|
guard { $1->id != -1 }
|
||||||
|
action { $1->id = -1; }
|
||||||
|
}
|
Loading…
Reference in a new issue