code: def test_tree_sum_steps_max(self, total_steps, node_value):
      tree_aggregator = tree_aggregation.TreeAggregator(
          value_generator=ConstantValueGenerator(node_value)
      )
      max_val = node_value * math.ceil(math.log2(total_steps))
      state = tree_aggregator.init_state()
      for leaf_node_idx in range(total_steps):
          self.assertEqual(
              leaf_node_idx, tree_aggregation.get_step_idx(state)
          )
          val, state = tree_aggregator.get_cumsum_and_update(state)
          self.assertLessEqual(val, max_val)
  
imports: import math
  import random
  from absl.testing import parameterized
  import tensorflow
  from tensorflow_privacy.privacy.dp_query import tree_aggregation
label_desc: Use image node_id 4 for calling the TreeAggregatorTest obj's underlying member method code with example usage: obj.test_tree_sum_steps_max(total_steps, node_value) without return types