You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							70 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
	
	
							70 lines
						
					
					
						
							2.0 KiB
						
					
					
				import time
 | 
						|
import subprocess
 | 
						|
from functools import wraps
 | 
						|
from nose.tools import nottest
 | 
						|
 | 
						|
from common.hardware import PC
 | 
						|
from common.apk import update_apks, start_offroad, pm_apply_packages, android_packages
 | 
						|
from common.params import Params
 | 
						|
from selfdrive.version import training_version, terms_version
 | 
						|
from selfdrive.manager import start_managed_process, kill_managed_process, get_running
 | 
						|
 | 
						|
def set_params_enabled():
 | 
						|
  params = Params()
 | 
						|
  params.put("HasAcceptedTerms", terms_version)
 | 
						|
  params.put("HasCompletedSetup", "1")
 | 
						|
  params.put("OpenpilotEnabledToggle", "1")
 | 
						|
  params.put("CommunityFeaturesToggle", "1")
 | 
						|
  params.put("Passive", "0")
 | 
						|
  params.put("CompletedTrainingVersion", training_version)
 | 
						|
 | 
						|
def phone_only(x):
 | 
						|
  if PC:
 | 
						|
    return nottest(x)
 | 
						|
  else:
 | 
						|
    return x
 | 
						|
 | 
						|
def with_processes(processes, init_time=0):
 | 
						|
  def wrapper(func):
 | 
						|
    @wraps(func)
 | 
						|
    def wrap(*args, **kwargs):
 | 
						|
      # start and assert started
 | 
						|
      for p in processes:
 | 
						|
        start_managed_process(p)
 | 
						|
        time.sleep(init_time)
 | 
						|
      assert all(get_running()[name].exitcode is None for name in processes)
 | 
						|
 | 
						|
      # call the function
 | 
						|
      try:
 | 
						|
        func(*args, **kwargs)
 | 
						|
        # assert processes are still started
 | 
						|
        assert all(get_running()[name].exitcode is None for name in processes)
 | 
						|
      finally:
 | 
						|
        # kill and assert all stopped
 | 
						|
        for p in processes:
 | 
						|
          kill_managed_process(p)
 | 
						|
        assert len(get_running()) == 0
 | 
						|
    return wrap
 | 
						|
  return wrapper
 | 
						|
 | 
						|
def with_apks():
 | 
						|
  def wrapper(func):
 | 
						|
    @wraps(func)
 | 
						|
    def wrap():
 | 
						|
      update_apks()
 | 
						|
      pm_apply_packages('enable')
 | 
						|
      start_offroad()
 | 
						|
 | 
						|
      func()
 | 
						|
 | 
						|
      try:
 | 
						|
        for package in android_packages:
 | 
						|
          apk_is_running = (subprocess.call(["pidof", package]) == 0)
 | 
						|
          assert apk_is_running, package
 | 
						|
      finally:
 | 
						|
        pm_apply_packages('disable')
 | 
						|
        for package in android_packages:
 | 
						|
          apk_is_not_running = (subprocess.call(["pidof", package]) == 1)
 | 
						|
          assert apk_is_not_running, package
 | 
						|
    return wrap
 | 
						|
  return wrapper
 | 
						|
 |