class_docstr: Callback for handling train/validation logistics, report summarization,
  logging etc.
class_docstr_tok: ["Callback","for","handling","train\/validation","logistics",",","report","summarization",",","logging","etc","."]
code: def on_test_end(self, **kwargs):
      prefix = "{}: full {}".format(
          kwargs["report"].dataset_name, kwargs["report"].dataset_type
      )
      summarize_report(
          current_iteration=self.trainer.current_iteration,
          num_updates=getattr(self.trainer, "num_updates", None),
          max_updates=getattr(self.trainer, "max_updates", None),
          meter=kwargs["meter"],
          should_print=prefix,
          tb_writer=self.tb_writer,
          wandb_logger=self.wandb_logger,
      )
      logger.info(
          f"Finished run in {self.total_timer.get_time_since_start()}"
      )
  
file_path: mmf/mmf/trainers/callbacks/logistics.py
imports: import logging
  import torch
  from mmf.trainers.callbacks.base import Callback
  from mmf.utils.configuration import get_mmf_env
  from mmf.utils.logger import calculate_time_left, setup_output_folder, summarize_report, TensorboardLogger, WandbLogger
  from mmf.utils.timer import Timer
label_desc: Use image node_id 6 for calling the LogisticsCallback obj's underlying member method code with example usage: obj.on_test_end() without return types