code: def testPluginIsNotActive(self):
      self._SetupWSGIApp()
  
      # The is_active method makes use of a separate thread, so we mock threading
      # behavior to make this test deterministic.
      patcher = tf.compat.v1.test.mock.patch(
          "threading.Thread.start", autospec=True
      )
      mock = patcher.start()
      self.addCleanup(patcher.stop)
  
      # The projector plugin has not yet determined whether it is active, but it
      # should now start a thread to determine that.
      self.assertFalse(self.plugin.is_active())
      mock.assert_called_once_with(
          self.plugin._thread_for_determining_is_active
      )
  
      self.plugin._thread_for_determining_is_active.run()
  
      # The plugin later finds that embedding data is not available.
      self.assertFalse(self.plugin.is_active())
  
      # Furthermore, the plugin should have spawned a new thread to check whether
      # it is active (because it might now be active even though it had not been
      # beforehand), so the mock should now be called twice.
      self.assertEqual(2, mock.call_count)
  
imports: import gzip
  import io
  import json
  import os
  import numpy
  import tensorflow
  import unittest
  from werkzeug import test
  from werkzeug import wrappers
  from google.protobuf import text_format
  from tensorboard.backend import application
  from tensorboard.backend.event_processing import data_provider
  from tensorboard.backend.event_processing import plugin_event_multiplexer
  from tensorboard.compat.proto import event_pb2
  from tensorboard.compat.proto import summary_pb2
  from tensorboard.compat import tf
  from tensorboard.plugins import base_plugin
  from tensorboard.plugins.projector import projector_config_pb2
  from tensorboard.plugins.projector import projector_plugin
  from tensorboard.util import test_util
label_desc: Use image node_id 19 for calling the ProjectorAppTest obj's underlying member method code with example usage: obj.testPluginIsNotActive() without return types