#01 redisContext uses injected allocators: PASSED #02 redisReader uses injected allocators: PASSED #03 hiredis calloc wrapper protects against overflow: PASSED #04 Format command without interpolation: PASSED #05 Format command with %s string interpolation: PASSED #06 Format command with %s and an empty string: PASSED #07 Format command with an empty string in between proper interpolations: PASSED #08 Format command with %b string interpolation: PASSED #09 Format command with %b and an empty string: PASSED #10 Format command with literal %: PASSED #11 Format command with printf-delegation (int): PASSED #12 Format command with printf-delegation (char): PASSED #13 Format command with printf-delegation (short): PASSED #14 Format command with printf-delegation (long): PASSED #15 Format command with printf-delegation (long long): PASSED #16 Format command with printf-delegation (unsigned int): PASSED #17 Format command with printf-delegation (unsigned char): PASSED #18 Format command with printf-delegation (unsigned short): PASSED #19 Format command with printf-delegation (unsigned long): PASSED #20 Format command with printf-delegation (unsigned long long): PASSED #21 Format command with printf-delegation (float): PASSED #22 Format command with printf-delegation (double): PASSED #23 Format command with unhandled printf format (specifier 'p' not supported): PASSED #24 Format command with invalid printf format (specifier missing): PASSED #25 Format command by passing argc/argv without lengths: PASSED #26 Format command by passing argc/argv with lengths: PASSED #27 Format command into sds by passing argc/argv without lengths: PASSED #28 Format command into sds by passing argc/argv with lengths: PASSED #29 Error handling in reply parser: PASSED #30 Memory cleanup in reply parser: PASSED #31 Can handle arbitrarily nested multi-bulks: PASSED #32 Can parse arbitrarily nested multi-bulks correctly: PASSED #33 Correctly parses LLONG_MAX: PASSED #34 Set error when > LLONG_MAX: PASSED #35 Correctly parses LLONG_MIN: PASSED #36 Set error when < LLONG_MIN: PASSED #37 Set error when array < -1: PASSED #38 Set error when bulk < -1: PASSED #39 Can configure maximum multi-bulk elements: PASSED #40 Multi-bulk never overflows regardless of maxelements: PASSED #41 Works with NULL functions for reply: PASSED #42 Works when a single newline (\r\n) covers two calls to feed: PASSED #43 Don't reset state after protocol error: PASSED #44 Don't reset state after protocol error(not segfault): PASSED #45 Don't do empty allocation for empty multi bulk: PASSED #46 Can parse RESP3 verbatim strings: PASSED #47 Can parse RESP3 push messages: PASSED #48 Can parse RESP3 doubles: PASSED #49 Set error on invalid RESP3 double: PASSED #50 Correctly parses RESP3 double INFINITY: PASSED #51 Correctly parses RESP3 double NaN: PASSED #52 Correctly parses RESP3 double -Nan: PASSED #53 Can parse RESP3 nil: PASSED #54 Set error on invalid RESP3 nil: PASSED #55 Can parse RESP3 bool (true): PASSED #56 Can parse RESP3 bool (false): PASSED #57 Set error on invalid RESP3 bool: PASSED #58 Can parse RESP3 map: PASSED #59 Can parse RESP3 set: PASSED #60 Can parse RESP3 bignum: PASSED #61 Can parse RESP3 doubles in an array: PASSED #62 Returns error when host cannot be resolved: PASSED #63 Returns error when the port is not open: PASSED #64 We don't clobber connection exception with setsockopt error: PASSED #65 Returns error when the unix_sock socket path doesn't accept connections: PASSED #66 Don't fail when redisFree is passed a NULL value: PASSED #67 Don't fail when freeReplyObject is passed a NULL value: PASSED Testing against TCP connection (127.0.0.1:6379): #68 Is able to deliver commands: PASSED #69 Is a able to send commands verbatim: PASSED #70 %s String interpolation works: PASSED #71 %b String interpolation works: PASSED #72 Binary reply length is correct: PASSED #73 Can parse nil replies: PASSED #74 Can parse integer replies: PASSED #75 Can parse multi bulk replies: PASSED #76 Can handle nested multi bulk replies: PASSED #77 Send command by passing argc/argv: PASSED #78 Can pass NULL to redisGetReply: PASSED #79 RESP3 PUSH messages are handled out of band by default: PASSED #80 We can set a custom RESP3 PUSH handler: PASSED #81 We properly handle a NIL invalidation payload: PASSED #82 With no handler, PUSH replies come in-band: PASSED #83 With no PUSH handler, no replies are lost: PASSED #84 We set a default RESP3 handler for redisContext: PASSED #85 We don't set a default RESP3 push handler for redisAsyncContext: PASSED #86 Our REDIS_OPT_NO_PUSH_AUTOFREE flag works: PASSED #87 We can use redisOptions to set a custom PUSH handler for redisContext: PASSED #88 We can use redisOptions to set a custom PUSH handler for redisAsyncContext: PASSED #89 We can use redisOptions to set privdata: PASSED #90 Our privdata destructor fires when we free the context: PASSED #91 Successfully completes a command when the timeout is not exceeded: PASSED #92 Does not return a reply when the command times out: SKIPPED #93 Reconnect properly reconnects after a timeout: PASSED #94 Reconnect properly uses owned parameters: PASSED #95 Returns I/O error when the connection is lost: PASSED #96 Returns I/O error on socket timeout: PASSED #97 Set error when an invalid timeout usec value is used during connect: PASSED #98 Set error when an invalid timeout sec value is used during connect: PASSED #99 Append format command: PASSED #100 We can enable TCP_KEEPALIVE: PASSED #101 Setting TCP_USER_TIMEOUT errors when unsupported: PASSED #102 Throughput: (1000x PING) (1000x LRANGE with 500 elements) (1000x INCRBY) (10000x PING (pipelined)) (10000x LRANGE with 500 elements (pipelined)) (10000x INCRBY (pipelined)) Testing against Unix socket connection (/tmp/redis.sock): SKIPPED Testing asynchronous API using polling_adapter TCP (127.0.0.1:6379): #103 Async connect: PASSED #104 Async free after connect: PASSED #105 Async connect timeout: PASSED #106 Async PING/PONG: PASSED #107 Async PING/PONG after connect timeout: PASSED #108 Disconnect from onConnected callback (Issue #931): PASSED #109 Ping/Pong from onConnected callback (Issue #931): PASSED Testing against inherited fd (/tmp/redis.sock): SKIPPED ALL TESTS PASSED (3 skipped)