6 #include "indice_bplus.h"
9 char* cargar_registro(char* texto_ini,int len_ini, CLAVE clave, char *texto_fin, int len_fin)
12 reg = (char*)malloc(len_ini+sizeof(CLAVE)+len_fin+1); /* +1 para el \0 */
13 memcpy(reg, texto_ini, len_ini);
14 memcpy(reg+len_ini, &clave, sizeof(CLAVE));
15 strcpy(reg+len_ini+sizeof(CLAVE), texto_fin);
20 void imprimir_reg(char* reg, int off, int len)
24 memcpy(&clave, reg+off, sizeof(CLAVE));
25 printf("CLAVE = %d\n", clave.i_clave);
27 for(i=0; i<len; i++) printf("%c",reg[i]);
29 printf("TAMANIO REGISTRO = %d\n\n", len);
34 int main (int argc,char* argv[])
40 int tam_nodo = SIZE_B_PLUS_HEADER + sizeof(CLAVE)*5 + sizeof(CLAVE)*6;
41 EMUFS_REG_SIZE len, size;
44 texto = "PARTE COSNSTANTE, clave =";
45 emu = emufs_crear("test",T1,512,0);
46 emufs_agregar_indice(emu,"claveidx",IND_PRIMARIO,IND_B_PLUS,IDX_INT,strlen(texto),tam_nodo, 0);
51 texto2="termina el texto re bonito CLAVE = 77";
52 r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
53 imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
54 len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
55 emufs_tipo1_insertar_ordenado(emu, r, len, &err);
56 PERR("REGISTRO 1 GRABADO");
60 texto2="termina el texto re bonito pero mas largo CLAVE = 90";
62 r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
63 imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
64 len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
65 emufs_tipo1_insertar_ordenado(emu, r, len, &err);
66 PERR("REGISTRO 2 GRABADO");
70 texto2="Este es el fin del registro tres, puse tres en numero para que sea mas largo el texto CLAVE = 95";
72 r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
73 imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
74 len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
75 emufs_tipo1_insertar_ordenado(emu, r, len, &err);
76 PERR("REGISTRO 3 GRABADO");
80 texto2="REGISTRO CUATRO CLAVE = 99";
82 r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
83 imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
84 len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
85 emufs_tipo1_insertar_ordenado(emu, r, len, &err);
86 PERR("REGISTRO 4 GRABADO");
90 texto2="el quinto registro tiene un largo promedio como para entrar en el bloque CLAVE = 102";
92 r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
93 imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
94 len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
95 emufs_tipo1_insertar_ordenado(emu, r, len, &err);
96 PERR("REGISTRO 5 GRABADO");
100 texto2="El registro 6 no entra CLAVE = 93";
102 r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
103 imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
104 len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
105 emufs_tipo1_insertar_ordenado(emu, r, len, &err);
106 PERR("REGISTRO 6 GRABADO");
110 texto2="SETPTIMO REGISTRO, lo inserto donde entre carajo2ooooooooooooooooooCLAVE = 80";
112 r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
113 imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
114 len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
115 emufs_tipo1_insertar_ordenado(emu, r, len, &err);
116 PERR("REGISTRO 7 GRABADO");
120 emufs_tipo1_eliminar_ordenado(emu, clave, &err);
122 emufs_tipo1_eliminar_ordenado(emu, clave, &err);
124 emufs_tipo1_eliminar_ordenado(emu, clave, &err);
126 emufs_tipo1_eliminar_ordenado(emu, clave, &err);
129 PERR("LEYENDO REGISTRO");
131 r = emufs_tipo1_leer_registro_plus(emu, clave, &size, &err);
133 imprimir_reg(r, strlen(texto), size);
136 for ( i=0; i<10000; i++){
137 texto2="SETPTIMO REGISTRO, lo inserto donde entre carajo2ooooooooooooooooooCLAVE = 80";
139 clave.i_clave = random();
140 r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
141 len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
142 emufs_tipo1_insertar_ordenado(emu, r, len, &err);