Rename project to ToastyFS
This commit is contained in:
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
Architecture
|
Architecture
|
||||||
A MouseFS instance is composed by a metadata server, a number
|
A ToastyFS instance is composed by a metadata server, a number
|
||||||
of chunk servers, and a number of clients.
|
of chunk servers, and a number of clients.
|
||||||
|
|
||||||
The metadata server stores the full file system hieararchy,
|
The metadata server stores the full file system hieararchy,
|
||||||
|
|||||||
@@ -17,9 +17,9 @@ OFILES = $(CFILES:.c=.o)
|
|||||||
|
|
||||||
.PHONY: all clean coverage coverage-report coverage-html
|
.PHONY: all clean coverage coverage-report coverage-html
|
||||||
|
|
||||||
all: mousefs$(EXT) mousefs_random_test$(EXT) example_client$(EXT) libmousefs.a
|
all: toastyfs$(EXT) toastyfs_random_test$(EXT) example_client$(EXT) libtoastyfs.a
|
||||||
|
|
||||||
coverage: mousefs_random_test_coverage$(EXT)
|
coverage: toastyfs_random_test_coverage$(EXT)
|
||||||
|
|
||||||
coverage-report:
|
coverage-report:
|
||||||
@./scripts/measure_coverage.sh 60
|
@./scripts/measure_coverage.sh 60
|
||||||
@@ -27,35 +27,35 @@ coverage-report:
|
|||||||
coverage-html:
|
coverage-html:
|
||||||
@./scripts/measure_coverage.sh 60 --html
|
@./scripts/measure_coverage.sh 60 --html
|
||||||
|
|
||||||
mousefs$(EXT): $(CFILES) $(HFILES)
|
toastyfs$(EXT): $(CFILES) $(HFILES)
|
||||||
gcc -o $@ $(CFILES) $(CFLAGS) $(LFLAGS) -Iinc -DBUILD_SERVER
|
gcc -o $@ $(CFILES) $(CFLAGS) $(LFLAGS) -Iinc -DBUILD_SERVER
|
||||||
|
|
||||||
mousefs_random_test$(EXT): $(CFILES) $(HFILES)
|
toastyfs_random_test$(EXT): $(CFILES) $(HFILES)
|
||||||
gcc -o $@ $(CFILES) $(CFLAGS) $(LFLAGS) -Iinc -DBUILD_TEST
|
gcc -o $@ $(CFILES) $(CFLAGS) $(LFLAGS) -Iinc -DBUILD_TEST
|
||||||
|
|
||||||
mousefs_random_test_coverage$(EXT): $(CFILES) $(HFILES)
|
toastyfs_random_test_coverage$(EXT): $(CFILES) $(HFILES)
|
||||||
gcc -o $@ $(CFILES) $(COVERAGE_CFLAGS) $(LFLAGS) $(COVERAGE_LFLAGS) -Iinc -DBUILD_TEST
|
gcc -o $@ $(CFILES) $(COVERAGE_CFLAGS) $(LFLAGS) $(COVERAGE_LFLAGS) -Iinc -DBUILD_TEST
|
||||||
|
|
||||||
example_client$(EXT): libmousefs.a
|
example_client$(EXT): libtoastyfs.a
|
||||||
gcc -o $@ examples/main.c $(CFLAGS) -lmousefs $(LFLAGS) -Iinc -L.
|
gcc -o $@ examples/main.c $(CFLAGS) -ltoastyfs $(LFLAGS) -Iinc -L.
|
||||||
|
|
||||||
%.o: %.c $(HFILES)
|
%.o: %.c $(HFILES)
|
||||||
gcc -c -o $@ $< $(CFLAGS) -Iinc
|
gcc -c -o $@ $< $(CFLAGS) -Iinc
|
||||||
|
|
||||||
libmousefs.a: $(OFILES)
|
libtoastyfs.a: $(OFILES)
|
||||||
ar rcs $@ $^
|
ar rcs $@ $^
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f \
|
rm -f \
|
||||||
mousefs.exe \
|
toastyfs.exe \
|
||||||
mousefs.out \
|
toastyfs.out \
|
||||||
mousefs_random_test.exe \
|
toastyfs_random_test.exe \
|
||||||
mousefs_random_test.out \
|
toastyfs_random_test.out \
|
||||||
mousefs_random_test_coverage.exe \
|
toastyfs_random_test_coverage.exe \
|
||||||
mousefs_random_test_coverage.out \
|
toastyfs_random_test_coverage.out \
|
||||||
example_client.exe \
|
example_client.exe \
|
||||||
example_client.out \
|
example_client.out \
|
||||||
libmousefs.a \
|
libtoastyfs.a \
|
||||||
src/*.o \
|
src/*.o \
|
||||||
src/*.gcda \
|
src/*.gcda \
|
||||||
src/*.gcno \
|
src/*.gcno \
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
- Implement proper operation handles that allow users to wait for specific events
|
- Implement proper operation handles that allow users to wait for specific events
|
||||||
- Clean up the read operation for clients
|
- Clean up the read operation for clients
|
||||||
- Check that the corner case where read and writes go over the length of the file work correctly
|
- Check that the corner case where read and writes go over the length of the file work correctly
|
||||||
- Return the number of bytes read or written in the MouseFS_Result struct
|
- Return the number of bytes read or written in the ToastyFS_Result struct
|
||||||
- Make parallel uploads/downloads configurable
|
- Make parallel uploads/downloads configurable
|
||||||
- Recalculate next write locations whenever a write occurs, not at each read
|
- Recalculate next write locations whenever a write occurs, not at each read
|
||||||
- avoid replay attacks
|
- avoid replay attacks
|
||||||
|
|||||||
+14
-14
@@ -1,39 +1,39 @@
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <MouseFS.h>
|
#include <ToastyFS.h>
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
MouseFS *mfs = mousefs_init("127.0.0.1", 8080);
|
ToastyFS *tfs = toastyfs_init("127.0.0.1", 8080);
|
||||||
if (mfs == NULL)
|
if (tfs == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (mousefs_submit_create(mfs, "/my_file_1", -1, false, 1024) < 0) {
|
if (toastyfs_submit_create(tfs, "/my_file_1", -1, false, 1024) < 0) {
|
||||||
mousefs_free(mfs);
|
toastyfs_free(tfs);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mousefs_submit_create(mfs, "/my_file_2", -1, false, 1024) < 0) {
|
if (toastyfs_submit_create(tfs, "/my_file_2", -1, false, 1024) < 0) {
|
||||||
mousefs_free(mfs);
|
toastyfs_free(tfs);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
char buff_1[] = "This is file 1";
|
char buff_1[] = "This is file 1";
|
||||||
if (mousefs_submit_write(mfs, "/my_file_1", -1, 0, buff_1, sizeof(buff_1)-1) < 0) {
|
if (toastyfs_submit_write(tfs, "/my_file_1", -1, 0, buff_1, sizeof(buff_1)-1) < 0) {
|
||||||
mousefs_free(mfs);
|
toastyfs_free(tfs);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
char buff_2[] = "This is file 2";
|
char buff_2[] = "This is file 2";
|
||||||
if (mousefs_submit_write(mfs, "/my_file_1", -1, 0, buff_2, sizeof(buff_2)-1) < 0) {
|
if (toastyfs_submit_write(tfs, "/my_file_1", -1, 0, buff_2, sizeof(buff_2)-1) < 0) {
|
||||||
mousefs_free(mfs);
|
toastyfs_free(tfs);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
MouseFS_Result result;
|
ToastyFS_Result result;
|
||||||
mousefs_wait(mfs, -1, &result, -1);
|
toastyfs_wait(tfs, -1, &result, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
mousefs_free(mfs);
|
toastyfs_free(tfs);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
#ifndef MOUSEFS_INCLUDED
|
|
||||||
#define MOUSEFS_INCLUDED
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include <winsock2.h>
|
|
||||||
#else
|
|
||||||
#include <poll.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct MouseFS MouseFS;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
char name[128]; // TODO: Implement a proper name length
|
|
||||||
bool is_dir;
|
|
||||||
} MouseFS_Entity;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
MOUSEFS_RESULT_EMPTY,
|
|
||||||
MOUSEFS_RESULT_CREATE_ERROR,
|
|
||||||
MOUSEFS_RESULT_CREATE_SUCCESS,
|
|
||||||
MOUSEFS_RESULT_DELETE_ERROR,
|
|
||||||
MOUSEFS_RESULT_DELETE_SUCCESS,
|
|
||||||
MOUSEFS_RESULT_LIST_ERROR,
|
|
||||||
MOUSEFS_RESULT_LIST_SUCCESS,
|
|
||||||
MOUSEFS_RESULT_READ_ERROR,
|
|
||||||
MOUSEFS_RESULT_READ_SUCCESS,
|
|
||||||
MOUSEFS_RESULT_WRITE_ERROR,
|
|
||||||
MOUSEFS_RESULT_WRITE_SUCCESS,
|
|
||||||
} MouseFS_ResultType;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
|
|
||||||
MouseFS_ResultType type;
|
|
||||||
|
|
||||||
int num_entities;
|
|
||||||
MouseFS_Entity *entities;
|
|
||||||
} MouseFS_Result;
|
|
||||||
|
|
||||||
MouseFS *mousefs_init(char *addr, uint16_t port);
|
|
||||||
void mousefs_free(MouseFS *mfs);
|
|
||||||
void mousefs_wait(MouseFS *mfs, int opidx, MouseFS_Result *result, int timeout);
|
|
||||||
|
|
||||||
bool mousefs_isdone(MouseFS *mfs, int opidx, MouseFS_Result *result);
|
|
||||||
int mousefs_process_events(MouseFS *mfs, void **contexts, struct pollfd *polled, int num_polled);
|
|
||||||
|
|
||||||
int mousefs_submit_create (MouseFS *mfs, char *path, int path_len, bool is_dir, unsigned int chunk_size);
|
|
||||||
int mousefs_submit_delete (MouseFS *mfs, char *path, int path_len);
|
|
||||||
int mousefs_submit_list (MouseFS *mfs, char *path, int path_len);
|
|
||||||
int mousefs_submit_read (MouseFS *mfs, char *path, int path_len, int off, void *dst, int len);
|
|
||||||
int mousefs_submit_write (MouseFS *mfs, char *path, int path_len, int off, void *src, int len);
|
|
||||||
void mousefs_result_free(MouseFS_Result *result);
|
|
||||||
|
|
||||||
#endif // MOUSEFS_INCLUDED
|
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
#ifndef TOASTYFS_INCLUDED
|
||||||
|
#define TOASTYFS_INCLUDED
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <winsock2.h>
|
||||||
|
#else
|
||||||
|
#include <poll.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct ToastyFS ToastyFS;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char name[128]; // TODO: Implement a proper name length
|
||||||
|
bool is_dir;
|
||||||
|
} ToastyFS_Entity;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
TOASTYFS_RESULT_EMPTY,
|
||||||
|
TOASTYFS_RESULT_CREATE_ERROR,
|
||||||
|
TOASTYFS_RESULT_CREATE_SUCCESS,
|
||||||
|
TOASTYFS_RESULT_DELETE_ERROR,
|
||||||
|
TOASTYFS_RESULT_DELETE_SUCCESS,
|
||||||
|
TOASTYFS_RESULT_LIST_ERROR,
|
||||||
|
TOASTYFS_RESULT_LIST_SUCCESS,
|
||||||
|
TOASTYFS_RESULT_READ_ERROR,
|
||||||
|
TOASTYFS_RESULT_READ_SUCCESS,
|
||||||
|
TOASTYFS_RESULT_WRITE_ERROR,
|
||||||
|
TOASTYFS_RESULT_WRITE_SUCCESS,
|
||||||
|
} ToastyFS_ResultType;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
|
||||||
|
ToastyFS_ResultType type;
|
||||||
|
|
||||||
|
int num_entities;
|
||||||
|
ToastyFS_Entity *entities;
|
||||||
|
} ToastyFS_Result;
|
||||||
|
|
||||||
|
ToastyFS *toastyfs_init(char *addr, uint16_t port);
|
||||||
|
void toastyfs_free(ToastyFS *tfs);
|
||||||
|
void toastyfs_wait(ToastyFS *tfs, int opidx, ToastyFS_Result *result, int timeout);
|
||||||
|
|
||||||
|
bool toastyfs_isdone(ToastyFS *tfs, int opidx, ToastyFS_Result *result);
|
||||||
|
int toastyfs_process_events(ToastyFS *tfs, void **contexts, struct pollfd *polled, int num_polled);
|
||||||
|
|
||||||
|
int toastyfs_submit_create (ToastyFS *tfs, char *path, int path_len, bool is_dir, unsigned int chunk_size);
|
||||||
|
int toastyfs_submit_delete (ToastyFS *tfs, char *path, int path_len);
|
||||||
|
int toastyfs_submit_list (ToastyFS *tfs, char *path, int path_len);
|
||||||
|
int toastyfs_submit_read (ToastyFS *tfs, char *path, int path_len, int off, void *dst, int len);
|
||||||
|
int toastyfs_submit_write (ToastyFS *tfs, char *path, int path_len, int off, void *src, int len);
|
||||||
|
void toastyfs_result_free(ToastyFS_Result *result);
|
||||||
|
|
||||||
|
#endif // TOASTYFS_INCLUDED
|
||||||
@@ -29,7 +29,7 @@ SIMULATION_TIME=${1:-5} # Default to 5 seconds if not specified
|
|||||||
echo "Running for ${SIMULATION_TIME} seconds..."
|
echo "Running for ${SIMULATION_TIME} seconds..."
|
||||||
|
|
||||||
# Run simulation in background and kill it after specified time
|
# Run simulation in background and kill it after specified time
|
||||||
timeout ${SIMULATION_TIME}s ./mousefs_random_test_coverage.out || true
|
timeout ${SIMULATION_TIME}s ./toastyfs_random_test_coverage.out || true
|
||||||
|
|
||||||
# Generate coverage reports
|
# Generate coverage reports
|
||||||
echo
|
echo
|
||||||
@@ -44,7 +44,7 @@ TAKEN_BRANCHES=0
|
|||||||
# Generate gcov reports from the coverage data files
|
# Generate gcov reports from the coverage data files
|
||||||
for gcda_file in $GCDA_FILES; do
|
for gcda_file in $GCDA_FILES; do
|
||||||
# Extract the source file name from the gcda filename
|
# Extract the source file name from the gcda filename
|
||||||
# Files are named like: mousefs_random_test_coverage.out-basic.gcda
|
# Files are named like: toastyfs_random_test_coverage.out-basic.gcda
|
||||||
basename=$(basename "$gcda_file" .gcda)
|
basename=$(basename "$gcda_file" .gcda)
|
||||||
source_name=${basename#*-} # Remove prefix up to and including '-'
|
source_name=${basename#*-} # Remove prefix up to and including '-'
|
||||||
|
|
||||||
|
|||||||
+316
-316
File diff suppressed because it is too large
Load Diff
+29
-29
@@ -34,8 +34,8 @@ int simulation_client_init(SimulationClient *client, int argc, char **argv,
|
|||||||
uint16_t port;
|
uint16_t port;
|
||||||
parse_server_addr(argc, argv, &addr, &port);
|
parse_server_addr(argc, argv, &addr, &port);
|
||||||
|
|
||||||
client->mfs = mousefs_init(addr, port);
|
client->tfs = toastyfs_init(addr, port);
|
||||||
if (client->mfs == NULL)
|
if (client->tfs == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
client->num_pending = 0;
|
client->num_pending = 0;
|
||||||
@@ -43,7 +43,7 @@ int simulation_client_init(SimulationClient *client, int argc, char **argv,
|
|||||||
printf("Client set up (remote=%s:%d)\n", addr, port);
|
printf("Client set up (remote=%s:%d)\n", addr, port);
|
||||||
|
|
||||||
*timeout = 0;
|
*timeout = 0;
|
||||||
return mousefs_process_events(client->mfs, contexts, polled, 0);
|
return toastyfs_process_events(client->tfs, contexts, polled, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int random_in_range(int min, int max)
|
static int random_in_range(int min, int max)
|
||||||
@@ -56,73 +56,73 @@ int simulation_client_step(SimulationClient *client, void **contexts,
|
|||||||
struct pollfd *polled, int num_polled, int *timeout)
|
struct pollfd *polled, int num_polled, int *timeout)
|
||||||
{
|
{
|
||||||
// Process any pending events from the network and get new poll descriptors
|
// Process any pending events from the network and get new poll descriptors
|
||||||
num_polled = mousefs_process_events(client->mfs, contexts, polled, num_polled);
|
num_polled = toastyfs_process_events(client->tfs, contexts, polled, num_polled);
|
||||||
|
|
||||||
for (int i = 0; i < client->num_pending; i++) {
|
for (int i = 0; i < client->num_pending; i++) {
|
||||||
|
|
||||||
MouseFS_Result result;
|
ToastyFS_Result result;
|
||||||
if (!mousefs_isdone(client->mfs, client->pending[i].opidx, &result))
|
if (!toastyfs_isdone(client->tfs, client->pending[i].opidx, &result))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
PendingOperation pending = client->pending[i];
|
PendingOperation pending = client->pending[i];
|
||||||
switch (result.type) {
|
switch (result.type) {
|
||||||
|
|
||||||
case MOUSEFS_RESULT_EMPTY:
|
case TOASTYFS_RESULT_EMPTY:
|
||||||
assert(0);
|
assert(0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MOUSEFS_RESULT_CREATE_ERROR:
|
case TOASTYFS_RESULT_CREATE_ERROR:
|
||||||
assert(pending.type == PENDING_OPERATION_CREATE);
|
assert(pending.type == PENDING_OPERATION_CREATE);
|
||||||
//printf("[Client] create error\n");
|
//printf("[Client] create error\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MOUSEFS_RESULT_CREATE_SUCCESS:
|
case TOASTYFS_RESULT_CREATE_SUCCESS:
|
||||||
assert(pending.type == PENDING_OPERATION_CREATE);
|
assert(pending.type == PENDING_OPERATION_CREATE);
|
||||||
//printf("[Client] create success\n");
|
//printf("[Client] create success\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MOUSEFS_RESULT_DELETE_ERROR:
|
case TOASTYFS_RESULT_DELETE_ERROR:
|
||||||
assert(pending.type == PENDING_OPERATION_DELETE);
|
assert(pending.type == PENDING_OPERATION_DELETE);
|
||||||
//printf("[Client] delete error\n");
|
//printf("[Client] delete error\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MOUSEFS_RESULT_DELETE_SUCCESS:
|
case TOASTYFS_RESULT_DELETE_SUCCESS:
|
||||||
assert(pending.type == PENDING_OPERATION_DELETE);
|
assert(pending.type == PENDING_OPERATION_DELETE);
|
||||||
//printf("[Client] delete success\n");
|
//printf("[Client] delete success\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MOUSEFS_RESULT_LIST_ERROR:
|
case TOASTYFS_RESULT_LIST_ERROR:
|
||||||
assert(pending.type == PENDING_OPERATION_LIST);
|
assert(pending.type == PENDING_OPERATION_LIST);
|
||||||
//printf("[Client] list error\n");
|
//printf("[Client] list error\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MOUSEFS_RESULT_LIST_SUCCESS:
|
case TOASTYFS_RESULT_LIST_SUCCESS:
|
||||||
assert(pending.type == PENDING_OPERATION_LIST);
|
assert(pending.type == PENDING_OPERATION_LIST);
|
||||||
//printf("[Client] list success\n");
|
//printf("[Client] list success\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MOUSEFS_RESULT_READ_ERROR:
|
case TOASTYFS_RESULT_READ_ERROR:
|
||||||
assert(pending.type == PENDING_OPERATION_READ);
|
assert(pending.type == PENDING_OPERATION_READ);
|
||||||
//printf("[Client] read error\n");
|
//printf("[Client] read error\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MOUSEFS_RESULT_READ_SUCCESS:
|
case TOASTYFS_RESULT_READ_SUCCESS:
|
||||||
assert(pending.type == PENDING_OPERATION_READ);
|
assert(pending.type == PENDING_OPERATION_READ);
|
||||||
//printf("[Client] read success\n");
|
//printf("[Client] read success\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MOUSEFS_RESULT_WRITE_ERROR:
|
case TOASTYFS_RESULT_WRITE_ERROR:
|
||||||
assert(pending.type == PENDING_OPERATION_WRITE);
|
assert(pending.type == PENDING_OPERATION_WRITE);
|
||||||
//printf("[Client] write error\n");
|
//printf("[Client] write error\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MOUSEFS_RESULT_WRITE_SUCCESS:
|
case TOASTYFS_RESULT_WRITE_SUCCESS:
|
||||||
assert(pending.type == PENDING_OPERATION_WRITE);
|
assert(pending.type == PENDING_OPERATION_WRITE);
|
||||||
//printf("[Client] write success\n");
|
//printf("[Client] write success\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
free(pending.ptr);
|
free(pending.ptr);
|
||||||
mousefs_result_free(&result);
|
toastyfs_result_free(&result);
|
||||||
client->pending[i--] = client->pending[--client->num_pending];
|
client->pending[i--] = client->pending[--client->num_pending];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,8 +172,8 @@ int simulation_client_step(SimulationClient *client, void **contexts,
|
|||||||
case PENDING_OPERATION_CREATE:
|
case PENDING_OPERATION_CREATE:
|
||||||
entry = table[random_in_range(0, table_len-1)];
|
entry = table[random_in_range(0, table_len-1)];
|
||||||
chunk_size = entry.is_dir ? 0 : random_in_range(0, 5000);
|
chunk_size = entry.is_dir ? 0 : random_in_range(0, 5000);
|
||||||
ret = mousefs_submit_create(
|
ret = toastyfs_submit_create(
|
||||||
client->mfs,
|
client->tfs,
|
||||||
entry.path,
|
entry.path,
|
||||||
-1,
|
-1,
|
||||||
entry.is_dir,
|
entry.is_dir,
|
||||||
@@ -184,8 +184,8 @@ int simulation_client_step(SimulationClient *client, void **contexts,
|
|||||||
|
|
||||||
case PENDING_OPERATION_DELETE:
|
case PENDING_OPERATION_DELETE:
|
||||||
entry = table[random_in_range(0, table_len-1)];
|
entry = table[random_in_range(0, table_len-1)];
|
||||||
ret = mousefs_submit_delete(
|
ret = toastyfs_submit_delete(
|
||||||
client->mfs,
|
client->tfs,
|
||||||
entry.path,
|
entry.path,
|
||||||
-1
|
-1
|
||||||
);
|
);
|
||||||
@@ -194,8 +194,8 @@ int simulation_client_step(SimulationClient *client, void **contexts,
|
|||||||
|
|
||||||
case PENDING_OPERATION_LIST:
|
case PENDING_OPERATION_LIST:
|
||||||
entry = table[random_in_range(0, table_len-1)];
|
entry = table[random_in_range(0, table_len-1)];
|
||||||
ret = mousefs_submit_list(
|
ret = toastyfs_submit_list(
|
||||||
client->mfs,
|
client->tfs,
|
||||||
entry.path,
|
entry.path,
|
||||||
-1
|
-1
|
||||||
);
|
);
|
||||||
@@ -208,7 +208,7 @@ int simulation_client_step(SimulationClient *client, void **contexts,
|
|||||||
len = random_in_range(0, 5000);
|
len = random_in_range(0, 5000);
|
||||||
ptr = malloc(len);
|
ptr = malloc(len);
|
||||||
if (ptr == NULL) assert(0);
|
if (ptr == NULL) assert(0);
|
||||||
ret = mousefs_submit_read(client->mfs,
|
ret = toastyfs_submit_read(client->tfs,
|
||||||
entry.path,
|
entry.path,
|
||||||
-1,
|
-1,
|
||||||
off,
|
off,
|
||||||
@@ -225,8 +225,8 @@ int simulation_client_step(SimulationClient *client, void **contexts,
|
|||||||
ptr = malloc(len);
|
ptr = malloc(len);
|
||||||
if (ptr == NULL) assert(0);
|
if (ptr == NULL) assert(0);
|
||||||
memset(ptr, 'a', len);
|
memset(ptr, 'a', len);
|
||||||
ret = mousefs_submit_write(
|
ret = toastyfs_submit_write(
|
||||||
client->mfs,
|
client->tfs,
|
||||||
entry.path,
|
entry.path,
|
||||||
-1,
|
-1,
|
||||||
off,
|
off,
|
||||||
@@ -250,12 +250,12 @@ int simulation_client_step(SimulationClient *client, void **contexts,
|
|||||||
*timeout = 10;
|
*timeout = 10;
|
||||||
else
|
else
|
||||||
*timeout = -1;
|
*timeout = -1;
|
||||||
return mousefs_process_events(client->mfs, contexts, polled, 0);
|
return toastyfs_process_events(client->tfs, contexts, polled, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void simulation_client_free(SimulationClient *client)
|
void simulation_client_free(SimulationClient *client)
|
||||||
{
|
{
|
||||||
mousefs_free(client->mfs);
|
toastyfs_free(client->tfs);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // BUILD_TEST
|
#endif // BUILD_TEST
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
#include <poll.h>
|
#include <poll.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "MouseFS.h"
|
#include "ToastyFS.h"
|
||||||
|
|
||||||
#define MAX_PENDING_OPERATION 8
|
#define MAX_PENDING_OPERATION 8
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ typedef struct {
|
|||||||
} PendingOperation;
|
} PendingOperation;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
MouseFS *mfs;
|
ToastyFS *tfs;
|
||||||
int num_pending;
|
int num_pending;
|
||||||
PendingOperation pending[MAX_PENDING_OPERATION];
|
PendingOperation pending[MAX_PENDING_OPERATION];
|
||||||
} SimulationClient;
|
} SimulationClient;
|
||||||
|
|||||||
Reference in New Issue
Block a user