redict/tests/integration
Raghav Muddur 0367a80819
GETEX, GETDEL and SET PXAT/EXAT (#8327)
This commit introduces two new command and two options for an existing command

GETEX <key> [PERSIST][EX seconds][PX milliseconds] [EXAT seconds-timestamp]
[PXAT milliseconds-timestamp]

The getexCommand() function implements extended options and variants of the GET
command. Unlike GET command this command is not read-only. Only one of the options
can be used at a given time.

1. PERSIST removes any TTL associated with the key.
2. EX Set expiry TTL in seconds.
3. PX Set expiry TTL in milliseconds.
4. EXAT Same like EX instead of specifying the number of seconds representing the
    TTL (time to live), it takes an absolute Unix timestamp
5. PXAT Same like PX instead of specifying the number of milliseconds representing the
    TTL (time to live), it takes an absolute Unix timestamp

Command would return either the bulk string, error or nil.

GETDEL <key>
Would delete the key after getting.

SET key value [NX] [XX] [KEEPTTL] [GET] [EX <seconds>] [PX <milliseconds>]
[EXAT <seconds-timestamp>][PXAT <milliseconds-timestamp>]

Two new options added here are EXAT and PXAT

Key implementation notes
- `SET` with `PX/EX/EXAT/PXAT` is always translated to `PXAT` in `AOF`. When relative time is
  specified (`PX/EX`), replication will always use `PX`.
- `setexCommand` and `psetexCommand` would no longer need translation in `feedAppendOnlyFile`
  as they are modified to invoke `setGenericCommand ` with appropriate flags which will take care of
  correct AOF translation.
- `GETEX` without any optional argument behaves like `GET`.
- `GETEX` command is never propagated, It is either propagated as `PEXPIRE[AT], or PERSIST`.
- `GETDEL` command is propagated as `DEL`
- Combined the validation for `SET` and `GETEX` arguments. 
- Test cases to validate AOF/Replication propagation
2021-01-27 19:47:26 +02:00
..
aof-race.tcl TLS: Connections refactoring and TLS support. 2019-10-07 21:06:13 +03:00
aof.tcl GETEX, GETDEL and SET PXAT/EXAT (#8327) 2021-01-27 19:47:26 +02:00
block-repl.tcl TLS: Connections refactoring and TLS support. 2019-10-07 21:06:13 +03:00
convert-zipmap-hash-on-load.tcl convert-zipmap-hash-on-load false positive fixed. 2012-03-25 11:02:16 +02:00
corrupt-dump-fuzzer.tcl Sanitize dump payload: fuzz tester and fixes for segfaults and leaks it exposed 2020-12-06 14:54:34 +02:00
corrupt-dump.tcl Sanitize dump payload: excessive free on dup zset fields (#8189) 2020-12-14 17:10:31 +02:00
logging.tcl Disable new SIGABRT test on valgrind (#8013) 2020-11-04 13:13:55 +02:00
psync2-pingoff.tcl fix pingoff test race 2020-05-31 15:51:52 +03:00
psync2-reg.tcl fix loading race in psync2 tests 2020-04-28 09:18:01 +03:00
psync2.tcl Sanitize dump payload: fuzz tester and fixes for segfaults and leaks it exposed 2020-12-06 14:54:34 +02:00
rdb.tcl Add io-thread daily CI tests. (#8232) 2021-01-17 15:48:48 +02:00
redis-benchmark.tcl Add io-thread daily CI tests. (#8232) 2021-01-17 15:48:48 +02:00
redis-cli.tcl Tests: clean up stale .cli files. (#7768) 2020-09-09 12:30:43 +03:00
replication-2.tcl Slave removal: remove slave from integration tests descriptions. 2018-09-11 15:32:28 +02:00
replication-3.tcl add daily github actions with libc malloc and valgrind 2020-05-04 09:52:20 +03:00
replication-4.tcl Add io-thread daily CI tests. (#8232) 2021-01-17 15:48:48 +02:00
replication-psync.tcl diskless replication on slave side (don't store rdb to file), plus some other related fixes 2019-07-08 15:37:48 +03:00
replication.tcl Add io-thread daily CI tests. (#8232) 2021-01-17 15:48:48 +02:00