mirror of
http://github.com/valkey-io/valkey
synced 2024-11-22 00:52:38 +00:00
Migrate quicklist unit test to new framework (#515)
Migrate quicklist unit test to new unit test framework, and cleanup remaining references of SERVER_TEST, parent ticket #428. Closes #428. Signed-off-by: artikell <739609084@qq.com> Signed-off-by: Binbin <binloveplay1314@qq.com> Co-authored-by: Binbin <binloveplay1314@qq.com>
This commit is contained in:
parent
6fba747c39
commit
4a9864206f
49
.github/workflows/daily.yml
vendored
49
.github/workflows/daily.yml
vendored
@ -60,7 +60,7 @@ jobs:
|
||||
repository: ${{ env.GITHUB_REPOSITORY }}
|
||||
ref: ${{ env.GITHUB_HEAD_REF }}
|
||||
- name: make
|
||||
run: make all-with-unit-tests SERVER_CFLAGS='-Werror -DSERVER_TEST'
|
||||
run: make all-with-unit-tests SERVER_CFLAGS='-Werror'
|
||||
- name: testprep
|
||||
run: sudo apt-get install tcl8.6 tclx
|
||||
- name: test
|
||||
@ -75,10 +75,7 @@ jobs:
|
||||
- name: cluster tests
|
||||
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
||||
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
||||
- name: legacy unit tests
|
||||
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
||||
run: ./src/valkey-server test all --accurate
|
||||
- name: new unit tests
|
||||
- name: unittest
|
||||
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
||||
run: ./src/valkey-unit-tests --accurate
|
||||
|
||||
@ -109,7 +106,7 @@ jobs:
|
||||
run: |
|
||||
apt-get update && apt-get install -y make gcc-13
|
||||
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100
|
||||
make all-with-unit-tests CC=gcc OPT=-O3 SERVER_CFLAGS='-Werror -DSERVER_TEST -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3'
|
||||
make all-with-unit-tests CC=gcc OPT=-O3 SERVER_CFLAGS='-Werror -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3'
|
||||
- name: testprep
|
||||
run: apt-get install -y tcl8.6 tclx procps
|
||||
- name: test
|
||||
@ -124,10 +121,7 @@ jobs:
|
||||
- name: cluster tests
|
||||
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
||||
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
||||
- name: legacy unit tests
|
||||
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
||||
run: ./src/valkey-server test all --accurate
|
||||
- name: new unit tests
|
||||
- name: unittest
|
||||
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
||||
run: ./src/valkey-unit-tests --accurate
|
||||
|
||||
@ -234,7 +228,7 @@ jobs:
|
||||
- name: make
|
||||
run: |
|
||||
sudo apt-get update && sudo apt-get install libc6-dev-i386
|
||||
make 32bit SERVER_CFLAGS='-Werror -DSERVER_TEST'
|
||||
make 32bit SERVER_CFLAGS='-Werror'
|
||||
- name: testprep
|
||||
run: sudo apt-get install tcl8.6 tclx
|
||||
- name: test
|
||||
@ -251,10 +245,7 @@ jobs:
|
||||
- name: cluster tests
|
||||
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
||||
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
||||
- name: legacy unit tests
|
||||
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
||||
run: ./src/valkey-server test all --accurate
|
||||
- name: new unit tests
|
||||
- name: unittest
|
||||
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
||||
run: ./src/valkey-unit-tests --accurate
|
||||
|
||||
@ -483,7 +474,7 @@ jobs:
|
||||
repository: ${{ env.GITHUB_REPOSITORY }}
|
||||
ref: ${{ env.GITHUB_HEAD_REF }}
|
||||
- name: make
|
||||
run: make valgrind SERVER_CFLAGS='-Werror -DSERVER_TEST'
|
||||
run: make valgrind SERVER_CFLAGS='-Werror'
|
||||
- name: testprep
|
||||
run: |
|
||||
sudo apt-get update
|
||||
@ -515,7 +506,7 @@ jobs:
|
||||
repository: ${{ env.GITHUB_REPOSITORY }}
|
||||
ref: ${{ env.GITHUB_HEAD_REF }}
|
||||
- name: make
|
||||
run: make valgrind SERVER_CFLAGS='-Werror -DSERVER_TEST'
|
||||
run: make all-with-unit-tests valgrind SERVER_CFLAGS='-Werror'
|
||||
- name: testprep
|
||||
run: |
|
||||
sudo apt-get update
|
||||
@ -526,7 +517,7 @@ jobs:
|
||||
- name: unittest
|
||||
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
||||
run: |
|
||||
valgrind --track-origins=yes --suppressions=./src/valgrind.sup --show-reachable=no --show-possibly-lost=no --leak-check=full --log-file=err.txt ./src/valkey-server test all --valgrind
|
||||
valgrind --track-origins=yes --suppressions=./src/valgrind.sup --show-reachable=no --show-possibly-lost=no --leak-check=full --log-file=err.txt ./src/valkey-unit-tests --valgrind
|
||||
if grep -q 0x err.txt; then cat err.txt; exit 1; fi
|
||||
|
||||
test-valgrind-no-malloc-usable-size-test:
|
||||
@ -552,7 +543,7 @@ jobs:
|
||||
repository: ${{ env.GITHUB_REPOSITORY }}
|
||||
ref: ${{ env.GITHUB_HEAD_REF }}
|
||||
- name: make
|
||||
run: make valgrind CFLAGS="-DNO_MALLOC_USABLE_SIZE -DSERVER_TEST" SERVER_CFLAGS='-Werror'
|
||||
run: make valgrind CFLAGS="-DNO_MALLOC_USABLE_SIZE" SERVER_CFLAGS='-Werror'
|
||||
- name: testprep
|
||||
run: |
|
||||
sudo apt-get update
|
||||
@ -584,7 +575,7 @@ jobs:
|
||||
repository: ${{ env.GITHUB_REPOSITORY }}
|
||||
ref: ${{ env.GITHUB_HEAD_REF }}
|
||||
- name: make
|
||||
run: make valgrind CFLAGS="-DNO_MALLOC_USABLE_SIZE -DSERVER_TEST" SERVER_CFLAGS='-Werror'
|
||||
run: make all-with-unit-tests valgrind CFLAGS="-DNO_MALLOC_USABLE_SIZE" SERVER_CFLAGS='-Werror'
|
||||
- name: testprep
|
||||
run: |
|
||||
sudo apt-get update
|
||||
@ -595,7 +586,7 @@ jobs:
|
||||
- name: unittest
|
||||
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
||||
run: |
|
||||
valgrind --track-origins=yes --suppressions=./src/valgrind.sup --show-reachable=no --show-possibly-lost=no --leak-check=full --log-file=err.txt ./src/valkey-server test all --valgrind
|
||||
valgrind --track-origins=yes --suppressions=./src/valgrind.sup --show-reachable=no --show-possibly-lost=no --leak-check=full --log-file=err.txt ./src/valkey-unit-tests --valgrind
|
||||
if grep -q 0x err.txt; then cat err.txt; exit 1; fi
|
||||
|
||||
test-sanitizer-address:
|
||||
@ -627,7 +618,7 @@ jobs:
|
||||
repository: ${{ env.GITHUB_REPOSITORY }}
|
||||
ref: ${{ env.GITHUB_HEAD_REF }}
|
||||
- name: make
|
||||
run: make all-with-unit-tests OPT=-O3 SANITIZER=address SERVER_CFLAGS='-DSERVER_TEST -Werror'
|
||||
run: make all-with-unit-tests OPT=-O3 SANITIZER=address SERVER_CFLAGS='-Werror'
|
||||
- name: testprep
|
||||
run: |
|
||||
sudo apt-get update
|
||||
@ -644,10 +635,7 @@ jobs:
|
||||
- name: cluster tests
|
||||
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
||||
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
||||
- name: legacy unit tests
|
||||
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
||||
run: ./src/valkey-server test all
|
||||
- name: new unit tests
|
||||
- name: unittest
|
||||
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
||||
run: ./src/valkey-unit-tests
|
||||
|
||||
@ -680,7 +668,7 @@ jobs:
|
||||
repository: ${{ env.GITHUB_REPOSITORY }}
|
||||
ref: ${{ env.GITHUB_HEAD_REF }}
|
||||
- name: make
|
||||
run: make all-with-unit-tests OPT=-O3 SANITIZER=undefined SERVER_CFLAGS='-DSERVER_TEST -Werror' LUA_DEBUG=yes # we (ab)use this flow to also check Lua C API violations
|
||||
run: make all-with-unit-tests OPT=-O3 SANITIZER=undefined SERVER_CFLAGS='-Werror' LUA_DEBUG=yes # we (ab)use this flow to also check Lua C API violations
|
||||
- name: testprep
|
||||
run: |
|
||||
sudo apt-get update
|
||||
@ -697,10 +685,7 @@ jobs:
|
||||
- name: cluster tests
|
||||
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
||||
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
||||
- name: legacy unit tests
|
||||
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
||||
run: ./src/valkey-server test all --accurate
|
||||
- name: new unit tests
|
||||
- name: unittest
|
||||
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
||||
run: ./src/valkey-unit-tests --accurate
|
||||
|
||||
@ -1031,7 +1016,7 @@ jobs:
|
||||
repository: ${{ env.GITHUB_REPOSITORY }}
|
||||
ref: ${{ env.GITHUB_HEAD_REF }}
|
||||
- name: make
|
||||
run: make SERVER_CFLAGS='-Werror -DSERVER_TEST'
|
||||
run: make SERVER_CFLAGS='-Werror'
|
||||
|
||||
test-freebsd:
|
||||
runs-on: macos-12
|
||||
|
@ -131,9 +131,6 @@ ifdef REDIS_LDFLAGS
|
||||
endif
|
||||
|
||||
FINAL_CFLAGS=$(STD) $(WARN) $(OPT) $(DEBUG) $(CFLAGS) $(SERVER_CFLAGS)
|
||||
ifeq ($(SERVER_TEST),yes)
|
||||
FINAL_CFLAGS +=-DSERVER_TEST=1
|
||||
endif
|
||||
FINAL_LDFLAGS=$(LDFLAGS) $(OPT) $(SERVER_LDFLAGS) $(DEBUG)
|
||||
FINAL_LIBS=-lm
|
||||
DEBUG=-g -ggdb
|
||||
|
1420
src/quicklist.c
1420
src/quicklist.c
File diff suppressed because it is too large
Load Diff
@ -198,10 +198,6 @@ quicklistNode *quicklistBookmarkFind(quicklist *ql, const char *name);
|
||||
void quicklistBookmarksClear(quicklist *ql);
|
||||
int quicklistSetPackedThreshold(size_t sz);
|
||||
|
||||
#ifdef SERVER_TEST
|
||||
int quicklistTest(int argc, char *argv[], int flags);
|
||||
#endif
|
||||
|
||||
/* Directions for iterators */
|
||||
#define AL_START_HEAD 0
|
||||
#define AL_START_TAIL 1
|
||||
|
73
src/server.c
73
src/server.c
@ -6774,85 +6774,12 @@ int iAmPrimary(void) {
|
||||
(server.cluster_enabled && clusterNodeIsPrimary(getMyClusterNode())));
|
||||
}
|
||||
|
||||
#ifdef SERVER_TEST
|
||||
#include "testhelp.h"
|
||||
#include "intset.h" /* Compact integer set structure */
|
||||
|
||||
int __failed_tests = 0;
|
||||
int __test_num = 0;
|
||||
|
||||
/* The flags are the following:
|
||||
* --accurate: Runs tests with more iterations.
|
||||
* --large-memory: Enables tests that consume more than 100mb. */
|
||||
typedef int serverTestProc(int argc, char **argv, int flags);
|
||||
struct serverTest {
|
||||
char *name;
|
||||
serverTestProc *proc;
|
||||
int failed;
|
||||
} serverTests[] = {
|
||||
{"quicklist", quicklistTest},
|
||||
};
|
||||
serverTestProc *getTestProcByName(const char *name) {
|
||||
int numtests = sizeof(serverTests) / sizeof(struct serverTest);
|
||||
for (int j = 0; j < numtests; j++) {
|
||||
if (!strcasecmp(name, serverTests[j].name)) {
|
||||
return serverTests[j].proc;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Main is marked as weak so that unit tests can use their own main function. */
|
||||
__attribute__((weak)) int main(int argc, char **argv) {
|
||||
struct timeval tv;
|
||||
int j;
|
||||
char config_from_stdin = 0;
|
||||
|
||||
#ifdef SERVER_TEST
|
||||
monotonicInit(); /* Required for dict tests, that are relying on monotime during dict rehashing. */
|
||||
if (argc >= 3 && !strcasecmp(argv[1], "test")) {
|
||||
int flags = 0;
|
||||
for (j = 3; j < argc; j++) {
|
||||
char *arg = argv[j];
|
||||
if (!strcasecmp(arg, "--accurate"))
|
||||
flags |= TEST_ACCURATE;
|
||||
else if (!strcasecmp(arg, "--large-memory"))
|
||||
flags |= TEST_LARGE_MEMORY;
|
||||
else if (!strcasecmp(arg, "--valgrind"))
|
||||
flags |= TEST_VALGRIND;
|
||||
}
|
||||
|
||||
if (!strcasecmp(argv[2], "all")) {
|
||||
int numtests = sizeof(serverTests) / sizeof(struct serverTest);
|
||||
for (j = 0; j < numtests; j++) {
|
||||
serverTests[j].failed = (serverTests[j].proc(argc, argv, flags) != 0);
|
||||
}
|
||||
|
||||
/* Report tests result */
|
||||
int failed_num = 0;
|
||||
for (j = 0; j < numtests; j++) {
|
||||
if (serverTests[j].failed) {
|
||||
failed_num++;
|
||||
printf("[failed] Test - %s\n", serverTests[j].name);
|
||||
} else {
|
||||
printf("[ok] Test - %s\n", serverTests[j].name);
|
||||
}
|
||||
}
|
||||
|
||||
printf("%d tests, %d passed, %d failed\n", numtests, numtests - failed_num, failed_num);
|
||||
|
||||
return failed_num == 0 ? 0 : 1;
|
||||
} else {
|
||||
serverTestProc *proc = getTestProcByName(argv[2]);
|
||||
if (!proc) return -1; /* test not found */
|
||||
return proc(argc, argv, flags);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* We need to initialize our libraries, and the server configuration. */
|
||||
#ifdef INIT_SETPROCTITLE_REPLACEMENT
|
||||
spt_init(argc, argv);
|
||||
|
File diff suppressed because one or more lines are too long
2300
src/unit/test_quicklist.c
Normal file
2300
src/unit/test_quicklist.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user