code: def test_py_spark_processor_run_twice(
      mock_generate_current_job_name,
      mock_stage_submit_deps,
      mock_super_run,
      py_spark_processor,
  ):
      mock_stage_submit_deps.return_value = (processing_input, "opt")
      mock_generate_current_job_name.return_value = "jobName"
      expected_command = [
          "smspark-submit",
          "--py-files",
          "opt",
          "--jars",
          "opt",
          "--files",
          "opt",
      ]
      py_spark_processor.run(
          submit_app="submit_app",
          submit_py_files="files",
          submit_jars="test",
          submit_files="test",
          inputs=[],
      )
  
      py_spark_processor.run(
          submit_app="submit_app",
          submit_py_files="files",
          submit_jars="test",
          submit_files="test",
          inputs=[],
      )
  
      assert py_spark_processor.command == expected_command
  
imports: from __future__ import absolute_import
  import pathlib
  import subprocess
  import tempfile
  from io import BytesIO
  from typing import Generator
  from unittest.case import TestCase
  from unittest.mock import MagicMock, Mock, call, mock_open, patch
  import pytest
  from sagemaker.processing import ProcessingInput, ProcessingOutput
  from sagemaker.session_settings import SessionSettings
  from sagemaker.spark.processing import PySparkProcessor, SparkJarProcessor, _SparkProcessorBase, _HistoryServer, FileType, SparkConfigUtils
label_desc: Use image node_id 30 for calling a global function with example usage: test_py_spark_processor_run_twice(mock_generate_current_job_name, mock_stage_submit_deps, mock_super_run, py_spark_processor) without return types