/tmp/tmp_3a.0mn pidfile /tmp/tmp_3a.0mn/hiredis-test-redis.pid port 56379 unixsocket /tmp/tmp_3a.0mn/hiredis-test-redis.sock unixsocketperm 777 daemonize yes bind 127.0.0.1 waiting for server #01 redisContext uses injected allocators: [0;32mPASSED[0;0m #02 redisReader uses injected allocators: [0;32mPASSED[0;0m #03 hiredis calloc wrapper protects against overflow: [0;32mPASSED[0;0m #04 Format command without interpolation: [0;32mPASSED[0;0m #05 Format command with %s string interpolation: [0;32mPASSED[0;0m #06 Format command with %s and an empty string: [0;32mPASSED[0;0m #07 Format command with an empty string in between proper interpolations: [0;32mPASSED[0;0m #08 Format command with %b string interpolation: [0;32mPASSED[0;0m #09 Format command with %b and an empty string: [0;32mPASSED[0;0m #10 Format command with literal %: [0;32mPASSED[0;0m #11 Format command with printf-delegation (int): [0;32mPASSED[0;0m #12 Format command with printf-delegation (char): [0;32mPASSED[0;0m #13 Format command with printf-delegation (short): [0;32mPASSED[0;0m #14 Format command with printf-delegation (long): [0;32mPASSED[0;0m #15 Format command with printf-delegation (long long): [0;32mPASSED[0;0m #16 Format command with printf-delegation (unsigned int): [0;32mPASSED[0;0m #17 Format command with printf-delegation (unsigned char): [0;32mPASSED[0;0m #18 Format command with printf-delegation (unsigned short): [0;32mPASSED[0;0m #19 Format command with printf-delegation (unsigned long): [0;32mPASSED[0;0m #20 Format command with printf-delegation (unsigned long long): [0;32mPASSED[0;0m #21 Format command with printf-delegation (float): [0;32mPASSED[0;0m #22 Format command with printf-delegation (double): [0;32mPASSED[0;0m #23 Format command with unhandled printf format (specifier 'p' not supported): [0;32mPASSED[0;0m #24 Format command with invalid printf format (specifier missing): [0;32mPASSED[0;0m #25 Format command by passing argc/argv without lengths: [0;32mPASSED[0;0m #26 Format command by passing argc/argv with lengths: [0;32mPASSED[0;0m #27 Format command into sds by passing argc/argv without lengths: [0;32mPASSED[0;0m #28 Format command into sds by passing argc/argv with lengths: [0;32mPASSED[0;0m #29 Error handling in reply parser: [0;32mPASSED[0;0m #30 Memory cleanup in reply parser: [0;32mPASSED[0;0m #31 Can handle arbitrarily nested multi-bulks: [0;32mPASSED[0;0m #32 Can parse arbitrarily nested multi-bulks correctly: [0;32mPASSED[0;0m #33 Correctly parses LLONG_MAX: [0;32mPASSED[0;0m #34 Set error when > LLONG_MAX: [0;32mPASSED[0;0m #35 Correctly parses LLONG_MIN: [0;32mPASSED[0;0m #36 Set error when < LLONG_MIN: [0;32mPASSED[0;0m #37 Set error when array < -1: [0;32mPASSED[0;0m #38 Set error when bulk < -1: [0;32mPASSED[0;0m #39 Can configure maximum multi-bulk elements: [0;32mPASSED[0;0m #40 Multi-bulk never overflows regardless of maxelements: [0;32mPASSED[0;0m #41 Works with NULL functions for reply: [0;32mPASSED[0;0m #42 Works when a single newline (\r\n) covers two calls to feed: [0;32mPASSED[0;0m #43 Don't reset state after protocol error: [0;32mPASSED[0;0m #44 Don't reset state after protocol error(not segfault): [0;32mPASSED[0;0m #45 Don't do empty allocation for empty multi bulk: [0;32mPASSED[0;0m #46 Can parse RESP3 verbatim strings: [0;32mPASSED[0;0m #47 Can parse RESP3 push messages: [0;32mPASSED[0;0m #48 Can parse RESP3 doubles: [0;32mPASSED[0;0m #49 Set error on invalid RESP3 double: [0;32mPASSED[0;0m #50 Correctly parses RESP3 double INFINITY: [0;32mPASSED[0;0m #51 Correctly parses RESP3 double NaN: [0;32mPASSED[0;0m #52 Correctly parses RESP3 double -Nan: [0;32mPASSED[0;0m #53 Can parse RESP3 nil: [0;32mPASSED[0;0m #54 Set error on invalid RESP3 nil: [0;32mPASSED[0;0m #55 Can parse RESP3 bool (true): [0;32mPASSED[0;0m #56 Can parse RESP3 bool (false): [0;32mPASSED[0;0m #57 Set error on invalid RESP3 bool: [0;32mPASSED[0;0m #58 Can parse RESP3 map: [0;32mPASSED[0;0m #59 Can parse RESP3 attribute: [0;32mPASSED[0;0m #60 Can parse RESP3 set: [0;32mPASSED[0;0m #61 Can parse RESP3 bignum: [0;32mPASSED[0;0m #62 Can parse RESP3 doubles in an array: [0;32mPASSED[0;0m #63 Returns error when host cannot be resolved: [0;32mPASSED[0;0m #64 Returns error when the port is not open: [0;32mPASSED[0;0m #65 We don't clobber connection exception with setsockopt error: [0;32mPASSED[0;0m #66 Returns error when the unix_sock socket path doesn't accept connections: [0;32mPASSED[0;0m #67 Don't fail when redisFree is passed a NULL value: [0;32mPASSED[0;0m #68 Don't fail when freeReplyObject is passed a NULL value: [0;32mPASSED[0;0m Testing against TCP connection (127.0.0.1:56379): #69 Is able to deliver commands: [0;32mPASSED[0;0m #70 Is a able to send commands verbatim: [0;32mPASSED[0;0m #71 %s String interpolation works: [0;32mPASSED[0;0m #72 %b String interpolation works: [0;32mPASSED[0;0m #73 Binary reply length is correct: [0;32mPASSED[0;0m #74 Can parse nil replies: [0;32mPASSED[0;0m #75 Can parse integer replies: [0;32mPASSED[0;0m #76 Can parse multi bulk replies: [0;32mPASSED[0;0m #77 Can handle nested multi bulk replies: [0;32mPASSED[0;0m #78 Send command by passing argc/argv: [0;32mPASSED[0;0m #79 Can pass NULL to redisGetReply: [0;32mPASSED[0;0m #80 RESP3 PUSH messages are handled out of band by default: [0;32mPASSED[0;0m #81 We can set a custom RESP3 PUSH handler: [0;32mPASSED[0;0m #82 We properly handle a NIL invalidation payload: [0;32mPASSED[0;0m #83 With no handler, PUSH replies come in-band: [0;32mPASSED[0;0m #84 With no PUSH handler, no replies are lost: [0;32mPASSED[0;0m #85 We set a default RESP3 handler for redisContext: [0;32mPASSED[0;0m #86 We don't set a default RESP3 push handler for redisAsyncContext: [0;32mPASSED[0;0m #87 Our REDIS_OPT_NO_PUSH_AUTOFREE flag works: [0;32mPASSED[0;0m #88 We can use redisOptions to set a custom PUSH handler for redisContext: [0;32mPASSED[0;0m #89 We can use redisOptions to set a custom PUSH handler for redisAsyncContext: [0;32mPASSED[0;0m #90 We can use redisOptions to set privdata: [0;32mPASSED[0;0m #91 Our privdata destructor fires when we free the context: [0;32mPASSED[0;0m #92 Successfully completes a command when the timeout is not exceeded: [0;32mPASSED[0;0m #93 Does not return a reply when the command times out: [0;32mPASSED[0;0m #94 Reconnect properly reconnects after a timeout: [0;32mPASSED[0;0m #95 Reconnect properly uses owned parameters: [0;32mPASSED[0;0m #96 Returns I/O error when the connection is lost: [0;32mPASSED[0;0m #97 Returns I/O error on socket timeout: [0;32mPASSED[0;0m #98 Set error when an invalid timeout usec value is used during connect: [0;32mPASSED[0;0m #99 Set error when an invalid timeout sec value is used during connect: [0;32mPASSED[0;0m #100 Append format command: [0;32mPASSED[0;0m #101 We can enable TCP_KEEPALIVE: [0;32mPASSED[0;0m #102 Setting TCP_USER_TIMEOUT errors when unsupported: [0;32mPASSED[0;0m #103 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/tmp_3a.0mn/hiredis-test-redis.sock): #104 Is able to deliver commands: [0;32mPASSED[0;0m #105 Is a able to send commands verbatim: [0;32mPASSED[0;0m #106 %s String interpolation works: [0;32mPASSED[0;0m #107 %b String interpolation works: [0;32mPASSED[0;0m #108 Binary reply length is correct: [0;32mPASSED[0;0m #109 Can parse nil replies: [0;32mPASSED[0;0m #110 Can parse integer replies: [0;32mPASSED[0;0m #111 Can parse multi bulk replies: [0;32mPASSED[0;0m #112 Can handle nested multi bulk replies: [0;32mPASSED[0;0m #113 Send command by passing argc/argv: [0;32mPASSED[0;0m #114 Can pass NULL to redisGetReply: [0;32mPASSED[0;0m #115 RESP3 PUSH messages are handled out of band by default: [0;32mPASSED[0;0m #116 We can set a custom RESP3 PUSH handler: [0;32mPASSED[0;0m #117 We properly handle a NIL invalidation payload: [0;32mPASSED[0;0m #118 With no handler, PUSH replies come in-band: [0;32mPASSED[0;0m #119 With no PUSH handler, no replies are lost: [0;32mPASSED[0;0m #120 We set a default RESP3 handler for redisContext: [0;32mPASSED[0;0m #121 We don't set a default RESP3 push handler for redisAsyncContext: [0;32mPASSED[0;0m #122 Our REDIS_OPT_NO_PUSH_AUTOFREE flag works: [0;32mPASSED[0;0m #123 We can use redisOptions to set a custom PUSH handler for redisContext: [0;32mPASSED[0;0m #124 We can use redisOptions to set a custom PUSH handler for redisAsyncContext: [0;32mPASSED[0;0m #125 We can use redisOptions to set privdata: [0;32mPASSED[0;0m #126 Our privdata destructor fires when we free the context: [0;32mPASSED[0;0m #127 Successfully completes a command when the timeout is not exceeded: [0;32mPASSED[0;0m #128 Does not return a reply when the command times out: [0;32mPASSED[0;0m #129 Reconnect properly reconnects after a timeout: [0;32mPASSED[0;0m #130 Reconnect properly uses owned parameters: [0;32mPASSED[0;0m #131 Returns I/O error when the connection is lost: [0;32mPASSED[0;0m #132 Returns I/O error on socket timeout: [0;32mPASSED[0;0m #133 Set error when an invalid timeout usec value is used during connect: [0;32mPASSED[0;0m #134 Set error when an invalid timeout sec value is used during connect: [0;32mPASSED[0;0m #135 Setting TCP_KEEPALIVE on a unix socket returns an error: [0;32mPASSED[0;0m #136 Setting TCP_KEEPALIVE on a unix socket doesn't break the connection: [0;32mPASSED[0;0m #137 Throughput: (1000x PING) (1000x LRANGE with 500 elements) (1000x INCRBY) (10000x PING (pipelined)) (10000x LRANGE with 500 elements (pipelined)) (10000x INCRBY (pipelined)) Testing asynchronous API using polling_adapter TCP (127.0.0.1:56379): #138 Async connect: [0;32mPASSED[0;0m #139 Async free after connect: [0;32mPASSED[0;0m #140 Async connect timeout: [0;32mPASSED[0;0m #141 Async PING/PONG: [0;32mPASSED[0;0m #142 Async PING/PONG after connect timeout: [0;32mPASSED[0;0m #143 Disconnect from onConnected callback (Issue #931): [0;32mPASSED[0;0m #144 Ping/Pong from onConnected callback (Issue #931): [0;32mPASSED[0;0m Testing asynchronous API using polling_adapter UNIX (/tmp/tmp_3a.0mn/hiredis-test-redis.sock): #145 Async connect: [0;32mPASSED[0;0m #146 Async free after connect: [0;32mPASSED[0;0m #147 Async PING/PONG: [0;32mPASSED[0;0m #148 Disconnect from onConnected callback (Issue #931): [0;32mPASSED[0;0m #149 Ping/Pong from onConnected callback (Issue #931): [0;32mPASSED[0;0m Testing against inherited fd (/tmp/tmp_3a.0mn/hiredis-test-redis.sock): Connecting to inherited fd 4 #150 Is able to deliver commands: [0;32mPASSED[0;0m #151 Is a able to send commands verbatim: [0;32mPASSED[0;0m #152 %s String interpolation works: [0;32mPASSED[0;0m #153 %b String interpolation works: [0;32mPASSED[0;0m #154 Binary reply length is correct: [0;32mPASSED[0;0m #155 Can parse nil replies: [0;32mPASSED[0;0m #156 Can parse integer replies: [0;32mPASSED[0;0m #157 Can parse multi bulk replies: [0;32mPASSED[0;0m #158 Can handle nested multi bulk replies: [0;32mPASSED[0;0m #159 Send command by passing argc/argv: [0;32mPASSED[0;0m #160 Can pass NULL to redisGetReply: [0;32mPASSED[0;0m #161 RESP3 PUSH messages are handled out of band by default: [0;32mPASSED[0;0m #162 We can set a custom RESP3 PUSH handler: [0;32mPASSED[0;0m #163 We properly handle a NIL invalidation payload: [0;32mPASSED[0;0m #164 With no handler, PUSH replies come in-band: [0;32mPASSED[0;0m #165 With no PUSH handler, no replies are lost: [0;32mPASSED[0;0m #166 We set a default RESP3 handler for redisContext: [0;32mPASSED[0;0m #167 We don't set a default RESP3 push handler for redisAsyncContext: [0;32mPASSED[0;0m #168 Our REDIS_OPT_NO_PUSH_AUTOFREE flag works: [0;32mPASSED[0;0m #169 We can use redisOptions to set a custom PUSH handler for redisContext: [0;32mPASSED[0;0m #170 We can use redisOptions to set a custom PUSH handler for redisAsyncContext: [0;32mPASSED[0;0m #171 We can use redisOptions to set privdata: [0;32mPASSED[0;0m #172 Our privdata destructor fires when we free the context: [0;32mPASSED[0;0m ALL TESTS PASSED (0 skipped)