1. 10 Sep, 2020 9 commits
    • bodong.ybd's avatar
      Tests: Some fixes for macOS · 781e50d4
      bodong.ybd authored
      1) cur_test: when restart_server, "no such variable" error occurs
        ./runtest --single integration/rdb
        test {client freed during loading}
            SET ::cur_test
            restart_server
              kill_server
                test "Check for memory leaks (pid $pid)"
                SET ::cur_test
                UNSET ::cur_test
            UNSET ::cur_test // This global variable has been unset.
      
      2) `ps --ppid` not available on macOS platform, can be replaced with
      `pgrep -P pid`.
      
      (cherry picked from commit f22fa959)
      781e50d4
    • Yossi Gottlieb's avatar
      Tests: fix unmonitored servers. (#7756) · e9fef49e
      Yossi Gottlieb authored
      There is an inherent race condition in port allocation for spawned
      servers. If a server fails to start because a port is taken, a new port
      is allocated. This fixes a problem where the logs are not truncated and
      as a result a large number of unmonitored servers are started.
      
      (cherry picked from commit 2df4cb93)
      e9fef49e
    • Oran Agra's avatar
      Improve valgrind support for cluster tests (#7725) · d410dc31
      Oran Agra authored
      - redirect valgrind reports to a dedicated file rather than console
      - try to avoid killing instances with SIGKILL so that we get the memory
        leak report (killing with SIGTERM before resorting to SIGKILL)
      - search for valgrind reports when done, print them and fail the tests
      - add --dont-clean option to keep the logs on exit
      - fix exit error code when crash is found (would have exited with 0)
      
      changes that affect the normal redis test suite:
      - refactor check_valgrind_errors into two functions one to search and
        one to report
      - move the search half into util.tcl to serve the cluster tests too
      - ignore "address range perms" valgrind warnings which seem non relevant.
      
      (cherry picked from commit 2b998de4)
      d410dc31
    • Oran Agra's avatar
      test infra - add durable mode to work around test suite crashing · 41c7c791
      Oran Agra authored
      in some cases a command that returns an error possibly due to a timing
      issue causes the tcl code to crash and thus prevents the rest of the
      tests from running. this adds an option to make the test proceed despite
      the crash.
      maybe it should be the default mode some day.
      
      (cherry picked from commit fe5da2e6)
      41c7c791
    • Oran Agra's avatar
      test infra - wait_done_loading · db6c763d
      Oran Agra authored
      reduce code duplication in aof.tcl.
      move creation of clients into the test so that it can be skipped
      
      (cherry picked from commit 1b7ba44e)
      db6c763d
    • Oran Agra's avatar
      test infra - flushall between tests in external mode · 72d6f966
      Oran Agra authored
      (cherry picked from commit b65e5aca)
      72d6f966
    • Oran Agra's avatar
      test infra - improve test skipping ability · 28e07460
      Oran Agra authored
      - skip full units
      - skip a single test (not just a list of tests)
      - when skipping tag, skip spinning up servers, not just the tests
      - skip tags when running against an external server too
      - allow using multiple tags (split them)
      
      (cherry picked from commit 677d14c2)
      28e07460
    • Oran Agra's avatar
      test infra - reduce disk space usage · 5b8de5b7
      Oran Agra authored
      this is important when running a test with --loop
      
      (cherry picked from commit e3e69c25)
      5b8de5b7
    • Oran Agra's avatar
      test infra - write test name to logfile · bce350c6
      Oran Agra authored
      (cherry picked from commit 9d527d07)
      bce350c6
  2. 01 Sep, 2020 4 commits
    • Yossi Gottlieb's avatar
      Tests: fix redis-cli with remote hosts. (#7693) · 8d79702d
      Yossi Gottlieb authored
      
      (cherry picked from commit f80f3f49)
      8d79702d
    • Oran Agra's avatar
      Fix failing tests due to issues with wait_for_log_message (#7572) · 67750ce3
      Oran Agra authored
      - the test now waits for specific set of log messages rather than wait for
        timeout looking for just one message.
      - we don't wanna sample the current length of the log after an action, due
        to a race, we need to start the search from the line number of the last
        message we where waiting for.
      - when attempting to trigger a full sync, use multi-exec to avoid a race
        where the replica manages to re-connect before we completed the set of
        actions that should force a full sync.
      - fix verify_log_message which was broken and unused
      
      (cherry picked from commit 109b5ccd)
      67750ce3
    • Oran Agra's avatar
      testsuite may leave servers alive on error (#7549) · e8aa5583
      Oran Agra authored
      in cases where you have
      test name {
        start_server {
          start_server {
            assert
          }
        }
      }
      
      the exception will be thrown to the test proc, and the servers are
      supposed to be killed on the way out. but it seems there was always a
      bug of not cleaning the server stack, and recently (#7404) we started
      relying on that stack in order to kill them, so with that bug sometimes
      we would have tried to kill the same server twice, and leave one alive.
      
      luckly, in most cases the pattern is:
      start_server {
        test name {
        }
      }
      
      (cherry picked from commit 36b94943)
      e8aa5583
    • Remi Collet's avatar
      Fix deprecated tail syntax in tests (#7543) · af907e4b
      Remi Collet authored
      
      (cherry picked from commit 3f2fbc4c)
      af907e4b
  3. 20 Jul, 2020 3 commits
    • Oran Agra's avatar
      runtest --stop pause stops before terminating the redis server (#7513) · b5c5f870
      Oran Agra authored
      in the majority of the cases (on this rarely used feature) we want to
      stop and be able to connect to the shard with redis-cli.
      since these are two different processes interracting with the tty we
      need to stop both, and we'll have to hit enter twice, but it's not that
      bad considering it is rarely used.
      
      (cherry picked from commit 02ef355f)
      b5c5f870
    • Oran Agra's avatar
      stabilize tests that look for log lines (#7367) · 2b5f2319
      Oran Agra authored
      tests were sensitive to additional log lines appearing in the log
      causing the search to come empty handed.
      
      instead of just looking for the n last log lines, capture the log lines
      before performing the action, and then search from that offset.
      
      (cherry picked from commit 8e76e134)
      2b5f2319
    • Oran Agra's avatar
      tests/valgrind: don't use debug restart (#7404) · 1104113c
      Oran Agra authored
      * tests/valgrind: don't use debug restart
      
      DEBUG REATART causes two issues:
      1. it uses execve which replaces the original process and valgrind doesn't
         have a chance to check for errors, so leaks go unreported.
      2. valgrind report invalid calls to close() which we're unable to resolve.
      
      So now the tests use restart_server mechanism in the tests, that terminates
      the old server and starts a new one, new PID, but same stdout, stderr.
      
      since the stderr can contain two or more valgrind report, it is not enough
      to just check for the absence of leaks, we also need to check for some known
      errors, we do both, and fail if we either find an error, or can't find a
      report saying there are no leaks.
      
      other changes:
      - when killing a server that was already terminated we check for leaks too.
      - adding DEBUG LEAK which was used to test it.
      - adding --trace-children to valgrind, although no longer needed.
      - since the stdout contains two or more runs, we need slightly different way
        of checking if the new process is up (explicitly looking for the new PID)
      - move the code that handles --wait-server to happen earlier (before
        watching the startup message in the log), and serve the restarted server too.
      
      * squashme - CR fixes
      
      (cherry picked from commit 69ade873)
      1104113c
  4. 28 May, 2020 2 commits
    • Oran Agra's avatar
      tests: find_available_port start search from next port · 1aee695e
      Oran Agra authored
      i.e. don't start the search from scratch hitting the used ones again.
      this will also reduce the likelihood of collisions (if there are any
      left) by increasing the time until we re-use a port we did use in the
      past.
      1aee695e
    • Oran Agra's avatar
      tests: each test client work on a distinct port range · a2ae4635
      Oran Agra authored
      apparently when running tests in parallel (the default of --clients 16),
      there's a chance for two tests to use the same port.
      specifically, one test might shutdown a master and still have the
      replica up, and then another test will re-use the port number of master
      for another master, and then that replica will connect to the master of
      the other test.
      
      this can cause a master to count too many full syncs and fail a test if
      we run the tests with --single integration/psync2 --loop --stop
      
      see Probmem 2 in #7314
      a2ae4635
  5. 22 May, 2020 1 commit
  6. 07 Apr, 2020 1 commit
  7. 25 Mar, 2020 1 commit
  8. 27 Feb, 2020 3 commits
  9. 29 Oct, 2019 1 commit
    • Oran Agra's avatar
      test infra: improve prints on failed assertions · a0cfd519
      Oran Agra authored
      sometimes we have several assertions with the same condition in the same test
      at different stages, and when these fail (the ones that print the condition
      text) you don't know which one it was. other assertions didn't print the
      condition text (variable names), just the expected and unexpected values.
      
      So now, all assertions print context line, and conditin text.
      
      besides, one of the major differences between 'assert' and 'assert_equal',
      is that the later is able to print the value that doesn't match the expected.
      if there is a rare non-reproducible failure, it is helpful to know what was
      the value the test encountered and how far it was from the threshold.
      
      So now, adding assert_lessthan and assert_range that can be used in some places.
      were we used just 'assert { a > b }' so far.
      a0cfd519
  10. 07 Oct, 2019 2 commits
    • Yossi Gottlieb's avatar
      TLS: Configuration options. · 61733ded
      Yossi Gottlieb authored
      Add configuration options for TLS protocol versions, ciphers/cipher
      suites selection, etc.
      61733ded
    • Yossi Gottlieb's avatar
      TLS: Connections refactoring and TLS support. · b087dd1d
      Yossi Gottlieb authored
      * Introduce a connection abstraction layer for all socket operations and
      integrate it across the code base.
      * Provide an optional TLS connections implementation based on OpenSSL.
      * Pull a newer version of hiredis with TLS support.
      * Tests, redis-cli updates for TLS support.
      b087dd1d
  11. 30 Sep, 2019 1 commit
  12. 17 Jul, 2019 1 commit
    • Oran Agra's avatar
      prevent diskless replica from terminating on short read · c56b4ddc
      Oran Agra authored
      now that replica can read rdb directly from the socket, it should avoid exiting
      on short read and instead try to re-sync.
      
      this commit tries to have minimal effects on non-diskless rdb reading.
      and includes a test that tries to trigger this scenario on various read cases.
      c56b4ddc
  13. 08 Jul, 2019 1 commit
    • Oran Agra's avatar
      diskless replication on slave side (don't store rdb to file), plus some other related fixes · 2de544cf
      Oran Agra authored
      The implementation of the diskless replication was currently diskless only on the master side.
      The slave side was still storing the received rdb file to the disk before loading it back in and parsing it.
      
      This commit adds two modes to load rdb directly from socket:
      1) when-empty
      2) using "swapdb"
      the third mode of using diskless slave by flushdb is risky and currently not included.
      
      other changes:
      --------------
      distinguish between aof configuration and state so that we can re-enable aof only when sync eventually
      succeeds (and not when exiting from readSyncBulkPayload after a failed attempt)
      also a CONFIG GET and INFO during rdb loading would have lied
      
      When loading rdb from the network, don't kill the server on short read (that can be a network error)
      
      Fix rdb check when performed on preamble AOF
      
      tests:
      run replication tests for diskless slave too
      make replication test a bit more aggressive
      Add test for diskless load swapdb
      2de544cf
  14. 12 Nov, 2018 1 commit
  15. 04 Sep, 2018 1 commit
  16. 30 Jul, 2018 1 commit
    • Oran Agra's avatar
      test suite conveniency improvements · 78292876
      Oran Agra authored
      * allowing --single to be repeated
      * adding --only so that only a specific test inside a unit can be run
      * adding --skiptill useful to resume a test that crashed passed the problematic unit.
        useful together with --clients 1
      * adding --skipfile to use a file containing list of tests names to skip
      * printing the names of the tests that are skiped by skipfile or denytags
      * adding --config to add config file options from command line
      78292876
  17. 13 Jul, 2018 2 commits
  18. 26 Jun, 2018 1 commit
    • Oran Agra's avatar
      test suite infra improvements and fix · 751eea24
      Oran Agra authored
      * fail the test (exit code) in case of timeout.
      * add --wait-server to allow attaching a debugger
      * add --dont-clean to keep log files when tests are done
      751eea24
  19. 19 Dec, 2016 1 commit
  20. 25 Apr, 2016 1 commit
  21. 02 Feb, 2016 1 commit
  22. 01 Oct, 2015 1 commit