code: def test_run_attack_threshold_calculates_correct_epsilon(
      self, attack_type, train_metric_name, test_metric_name
  ):
      result = mia._run_attack(
          AttackInputData(
              **{
                  train_metric_name: np.array(
                      [0.1, 0.2, 1.3, 0.4, 0.5, 0.6]
                  ),
                  test_metric_name: np.array(
                      [1.1, 1.2, 1.3, 0.4, 1.5, 1.6]
                  ),
              }
          ),
          attack_type,
      )
      np.testing.assert_almost_equal(
          result.epsilon_lower_bound_value.get_max_epsilon_bounds(),
          np.array([0.34695111, 0.34695111, 0.05616349, 0.05616349]),
      )
  
imports: from unittest import mock
  from absl.testing import absltest
  from absl.testing import parameterized
  import numpy
  from tensorflow_privacy.privacy.privacy_tests import epsilon_lower_bound
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack import membership_inference_attack
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack import models
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import AttackInputData
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import AttackType
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import DataSize
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import SingleSliceSpec
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import SlicingFeature
  from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures import SlicingSpec
label_desc: Use image node_id 17 for calling the RunAttacksTest obj's underlying member method code with example usage: obj.test_run_attack_threshold_calculates_correct_epsilon(attack_type, train_metric_name, test_metric_name) without return types