mirror of
http://github.com/valkey-io/valkey
synced 2024-11-22 00:52:38 +00:00
Added a trivial program to randomly corrupt RDB files in /utils.
This commit is contained in:
parent
f5110c3c7c
commit
a117dfa807
44
utils/corrupt_rdb.c
Normal file
44
utils/corrupt_rdb.c
Normal file
@ -0,0 +1,44 @@
|
||||
/* Trivia program to corrupt an RDB file in order to check the RDB check
|
||||
* program behavior and effectiveness.
|
||||
*
|
||||
* Copyright (C) 2016 Salvatore Sanfilippo.
|
||||
* This software is released in the 3-clause BSD license. */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
struct stat stat;
|
||||
int fd, cycles;
|
||||
|
||||
if (argc != 3) {
|
||||
fprintf(stderr,"Usage: <filename> <cycles>\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
srand(time(NULL));
|
||||
cycles = atoi(argv[2]);
|
||||
fd = open("dump.rdb",O_RDWR);
|
||||
if (fd == -1) {
|
||||
perror("open");
|
||||
exit(1);
|
||||
}
|
||||
fstat(fd,&stat);
|
||||
|
||||
while(cycles--) {
|
||||
unsigned char buf[32];
|
||||
unsigned long offset = rand()%stat.st_size;
|
||||
int writelen = 1+rand()%31;
|
||||
int j;
|
||||
|
||||
for (j = 0; j < writelen; j++) buf[j] = (char)rand();
|
||||
lseek(fd,offset,SEEK_SET);
|
||||
printf("Writing %d bytes at offset %lu\n", writelen, offset);
|
||||
write(fd,buf,writelen);
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user