code: def test_send_values_from_multiple_channels(self):
      # given
      numeric_values = [
          ChannelValue(x=i, y=i, ts=self._TS + i) for i in range(0, 3)
      ]
  
      text_values = [
          ChannelValue(x=i, y="text", ts=self._TS + i)
          for i in range(0, 3)
      ]
  
      image_values = [
          ChannelValue(
              x=i,
              y={"image_value": {"data": "base64Image=="}},
              ts=self._TS + i,
          )
          for i in range(0, 3)
      ]
      # and
      channels_values_sender = ChannelsValuesSender(
          experiment=self._EXPERIMENT
      )
  
      # when
      for channel_value in numeric_values:
          channels_values_sender.send(
              self._NUMERIC_CHANNEL.name,
              self._NUMERIC_CHANNEL.channelType,
              channel_value,
          )
  
      for channel_value in text_values:
          channels_values_sender.send(
              self._TEXT_CHANNEL.name,
              self._TEXT_CHANNEL.channelType,
              channel_value,
          )
  
      for channel_value in image_values:
          channels_values_sender.send(
              self._IMAGE_CHANNEL.name,
              self._IMAGE_CHANNEL.channelType,
              channel_value,
          )
  
      # and
      channels_values_sender.join()
  
      # then
      (args, _) = self._EXPERIMENT._send_channels_values.call_args
      self.assertEqual(len(args), 1)
      self.assertEqual(
          sorted(args[0]),
          sorted(
              [
                  ChannelIdWithValues(
                      channel_id=self._NUMERIC_CHANNEL.id,
                      channel_name=self._NUMERIC_CHANNEL.name,
                      channel_type=self._NUMERIC_CHANNEL.channelType,
                      channel_namespace=ChannelNamespace.USER,
                      channel_values=numeric_values,
                  ),
                  ChannelIdWithValues(
                      channel_id=self._TEXT_CHANNEL.id,
                      channel_name=self._NUMERIC_CHANNEL.name,
                      channel_type=self._NUMERIC_CHANNEL.channelType,
                      channel_namespace=ChannelNamespace.USER,
                      channel_values=text_values,
                  ),
                  ChannelIdWithValues(
                      channel_id=self._IMAGE_CHANNEL.id,
                      channel_name=self._NUMERIC_CHANNEL.name,
                      channel_type=self._NUMERIC_CHANNEL.channelType,
                      channel_namespace=ChannelNamespace.USER,
                      channel_values=image_values,
                  ),
              ]
          ),
      )
  
file_path: neptune-client/tests/unit/neptune/legacy/internal/channels/test_channels_values_sender.py
imports: from __future__ import unicode_literals
  import threading
  import time
  import unittest
  import mock
  from neptune.legacy.internal.channels.channels import ChannelIdWithValues, ChannelNamespace, ChannelType, ChannelValue
  from neptune.legacy.internal.channels.channels_values_sender import ChannelsValuesSender, ChannelsValuesSendingThread
  from tests.unit.neptune.legacy.experiments_object_factory import a_channel
label_desc: Use image node_id 6 for calling the TestChannelsValuesSender obj's underlying member method code with example usage: obj.test_send_values_from_multiple_channels() without return types