code: def test_normal_path(self):
      def callback(*args):
          self.connector.end_job(args[1], args[0], "FINISHED")
          self.val = -1
  
      self.val = 0
  
      self.connector.start_experiment("test", "test", "{}")
  
      curr_rid = self.rm.get_available("test", "cpu")
      self.connector.start_job(self.eid, curr_rid, self.job_1.config)
      self.rm.run_job(
          self.job_1, self.rm.get_available("test", "cpu"), {}, callback
      )
  
      curr_rid = self.rm.get_available("test", "cpu")
      self.connector.start_job(self.eid, curr_rid, self.job_2.config)
      self.rm.run_job(
          self.job_2, self.rm.get_available("test", "cpu"), {}, callback
      )
  
      curr_rid = self.rm.get_available("test", "cpu")
      self.connector.start_job(self.eid, curr_rid, self.job_3.config)
      self.rm.run_job(
          self.job_3, self.rm.get_available("test", "cpu"), {}, callback
      )
  
      curr_rid = self.rm.get_available("test", "cpu")
      self.connector.start_job(self.eid, curr_rid, self.job_4.config)
      self.rm.run_job(
          self.job_4, self.rm.get_available("test", "cpu"), {}, callback
      )
  
      self.rm.finish()
  
      self.assertTrue(os.path.exists(self.res_folder))
      self.assertEqual(self.val, -1)
  
imports: import os
  import unittest
  from shutil import copyfile
  from shutil import rmtree
  import json
  from aup import BasicConfig
  from aup.EE.Job import Job
  from aup.EE.Resource.CPUResourceManager import CPUResourceManager
  from aup.utils import get_default_connector
label_desc: Use image node_id 3 for calling the CPUResourceManagerSaveModelTestCase obj's underlying member method code with example usage: obj.test_normal_path() without return types