@@ -277,6 +277,7 @@ def __init__(self):
277277 self .is_data_lake = False
278278 self .load_balancer = TEST_LOADBALANCER
279279 self .serverless = TEST_SERVERLESS
280+ self ._fips_enabled = None
280281 if self .load_balancer or self .serverless :
281282 self .default_client_options ["loadBalanced" ] = True
282283 if COMPRESSORS :
@@ -523,6 +524,17 @@ def storage_engine(self):
523524 # Raised if self.server_status is None.
524525 return None
525526
527+ @property
528+ def fips_enabled (self ):
529+ if self ._fips_enabled is not None :
530+ return self ._fips_enabled
531+ try :
532+ subprocess .check_call (["fips-mode-setup" , "--is-enabled" ])
533+ self ._fips_enabled = True
534+ except (subprocess .SubprocessError , FileNotFoundError ):
535+ self ._fips_enabled = False
536+ return self ._fips_enabled
537+
526538 def check_auth_type (self , auth_type ):
527539 auth_mechs = self .server_parameters .get ("authenticationMechanisms" , [])
528540 return auth_type in auth_mechs
@@ -670,6 +682,12 @@ def require_auth(self, func):
670682 lambda : self .auth_enabled , "Authentication is not enabled on the server" , func = func
671683 )
672684
685+ def require_no_fips (self , func ):
686+ """Run a test only if the host does not have FIPS enabled."""
687+ return self ._require (
688+ lambda : not self .fips_enabled , "Test cannot run on a FIPS-enabled host" , func = func
689+ )
690+
673691 def require_no_auth (self , func ):
674692 """Run a test only if the server is running without auth enabled."""
675693 return self ._require (
0 commit comments