boulder/test
Aaron Gable b92581d620
Better compile-time type checking for gRPC server implementations (#7504)
Replaced our embeds of foopb.UnimplementedFooServer with
foopb.UnsafeFooServer. Per the grpc-go docs this reduces the "forwards
compatibility" of our implementations, but that is only a concern for
codebases that are implementing gRPC interfaces maintained by third
parties, and which want to be able to update those third-party
dependencies without updating their own implementations in lockstep.
Because we update our protos and our implementations simultaneously, we
can remove this safety net to replace runtime type checking with
compile-time type checking.

However, that replacement is not enough, because we never pass our
implementation objects to a function which asserts that they match a
specific interface. So this PR also replaces our reflect-based unittests
with idiomatic interface assertions. I do not view this as a perfect
solution, as it relies on people implementing new gRPC servers to add
this line, but it is no worse than the status quo which relied on people
adding the "TestImplementation" test.

Fixes https://github.com/letsencrypt/boulder/issues/7497
2024-05-28 09:26:29 -07:00
..
aia-test-srv Add pkilint to CI via custom zlint (#7441) 2024-04-30 09:29:26 -07:00
akamai-test-srv Appease errcheck (#6821) 2023-04-14 22:32:24 -04:00
block-a-key Block keys using hex(sha256(spki)). (#4745) 2020-04-09 09:41:33 -07:00
boulder-tools Use generic types for gRPC stream implementations (#7501) 2024-05-24 13:54:25 -07:00
certs Remove all static minica keys (#7489) 2024-05-17 11:45:40 -07:00
config Remove all static minica keys (#7489) 2024-05-17 11:45:40 -07:00
config-next Purger: compute throughput values from number of instances (#7502) 2024-05-24 13:30:46 -04:00
consul Dynamically generate grpc-creds at integration test startup (#7477) 2024-05-15 11:31:23 -04:00
ct-test-srv Update integration test hierarchy for the modern era (#7411) 2024-04-08 14:06:00 -07:00
grafana Python upgrade os upgrades and travis config cleanup (#5186) 2020-11-23 18:12:04 -08:00
health-checker Remove `service1` / `service2` names in consul (#7266) 2024-01-22 09:34:20 -08:00
hierarchy CRLs: include IssuingDistributionPoint extension (#6412) 2022-10-24 11:21:55 -07:00
inmem Use generic types for gRPC stream implementations (#7501) 2024-05-24 13:54:25 -07:00
integration Remove all static minica keys (#7489) 2024-05-17 11:45:40 -07:00
list-features Add GitHub Action to prompt CP/CPS review when new flags are added (#7425) 2024-04-12 12:04:48 -07:00
load-generator Replace explicit int loops with range-over-int (#7434) 2024-04-22 10:34:51 -07:00
mail-test-srv Remove all static minica keys (#7489) 2024-05-17 11:45:40 -07:00
ocsp Update integration test hierarchy for the modern era (#7411) 2024-04-08 14:06:00 -07:00
prometheus Remove ocsp-updater from Boulder (#6769) 2023-03-31 14:39:04 -07:00
proxysql Remove ocsp-updater from Boulder (#6769) 2023-03-31 14:39:04 -07:00
s3-test-srv Update integration test hierarchy for the modern era (#7411) 2024-04-08 14:06:00 -07:00
secrets WFE: Add new key-value ratelimits implementation (#7089) 2023-10-04 14:12:38 -04:00
vars Improve cert_storage_failed_test (#6849) 2023-05-02 15:43:07 -07:00
asserts.go Better compile-time type checking for gRPC server implementations (#7504) 2024-05-28 09:26:29 -07:00
certs.go Further simplifications to test.ThrowAwayCert (#7129) 2023-11-02 09:45:56 -07:00
challtestsrv.py challtestsrv.py: change address of target (#6234) 2022-07-18 11:10:00 -07:00
chisel2.py Remove all static minica keys (#7489) 2024-05-17 11:45:40 -07:00
create_db.sh Clean up database schema (#6832) 2023-04-21 10:37:05 -07:00
db.go It's borpin' time! (#6982) 2023-07-17 14:38:29 -07:00
entrypoint.sh grpc/sa: Implement deep health checks (#6928) 2023-06-12 13:58:53 -04:00
example-bad-key-revoker-template Add bad-key-revoker daemon (#4788) 2020-04-23 11:51:59 -07:00
example-blocked-keys.yaml Remove more test keys (#7488) 2024-05-16 11:20:07 -04:00
example-weak-keys.json Remove executable bit from JSON file (#6764) 2023-03-21 08:59:41 -07:00
format-configs.py Check if JSON configs are properly formatted instead of relying on git --diff (#7375) 2024-03-08 14:39:00 -08:00
helpers.py Dynamically generate grpc-creds at integration test startup (#7477) 2024-05-15 11:31:23 -04:00
hostname-policy.yaml PA: Support YAML for hostname policy. (#4180) 2019-04-26 14:35:28 -04:00
integration-test.py Dynamically generate grpc-creds at integration test startup (#7477) 2024-05-15 11:31:23 -04:00
rate-limit-policies.yml RA: Implement leaky bucket for duplicate certificate limit (#6262) 2022-07-29 17:39:31 -07:00
redis-cli.sh Remove all static minica keys (#7489) 2024-05-17 11:45:40 -07:00
redis-ocsp.config Remove all static minica keys (#7489) 2024-05-17 11:45:40 -07:00
redis-ratelimits.config Remove all static minica keys (#7489) 2024-05-17 11:45:40 -07:00
startservers.py Remove all static minica keys (#7489) 2024-05-17 11:45:40 -07:00
test-key-5.der Fix wfe2 key rollover (#3373) 2018-01-18 14:31:48 -08:00
v2_integration.py Dynamically generate grpc-creds at integration test startup (#7477) 2024-05-15 11:31:23 -04:00
wait-for-it.sh Quiet the output of wait-for-it (#5775) 2021-11-05 11:38:20 -07:00