        'PC tests': {
          pcStage("PC tests") {
            // tests that our build system's dependencies are configured properly,
            // needs a machine with lots of cores
            sh "scons --clean && scons --no-cache --random -j42"
  
            // car tests
            sh "INTERNAL_SEG_CNT=500 INTERNAL_SEG_LIST=selfdrive/car/tests/test_models_segs.txt FILEREADER_CACHE=1 \
                pytest -n42 --dist=loadscope selfdrive/car/tests/test_models.py"
            sh "MAX_EXAMPLES=100 pytest -n42 selfdrive/car/tests/test_car_interfaces.py"
          }
        },
      )
 
</s> remove           sh "MAX_EXAMPLES=100 pytest -n42 selfdrive/car/tests/test_car_interfaces.py"
 </s> add           sh label: "test_car_interfaces.py", script: "MAX_EXAMPLES=100 pytest -n42 selfdrive/car/tests/test_car_interfaces.py" </s> remove         deviceStage("tici", "tici-needs-can", [
 </s> add         deviceStage("onroad", "tici-needs-can", ["SKIP_COPY=1"], [ </s> remove     def dockerArgs = '--user=root -v /tmp/comma_download_cache:/tmp/comma_download_cache';
 </s> add     def dockerArgs = '--user=root -v /tmp/comma_download_cache:/tmp/comma_download_cache -v /tmp/scons_cache:/tmp/scons_cache'; </s> remove def deviceStage(String stageName, String deviceType, def steps) {
 </s> add def deviceStage(String stageName, String deviceType, List env, def steps) { </s> remove         deviceStage("tici", "tici-replay", [
 </s> add         deviceStage("tici", "tici-replay", ["UNSAFE=1"], [
          sh label: "test multi-threaded build", script: "scons --no-cache --random -j42"
        }
      },
      'car tests': {
        pcStage("car tests") {
          sh "scons -j30"
          sh label: "test_models.py", script: "INTERNAL_SEG_CNT=250 INTERNAL_SEG_LIST=selfdrive/car/tests/test_models_segs.txt FILEREADER_CACHE=1 \
        'PC tests': {
          pcStage("PC tests") {
            // tests that our build system's dependencies are configured properly,
            // needs a machine with lots of cores
          sh label: "test multi-threaded build", script: "scons --no-cache --random -j42"
        }
      },
      'car tests': {
        pcStage("car tests") {
          sh "scons -j30"
          sh label: "test_models.py", script: "INTERNAL_SEG_CNT=250 INTERNAL_SEG_LIST=selfdrive/car/tests/test_models_segs.txt FILEREADER_CACHE=1 \
          sh label: "test multi-threaded build", script: "scons --no-cache --random -j42"
        }
      },
      'car tests': {
        pcStage("car tests") {
          sh "scons -j30"
          sh label: "test_models.py", script: "INTERNAL_SEG_CNT=250 INTERNAL_SEG_LIST=selfdrive/car/tests/test_models_segs.txt FILEREADER_CACHE=1 \
          sh label: "test multi-threaded build", script: "scons --no-cache --random -j42"
        }
      },
      'car tests': {
        pcStage("car tests") {
          sh "scons -j30"
          sh label: "test_models.py", script: "INTERNAL_SEG_CNT=250 INTERNAL_SEG_LIST=selfdrive/car/tests/test_models_segs.txt FILEREADER_CACHE=1 \
          sh label: "test multi-threaded build", script: "scons --no-cache --random -j42"
        }
      },
      'car tests': {
        pcStage("car tests") {
          sh "scons -j30"
          sh label: "test_models.py", script: "INTERNAL_SEG_CNT=250 INTERNAL_SEG_LIST=selfdrive/car/tests/test_models_segs.txt FILEREADER_CACHE=1 \
                pytest -n42 --dist=loadscope selfdrive/car/tests/test_models.py"
            sh "MAX_EXAMPLES=100 pytest -n42 selfdrive/car/tests/test_car_interfaces.py"
          }
        },
      )
keep keep keep keep replace replace replace replace keep keep keep keep keep
 jenkins speedup (#29869)

* jenkins speedup

* cleanup 
Jenkinsfile