Commit 2966358a authored by willem's avatar willem
Browse files

Merge branch 'master' of https://github.com/willemt/CRaft

Conflicts:
	include/raft_log.h
parents d35cf92d 1d7aa60f
...@@ -5,11 +5,24 @@ LLQUEUE_DIR = $(CONTRIB_DIR)/CLinkedListQueue ...@@ -5,11 +5,24 @@ LLQUEUE_DIR = $(CONTRIB_DIR)/CLinkedListQueue
GCOV_OUTPUT = *.gcda *.gcno *.gcov GCOV_OUTPUT = *.gcda *.gcno *.gcov
GCOV_CCFLAGS = -fprofile-arcs -ftest-coverage GCOV_CCFLAGS = -fprofile-arcs -ftest-coverage
SHELL = /bin/bash SHELL = /bin/bash
CC = gcc CFLAGS += -Iinclude -Werror -Werror=return-type -Werror=uninitialized -Wcast-align \
CCFLAGS = -g -O2 -Werror -Werror=return-type -Werror=uninitialized -Wcast-align -fno-omit-frame-pointer -fno-common -fsigned-char $(GCOV_CCFLAGS) -I$(LLQUEUE_DIR) -Iinclude -Wno-pointer-sign -fno-omit-frame-pointer -fno-common -fsigned-char \
$(GCOV_CCFLAGS) -I$(LLQUEUE_DIR) -Iinclude -fPIC -g -O2
all: tests_main UNAME := $(shell uname)
ifeq ($(UNAME), Darwin)
SHAREDFLAGS = -dynamiclib
SHAREDEXT = dylib
else
SHAREDFLAGS = -shared
SHAREDEXT = so
endif
OBJECTS = raft_server.o raft_server_properties.o raft_node.o raft_log.o
all: static shared
clinkedlistqueue: clinkedlistqueue:
mkdir -p $(LLQUEUE_DIR)/.git mkdir -p $(LLQUEUE_DIR)/.git
git --git-dir=$(LLQUEUE_DIR)/.git init git --git-dir=$(LLQUEUE_DIR)/.git init
...@@ -24,10 +37,22 @@ $(TEST_DIR)/main_test.c: ...@@ -24,10 +37,22 @@ $(TEST_DIR)/main_test.c:
fi fi
cd $(TEST_DIR) && sh make-tests.sh "test_*.c" > main_test.c && cd .. cd $(TEST_DIR) && sh make-tests.sh "test_*.c" > main_test.c && cd ..
tests_main: raft_server.c raft_server_properties.c raft_log.c raft_node.c $(TEST_DIR)/main_test.c $(TEST_DIR)/test_server.c $(TEST_DIR)/test_node.c $(TEST_DIR)/test_log.c $(TEST_DIR)/test_scenario.c $(TEST_DIR)/mock_send_functions.c $(TEST_DIR)/CuTest.c $(LLQUEUE_DIR)/linked_list_queue.c .PHONY: shared
$(CC) $(CCFLAGS) -o $@ $^ shared: $(OBJECTS)
$(CC) $(OBJECTS) $(LDFLAGS) $(CFLAGS) $(SHAREDFLAGS) -o libcraft.$(SHAREDEXT)
.PHONY: static
static: $(OBJECTS)
ar -r libcraft.a $(OBJECTS)
.PHONY: tests
tests: raft_server.c raft_server_properties.c raft_log.c raft_node.c $(TEST_DIR)/main_test.c $(TEST_DIR)/test_server.c $(TEST_DIR)/test_node.c $(TEST_DIR)/test_log.c $(TEST_DIR)/test_scenario.c $(TEST_DIR)/mock_send_functions.c $(TEST_DIR)/CuTest.c $(LLQUEUE_DIR)/linked_list_queue.c
$(CC) $(CFLAGS) -o tests_main $^
./tests_main ./tests_main
gcov raft_server.c gcov raft_server.c
clean: clean:
rm -f $(TEST_DIR)/main_test.c *.o $(GCOV_OUTPUT) @rm -f $(TEST_DIR)/main_test.c *.o $(GCOV_OUTPUT); \
if [ -f "libcraft.$(SHAREDEXT)" ]; then rm libcraft.$(SHAREDEXT); fi;\
if [ -f libcraft.a ]; then rm libcraft.a; fi;\
if [ -f tests_main ]; then rm tests_main; fi;
#ifndef RAFT_LOG_H_ #ifndef RAFT_LOG_H_
#define RAFT_LOG_H_ #define RAFT_LOG_H_
...@@ -6,6 +5,8 @@ typedef void* log_t; ...@@ -6,6 +5,8 @@ typedef void* log_t;
log_t* log_new(); log_t* log_new();
void log_free(log_t* me_);
/** /**
* Add entry to log. * Add entry to log.
* Don't add entry if we've already added this entry (based off ID) * Don't add entry if we've already added this entry (based off ID)
...@@ -13,6 +14,8 @@ log_t* log_new(); ...@@ -13,6 +14,8 @@ log_t* log_new();
* @return 0 if unsucessful; 1 otherwise */ * @return 0 if unsucessful; 1 otherwise */
int log_append_entry(log_t* me_, raft_entry_t* c); int log_append_entry(log_t* me_, raft_entry_t* c);
/**
* @return number of entries held within log */
int log_count(log_t* me_); int log_count(log_t* me_);
/** /**
...@@ -30,10 +33,12 @@ void *log_poll(log_t * me_); ...@@ -30,10 +33,12 @@ void *log_poll(log_t * me_);
raft_entry_t* log_get_from_idx(log_t* me_, int idx); raft_entry_t* log_get_from_idx(log_t* me_, int idx);
/* /**
* @return youngest entry */ * @return youngest entry */
raft_entry_t *log_peektail(log_t * me_); raft_entry_t *log_peektail(log_t * me_);
void log_mark_peer_has_committed(log_t* me_, int idx); void log_mark_node_has_committed(log_t* me_, int idx);
void log_delete(log_t* me_, int idx);
#endif /* RAFT_LOG_H_ */ #endif /* RAFT_LOG_H_ */
...@@ -99,10 +99,12 @@ int raft_apply_entry(raft_server_t* me_); ...@@ -99,10 +99,12 @@ int raft_apply_entry(raft_server_t* me_);
int raft_append_entry(raft_server_t* me_, raft_entry_t* c); int raft_append_entry(raft_server_t* me_, raft_entry_t* c);
void raft_set_commit_idx(raft_server_t* me, int commit_idx); void raft_set_commit_idx(raft_server_t* me, int commit_idx);
int raft_get_commit_idx(raft_server_t* me_);
void raft_set_last_applied_idx(raft_server_t* me, int idx); void raft_set_last_applied_idx(raft_server_t* me, int idx);
void raft_set_state(raft_server_t* me_, int state); void raft_set_state(raft_server_t* me_, int state);
int raft_get_state(raft_server_t* me_);
raft_node_t* raft_node_new(void* udata); raft_node_t* raft_node_new(void* udata);
......
...@@ -23,7 +23,7 @@ cat $FILES | grep '^void Test' | ...@@ -23,7 +23,7 @@ cat $FILES | grep '^void Test' |
-e 's/$/(CuTest*);/' \ -e 's/$/(CuTest*);/' \
-e 's/^/extern /' -e 's/^/extern /'
echo -n \ echo \
' '
void RunAllTests(void) void RunAllTests(void)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment