Run module tests as part of the base redis testsuit (#14226)

integrate module API tests into default test suite
- Add module_tests target to main Makefile to build test modules
- Include unit/moduleapi in test_dirs to run module tests with ./runtest
- Module API tests now run by default instead of requiring
runtest-moduleapi

---------

Co-authored-by: debing.sun <debing.sun@redis.com>
This commit is contained in:
Stav-Levi 2025-08-26 14:49:05 +03:00 committed by GitHub
parent c333dbd9a3
commit 81df8deca6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
48 changed files with 85 additions and 158 deletions

View file

@ -16,8 +16,6 @@ jobs:
run: |
sudo apt-get install tcl8.6 tclx
./runtest --verbose --tags -slow --dump-logs
- name: module api test
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs
- name: validate commands.def up to date
run: |
touch src/commands/ping.json
@ -36,8 +34,6 @@ jobs:
run: sudo apt-get install tcl8.6 tclx -y
- name: test
run: ./runtest --verbose --tags -slow --dump-logs
- name: module api test
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs
build-debian-old:
runs-on: ubuntu-latest

View file

@ -58,9 +58,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
@ -100,9 +97,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
@ -140,9 +134,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
@ -177,9 +168,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
@ -211,16 +199,12 @@ jobs:
run: |
sudo apt-get update && sudo apt-get install libc6-dev-i386 g++ gcc-multilib g++-multilib
make 32bit REDIS_CFLAGS='-Werror -DREDIS_TEST'
make -C tests/modules 32bit # the script below doesn't have an argument, we must build manually ahead of time
- name: testprep
run: sudo apt-get install tcl8.6 tclx
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: |
make -C tests/modules 32bit # the script below doesn't have an argument, we must build manually ahead of time
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
@ -262,10 +246,6 @@ jobs:
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: |
./runtest --accurate --verbose --dump-logs --tls --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: |
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs --tls --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: |
@ -306,10 +286,6 @@ jobs:
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: |
./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: |
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: |
@ -485,9 +461,6 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install tcl8.6 tclx valgrind -y
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --valgrind --no-latency --verbose --clients 1 --timeout 2400 --dump-logs ${{github.event.inputs.test_args}}
- name: unittest
if: true && !contains(github.event.inputs.skiptests, 'unittest')
run: |
@ -550,9 +523,6 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install tcl8.6 tclx valgrind -y
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --valgrind --no-latency --verbose --clients 1 --timeout 2400 --dump-logs ${{github.event.inputs.test_args}}
- name: unittest
if: true && !contains(github.event.inputs.skiptests, 'unittest')
run: |
@ -593,9 +563,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
@ -637,9 +604,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: SANITIZER=memory CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
@ -684,9 +648,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
@ -733,9 +694,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --tsan --clients 1 --config io-threads 4 --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --tsan --clients 1 --config io-threads 4 --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel --config io-threads 2 ${{github.event.inputs.cluster_test_args}}
@ -775,9 +733,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
@ -819,10 +774,6 @@ jobs:
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: |
./runtest --accurate --verbose --dump-logs --tls-module --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: |
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs --tls-module --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: |
@ -866,10 +817,6 @@ jobs:
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: |
./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: |
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: |
@ -904,9 +851,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --accurate --verbose --clients 1 --no-latency --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --clients 1 --no-latency --dump-logs ${{github.event.inputs.test_args}}
test-macos-latest-sentinel:
runs-on: macos-latest
@ -1049,9 +993,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
@ -1088,9 +1029,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
@ -1125,9 +1063,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --log-req-res --no-latency --dont-clean --force-resp3 --tags -slow --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --log-req-res --no-latency --dont-clean --force-resp3 --dont-pre-clean --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel --log-req-res --dont-clean --force-resp3 ${{github.event.inputs.cluster_test_args}}
@ -1180,9 +1115,6 @@ jobs:
- name: test
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
@ -1232,10 +1164,6 @@ jobs:
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: |
./runtest --accurate --verbose --dump-logs --tls-module --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: |
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs --tls-module --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: |
@ -1287,10 +1215,6 @@ jobs:
if: true && !contains(github.event.inputs.skiptests, 'redis')
run: |
./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: module api test
if: true && !contains(github.event.inputs.skiptests, 'modules')
run: |
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
- name: sentinel tests
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
run: |

View file

@ -384,7 +384,7 @@ REDIS_CHECK_RDB_NAME=redis-check-rdb$(PROG_SUFFIX)
REDIS_CHECK_AOF_NAME=redis-check-aof$(PROG_SUFFIX)
ALL_SOURCES=$(sort $(patsubst %.o,%.c,$(REDIS_SERVER_OBJ) $(REDIS_VEC_SETS_OBJ) $(REDIS_CLI_OBJ) $(REDIS_BENCHMARK_OBJ)))
all: $(REDIS_SERVER_NAME) $(REDIS_SENTINEL_NAME) $(REDIS_CLI_NAME) $(REDIS_BENCHMARK_NAME) $(REDIS_CHECK_RDB_NAME) $(REDIS_CHECK_AOF_NAME) $(TLS_MODULE)
all: $(REDIS_SERVER_NAME) $(REDIS_SENTINEL_NAME) $(REDIS_CLI_NAME) $(REDIS_BENCHMARK_NAME) $(REDIS_CHECK_RDB_NAME) $(REDIS_CHECK_AOF_NAME) $(TLS_MODULE) module_tests
@echo ""
@echo "Hint: It's a good idea to run 'make test' ;)"
@echo ""
@ -398,6 +398,11 @@ endif
.PHONY: all
module_tests:
$(MAKE) -C ../tests/modules
.PHONY: module_tests
persist-settings: distclean
echo STD=$(STD) >> .make-settings
echo WARN=$(WARN) >> .make-settings
@ -482,6 +487,7 @@ commands.c: $(COMMANDS_DEF_FILENAME).def
clean:
rm -rf $(REDIS_SERVER_NAME) $(REDIS_SENTINEL_NAME) $(REDIS_CLI_NAME) $(REDIS_BENCHMARK_NAME) $(REDIS_CHECK_RDB_NAME) $(REDIS_CHECK_AOF_NAME) *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep *.so
rm -f $(DEP)
-(cd ../tests/modules && $(MAKE) clean)
.PHONY: clean

View file

@ -24,6 +24,7 @@ set ::all_tests []
set test_dirs {
unit
unit/type
unit/moduleapi
unit/cluster
integration
}

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/aclcheck.so]
start_server {tags {"modules acl"}} {
start_server {tags {"modules acl external:skip"}} {
r module load $testmodule
test {test module check acl for command perm} {
@ -158,7 +158,7 @@ start_server {tags {"modules acl"}} {
}
}
start_server {tags {"modules acl"}} {
start_server {tags {"modules acl external:skip"}} {
test {test existing users to have access to module commands loaded on runtime} {
r acl SETUSER j3 on >password -@all +@WRITE
assert_equal [r module load $testmodule] OK
@ -167,7 +167,7 @@ start_server {tags {"modules acl"}} {
}
}
start_server {tags {"modules acl"}} {
start_server {tags {"modules acl external:skip"}} {
test {test existing users without permissions, do not have access to module commands loaded on runtime.} {
r acl SETUSER j4 on >password -@all +@READ
r acl SETUSER j5 on >password -@all +@WRITE
@ -200,7 +200,7 @@ start_server {tags {"modules acl"}} {
}
}
start_server {tags {"modules acl"}} {
start_server {tags {"modules acl external:skip"}} {
test {test module load fails if exceeds the maximum number of adding acl categories} {
assert_error {ERR Error loading the extension. Please check the server logs.} {r module load $testmodule 1}
}

View file

@ -2,7 +2,7 @@ set testmodule [file normalize tests/modules/blockedclient.so]
set testmodule2 [file normalize tests/modules/postnotifications.so]
set testmodule3 [file normalize tests/modules/blockonkeys.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {Locked GIL acquisition from async RM_Call} {
@ -140,7 +140,7 @@ start_server {tags {"modules"}} {
$rd wait_and_do_rm_call blpop l 0
wait_for_blocked_clients_count 1
start_server {} {
start_server {tags {"external:skip"}} {
test "Connect a replica to the master instance" {
r slaveof [srv -1 host] [srv -1 port]
wait_for_condition 50 100 {
@ -222,7 +222,7 @@ start_server {tags {"modules"}} {
}
}
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {Test basic replication stream on unblock handler} {
@ -299,7 +299,7 @@ start_server {tags {"modules"}} {
}
}
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
r module load $testmodule2
@ -416,7 +416,7 @@ start_server {tags {"modules"}} {
}
}
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
r module load $testmodule3

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/auth.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {Modules can create a user that can be authenticated} {

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/basics.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {test module api basics} {

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/blockedclient.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {Locked GIL acquisition} {
@ -261,7 +261,7 @@ foreach call_type {nested normal} {
set master [srv 0 client]
set master_host [srv 0 host]
set master_port [srv 0 port]
start_server [list overrides [list loadmodule "$testmodule"]] {
start_server [list overrides [list loadmodule "$testmodule"] tags {"external:skip"}] {
set replica [srv 0 client]
set replica_host [srv 0 host]
set replica_port [srv 0 port]

View file

@ -4,7 +4,7 @@ proc latency_percentiles_usec {cmd} {
return [latencyrstat_percentiles $cmd r]
}
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test { blocked clients time tracking - check blocked command that uses RedisModule_BlockedClientMeasureTimeStart() is tracking background time} {

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/blockonkeys.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test "Module client blocked on keys: Circular BPOPPUSH" {
@ -332,7 +332,7 @@ start_server {tags {"modules"}} {
set master [srv 0 client]
set master_host [srv 0 host]
set master_port [srv 0 port]
start_server [list overrides [list loadmodule "$testmodule"]] {
start_server [list overrides [list loadmodule "$testmodule"] tags {"external:skip"}] {
set replica [srv 0 client]
set replica_host [srv 0 host]
set replica_port [srv 0 port]

View file

@ -10,7 +10,7 @@ set testmodule_blockedclient [file normalize tests/modules/blockedclient.so]
set testmodule [file normalize tests/modules/blockonkeys.so]
set modules [list loadmodule $testmodule loadmodule $testmodule_nokey loadmodule $testmodule_blockedclient]
start_cluster 3 0 [list config_lines $modules] {
start_cluster 3 0 [list tags {external:skip cluster modules} config_lines $modules] {
set node1 [srv 0 client]
set node2 [srv -1 client]
@ -166,7 +166,7 @@ start_cluster 3 0 [list config_lines $modules] {
set testmodule_keyspace_events [file normalize tests/modules/keyspace_events.so]
set testmodule_postnotifications "[file normalize tests/modules/postnotifications.so] with_key_events"
set modules [list loadmodule $testmodule_keyspace_events loadmodule $testmodule_postnotifications]
start_cluster 2 2 [list config_lines $modules] {
start_cluster 2 2 [list tags {external:skip cluster modules} config_lines $modules] {
set master1 [srv 0 client]
set master2 [srv -1 client]
@ -213,7 +213,7 @@ start_cluster 2 2 [list config_lines $modules] {
set testmodule [file normalize tests/modules/basics.so]
set modules [list loadmodule $testmodule]
start_cluster 3 0 [list config_lines $modules] {
start_cluster 3 0 [list tags {external:skip cluster modules} config_lines $modules] {
set node1 [srv 0 client]
set node2 [srv -1 client]
set node3 [srv -2 client]

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/cmdintrospection.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
# cmdintrospection.xadd mimics XADD with regards to how

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/commandfilter.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule log-key 0
test {Retain a command filter argument} {
@ -103,7 +103,7 @@ test {RM_CommandFilterArgInsert and script argv caching} {
# this test needs a fresh server so that lua_argv_size is 0.
# glibc realloc can return the same pointer even when the size changes
# still this test isn't able to trigger the issue, but we keep it anyway.
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule log-key 0
r del mylist
# command with 6 args
@ -119,7 +119,7 @@ test {RM_CommandFilterArgInsert and script argv caching} {
# previously, there was a bug that command filters would be rerun (which would cause args to swap back)
# this test is meant to protect against that bug
test {Blocking Commands don't run through command filter when reprocessed} {
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule log-key 0
r del list1{t}
@ -145,7 +145,7 @@ test {Blocking Commands don't run through command filter when reprocessed} {
}
test {Filtering based on client id} {
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule log-key 0
set rr [redis_client]
@ -164,7 +164,7 @@ test {Filtering based on client id} {
}
}
start_server {} {
start_server {tags {"external:skip"}} {
test {OnLoad failure will handle un-registration} {
catch {r module load $testmodule log-key 0 noload}
r set mykey @log

View file

@ -1,7 +1,7 @@
set testmodule [file normalize tests/modules/configaccess.so]
set othermodule [file normalize tests/modules/moduleconfigs.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
r module loadex $othermodule CONFIG moduleconfigs.mutable_bool yes

View file

@ -5,7 +5,7 @@ set backtrace_supported [system_backtrace_supported]
# Valgrind will complain that the process terminated by a signal, skip it.
if {!$::valgrind && !$::tsan} {
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule assert
test {Test module crash when info crashes with an assertion } {
catch {r 0 info modulecrash}
@ -31,7 +31,7 @@ if {!$::valgrind && !$::tsan} {
}
}
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule segfault
test {Test module crash when info crashes with a segfault} {
catch {r 0 info modulecrash}
@ -61,7 +61,7 @@ if {!$::valgrind && !$::tsan} {
}
}
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
# memcheck confuses sanitizer
@ -83,7 +83,7 @@ if {!$::valgrind && !$::tsan} {
}
}
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
# memcheck confuses sanitizer
@ -108,7 +108,7 @@ if {!$::valgrind && !$::tsan} {
}
}
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
# memcheck confuses sanitizer

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/datatype.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
test {DataType: test loadex with invalid config} {
catch { r module loadex $testmodule CONFIG invalid_config 1 } e
assert_match {*ERR Error loading the extension*} $e

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/datatype2.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test "datatype2: test mem alloc and free" {

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/defragtest.so]
start_server {tags {"modules"} overrides {{save ""}}} {
start_server {tags {"modules external:skip"} overrides {{save ""}}} {
r module load $testmodule
r config set hz 100
r config set active-defrag-ignore-bytes 1

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/eventloop.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test "Module eventloop sendbytes" {

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/fork.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {Module fork} {

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/getchannels.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
# Channels are currently used to just validate ACLs, so test them here

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/getkeys.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {COMMAND INFO correctly reports a movable keys module command} {

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/hash.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {Module hash set} {

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/hooks.so]
tags "modules" {
tags "modules external:skip" {
start_server [list overrides [list loadmodule "$testmodule" appendonly yes]] {
test {Test module aof save on server start from empty} {
assert {[r hooks.event_count persistence-syncaof-start] == 1}

View file

@ -7,7 +7,7 @@ proc field {info property} {
}
}
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule log-key 0
test {module reading info} {

View file

@ -2,7 +2,7 @@ set testmodule [file normalize tests/modules/infotest.so]
test {modules config rewrite} {
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
set modules [lmap x [r module list] {dict get $x name}]

View file

@ -1,4 +1,4 @@
tags {modules} {
tags {modules external:skip cluster} {
set testmodule [file normalize tests/modules/internalsecret.so]
set modules [list loadmodule $testmodule]

View file

@ -1,7 +1,7 @@
set testmodule [file normalize tests/modules/keyspace_events.so]
tags "modules" {
start_server [list overrides [list loadmodule "$testmodule"]] {
tags "modules external:skip" {
start_server [list overrides [list loadmodule "$testmodule"] tags {"external:skip"}] {
# avoid using shared integers, to increase the chance of detection heap issues
r config set maxmemory-policy allkeys-lru
@ -125,7 +125,7 @@ tags "modules" {
}
}
start_server {} {
start_server {tags {"external:skip"}} {
test {OnLoad failure will handle un-registration} {
catch {r module load $testmodule noload}
r set x 1

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/keyspecs.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test "Module key specs: No spec, only legacy triple" {

View file

@ -12,7 +12,7 @@ proc verify_list_edit_reply {reply argv} {
}
}
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {Module list set, get, insert, delete} {
@ -199,7 +199,7 @@ start_server {tags {"modules"}} {
# the KEYSIZES histogram remains accurate and that insert & delete was tested.
set testmodule [file normalize tests/modules/list.so]
set modules [list loadmodule $testmodule]
start_cluster 2 2 [list config_lines [list loadmodule $testmodule enable-debug-command yes]] {
start_cluster 2 2 [list tags {external:skip cluster modules} config_lines [list loadmodule $testmodule enable-debug-command yes]] {
test "Module list - KEYSIZES is updated correctly in cluster mode" {
for {set srvid -2} {$srvid <= 0} {incr srvid} {
set instance [srv $srvid client]

View file

@ -1,7 +1,7 @@
set testmodule [file normalize tests/modules/mallocsize.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {MallocSize of raw bytes} {

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/misc.so]
start_server {overrides {save {900 1}} tags {"modules"}} {
start_server {overrides {save {900 1}} tags {"modules external:skip"}} {
r module load $testmodule
test {test RM_Call} {
@ -503,7 +503,7 @@ start_server {overrides {save {900 1}} tags {"modules"}} {
}
}
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {test Dry Run - OK OOM/ACL} {
@ -562,7 +562,7 @@ if {[string match {*jemalloc*} [s mem_allocator]]} {
}
}
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
test {Detect incompatible operations in cluster mode for module} {
r config set cluster-compatibility-sample-ratio 100
set incompatible_ops [s cluster_incompatible_ops]

View file

@ -6,7 +6,7 @@ proc cmdstat {cmd} {
return [cmdrstat $cmd r]
}
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
r module load $testmoduletwo

View file

@ -1,7 +1,7 @@
set testmodule [file normalize tests/modules/moduleconfigs.so]
set testmoduletwo [file normalize tests/modules/moduleconfigstwo.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {Config get commands work} {
# Make sure config get module config works
@ -322,7 +322,7 @@ start_server {tags {"modules"}} {
assert_match {*Module Configurations were not set, missing LoadConfigs call. Unloading the module.*} $err
# successful
start_server [list overrides [list loadmodule "$testmodule" moduleconfigs.string "bootedup" moduleconfigs.enum two moduleconfigs.flags "two four"]] {
start_server [list overrides [list loadmodule "$testmodule" moduleconfigs.string "bootedup" moduleconfigs.enum two moduleconfigs.flags "two four"] tags {"external:skip"}] {
assert_equal [r config get moduleconfigs.string] "moduleconfigs.string bootedup"
assert_equal [r config get moduleconfigs.mutable_bool] "moduleconfigs.mutable_bool yes"
assert_equal [r config get moduleconfigs.immutable_bool] "moduleconfigs.immutable_bool no"

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/postnotifications.so]
tags "modules" {
tags "modules external:skip" {
start_server {} {
r module load $testmodule with_key_events
@ -174,8 +174,8 @@ tags "modules" {
set testmodule2 [file normalize tests/modules/keyspace_events.so]
tags "modules" {
start_server {} {
tags "modules external:skip" {
start_server {tags {"external:skip"}} {
r module load $testmodule with_key_events
r module load $testmodule2
test {Test write on post notification callback} {

View file

@ -2,7 +2,7 @@ set testmodule [file normalize tests/modules/propagate.so]
set miscmodule [file normalize tests/modules/misc.so]
set keyspace_events [file normalize tests/modules/keyspace_events.so]
tags "modules" {
tags "modules external:skip" {
test {Modules can propagate in async and threaded contexts} {
start_server [list overrides [list loadmodule "$testmodule"]] {
set replica [srv 0 client]
@ -677,7 +677,7 @@ tags "modules" {
}
tags "modules aof" {
tags "modules aof external:skip" {
foreach aofload_type {debug_cmd startup} {
test "Modules RM_Replicate replicates MULTI/EXEC correctly: AOF-load type $aofload_type" {
start_server [list overrides [list loadmodule "$testmodule"]] {
@ -765,9 +765,9 @@ tags "modules aof" {
# This test does not really test module functionality, but rather uses a module
# command to test Redis replication mechanisms.
test {Replicas that was marked as CLIENT_CLOSE_ASAP should not keep the replication backlog from been trimmed} {
start_server [list overrides [list loadmodule "$testmodule"]] {
start_server [list overrides [list loadmodule "$testmodule"] tags {"external:skip"}] {
set replica [srv 0 client]
start_server [list overrides [list loadmodule "$testmodule"]] {
start_server [list overrides [list loadmodule "$testmodule"] tags {"external:skip"}] {
set master [srv 0 client]
set master_host [srv 0 host]
set master_port [srv 0 port]

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/publish.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {PUBLISH and SPUBLISH via a module} {

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/rdbloadsave.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test "Module rdbloadsave sanity" {
@ -147,11 +147,11 @@ start_server {tags {"modules"}} {
tags {repl} {
test {Module rdbloadsave on master and replica} {
start_server [list overrides [list loadmodule "$testmodule"]] {
start_server [list overrides [list loadmodule "$testmodule"] tags {"external:skip"}] {
set replica [srv 0 client]
set replica_host [srv 0 host]
set replica_port [srv 0 port]
start_server [list overrides [list loadmodule "$testmodule"]] {
start_server [list overrides [list loadmodule "$testmodule"] tags {"external:skip"}] {
set master [srv 0 client]
set master_host [srv 0 host]
set master_port [srv 0 port]

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/reply.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
# test all with hello 2/3

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/scan.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {Module scan keyspace} {

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/stream.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {Module stream add and delete} {

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/subcommands.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test "Module subcommands via COMMAND" {

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/test_lazyfree.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test "modules allocated memory can be reclaimed in the background" {

View file

@ -6,7 +6,7 @@
# 1 << 3 - do not save data on aux callback
set testmodule [file normalize tests/modules/testrdb.so]
tags "modules" {
tags "modules external:skip" {
test {modules are able to persist types} {
start_server [list overrides [list loadmodule "$testmodule"]] {
r testrdb.set.key key1 value1

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/timer.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {RM_CreateTimer: a sequence of timers work} {

View file

@ -8,7 +8,7 @@ set test_script_get "#!lua
redis.call('get','x')
return 1"
start_server {tags {"modules usercall"}} {
start_server {tags {"modules usercall external:skip"}} {
r module load $testmodule
# baseline test that module isn't doing anything weird

View file

@ -1,6 +1,6 @@
set testmodule [file normalize tests/modules/zset.so]
start_server {tags {"modules"}} {
start_server {tags {"modules external:skip"}} {
r module load $testmodule
test {Module zset rem} {