def setup(opts=None):
	"""Parse options. If none given, opts is set to sys.argv"""
	if opts is None:
		opts = sys.argv[1:]
	config.bootstrap(opts)
	config.load()
	config.parse_options(opts)
	ensure_dir_exists(app_globals.OPTIONS['output_path'])
	log_start()
	if app_globals.OPTIONS['report_pid']:
		proctl.report_pid()
		exit(0)
	config.check()
	proctl.ensure_singleton_process()
	init_signals()
	def test_aggressive_singular_process_should_write_pid_file_when_running_pids_returns_none(self):
		self.mock_pid_process(aggressive = True, pid=None)
		proctl.ensure_singleton_process()
		self.assertFalse(os.kill.called)
		self.assertEqual(read_file(self.filename), str(os.getpid()))
	def test_aggressive_singular_process_should_continue_when_kill_works(self):
		self.mock_pid_process(aggressive = True, pid=1234, file_pid = '1234')
		
		proctl.ensure_singleton_process()
		self.assertEqual(os.kill.call_args_list, [((1234, signal.SIGKILL),{})])
		self.assertEqual(read_file(self.filename), str(os.getpid()))