Hi all,

The Redis backend tests are effectively not exercised in CI, yet stay green.

Problem: test/brpc_redis_unittest.cpp needs a real external
redis-server. When it's
absent each redis test just returns -- which gtest counts as PASS, not
SKIP. CI never
installs redis, so in the latest master run (commit 0835315):

  Skipped due to absence of redis-server   x7
  [  PASSED  ] 14 tests.

So 7 of 14 RedisTest cases are false-green (Memcache shows the same
pattern). Job log:
https://github.com/apache/brpc/actions/runs/26615492838/job/78430157550
(Attached: redis_ci_skip_proof.png -- CI log excerpt, red = skipped,
green = reported PASSED.)

Proposal:
1. Add a skip-vs-fail flag BRPC_TEST_REDIS_REQUIRED (default false):
when off and redis
   is absent the test reports an honest GTEST_SKIP() (not a fake PASS)
-- the normal
   local unit-test behavior; CI sets it true so missing redis hard-fails. Tests
   discover/launch redis, never install it. The same flag pattern
   (BRPC_TEST_<BACKEND>_REQUIRED) is reusable for MySQL and other backends.
2. Install a pinned redis in the CI unittest job so these run as real
integration tests
   ("latest" is non-deterministic -- the auth test already had to be
adapted for redis 6.0).
3. (Future work, optional) a docker-compose integration harness (deps
+ pinned redis) so
   contributors can reproduce these integration tests locally without
a system redis.

Questions: Is there appetite to install backend servers in CI (redis
first) and gate
these integration tests on a flag (parts 1-2)? And later, interest in
the optional Docker
harness (part 3) for reproducible local runs? (These are integration
tests, kept distinct
from the unit tests.)

If there's interest I'll send the Redis PR, then follow the same
approach for the MySQL
backend (generalizes to Memcache and others).

Thanks,
Varun

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to