SYMBOL INDEX (3312 symbols across 143 files) FILE: contrib/migration_script.py class bcolors (line 15) | class bcolors: function parse_args (line 26) | def parse_args(): function check_job_if_running (line 57) | def check_job_if_running(jobs_status, job_name): function command_jobs (line 75) | def command_jobs(command, jobs, args, ns=None): function ssh_command (line 111) | def ssh_command(hostname, command): function main (line 128) | def main(): FILE: contrib/mock_patch_checker.py class MockChecker (line 6) | class MockChecker(ast.NodeVisitor): method __init__ (line 7) | def __init__(self): method init_module_imports (line 11) | def init_module_imports(self): method check_files (line 15) | def check_files(self, files): method check_file (line 19) | def check_file(self, filename): method _call_uses_patch (line 34) | def _call_uses_patch(self, node): method _call_uses_mock_patch (line 40) | def _call_uses_mock_patch(self, node): method visit_Import (line 46) | def visit_Import(self, node): method visit_ImportFrom (line 50) | def visit_ImportFrom(self, node): method visit_Call (line 54) | def visit_Call(self, node): function main (line 67) | def main(filenames): FILE: contrib/sync_namespaces_jobs.py function parse_args (line 15) | def parse_args(): function main (line 39) | def main(): FILE: docs/source/conf.py class Mock (line 21) | class Mock(MagicMock): method __getattr__ (line 23) | def __getattr__(cls, name): FILE: testifycompat/__init__.py function run (line 10) | def run(): FILE: testifycompat/assertions.py function assert_equal (line 12) | def assert_equal(left, right, *args): function assert_true (line 20) | def assert_true(val): function assert_false (line 24) | def assert_false(val): function assert_raises_and_contains (line 28) | def assert_raises_and_contains(exc, text, func, *args, **kwargs): function assert_raises (line 37) | def assert_raises(exc, func=None, *args, **kwargs): function assert_in (line 45) | def assert_in(item, container): function assert_not_in (line 49) | def assert_not_in(item, container): function assert_is (line 53) | def assert_is(left, right): function assert_is_not (line 57) | def assert_is_not(left, right): function assert_not_equal (line 61) | def assert_not_equal(left, right): function assert_lt (line 65) | def assert_lt(left, right): function assert_lte (line 69) | def assert_lte(left, right): function assert_gt (line 73) | def assert_gt(left, right): function assert_gte (line 77) | def assert_gte(left, right): function assert_in_range (line 81) | def assert_in_range(val, start, end): function assert_between (line 85) | def assert_between(val, start, end): function assert_all_in (line 89) | def assert_all_in(left, right): function assert_starts_with (line 98) | def assert_starts_with(val, prefix): function assert_not_reached (line 102) | def assert_not_reached(): function assert_empty (line 106) | def assert_empty(iterable): function assert_not_empty (line 110) | def assert_not_empty(iterable): function assert_length (line 114) | def assert_length(sequence, expected): function assert_sorted_equal (line 118) | def assert_sorted_equal(left, right): function assert_isinstance (line 122) | def assert_isinstance(object_, type_): FILE: testifycompat/bin/migrate.py function replace (line 25) | def replace(pattern, repl): function run_replacement (line 48) | def run_replacement(contents): function strip_if_main_run (line 55) | def strip_if_main_run(contents): function run_migration_on_file (line 63) | def run_migration_on_file(filename): FILE: testifycompat/fixtures.py function setup (line 13) | def setup(func): function setup_teardown (line 17) | def setup_teardown(func): function teardown (line 21) | def teardown(func): function class_setup (line 29) | def class_setup(func): function class_setup_teardown (line 33) | def class_setup_teardown(func): function class_teardown (line 37) | def class_teardown(func): function suite (line 45) | def suite(name, reason=None): FILE: tests/actioncommand_test.py class TestActionCommand (line 15) | class TestActionCommand(TestCase): method setup_command (line 17) | def setup_command(self): method test_init (line 22) | def test_init(self): method test_init_no_serializer (line 25) | def test_init_no_serializer(self): method test_started (line 32) | def test_started(self): method test_started_already_started (line 37) | def test_started_already_started(self): method test_exited (line 41) | def test_exited(self): method test_exited_from_pending (line 47) | def test_exited_from_pending(self): method test_exited_bad_state (line 51) | def test_exited_bad_state(self): method test_write_stderr_no_fh (line 56) | def test_write_stderr_no_fh(self): method test_write_stderr (line 61) | def test_write_stderr(self): method test_done (line 72) | def test_done(self): method test_done_bad_state (line 77) | def test_done_bad_state(self): method test_handle_errback (line 80) | def test_handle_errback(self): method test_is_unknown (line 86) | def test_is_unknown(self): method test_is_failed (line 89) | def test_is_failed(self): method test_is_failed_true (line 92) | def test_is_failed_true(self): method test_is_complete (line 96) | def test_is_complete(self): method test_is_complete_true (line 99) | def test_is_complete_true(self): method test_is_done (line 103) | def test_is_done(self): class TestCreateActionCommandFactoryFromConfig (line 110) | class TestCreateActionCommandFactoryFromConfig(TestCase): method test_create_default_action_command_no_config (line 111) | def test_create_default_action_command_no_config(self): method test_create_default_action_command (line 118) | def test_create_default_action_command(self): method test_create_action_command_with_simple_runner (line 129) | def test_create_action_command_with_simple_runner(self): class TestSubprocessActionRunnerFactory (line 143) | class TestSubprocessActionRunnerFactory(TestCase): method setup_factory (line 145) | def setup_factory(self): method test_from_config (line 153) | def test_from_config(self): method test_create (line 161) | def test_create(self): method test_build_command_complex_quoting (line 174) | def test_build_command_complex_quoting(self): method test_build_stop_action_command (line 189) | def test_build_stop_action_command(self): method test__eq__true (line 202) | def test__eq__true(self): method test__eq__false (line 207) | def test__eq__false(self): FILE: tests/api/adapter_test.py class MockAdapter (line 24) | class MockAdapter(ReprAdapter): method get_three (line 29) | def get_three(self): method get_four (line 32) | def get_four(self): class TestReprAdapter (line 36) | class TestReprAdapter(TestCase): method setup_adapter (line 38) | def setup_adapter(self): method test__init__ (line 42) | def test__init__(self): method test_get_translation_mapping (line 46) | def test_get_translation_mapping(self): method test_get_repr (line 53) | def test_get_repr(self): class SampleClassStub (line 58) | class SampleClassStub: method __init__ (line 59) | def __init__(self): method expects_true (line 64) | def expects_true(self): method expects_false (line 68) | def expects_false(self): class TestToggleFlag (line 72) | class TestToggleFlag(TestCase): method setup_stub (line 74) | def setup_stub(self): method test_toggle_flag_true (line 77) | def test_toggle_flag_true(self): method test_toggle_flag_false (line 80) | def test_toggle_flag_false(self): class TestRunAdapter (line 84) | class TestRunAdapter(TestCase): method setup_adapter (line 86) | def setup_adapter(self): method test_get_state (line 90) | def test_get_state(self): method test_get_node (line 94) | def test_get_node(self, mock_node_adapter): method test_get_duration (line 101) | def test_get_duration(self): class TestActionRunAdapter (line 106) | class TestActionRunAdapter(TestCase): method setup_adapter (line 108) | def setup_adapter(self): method teardown_adapter (line 115) | def teardown_adapter(self): method test__init__ (line 118) | def test__init__(self): method test_get_repr (line 123) | def test_get_repr(self): class TestActionRunGraphAdapter (line 128) | class TestActionRunGraphAdapter(TestCase): method setup_adapter (line 130) | def setup_adapter(self): method test_get_repr (line 151) | def test_get_repr(self): class TestJobRunAdapter (line 160) | class TestJobRunAdapter(TestCase): method setup_adapter (line 162) | def setup_adapter(self): method test__init__ (line 171) | def test__init__(self): method test_get_runs (line 174) | def test_get_runs(self): method test_get_runs_without_action_runs (line 178) | def test_get_runs_without_action_runs(self): class TestNodeAdapter (line 183) | class TestNodeAdapter(TestCase): method setup_adapter (line 185) | def setup_adapter(self): method test_repr (line 189) | def test_repr(self): class TestNodePoolAdapter (line 195) | class TestNodePoolAdapter(TestCase): method setup_adapter (line 197) | def setup_adapter(self): method test_repr (line 202) | def test_repr(self, mock_many): class TestJobIndexAdapter (line 211) | class TestJobIndexAdapter(TestCase): method setup_adapter (line 213) | def setup_adapter(self): method test_repr (line 217) | def test_repr(self): method test_get_actions (line 228) | def test_get_actions(self): method test_get_actions_no_runs (line 239) | def test_get_actions_no_runs(self): class TestSchedulerAdapter (line 245) | class TestSchedulerAdapter(TestCase): method setup_adapter (line 247) | def setup_adapter(self): method test_repr (line 252) | def test_repr(self, mock_get_jitter): FILE: tests/api/auth_test.py function mock_auth_filter (line 12) | def mock_auth_filter(): function mock_request (line 17) | def mock_request(path: str, token: str, method: str): function test_is_request_authorized (line 23) | def test_is_request_authorized(mock_auth_filter): function test_is_request_authorized_fail (line 45) | def test_is_request_authorized_fail(mock_auth_filter): function test_is_request_authorized_malformed (line 52) | def test_is_request_authorized_malformed(mock_auth_filter): function test_is_request_authorized_no_enforce (line 59) | def test_is_request_authorized_no_enforce(mock_auth_filter): function test_is_request_authorized_disabled (line 69) | def test_is_request_authorized_disabled(mock_auth_filter): function test_extract_service_from_path (line 88) | def test_extract_service_from_path(path, expected): FILE: tests/api/controller_test.py class TestJobCollectionController (line 20) | class TestJobCollectionController: method setup_controller (line 22) | def setup_controller(self): method test_handle_command_unknown (line 30) | def test_handle_command_unknown(self): method test_handle_command_move_non_existing_job (line 35) | def test_handle_command_move_non_existing_job(self): method test_handle_command_move_to_existing_job (line 44) | def test_handle_command_move_to_existing_job(self): method test_handle_command_move (line 53) | def test_handle_command_move(self): class TestActionRunController (line 63) | class TestActionRunController: method setup_controller (line 65) | def setup_controller(self): method test_handle_command_start_failed (line 78) | def test_handle_command_start_failed(self): method test_handle_command_recover_failed (line 84) | def test_handle_command_recover_failed(self): method test_handle_command_mapped_command (line 90) | def test_handle_command_mapped_command(self): method test_handle_command_mapped_command_failed (line 95) | def test_handle_command_mapped_command_failed(self): method test_handle_termination_not_implemented (line 100) | def test_handle_termination_not_implemented(self): method test_handle_termination_success_without_extra_msg (line 105) | def test_handle_termination_success_without_extra_msg(self): method test_handle_termination_success_with_extra_msg (line 110) | def test_handle_termination_success_with_extra_msg(self): method test_handle_retry_default (line 116) | def test_handle_retry_default(self): method test_handle_retry_new_command (line 120) | def test_handle_retry_new_command(self): class TestJobRunController (line 125) | class TestJobRunController: method setup_controller (line 127) | def setup_controller(self): method test_handle_command_restart (line 139) | def test_handle_command_restart(self): method test_handle_mapped_command (line 145) | def test_handle_mapped_command(self): method test_handle_mapped_command_failure (line 150) | def test_handle_mapped_command_failure(self): class TestJobController (line 157) | class TestJobController: method setup_controller (line 159) | def setup_controller(self): method test_handle_command_enable (line 163) | def test_handle_command_enable(self): method test_handle_command_disable (line 167) | def test_handle_command_disable(self): method test_handle_command_start (line 171) | def test_handle_command_start(self): class TestConfigController (line 177) | class TestConfigController: method setup_controller (line 179) | def setup_controller(self): method test_get_config_content_new (line 185) | def test_get_config_content_new(self): method test_get_config_content_old (line 191) | def test_get_config_content_old(self): method test_read_config (line 198) | def test_read_config(self): method test_update_config (line 207) | def test_update_config(self): method test_update_config_failure (line 215) | def test_update_config_failure(self): method test_update_config_hash_mismatch (line 238) | def test_update_config_hash_mismatch(self): method test_delete_config (line 243) | def test_delete_config(self): method test_delete_config_failure (line 251) | def test_delete_config_failure(self): method test_delete_config_hash_mismatch (line 260) | def test_delete_config_hash_mismatch(self): method test_delete_config_content_not_empty (line 265) | def test_delete_config_content_not_empty(self): method test_get_namespaces (line 270) | def test_get_namespaces(self): class TestEventsController (line 276) | class TestEventsController: method setup (line 278) | def setup(self): method test_info (line 285) | def test_info(self): method test_publish (line 292) | def test_publish(self): method test_discard (line 313) | def test_discard(self): FILE: tests/api/requestargs_test.py class TestRequestArgs (line 14) | class TestRequestArgs(TestCase): method setup_args (line 16) | def setup_args(self): method _add_arg (line 26) | def _add_arg(self, name, value): method test_get_integer_valid_int (line 33) | def test_get_integer_valid_int(self): method test_get_integer_invalid_int (line 37) | def test_get_integer_invalid_int(self): method test_get_integer_missing (line 41) | def test_get_integer_missing(self): method test_get_string (line 44) | def test_get_string(self): method test_get_string_missing (line 48) | def test_get_string_missing(self): method test_get_bool (line 51) | def test_get_bool(self): method test_get_bool_false (line 54) | def test_get_bool_false(self): method test_get_bool_missing (line 58) | def test_get_bool_missing(self): method test_get_datetime_valid (line 61) | def test_get_datetime_valid(self): method test_get_datetime_invalid (line 64) | def test_get_datetime_invalid(self): method test_get_datetime_missing (line 68) | def test_get_datetime_missing(self): FILE: tests/api/resource_test.py function build_request (line 41) | def build_request(**kwargs): function mock_request (line 47) | def mock_request(): function mock_respond (line 52) | def mock_respond(): class WWWTestCase (line 62) | class WWWTestCase: function test_respond (line 78) | def test_respond(response, code, expected_code): class TestHandleCommand (line 84) | class TestHandleCommand: method mock_respond (line 86) | def mock_respond(self, mock_respond): method test_handle_command_unknown (line 91) | def test_handle_command_unknown(self, mock_respond): method test_handle_command (line 105) | def test_handle_command(self, mock_respond): method test_handle_command_error (line 116) | def test_handle_command_error(self, mock_respond): class TestActionRunResource (line 127) | class TestActionRunResource(WWWTestCase): method setup_resource (line 129) | def setup_resource(self): method test_render_GET (line 138) | def test_render_GET(self, mock_respond): class TestJobrunResource (line 147) | class TestJobrunResource(WWWTestCase): method setup_resource (line 149) | def setup_resource(self): method test_render_GET (line 154) | def test_render_GET(self, mock_request): class TestApiRootResource (line 159) | class TestApiRootResource(WWWTestCase): method setup_resource (line 161) | def setup_resource(self): method test__init__ (line 165) | def test__init__(self): method test_render_GET (line 177) | def test_render_GET(self): class TestRootResource (line 187) | class TestRootResource(WWWTestCase): method setup_resource (line 189) | def setup_resource(self): method test_render_GET (line 194) | def test_render_GET(self): method test_get_children (line 201) | def test_get_children(self): class TestActionRunHistoryResource (line 205) | class TestActionRunHistoryResource(WWWTestCase): method setup_resource (line 207) | def setup_resource(self): method test_render_GET (line 211) | def test_render_GET(self, request): class TestJobCollectionResource (line 216) | class TestJobCollectionResource(WWWTestCase): method setup_resource (line 218) | def setup_resource(self): method test_render_GET (line 223) | def test_render_GET(self): method test_getChild (line 229) | def test_getChild(self): method test_getChild_missing_job (line 233) | def test_getChild_missing_job(self): class TestJobResource (line 238) | class TestJobResource(WWWTestCase): method setup_resource (line 240) | def setup_resource(self): method test_render_GET (line 260) | def test_render_GET(self, mock_request): method test_get_run_from_identifier_HEAD (line 264) | def test_get_run_from_identifier_HEAD(self): method test_get_run_from_identifier_number (line 269) | def test_get_run_from_identifier_number(self): method test_get_run_from_identifier_negative_index (line 275) | def test_get_run_from_identifier_negative_index(self): method test_getChild (line 280) | def test_getChild(self): method test_getChild_action_run_history (line 286) | def test_getChild_action_run_history(self): class TestConfigResource (line 300) | class TestConfigResource: method setup_resource (line 302) | def setup_resource(self): method test_render_GET (line 309) | def test_render_GET(self, mock_respond): method test_render_POST_update (line 319) | def test_render_POST_update(self, mock_respond): method test_render_POST_delete (line 330) | def test_render_POST_delete(self, mock_respond): class TestStatusResource (line 342) | class TestStatusResource: method test_render_GET (line 343) | def test_render_GET(self, request, mock_respond): class TestMetricsResource (line 359) | class TestMetricsResource: method test_render_GET (line 361) | def test_render_GET(self, mock_view_metrics, request, mock_respond): class TestTronSite (line 370) | class TestTronSite: method test_log_request (line 372) | def test_log_request(self, mock_meter): FILE: tests/assertions.py function assert_raises (line 8) | def assert_raises(expected_exception_class, callable_obj, *args, **kwargs): function assert_length (line 20) | def assert_length(sequence, expected, msg=None): function assert_call (line 27) | def assert_call(mock, call_idx, *args, **kwargs): function assert_mock_calls (line 34) | def assert_mock_calls(expected, mock_calls): FILE: tests/bin/action_runner_test.py class TestStatusFile (line 13) | class TestStatusFile(TestCase): method setup_status_file (line 15) | def setup_status_file(self): method test_get_content (line 19) | def test_get_content(self): class TestRegister (line 43) | class TestRegister(TestCase): method patch_sys (line 48) | def patch_sys(self): method test_validate_output_dir_does_not_exist (line 62) | def test_validate_output_dir_does_not_exist(self): method test_validate_output_dir_does_not_exist_create_fails (line 68) | def test_validate_output_dir_does_not_exist_create_fails(self): method test_validate_output_dir_exists_not_writable (line 75) | def test_validate_output_dir_exists_not_writable(self): method test_run_proc (line 81) | def test_run_proc(self): class TestBuildEnvironment (line 101) | class TestBuildEnvironment: method test_build_environment (line 102) | def test_build_environment(self): method test_build_environment_invalid_run_id (line 118) | def test_build_environment_invalid_run_id(self): method test_build_environment_too_long_run_id (line 134) | def test_build_environment_too_long_run_id(self): class TestBuildLabels (line 151) | class TestBuildLabels: method test_build_labels (line 152) | def test_build_labels(self): method test_build_labels_with_merging (line 159) | def test_build_labels_with_merging(self): method test_build_labels_with_merging_on_unknown (line 168) | def test_build_labels_with_merging_on_unknown(self): method test_build_labels_invalid_run_id (line 177) | def test_build_labels_invalid_run_id(self): method test_build_labels_too_long_run_id (line 184) | def test_build_labels_too_long_run_id(self): method test_build_labels_with_attempt_number_zero (line 191) | def test_build_labels_with_attempt_number_zero(self): method test_build_labels_with_attempt_number_retry (line 199) | def test_build_labels_with_attempt_number_retry(self): method test_build_labels_with_attempt_number_and_original_labels (line 207) | def test_build_labels_with_attempt_number_and_original_labels(self): method test_build_labels_without_attempt_number_omits_label (line 217) | def test_build_labels_without_attempt_number_omits_label(self): FILE: tests/bin/action_status_test.py class TestActionStatus (line 11) | class TestActionStatus(TestCase): method setup_status_file (line 13) | def setup_status_file(self): method test_send_signal (line 32) | def test_send_signal(self, mock_getpgid, mock_kill): method test_get_field_retrieves_last_entry (line 37) | def test_get_field_retrieves_last_entry(self): method test_get_field_none (line 52) | def test_get_field_none(self): FILE: tests/bin/check_tron_jobs_test.py function mock_run_interval (line 15) | def mock_run_interval(): class TestCheckJobs (line 20) | class TestCheckJobs(TestCase): method test_check_job_result_exception (line 25) | def test_check_job_result_exception( method test_job_succeeded (line 54) | def test_job_succeeded(self): method test_job_running_and_action_succeeded (line 95) | def test_job_running_and_action_succeeded(self): method test_get_relevant_action_picks_the_first_one_succeeded (line 146) | def test_get_relevant_action_picks_the_first_one_succeeded(self): method test_job_failed (line 191) | def test_job_failed(self): method test_most_recent_end_time_job_failed (line 232) | def test_most_recent_end_time_job_failed(self): method test_rerun_job_failed (line 276) | def test_rerun_job_failed(self): method test_job_running_but_action_failed_already (line 332) | def test_job_running_but_action_failed_already(self): method test_get_relevant_action_picks_the_one_that_failed (line 383) | def test_get_relevant_action_picks_the_one_that_failed(self): method test_job_next_run_starting_no_overlap_is_stuck (line 438) | def test_job_next_run_starting_no_overlap_is_stuck(self): method test_job_next_run_starting_overlap_allowed_not_stuck (line 467) | def test_job_next_run_starting_overlap_allowed_not_stuck(self): method test_job_next_run_running_no_queueing_not_stuck (line 509) | def test_job_next_run_running_no_queueing_not_stuck(self): method test_job_next_run_starting_no_queueing_not_stuck (line 552) | def test_job_next_run_starting_no_queueing_not_stuck(self): method test_job_running_job_exceeds_expected_runtime (line 595) | def test_job_running_job_exceeds_expected_runtime(self): method test_job_starting_job_exceeds_expected_runtime (line 633) | def test_job_starting_job_exceeds_expected_runtime(self): method test_job_waiting_job_exceeds_expected_runtime_already_started (line 671) | def test_job_waiting_job_exceeds_expected_runtime_already_started(self): method test_job_running_action_exceeds_expected_runtime (line 709) | def test_job_running_action_exceeds_expected_runtime(self): method test_job_running_action_exceeds_expected_runtime_and_other_action_failed (line 779) | def test_job_running_action_exceeds_expected_runtime_and_other_action_... method test_job_stuck_when_runtime_not_sorted (line 826) | def test_job_stuck_when_runtime_not_sorted(self): method test_get_relevant_action_pick_the_one_stuck (line 855) | def test_get_relevant_action_pick_the_one_stuck(self): method test_get_relevant_action_pick_the_one_exceeds_expected_runtime (line 896) | def test_get_relevant_action_pick_the_one_exceeds_expected_runtime(self): method test_get_relevant_action_pick_the_one_starting (line 938) | def test_get_relevant_action_pick_the_one_starting(self): method test_get_relevant_action_pick_the_one_exceeds_expected_runtime_with_long_duration (line 980) | def test_get_relevant_action_pick_the_one_exceeds_expected_runtime_wit... method test_no_job_scheduled_or_queuing (line 1027) | def test_no_job_scheduled_or_queuing(self): method test_job_no_runs_to_check (line 1067) | def test_job_no_runs_to_check(self): method test_job_has_no_runs_at_all (line 1087) | def test_job_has_no_runs_at_all(self): method test_job_unknown (line 1098) | def test_job_unknown(self): method test_job_running_but_action_unknown_already (line 1139) | def test_job_running_but_action_unknown_already(self): method test_job_waiting_but_action_unknown_already (line 1190) | def test_job_waiting_but_action_unknown_already(self): method test_guess_realert_every (line 1242) | def test_guess_realert_every(self): method test_guess_realert_every_no_action_run_starts (line 1280) | def test_guess_realert_every_no_action_run_starts(self): method test_guess_realert_every_queue_job (line 1319) | def test_guess_realert_every_queue_job(self): method test_guess_realert_every_frequent_run (line 1350) | def test_guess_realert_every_frequent_run(self): method test_guess_realert_every_first_time_job (line 1384) | def test_guess_realert_every_first_time_job(self): class TestCheckPreciousJobs (line 1403) | class TestCheckPreciousJobs: method setup_job (line 1405) | def setup_job(self): method test_sort_runs_by_interval_day (line 1482) | def test_sort_runs_by_interval_day(self): method test_sort_runs_by_interval_day_empty_buckets (line 1497) | def test_sort_runs_by_interval_day_empty_buckets(self): method test_sort_runs_by_interval_day_old_empty_buckets (line 1517) | def test_sort_runs_by_interval_day_old_empty_buckets(self): method test_compute_check_result_for_job_not_precious (line 1550) | def test_compute_check_result_for_job_not_precious( method test_compute_check_result_for_job_disabled (line 1588) | def test_compute_check_result_for_job_disabled(self, mock_client): method test_compute_check_result_for_job_enabled (line 1612) | def test_compute_check_result_for_job_enabled( FILE: tests/bin/get_tron_metrics_test.py function test_send_data_metric (line 9) | def test_send_data_metric(): function test_send_data_metric_dry_run (line 35) | def test_send_data_metric_dry_run(): function test_send_counter (line 49) | def test_send_counter(mock_send_data_metric): function test_send_gauge (line 65) | def test_send_gauge(mock_send_data_metric): function test_send_meter (line 81) | def test_send_meter(mock_send_counter): function test_send_histogram (line 89) | def test_send_histogram(mock_send_gauge): function test_send_timer (line 112) | def test_send_timer(mock_send_meter, mock_send_histogram): function test_send_metrics (line 122) | def test_send_metrics(cluster): FILE: tests/bin/recover_batch_test.py function mock_file (line 12) | def mock_file(): function test_notify (line 27) | def test_notify(mock_get_exit_code, mock_reactor, exit_code, error_msg, ... function test_get_exit_code (line 77) | def test_get_exit_code( function test_read_last_yaml_roundtrip (line 94) | def test_read_last_yaml_roundtrip(mock_file): function test_run (line 118) | def test_run( FILE: tests/command_context_test.py class TestEmptyContext (line 18) | class TestEmptyContext(TestCase): method build_context (line 20) | def build_context(self): method test__getitem__ (line 23) | def test__getitem__(self): method test_get (line 26) | def test_get(self): class TestBuildFilledContext (line 30) | class TestBuildFilledContext(TestCase): method test_build_filled_context_no_objects (line 31) | def test_build_filled_context_no_objects(self): method test_build_filled_context_single (line 36) | def test_build_filled_context_single(self): method test_build_filled_context_chain (line 43) | def test_build_filled_context_chain(self): class SimpleContextTestCaseBase (line 51) | class SimpleContextTestCaseBase(TestCase): method test_hit (line 54) | def test_hit(self): method test_miss (line 57) | def test_miss(self): method test_get_hit (line 60) | def test_get_hit(self): method test_get_miss (line 63) | def test_get_miss(self): class SimpleDictContextTestCase (line 67) | class SimpleDictContextTestCase(SimpleContextTestCaseBase): method build_context (line 69) | def build_context(self): class SimpleObjectContextTestCase (line 73) | class SimpleObjectContextTestCase(SimpleContextTestCaseBase): method build_context (line 75) | def build_context(self): class ChainedDictContextTestCase (line 82) | class ChainedDictContextTestCase(SimpleContextTestCaseBase): method build_context (line 84) | def build_context(self): method test_chain_get (line 93) | def test_chain_get(self): class ChainedDictOverrideContextTestCase (line 97) | class ChainedDictOverrideContextTestCase(SimpleContextTestCaseBase): method build_context (line 99) | def build_context(self): method test_chain_get (line 108) | def test_chain_get(self): class ChainedObjectOverrideContextTestCase (line 112) | class ChainedObjectOverrideContextTestCase(SimpleContextTestCaseBase): method build_context (line 114) | def build_context(self): method test_chain_get (line 126) | def test_chain_get(self): class TestJobContext (line 130) | class TestJobContext(TestCase): method setup_job (line 132) | def setup_job(self): method test_name (line 146) | def test_name(self): method test__getitem__last_success (line 149) | def test__getitem__last_success(self): method test__getitem__last_success_bad_date_spec (line 157) | def test__getitem__last_success_bad_date_spec(self): method test__getitem__last_success_bad_date_name (line 161) | def test__getitem__last_success_bad_date_name(self): method test__getitem__last_success_no_date_spec (line 165) | def test__getitem__last_success_no_date_spec(self): method test__getitem__missing (line 169) | def test__getitem__missing(self): method test_namespace (line 172) | def test_namespace(self): class TestJobRunContext (line 176) | class TestJobRunContext(TestCase): method setup_context (line 178) | def setup_context(self): method test_cleanup_job_status (line 182) | def test_cleanup_job_status(self): method test_cleanup_job_status_failure (line 187) | def test_cleanup_job_status_failure(self): method test_runid (line 191) | def test_runid(self): method test_manual_run (line 194) | def test_manual_run(self): method test__getitem__ (line 198) | def test__getitem__(self, mock_date_math): class TestActionRunContext (line 205) | class TestActionRunContext(TestCase): method build_context (line 207) | def build_context(self): method test_actionname (line 216) | def test_actionname(self): method test_node_hostname (line 219) | def test_node_hostname(self): class TestFiller (line 223) | class TestFiller(TestCase): method setup_filler (line 225) | def setup_filler(self): method test_filler_with_job__getitem__ (line 228) | def test_filler_with_job__getitem__(self): method test_filler_with_job_run__getitem__ (line 233) | def test_filler_with_job_run__getitem__(self): FILE: tests/commands/backfill_test.py function mock_sleep (line 15) | def mock_sleep(): function mock_client (line 24) | def mock_client(): function mock_urlopen (line 30) | def mock_urlopen(): # prevent any requests from being made function mock_client_request (line 36) | def mock_client_request(): function fake_backfill_run (line 43) | def fake_backfill_run(mock_client): function test_backfill_run_create (line 61) | def test_backfill_run_create(mock_client_request, fake_backfill_run, eve... function test_backfill_run_get_run_id (line 75) | def test_backfill_run_get_run_id(mock_get_obj_type, fake_backfill_run, e... function test_backfill_run_sync_state (line 89) | def test_backfill_run_sync_state(fake_backfill_run, event_loop, job_run_... function test_backfill_run_watch_until_completion (line 95) | def test_backfill_run_watch_until_completion(fake_backfill_run, event_lo... function test_backfill_run_cancel (line 111) | def test_backfill_run_cancel( function test_run_backfill_for_date_range_job_dne (line 126) | def test_run_backfill_for_date_range_job_dne(mock_get_obj_type, event_lo... function test_run_backfill_for_date_range_not_a_job (line 136) | def test_run_backfill_for_date_range_not_a_job(mock_get_obj_type, event_... function test_run_backfill_for_date_range_normal (line 153) | def test_run_backfill_for_date_range_normal(mock_get_obj_type, event_loo... FILE: tests/commands/client_test.py function build_file_mock (line 19) | def build_file_mock(content): class TestRequest (line 26) | class TestRequest(TestCase): method setup_options (line 28) | def setup_options(self): method patch_urllib (line 32) | def patch_urllib(self): method test_build_url_request_no_data (line 40) | def test_build_url_request_no_data(self): method test_build_url_request_with_data (line 46) | def test_build_url_request_with_data(self): method test_load_response_content_success (line 56) | def test_load_response_content_success(self, _): method test_request_http_error (line 64) | def test_request_http_error(self, _): method test_request_url_error (line 77) | def test_request_url_error(self, _): method test_request_success (line 83) | def test_request_success(self): class TestClientRequest (line 90) | class TestClientRequest(TestCase): method setup_client (line 92) | def setup_client(self): method patch_request (line 97) | def patch_request(self): method test_request_error (line 104) | def test_request_error(self): method test_request_success (line 119) | def test_request_success(self): class TestClient (line 126) | class TestClient(TestCase): method setup_client (line 128) | def setup_client(self): method test_config_post (line 133) | def test_config_post(self): method test_config_get_default (line 144) | def test_config_get_default(self): method test_http_get (line 150) | def test_http_get(self): method test_action_runs (line 154) | def test_action_runs(self): method test_job_runs (line 160) | def test_job_runs(self): method test_job (line 166) | def test_job(self): method test_jobs (line 172) | def test_jobs(self): class TestUserAttribution (line 179) | class TestUserAttribution(TestCase): method test_default_user_agent (line 180) | def test_default_user_agent(self): method test_attributed_user_agent (line 191) | def test_attributed_user_agent(self): class TestGetUrl (line 203) | class TestGetUrl(TestCase): method test_get_job_url_for_action_run (line 204) | def test_get_job_url_for_action_run(self): method test_get_job_url_for_job (line 208) | def test_get_job_url_for_job(self): class TestGetContentFromIdentifier (line 213) | class TestGetContentFromIdentifier(TestCase): method setup_client (line 215) | def setup_client(self): method test_get_url_from_identifier_job_no_namespace (line 226) | def test_get_url_from_identifier_job_no_namespace(self): method test_get_url_from_identifier_job (line 231) | def test_get_url_from_identifier_job(self): method test_get_url_from_identifier_job_run (line 239) | def test_get_url_from_identifier_job_run(self): method test_get_url_from_identifier_action_run (line 247) | def test_get_url_from_identifier_action_run(self): method test_get_url_from_identifier_job_no_namespace_not_master (line 255) | def test_get_url_from_identifier_job_no_namespace_not_master(self): method test_get_url_from_identifier_no_match (line 260) | def test_get_url_from_identifier_no_match(self): FILE: tests/commands/cmd_utils_test.py class TestGetConfig (line 11) | class TestGetConfig(TestCase): method patch_environment (line 13) | def patch_environment(self): method test_read_config_missing (line 19) | def test_read_config_missing(self): method test_read_config (line 23) | def test_read_config(self): method test_get_client_config (line 27) | def test_get_client_config(self, mock_access): method test_filter_jobs_actions_runs_with_nothing (line 33) | def test_filter_jobs_actions_runs_with_nothing(self): method test_filter_jobs_actions_runs_with_almost_a_job (line 52) | def test_filter_jobs_actions_runs_with_almost_a_job(self): method test_filter_jobs_actions_runs_with_a_job_run (line 70) | def test_filter_jobs_actions_runs_with_a_job_run(self): method test_filter_jobs_actions_runs_with_a_job_run_and_id (line 89) | def test_filter_jobs_actions_runs_with_a_job_run_and_id(self): class TestBuildOptionParser (line 108) | class TestBuildOptionParser(TestCase): method test_build_option_parser (line 109) | def test_build_option_parser(self): class TestSuggestions (line 141) | class TestSuggestions(TestCase): method test_suggest_possibilities_none (line 142) | def test_suggest_possibilities_none(self): method test_suggest_possibilities_many (line 147) | def test_suggest_possibilities_many(self): method test_suggest_possibilities_one (line 155) | def test_suggest_possibilities_one(self): FILE: tests/commands/display_test.py class TestDisplayJobRuns (line 14) | class TestDisplayJobRuns(TestCase): method setup_data (line 16) | def setup_data(self): method test_format (line 42) | def test_format(self): class TestDisplayJobs (line 48) | class TestDisplayJobs(TestCase): method setup_data (line 50) | def setup_data(self): method do_format (line 66) | def do_format(self): method test_format (line 71) | def test_format(self): class TestDisplayActions (line 76) | class TestDisplayActions(TestCase): method setup_data (line 78) | def setup_data(self): method format_lines (line 150) | def format_lines(self): method test_format (line 154) | def test_format(self): class TestAddColorForState (line 159) | class TestAddColorForState(TestCase): method enable_color (line 161) | def enable_color(self): method test_add_red (line 165) | def test_add_red(self): method test_add_green (line 169) | def test_add_green(self): method test_add_blue (line 173) | def test_add_blue(self): class TestDisplayNode (line 178) | class TestDisplayNode(TestCase): method test_display_node (line 186) | def test_display_node(self): method test_display_node_pool (line 190) | def test_display_node_pool(self): FILE: tests/commands/retry_test.py function _empty_coro (line 10) | async def _empty_coro(*args, **kwargs): function mock_sleep (line 15) | def mock_sleep(): function mock_client (line 21) | def mock_client(): function mock_urlopen (line 28) | def mock_urlopen(): # prevent any requests from being made function mock_client_request (line 34) | def mock_client_request(): function test_retry_action_init_not_an_action (line 46) | def test_retry_action_init_not_an_action(mock_get_obj_type, mock_client): function fake_retry_action (line 53) | def fake_retry_action(mock_client): function test_retry_action_init_ok (line 85) | def test_retry_action_init_ok(fake_retry_action): function test_check_trigger_statuses (line 100) | def test_check_trigger_statuses(fake_retry_action, event_loop): function test_check_required_actions_statuses (line 109) | def test_check_required_actions_statuses(fake_retry_action, event_loop): function test_can_retry (line 123) | def test_can_retry(fake_retry_action, event_loop, expected, triggered_by... function test_wait_for_deps_timeout (line 129) | def test_wait_for_deps_timeout(fake_retry_action, event_loop): function test_wait_for_deps_all_deps_done (line 135) | def test_wait_for_deps_all_deps_done(fake_retry_action, event_loop): function test_issue_retry (line 159) | def test_issue_retry(fake_retry_action, mock_client_request, event_loop,... function test_wait_for_retry_deps_not_done (line 165) | def test_wait_for_retry_deps_not_done(fake_retry_action, mock_client_req... function test_wait_for_retry_deps_done (line 173) | def test_wait_for_retry_deps_done(fake_retry_action, mock_client_request... function test_retry_actions (line 193) | def test_retry_actions(mock_retry_action, mock_client, event_loop): FILE: tests/config/config_parse_test.py function make_ssh_options (line 47) | def make_ssh_options(): function make_mock_schedule (line 60) | def make_mock_schedule(): function make_command_context (line 71) | def make_command_context(): function make_nodes (line 78) | def make_nodes(): function make_node_pools (line 95) | def make_node_pools(): function make_mesos_options (line 104) | def make_mesos_options(): function make_k8s_options (line 118) | def make_k8s_options(): function make_action (line 122) | def make_action(**kwargs): function make_cleanup_action (line 131) | def make_cleanup_action(**kwargs): function make_job (line 139) | def make_job(**kwargs): function make_master_jobs (line 169) | def make_master_jobs(): function make_tron_config (line 328) | def make_tron_config( function make_named_tron_config (line 358) | def make_named_tron_config(jobs=None): class ConfigTestCase (line 362) | class ConfigTestCase(TestCase): method test_attributes (line 490) | def test_attributes(self): method test_empty_node_test (line 511) | def test_empty_node_test(self): class TestNamedConfig (line 515) | class TestNamedConfig(TestCase): method test_attributes (line 518) | def test_attributes(self): method test_attributes_with_master_context (line 546) | def test_attributes_with_master_context(self): method test_invalid_job_node_with_master_context (line 589) | def test_invalid_job_node_with_master_context(self): method test_invalid_action_node_with_master_context (line 620) | def test_invalid_action_node_with_master_context(self): class TestJobConfig (line 659) | class TestJobConfig(TestCase): method test_no_actions (line 660) | def test_no_actions(self): method test_empty_actions (line 676) | def test_empty_actions(self): method test_dupe_names (line 697) | def test_dupe_names(self): method test_bad_requires (line 721) | def test_bad_requires(self): method test_circular_dependency (line 754) | def test_circular_dependency(self): method test_circular_dependency_multiaction (line 786) | def test_circular_dependency_multiaction(self): method test_config_cleanup_name_collision (line 833) | def test_config_cleanup_name_collision(self): method test_config_cleanup_action_name (line 855) | def test_config_cleanup_action_name(self): method test_config_cleanup_requires (line 879) | def test_config_cleanup_requires(self): method test_validate_job_no_actions (line 903) | def test_validate_job_no_actions(self): class TestValidSecretSource (line 926) | class TestValidSecretSource(TestCase): method test_missing_secret_name (line 927) | def test_missing_secret_name(self): method test_validate_job_extra_secret_env (line 935) | def test_validate_job_extra_secret_env(self): method test_valid_job_secret_env_success (line 946) | def test_valid_job_secret_env_success(self): class TestNodeConfig (line 958) | class TestNodeConfig(TestCase): method test_validate_node_pool (line 959) | def test_validate_node_pool(self): method test_overlap_node_and_node_pools (line 966) | def test_overlap_node_and_node_pools(self): method test_invalid_node_name (line 979) | def test_invalid_node_name(self): method test_invalid_nested_node_pools (line 1000) | def test_invalid_nested_node_pools(self): method test_invalid_node_pool_config (line 1028) | def test_invalid_node_pool_config(self): method test_invalid_named_update (line 1056) | def test_invalid_named_update(self): class TestValidateJobs (line 1068) | class TestValidateJobs(TestCase): method test_valid_jobs_success (line 1069) | def test_valid_jobs_success(self): class TestValidCleanupActionName (line 1187) | class TestValidCleanupActionName(TestCase): method test_valid_cleanup_action_name_pass (line 1188) | def test_valid_cleanup_action_name_pass(self): method test_valid_cleanup_action_name_fail (line 1192) | def test_valid_cleanup_action_name_fail(self): class TestValidOutputStreamDir (line 1201) | class TestValidOutputStreamDir(TestCase): method setup_dir (line 1203) | def setup_dir(self): method teardown_dir (line 1207) | def teardown_dir(self): method test_valid_dir (line 1210) | def test_valid_dir(self): method test_missing_dir (line 1214) | def test_missing_dir(self): method test_missing_with_partial_context (line 1232) | def test_missing_with_partial_context(self): class TestBuildFormatStringValidator (line 1239) | class TestBuildFormatStringValidator(TestCase): method setup_keys (line 1241) | def setup_keys(self): method test_validator_passes (line 1245) | def test_validator_passes(self): method test_validator_unknown_variable_error (line 1249) | def test_validator_unknown_variable_error(self): method test_validator_passes_with_context (line 1259) | def test_validator_passes_with_context(self): method test_validator_valid_string_without_no_percent_escape (line 1269) | def test_validator_valid_string_without_no_percent_escape(self): class TestValidateConfigMapping (line 1280) | class TestValidateConfigMapping(TestCase): method test_validate_config_mapping_missing_master (line 1283) | def test_validate_config_mapping_missing_master(self): method test_validate_config_mapping (line 1289) | def test_validate_config_mapping(self): class TestConfigContainer (line 1302) | class TestConfigContainer(TestCase): method setup_container (line 1306) | def setup_container(self): method test_create (line 1314) | def test_create(self): method test_create_missing_master (line 1323) | def test_create_missing_master(self): method test_get_job_names (line 1331) | def test_get_job_names(self): method test_get_jobs (line 1344) | def test_get_jobs(self): method test_get_node_names (line 1356) | def test_get_node_names(self): class TestValidateSSHOptions (line 1362) | class TestValidateSSHOptions(TestCase): method setup_context (line 1364) | def setup_context(self): method test_post_validation_failed (line 1369) | def test_post_validation_failed(self): method test_post_validation_success (line 1380) | def test_post_validation_success(self): class TestValidateIdentityFile (line 1389) | class TestValidateIdentityFile(TestCase): method setup_context (line 1391) | def setup_context(self): method test_valid_identity_file_missing_private_key (line 1395) | def test_valid_identity_file_missing_private_key(self): method test_valid_identity_files_missing_public_key (line 1404) | def test_valid_identity_files_missing_public_key(self): method test_valid_identity_files_valid (line 1414) | def test_valid_identity_files_valid(self): method test_valid_identity_files_missing_with_partial_context (line 1424) | def test_valid_identity_files_missing_with_partial_context(self): class TestValidKnownHostsFile (line 1431) | class TestValidKnownHostsFile(TestCase): method setup_context (line 1433) | def setup_context(self): method test_valid_known_hosts_file_exists (line 1437) | def test_valid_known_hosts_file_exists(self): method test_valid_known_hosts_file_missing (line 1444) | def test_valid_known_hosts_file_missing(self): method test_valid_known_hosts_file_missing_partial_context (line 1453) | def test_valid_known_hosts_file_missing_partial_context(self): class TestValidateVolume (line 1463) | class TestValidateVolume(TestCase): method setup_context (line 1465) | def setup_context(self): method test_missing_container_path (line 1468) | def test_missing_container_path(self): method test_missing_host_path (line 1481) | def test_missing_host_path(self): method test_invalid_mode (line 1494) | def test_invalid_mode(self): method test_valid (line 1507) | def test_valid(self): method test_mesos_default_volumes (line 1518) | def test_mesos_default_volumes(self): method test_k8s_default_volumes (line 1543) | def test_k8s_default_volumes(self): class TestValidPermissionMode (line 1569) | class TestValidPermissionMode: method test_valid_permissions (line 1574) | def test_valid_permissions(self, permission, normalized): method test_invalid_permissions (line 1579) | def test_invalid_permissions(self, permission): class TestValidSecretVolumeItem (line 1584) | class TestValidSecretVolumeItem: method test_invalid (line 1600) | def test_invalid(self, config): method test_valid_job_secret_volume_success (line 1608) | def test_valid_job_secret_volume_success(self, config): method test_item_mode_propagation_and_override (line 1634) | def test_item_mode_propagation_and_override(self, item_config, default... method test_volume_when_items_key_is_omitted (line 1653) | def test_volume_when_items_key_is_omitted(self): method test_volume_when_items_is_empty (line 1666) | def test_volume_when_items_is_empty(self): class TestValidSecretVolume (line 1683) | class TestValidSecretVolume: method test_invalid (line 1717) | def test_invalid(self, config): method test_wrong_item_key (line 1721) | def test_wrong_item_key(self): method test_valid (line 1758) | def test_valid(self, config): class TestValidMasterAddress (line 1762) | class TestValidMasterAddress: method context (line 1764) | def context(self): method test_valid (line 1776) | def test_valid(self, url, context): method test_invalid (line 1791) | def test_invalid(self, url, context): class TestValidKubeconfigPaths (line 1796) | class TestValidKubeconfigPaths: method setup_context (line 1798) | def setup_context(self): method test_valid (line 1805) | def test_valid(self, kubeconfig_path, watcher_kubeconfig_paths): method test_invalid (line 1821) | def test_invalid(self, kubeconfig_path, watcher_kubeconfig_paths): method test_nonretry (line 1830) | def test_nonretry(self): class TestValidateStatePersistenceDefaults (line 1845) | class TestValidateStatePersistenceDefaults(TestCase): method test_post_validation_sees_defaults_for_omitted_keys (line 1846) | def test_post_validation_sees_defaults_for_omitted_keys(self): method test_post_validation_sees_provided_values (line 1886) | def test_post_validation_sees_provided_values(self): FILE: tests/config/config_utils_test.py class TestUniqueNameDict (line 18) | class TestUniqueNameDict(TestCase): method setup_dict (line 20) | def setup_dict(self): method test_set_item_no_conflict (line 24) | def test_set_item_no_conflict(self): method test_set_item_conflict (line 28) | def test_set_item_conflict(self): class TestValidatorIdentifier (line 33) | class TestValidatorIdentifier(TestCase): method test_valid_identifier_too_long (line 34) | def test_valid_identifier_too_long(self): method test_valid_identifier (line 37) | def test_valid_identifier(self): method test_valid_identifier_invalid_character (line 41) | def test_valid_identifier_invalid_character(self): class TestBuildListOfTypeValidator (line 46) | class TestBuildListOfTypeValidator(TestCase): method setup_validator (line 48) | def setup_validator(self): method test_validator_passes (line 52) | def test_validator_passes(self): method test_validator_fails (line 58) | def test_validator_fails(self): class TestBuildEnumValidator (line 64) | class TestBuildEnumValidator(TestCase): method setup_enum_validator (line 66) | def setup_enum_validator(self): method test_validate (line 71) | def test_validate(self): method test_invalid (line 75) | def test_invalid(self): class TestValidTime (line 88) | class TestValidTime(TestCase): method setup_config (line 90) | def setup_config(self): method test_valid_time (line 93) | def test_valid_time(self): method test_valid_time_with_seconds (line 99) | def test_valid_time_with_seconds(self): method test_valid_time_invalid (line 105) | def test_valid_time_invalid(self): class TestValidTimeDelta (line 115) | class TestValidTimeDelta(TestCase): method setup_config (line 117) | def setup_config(self): method test_valid_time_delta_invalid (line 120) | def test_valid_time_delta_invalid(self): method test_valid_time_delta_valid_seconds (line 129) | def test_valid_time_delta_valid_seconds(self): method test_valid_time_delta_valid_minutes (line 140) | def test_valid_time_delta_valid_minutes(self): method test_valid_time_delta_invalid_unit (line 151) | def test_valid_time_delta_invalid_unit(self): class TestConfigContext (line 161) | class TestConfigContext(TestCase): method test_build_config_context (line 162) | def test_build_config_context(self): class StubValidator (line 187) | class StubValidator(config_utils.Validator): class TestValidator (line 191) | class TestValidator(TestCase): method setup_validator (line 193) | def setup_validator(self): method test_validate_with_none (line 196) | def test_validate_with_none(self): method test_validate_optional_with_none (line 206) | def test_validate_optional_with_none(self): FILE: tests/config/manager_test.py class TestFromString (line 19) | class TestFromString(TestCase): method test_from_string_valid (line 20) | def test_from_string_valid(self): method test_from_string_invalid (line 26) | def test_from_string_invalid(self): class TestReadWrite (line 31) | class TestReadWrite(TestCase): method setup_tempfile (line 33) | def setup_tempfile(self): method teardown_tempfile (line 37) | def teardown_tempfile(self): method test_read_write (line 40) | def test_read_write(self): method test_read_raw_write_raw (line 46) | def test_read_raw_write_raw(self): class TestManifestFile (line 53) | class TestManifestFile(TestCase): method setup_manifest (line 55) | def setup_manifest(self): method teardown_dir (line 61) | def teardown_dir(self): method test_create_exists (line 66) | def test_create_exists(self, mock_write, mock_os): method test_create (line 71) | def test_create(self): method test_add (line 74) | def test_add(self): method test_delete (line 79) | def test_delete(self): method test_get_file_mapping (line 89) | def test_get_file_mapping(self): class TestConfigManager (line 98) | class TestConfigManager(TestCase): method setup_config_manager (line 104) | def setup_config_manager(self): method teardown_dir (line 111) | def teardown_dir(self): method test_build_file_path (line 114) | def test_build_file_path(self): method test_build_file_path_with_invalid_chars (line 118) | def test_build_file_path_with_invalid_chars(self): method test_read_raw_config (line 130) | def test_read_raw_config(self): method test_write_config (line 138) | def test_write_config(self): method test_write_config_new_name (line 153) | def test_write_config_new_name(self): method test_delete_config (line 164) | def test_delete_config(self, mock_remove): method test_delete_missing_namespace (line 173) | def test_delete_missing_namespace(self, mock_remove): method test_validate_with_fragment (line 187) | def test_validate_with_fragment(self, mock_config_container, mock_job_... method test_load (line 206) | def test_load(self, mock_config_container, mock_read): method test_get_hash_default (line 216) | def test_get_hash_default(self): method test_get_hash (line 221) | def test_get_hash(self): class TestCreateNewConfig (line 229) | class TestCreateNewConfig(TestCase): method test_create_new_config (line 233) | def test_create_new_config(self, mock_write, mock_manifest, mock_maked... FILE: tests/config/schedule_parse_test.py class TestPadSequence (line 13) | class TestPadSequence(TestCase): method test_pad_sequence_short (line 14) | def test_pad_sequence_short(self): method test_pad_sequence_long (line 18) | def test_pad_sequence_long(self): method test_pad_sequence_exact (line 22) | def test_pad_sequence_exact(self): method test_pad_sequence_empty (line 26) | def test_pad_sequence_empty(self): method test_pad_negative_size (line 30) | def test_pad_negative_size(self): class TestScheduleConfigFromString (line 34) | class TestScheduleConfigFromString(TestCase): method test_groc_config (line 39) | def test_groc_config(self, mock_parse_groc): class TestValidScheduler (line 52) | class TestValidScheduler(TestCase): method assert_validation (line 54) | def assert_validation(self, schedule, expected, mock_schedulers): method test_cron_from_dict (line 62) | def test_cron_from_dict(self): method test_cron_from_dict_with_jitter (line 71) | def test_cron_from_dict_with_jitter(self): class TestValidCronScheduler (line 81) | class TestValidCronScheduler(TestCase): method validate (line 84) | def validate(self, line): method test_valid_config (line 89) | def test_valid_config(self): method test_invalid_config (line 95) | def test_invalid_config(self): class TestValidDailyScheduler (line 99) | class TestValidDailyScheduler(TestCase): method validate (line 100) | def validate(self, config): method assert_parse (line 105) | def assert_parse(self, config, expected): method test_valid_daily_scheduler_start_time (line 110) | def test_valid_daily_scheduler_start_time(self): method test_valid_daily_scheduler_just_days (line 114) | def test_valid_daily_scheduler_just_days(self): method test_valid_daily_scheduler_time_and_day (line 118) | def test_valid_daily_scheduler_time_and_day(self): method test_valid_daily_scheduler_invalid_start_time (line 122) | def test_valid_daily_scheduler_invalid_start_time(self): method test_valid_daily_scheduler_invalid_days (line 127) | def test_valid_daily_scheduler_invalid_days(self): FILE: tests/core/action_test.py class TestAction (line 18) | class TestAction: method test_from_config_full (line 20) | def test_from_config_full(self, disk): method test_from_config_none_values (line 85) | def test_from_config_none_values(self): method action_command_config_json (line 106) | def action_command_config_json(self): method test_action_command_config_from_json (line 199) | def test_action_command_config_from_json(self, action_command_config_j... FILE: tests/core/actiongraph_test.py class TestActionGraph (line 11) | class TestActionGraph(TestCase): method setup_graph (line 13) | def setup_graph(self): method test_get_dependencies (line 43) | def test_get_dependencies(self): method test_names (line 54) | def test_names(self): method test__getitem__ (line 60) | def test__getitem__(self): method test__getitem__miss (line 66) | def test__getitem__miss(self): method test__eq__ (line 69) | def test__eq__(self): method test__ne__ (line 80) | def test__ne__(self): FILE: tests/core/actionrun_test.py function output_path (line 37) | def output_path(): function mock_current_time (line 44) | def mock_current_time(): class TestMinFilter (line 52) | class TestMinFilter: method test_min_filter (line 53) | def test_min_filter(self): class TestEagerAll (line 58) | class TestEagerAll: method test_all_true (line 59) | def test_all_true(self): method test_all_false (line 62) | def test_all_false(self): method test_full_iteration (line 65) | def test_full_iteration(self): class TestActionRunFactory (line 72) | class TestActionRunFactory: method setup_action_runs (line 74) | def setup_action_runs(self): method state_data (line 102) | def state_data(self): method test_build_action_run_collection (line 116) | def test_build_action_run_collection(self): method test_action_run_collection_from_state (line 127) | def test_action_run_collection_from_state(self, state_data): method test_build_run_for_action (line 163) | def test_build_run_for_action(self): method test_build_run_for_action_with_node (line 183) | def test_build_run_for_action_with_node(self): method test_build_run_for_ssh_action (line 203) | def test_build_run_for_ssh_action(self): method test_build_run_for_mesos_action (line 216) | def test_build_run_for_mesos_action(self): method test_action_run_from_state_ssh (line 257) | def test_action_run_from_state_ssh(self, state_data): method test_action_run_from_state_mesos (line 267) | def test_action_run_from_state_mesos(self, state_data): method test_action_run_from_state_kubernetes (line 281) | def test_action_run_from_state_kubernetes(self, state_data): method test_action_run_from_state_spark (line 295) | def test_action_run_from_state_spark(self, state_data): class TestActionRun (line 310) | class TestActionRun: method setup_action_run (line 312) | def setup_action_run(self, output_path): method test_init_state (line 329) | def test_init_state(self): method test_ready_state (line 332) | def test_ready_state(self): method test_start (line 336) | def test_start(self): method test_start_bad_state (line 343) | def test_start_bad_state(self): method test_start_invalid_command (line 348) | def test_start_invalid_command(self, _log): method test_success (line 355) | def test_success(self): method test_success_emits_not (line 367) | def test_success_emits_not(self): method test_sucess_emits_not_invalid_transition (line 375) | def test_sucess_emits_not_invalid_transition(self): method test_success_emits_on_true (line 383) | def test_success_emits_on_true(self): method test_success_emits_on_dict (line 391) | def test_success_emits_on_dict(self): method test_emit_triggers (line 400) | def test_emit_triggers(self, eventbus): method test_failure (line 414) | def test_failure(self): method test_failure_bad_state (line 421) | def test_failure_bad_state(self): method test_skip (line 426) | def test_skip(self): method test_skip_bad_state (line 435) | def test_skip_bad_state(self): method test_render_command (line 438) | def test_render_command(self): method test_command_not_yet_rendered (line 443) | def test_command_not_yet_rendered(self): method test_command_already_rendered (line 446) | def test_command_already_rendered(self): method test_command_failed_render (line 451) | def test_command_failed_render(self, _log): method test_is_complete (line 455) | def test_is_complete(self): method test_is_broken (line 463) | def test_is_broken(self): method test__getattr__ (line 471) | def test__getattr__(self): method test__getattr__missing_attribute (line 479) | def test__getattr__missing_attribute(self): method test_auto_retry (line 483) | def test_auto_retry(self, mock_current_time): method test_auto_retry_command_config_change (line 508) | def test_auto_retry_command_config_change(self, mock_current_time): method test_no_auto_retry_on_fail_not_running (line 524) | def test_no_auto_retry_on_fail_not_running(self): method test_no_auto_retry_on_fail_running (line 534) | def test_no_auto_retry_on_fail_running(self): method test_auto_retry_already_done (line 546) | def test_auto_retry_already_done(self): method test_manual_retry (line 566) | def test_manual_retry(self, mock_current_time): method test_manual_retry_use_new_command (line 583) | def test_manual_retry_use_new_command(self, mock_current_time): method test_retries_delay (line 597) | def test_retries_delay(self, callLater): class TestActionRunFactoryTriggerTimeout (line 606) | class TestActionRunFactoryTriggerTimeout: method test_trigger_timeout_default (line 607) | def test_trigger_timeout_default(self): method test_trigger_timeout_custom (line 618) | def test_trigger_timeout_custom(self): class TestActionRunTriggerTimeout (line 630) | class TestActionRunTriggerTimeout: method setup_teardown (line 632) | def setup_teardown(self): method test_cleanup_clears_trigger_timeout (line 649) | def test_cleanup_clears_trigger_timeout(self): method test_clear_trigger_timeout (line 654) | def test_clear_trigger_timeout(self): method test_setup_subscriptions_no_triggers (line 663) | def test_setup_subscriptions_no_triggers(self, reactor, eventbus): method test_setup_subscriptions_no_remaining (line 671) | def test_setup_subscriptions_no_remaining(self, reactor, eventbus): method test_setup_subscriptions_timeout_in_future (line 681) | def test_setup_subscriptions_timeout_in_future(self, reactor, mock_cur... method test_setup_subscriptions_timeout_in_past (line 692) | def test_setup_subscriptions_timeout_in_past(self, reactor, mock_curre... method test_trigger_timeout_reached_no_remaining_notifies (line 703) | def test_trigger_timeout_reached_no_remaining_notifies(self, eventbus): method test_trigger_timeout_reached_with_remaining_fails (line 711) | def test_trigger_timeout_reached_with_remaining_fails(self, eventbus): method test_done_clears_trigger_timeout_call (line 718) | def test_done_clears_trigger_timeout_call(self): method test_trigger_notify_clears_trigger_timeout (line 726) | def test_trigger_notify_clears_trigger_timeout(self): class TestSSHActionRun (line 734) | class TestSSHActionRun: method setup_action_run (line 736) | def setup_action_run(self, output_path): method test_start_node_error (line 750) | def test_start_node_error(self): method test_build_action_command (line 762) | def test_build_action_command(self, mock_filehandler): method test_handler_running (line 779) | def test_handler_running(self): method test_handler_failstart (line 789) | def test_handler_failstart(self): method test_handler_exiting_fail (line 798) | def test_handler_exiting_fail(self): method test_handler_exiting_success (line 810) | def test_handler_exiting_success(self): method test_handler_exiting_failunknown (line 823) | def test_handler_exiting_failunknown(self): method test_handler_unhandled (line 838) | def test_handler_unhandled(self): method test_recover_no_action_runner (line 850) | def test_recover_no_action_runner(self): class TestSSHActionRunRecover (line 855) | class TestSSHActionRunRecover: method setup_action_run (line 857) | def setup_action_run(self, output_path): method test_recover_incorrect_state (line 872) | def test_recover_incorrect_state(self): method test_recover_action_runner (line 877) | def test_recover_action_runner(self): method test_handler_exiting_failunknown (line 900) | def test_handler_exiting_failunknown(self, mock_reactor): method test_handler_exiting_failunknown_max_retries (line 934) | def test_handler_exiting_failunknown_max_retries(self, mock_reactor, m... class TestActionRunStateRestore (line 964) | class TestActionRunStateRestore: method setup_action_run (line 968) | def setup_action_run(self, mock_current_time): method state_data (line 985) | def state_data(self): method state_data_old (line 1008) | def state_data_old(self): method test_from_state_old (line 1020) | def test_from_state_old(self, state_data_old): method test_from_state_old_with_mesos_task_id (line 1041) | def test_from_state_old_with_mesos_task_id(self, state_data_old): method test_from_state_old_not_started (line 1060) | def test_from_state_old_not_started(self, state_data_old): method test_from_state_old_rendered_and_exited (line 1081) | def test_from_state_old_rendered_and_exited(self, state_data_old): method test_from_state_old_retries (line 1103) | def test_from_state_old_retries(self, state_data_old): method test_from_state_running (line 1131) | def test_from_state_running(self, state_data): method test_from_state_starting (line 1143) | def test_from_state_starting(self, state_data): method test_from_state_queued (line 1155) | def test_from_state_queued(self, state_data): method test_from_state_no_node_name (line 1167) | def test_from_state_no_node_name(self, state_data): method test_from_state_with_node_exists (line 1180) | def test_from_state_with_node_exists(self, mock_store, state_data): method test_from_state_after_rendered_command (line 1194) | def test_from_state_after_rendered_command(self, state_data): method test_from_state_action_config_gone (line 1208) | def test_from_state_action_config_gone(self, state_data): class TestActionRunCollection (line 1222) | class TestActionRunCollection: method _build_run (line 1223) | def _build_run(self, action): method setup_runs (line 1234) | def setup_runs(self, output_path): method test__init__ (line 1259) | def test__init__(self): method test_action_runs_for_actions (line 1264) | def test_action_runs_for_actions(self): method test_get_action_runs_with_cleanup (line 1271) | def test_get_action_runs_with_cleanup(self): method test_get_action_runs (line 1275) | def test_get_action_runs(self): method test_cleanup_action_run (line 1279) | def test_cleanup_action_run(self): method test_update_action_config_no_changes (line 1282) | def test_update_action_config_no_changes(self): method test_update_action_config (line 1285) | def test_update_action_config(self): method test_state_data (line 1316) | def test_state_data(self): method test_cleanup_action_state_data (line 1320) | def test_cleanup_action_state_data(self): method test_cleanup_action_state_data_no_cleanup_action (line 1324) | def test_cleanup_action_state_data_no_cleanup_action(self): method test_get_startable_action_runs (line 1328) | def test_get_startable_action_runs(self): method test_get_startable_action_runs_none (line 1332) | def test_get_startable_action_runs_none(self): method test_has_startable_action_runs (line 1337) | def test_has_startable_action_runs(self): method test_has_startable_action_runs_false (line 1340) | def test_has_startable_action_runs_false(self): method test_is_complete_false (line 1344) | def test_is_complete_false(self): method test_is_complete_true (line 1347) | def test_is_complete_true(self): method test_is_done_false (line 1352) | def test_is_done_false(self): method test_is_done_false_because_of_running (line 1355) | def test_is_done_false_because_of_running(self): method test_is_done_true_because_blocked (line 1360) | def test_is_done_true_because_blocked(self): method test_is_done_true (line 1373) | def test_is_done_true(self): method test_is_failed_false_not_done (line 1378) | def test_is_failed_false_not_done(self): method test_is_failed_false_no_failed (line 1382) | def test_is_failed_false_no_failed(self): method test_is_failed_true (line 1387) | def test_is_failed_true(self): method test__getattr__ (line 1392) | def test__getattr__(self): method test__str__ (line 1398) | def test__str__(self): method test_end_time (line 1409) | def test_end_time(self): method test_end_time_not_done (line 1417) | def test_end_time_not_done(self): method test_end_time_not_started (line 1424) | def test_end_time_not_started(self): class TestActionRunCollectionIsRunBlocked (line 1428) | class TestActionRunCollectionIsRunBlocked: method _build_run (line 1429) | def _build_run(self, name): method setup_collection (line 1440) | def setup_collection(self, output_path): method test_is_run_blocked_no_required_actions (line 1464) | def test_is_run_blocked_no_required_actions(self): method test_is_run_blocked_completed_run (line 1467) | def test_is_run_blocked_completed_run(self): method test_is_run_blocked_required_actions_completed (line 1474) | def test_is_run_blocked_required_actions_completed(self): method test_is_run_blocked_required_actions_blocked (line 1478) | def test_is_run_blocked_required_actions_blocked(self): method test_is_run_blocked_required_actions_scheduled (line 1488) | def test_is_run_blocked_required_actions_scheduled(self): method test_is_run_blocked_required_actions_starting (line 1492) | def test_is_run_blocked_required_actions_starting(self): method test_is_run_blocked_required_actions_waiting (line 1496) | def test_is_run_blocked_required_actions_waiting(self): method test_is_run_blocked_required_actions_failed (line 1500) | def test_is_run_blocked_required_actions_failed(self): method test_is_run_blocked_required_actions_missing (line 1504) | def test_is_run_blocked_required_actions_missing(self): method test_is_run_blocked_in_job_only (line 1508) | def test_is_run_blocked_in_job_only(self): class TestMesosActionRun (line 1515) | class TestMesosActionRun: method setup_action_run (line 1517) | def setup_action_run(self): method test_submit_command (line 1554) | def test_submit_command(self, mock_cluster_repo, mock_filehandler): method test_submit_command_task_none (line 1596) | def test_submit_command_task_none( method test_recover (line 1613) | def test_recover(self, mock_cluster_repo, mock_filehandler): method test_recover_done_no_change (line 1656) | def test_recover_done_no_change(self, mock_cluster_repo, mock_filehand... method test_recover_no_mesos_task_id (line 1667) | def test_recover_no_mesos_task_id( method test_recover_task_none (line 1683) | def test_recover_task_none(self, mock_cluster_repo, mock_filehandler): method test_kill_task (line 1698) | def test_kill_task(self, mock_cluster_repo): method test_kill_task_no_task_id (line 1710) | def test_kill_task_no_task_id(self, mock_cluster_repo): method test_stop_task (line 1717) | def test_stop_task(self, mock_cluster_repo): method test_stop_task_no_task_id (line 1729) | def test_stop_task_no_task_id(self, mock_cluster_repo): method test_handler_exiting_unknown (line 1735) | def test_handler_exiting_unknown(self): method test_handler_exiting_unknown_retry (line 1750) | def test_handler_exiting_unknown_retry(self): method test_handler_exiting_failstart_failed (line 1768) | def test_handler_exiting_failstart_failed(self): class TestKubernetesActionRun (line 1781) | class TestKubernetesActionRun: method mock_k8s_action_run (line 1783) | def mock_k8s_action_run(self): method test_k8s_handler_exiting_unknown (line 1814) | def test_k8s_handler_exiting_unknown(self, mock_k8s_action_run): method test_handler_exiting_unknown_retry (line 1829) | def test_handler_exiting_unknown_retry(self, mock_k8s_action_run): method test_handler_exiting_failstart_failed (line 1847) | def test_handler_exiting_failstart_failed(self, mock_k8s_action_run): method test_recover (line 1861) | def test_recover(self, mock_cluster_repo, mock_filehandler, mock_k8s_a... method test_recover_done_no_change (line 1922) | def test_recover_done_no_change( method test_recover_no_k8s_task_id (line 1938) | def test_recover_no_k8s_task_id( method test_recover_task_none (line 1955) | def test_recover_task_none(self, mock_cluster_repo, mock_filehandler, ... method test_kill_task_k8s (line 1970) | def test_kill_task_k8s(self, mock_cluster_repo, mock_k8s_action_run): method test_kill_task_no_task_id_k8s (line 1980) | def test_kill_task_no_task_id_k8s(self, mock_cluster_repo, mock_k8s_ac... method test_stop_task_k8s (line 1987) | def test_stop_task_k8s(self, mock_cluster_repo, mock_k8s_action_run): method test_stop_task_no_task_id_k8s (line 1997) | def test_stop_task_no_task_id_k8s(self, mock_cluster_repo, mock_k8s_ac... method test_non_retryable_exit (line 2004) | def test_non_retryable_exit(self, mock_cluster_repo, mock_k8s_action_r... method test_retryable_exit (line 2027) | def test_retryable_exit(self, mock_cluster_repo, mock_k8s_action_run): method test_submit_command_first_attempt_labels (line 2043) | def test_submit_command_first_attempt_labels(self, mock_cluster_repo, ... method test_submit_command_retry_attempt_labels (line 2053) | def test_submit_command_retry_attempt_labels(self, mock_cluster_repo, ... method test_recover_retry_attempt_labels (line 2073) | def test_recover_retry_attempt_labels(self, mock_cluster_repo, mock_fi... FILE: tests/core/job_collection_test.py class TestJobCollection (line 12) | class TestJobCollection(TestCase): method setup_collection (line 14) | def setup_collection(self): method test_update_from_config (line 17) | def test_update_from_config(self): method test_update_from_config_reconfigure_one_namespace (line 34) | def test_update_from_config_reconfigure_one_namespace(self): method test_move_running_job (line 54) | def test_move_running_job(self): method test_move (line 63) | def test_move(self): method test_update (line 74) | def test_update(self): FILE: tests/core/job_scheduler_test.py class TestJobSchedulerGetRunsToSchedule (line 16) | class TestJobSchedulerGetRunsToSchedule(TestCase): method setup_job (line 18) | def setup_job(self): method test_get_runs_to_schedule_with_pending (line 32) | def test_get_runs_to_schedule_with_pending(self): method test_get_runs_to_schedule_guess (line 38) | def test_get_runs_to_schedule_guess(self): method test_get_runs_to_schedule_given (line 46) | def test_get_runs_to_schedule_given(self): class JobSchedulerManualStartTestCase (line 56) | class JobSchedulerManualStartTestCase(testingutils.MockTimeTestCase): method setup_job (line 61) | def setup_job(self): method test_manual_start (line 75) | def test_manual_start(self): method test_manual_start_default_with_timezone (line 82) | def test_manual_start_default_with_timezone(self): method test_manual_start_with_run_time (line 97) | def test_manual_start_with_run_time(self): class TestJobSchedulerSchedule (line 106) | class TestJobSchedulerSchedule(TestCase): method setup_job (line 108) | def setup_job(self): method test_enable (line 133) | def test_enable(self, reactor): method test_enable_noop (line 140) | def test_enable_noop(self, reactor): method test_schedule (line 147) | def test_schedule(self, reactor): method test_schedule_disabled_job (line 163) | def test_schedule_disabled_job(self, reactor): method test_handle_job_events_no_schedule_on_complete (line 169) | def test_handle_job_events_no_schedule_on_complete(self, reactor): method test_handle_job_events_schedule_on_complete (line 182) | def test_handle_job_events_schedule_on_complete(self): method test_handler_unknown_event (line 188) | def test_handler_unknown_event(self): method test_handler_no_queued (line 193) | def test_handler_no_queued(self): method test_run_queue_schedule (line 205) | def test_run_queue_schedule(self, reactor): class TestJobSchedulerOther (line 224) | class TestJobSchedulerOther(TestCase): method _make_job_scheduler (line 227) | def _make_job_scheduler(self, job_name, enabled=True): method setup_job (line 241) | def setup_job(self): method test_disable (line 247) | def test_disable(self): method test_update_from_job_scheduler_disable (line 255) | def test_update_from_job_scheduler_disable(self): method test_update_from_job_scheduler_enable (line 267) | def test_update_from_job_scheduler_enable(self): method test_update_from_job_scheduler_no_config_change (line 281) | def test_update_from_job_scheduler_no_config_change(self): class TestJobSchedulerFactory (line 299) | class TestJobSchedulerFactory(TestCase): method setup_factory (line 301) | def setup_factory(self): method test_build (line 316) | def test_build(self): FILE: tests/core/job_test.py function mock_node_repo (line 22) | def mock_node_repo(): function mock_job (line 31) | def mock_job(mock_node_repo): class TestJob (line 47) | class TestJob: method setup_job (line 49) | def setup_job(self, mock_job): method test__init__ (line 55) | def test__init__(self): method test_from_config (line 58) | def test_from_config(self, mock_node_repo): method test_update_from_job (line 103) | def test_update_from_job(self): method test_status_disabled (line 117) | def test_status_disabled(self): method test_status_enabled (line 121) | def test_status_enabled(self): method test_status_running (line 126) | def test_status_running(self): method test_status_unknown (line 130) | def test_status_unknown(self): method test_state_data (line 135) | def test_state_data(self): method test_get_job_runs_from_state (line 140) | def test_get_job_runs_from_state(self): method test_build_new_runs (line 157) | def test_build_new_runs(self): method test_build_new_runs_all_nodes (line 174) | def test_build_new_runs_all_nodes(self): method test_build_new_runs_manual (line 198) | def test_build_new_runs_manual(self): method test_handler (line 215) | def test_handler(self): method test__eq__ (line 222) | def test__eq__(self): method test__ne__ (line 228) | def test__ne__(self): method test__eq__true (line 234) | def test__eq__true(self): method test__eq__false (line 240) | def test__eq__false(self): function test_job_watch_notifies_about_runs (line 246) | def test_job_watch_notifies_about_runs(mock_job): class TestJobScheduler (line 270) | class TestJobScheduler: method setup_job (line 272) | def setup_job(self): method test_restore_state_sets_job_runs (line 281) | def test_restore_state_sets_job_runs(self): method test_create_and_schedule_runs_specific_time (line 310) | def test_create_and_schedule_runs_specific_time(self): method test_create_and_schedule_runs_guess (line 316) | def test_create_and_schedule_runs_guess(self): method test_disable (line 322) | def test_disable(self): method test_schedule_reconfigured (line 327) | def test_schedule_reconfigured(self): method test_schedule (line 342) | def test_schedule(self): method test_run_job (line 356) | def test_run_job(self): method test_run_job_job_disabled (line 366) | def test_run_job_job_disabled(self): method test_run_job_cancelled (line 375) | def test_run_job_cancelled(self): method test_run_job_already_running_queuing (line 382) | def test_run_job_already_running_queuing(self): method test_run_job_already_running_cancel (line 392) | def test_run_job_already_running_cancel(self): method test_run_job_already_running_allow_overlap (line 403) | def test_run_job_already_running_allow_overlap(self): method test_run_job_has_starting_queueing (line 411) | def test_run_job_has_starting_queueing(self): method test_run_job_schedule_on_complete (line 421) | def test_run_job_schedule_on_complete(self): FILE: tests/core/jobgraph_test.py function _setup_job_graph_config_container (line 17) | def _setup_job_graph_config_container(): class TestJobGraph (line 74) | class TestJobGraph: method setup_method (line 75) | def setup_method(self): method test_job_graph_missing_dependency (line 78) | def test_job_graph_missing_dependency(self): method test_job_graph (line 88) | def test_job_graph(self): method test_get_action_graph_for_job (line 118) | def test_get_action_graph_for_job(self): FILE: tests/core/jobrun_test.py function build_mock_job (line 27) | def build_mock_job(): class TestJobRun (line 45) | class TestJobRun: method setup_jobrun (line 51) | def setup_jobrun(self): method test__init__ (line 73) | def test__init__(self): method test_for_job (line 78) | def test_for_job(self): method test_for_job_manual (line 95) | def test_for_job_manual(self): method test_state_data (line 108) | def test_state_data(self): method test_set_action_runs (line 114) | def test_set_action_runs(self): method test_set_action_runs_none (line 130) | def test_set_action_runs_none(self): method test_set_action_runs_duplicate (line 137) | def test_set_action_runs_duplicate(self): method test_seconds_until_run_time (line 146) | def test_seconds_until_run_time(self, mock_current_time): method test_seconds_until_run_time_with_tz (line 152) | def test_seconds_until_run_time_with_tz(self, mock_current_time): method test_start (line 158) | def test_start(self): method test_start_failed (line 163) | def test_start_failed(self): method test_do_start (line 167) | def test_do_start(self): method test_do_start_all_failed (line 176) | def test_do_start_all_failed(self): method test_do_start_some_failed (line 180) | def test_do_start_some_failed(self): method test_do_start_no_runs (line 185) | def test_do_start_no_runs(self): method test_start_action_runs (line 188) | def test_start_action_runs(self): method test_start_action_runs_failed (line 195) | def test_start_action_runs_failed(self): method jobrun_json (line 204) | def jobrun_json(self): method test_from_json (line 260) | def test_from_json(self, jobrun_json): method test_start_action_runs_all_failed (line 312) | def test_start_action_runs_all_failed(self): method test_handler_trigger_ready_still_scheduled (line 321) | def test_handler_trigger_ready_still_scheduled(self): method test_handler_trigger_ready_started (line 327) | def test_handler_trigger_ready_started(self): method test_handler_not_end_state_event (line 334) | def test_handler_not_end_state_event(self): method test_handler_with_startable (line 342) | def test_handler_with_startable(self): method test_handler_runs_not_done (line 357) | def test_handler_runs_not_done(self): method test_handler_finished_without_cleanup (line 364) | def test_handler_finished_without_cleanup(self): method test_handler_finished_with_cleanup_done (line 372) | def test_handler_finished_with_cleanup_done(self): method test_handler_finished_with_cleanup (line 380) | def test_handler_finished_with_cleanup(self): method test_handler_action_run_cancelled (line 389) | def test_handler_action_run_cancelled(self): method test_handler_action_run_skipped (line 395) | def test_handler_action_run_skipped(self): method test_state (line 403) | def test_state(self): method test_state_with_no_action_runs (line 406) | def test_state_with_no_action_runs(self): method test_finalize (line 410) | def test_finalize(self): method test_finalize_failure (line 415) | def test_finalize_failure(self): method test_cleanup (line 419) | def test_cleanup(self): method test__getattr__ (line 431) | def test__getattr__(self): method test__getattr__miss (line 436) | def test__getattr__miss(self): class TestJobRunFromState (line 440) | class TestJobRunFromState(TestCase): method setup_jobrun (line 442) | def setup_jobrun(self): method test_from_state (line 473) | def test_from_state(self): method test_from_state_node_no_longer_exists (line 489) | def test_from_state_node_no_longer_exists(self): class MockJobRun (line 503) | class MockJobRun(MagicMock): method is_scheduled (line 510) | def is_scheduled(self): method is_queued (line 514) | def is_queued(self): method is_running (line 518) | def is_running(self): method is_starting (line 522) | def is_starting(self): method is_waiting (line 526) | def is_waiting(self): method __repr__ (line 529) | def __repr__(self): class TestJobRunCollection (line 533) | class TestJobRunCollection(TestCase): method _mock_run (line 534) | def _mock_run(self, **kwargs): method setup_runs (line 538) | def setup_runs(self): method test__init__ (line 554) | def test__init__(self): method test_from_config (line 557) | def test_from_config(self): method test_job_runs_from_state (line 562) | def test_job_runs_from_state(self): method test_build_new_run (line 589) | def test_build_new_run(self): method test_build_new_run_manual (line 603) | def test_build_new_run_manual(self): method test_cancel_pending (line 618) | def test_cancel_pending(self): method test_cancel_pending_no_pending (line 628) | def test_cancel_pending_no_pending(self): method test_remove_pending (line 632) | def test_remove_pending(self): method test_get_run_by_state (line 638) | def test_get_run_by_state(self): method test_get_run_by_state_no_match (line 643) | def test_get_run_by_state_no_match(self): method test_get_run_by_num (line 648) | def test_get_run_by_num(self): method test_get_run_by_num_no_match (line 652) | def test_get_run_by_num_no_match(self): method test_get_run_by_index (line 656) | def test_get_run_by_index(self): method test_get_run_by_index_invalid_index (line 666) | def test_get_run_by_index_invalid_index(self): method test_get_newest (line 672) | def test_get_newest(self): method test_get_newest_exclude_manual (line 676) | def test_get_newest_exclude_manual(self): method test_get_newest_no_runs (line 686) | def test_get_newest_no_runs(self): method test_pending (line 690) | def test_pending(self): method test_get_active (line 701) | def test_get_active(self): method test_get_active_with_node (line 711) | def test_get_active_with_node(self): method test_get_active_none (line 722) | def test_get_active_none(self): method test_get_first_queued (line 726) | def test_get_first_queued(self): method test_get_first_queued_no_match (line 737) | def test_get_first_queued_no_match(self): method test_get_next_run_num (line 742) | def test_get_next_run_num(self): method test_get_next_run_num_first (line 745) | def test_get_next_run_num_first(self): method test_remove_old_runs (line 749) | def test_remove_old_runs(self): method test_remove_old_runs_none (line 758) | def test_remove_old_runs_none(self): method test_remove_old_runs_no_runs (line 763) | def test_remove_old_runs_no_runs(self): method test_state_data (line 767) | def test_state_data(self): method test_last_success (line 770) | def test_last_success(self): method test__str__ (line 773) | def test__str__(self): method test_get_action_runs (line 777) | def test_get_action_runs(self): method test_get_run_nums (line 786) | def test_get_run_nums(self): class TestJobRunStateTransitions (line 790) | class TestJobRunStateTransitions: method mock_event_bus (line 794) | def mock_event_bus(self): method job_run (line 803) | def job_run(self, tmpdir, mock_event_bus): method test_success_path (line 830) | def test_success_path(self, job_run): method test_one_action_fails (line 865) | def test_one_action_fails(self, job_run): method test_one_action_unknown (line 891) | def test_one_action_unknown(self, job_run): method test_both_unknown_and_failed (line 915) | def test_both_unknown_and_failed(self, job_run): method test_required_action_fails (line 938) | def test_required_action_fails(self, job_run): method test_required_action_unknown (line 966) | def test_required_action_unknown(self, job_run): method test_with_trigger (line 991) | def test_with_trigger(self, job_run, mock_event_bus): method test_queued (line 1029) | def test_queued(self, job_run): method test_cancel_one (line 1036) | def test_cancel_one(self, job_run): FILE: tests/core/recovery_test.py class TestRecovery (line 17) | class TestRecovery(TestCase): method fake_action_runs (line 19) | def fake_action_runs(self): method test_filter_action_runs_needing_recovery (line 82) | def test_filter_action_runs_needing_recovery(self): method test_launch_recovery_actionruns_for_job_runs (line 90) | def test_launch_recovery_actionruns_for_job_runs(self, mock_filter): method test_launch_recovery_actionruns_empty_job_run (line 138) | def test_launch_recovery_actionruns_empty_job_run(self, mock_filter): FILE: tests/eventbus_test.py class MakeEventBusTestCase (line 13) | class MakeEventBusTestCase(TestCase): method setup (line 15) | def setup(self): method teardown (line 19) | def teardown(self): method test_setup_eventbus_dir (line 24) | def test_setup_eventbus_dir(self, time): class EventBusTestCase (line 41) | class EventBusTestCase(TestCase): method setup (line 43) | def setup(self): method teardown (line 49) | def teardown(self): method test_start (line 54) | def test_start(self, reactor): method test_shutdown (line 61) | def test_shutdown(self): method test_publish (line 68) | def test_publish(self): method test_subscribe (line 73) | def test_subscribe(self): method test_has_event (line 78) | def test_has_event(self): method test_sync_load_log (line 84) | def test_sync_load_log(self, time): method test_sync_save_log_time (line 93) | def test_sync_save_log_time(self, time): method test_sync_loop (line 111) | def test_sync_loop(self, reactor, time): method test_sync_loop_shutdown (line 121) | def test_sync_loop_shutdown(self, reactor): method test_sync_process_save_log (line 129) | def test_sync_process_save_log(self, time): method test_sync_process_flush_queues (line 155) | def test_sync_process_flush_queues(self, time): method test_sync_publish (line 170) | def test_sync_publish(self, reactor): method test_sync_publish_replace (line 180) | def test_sync_publish_replace(self, reactor): method test_sync_publish_duplicate (line 191) | def test_sync_publish_duplicate(self, reactor): method test_sync_subscribe (line 199) | def test_sync_subscribe(self): method test_sync_unsubscribe (line 209) | def test_sync_unsubscribe(self): method test_sync_notify (line 223) | def test_sync_notify(self, reactor): FILE: tests/kubernetes_test.py function mock_kubernetes_task (line 23) | def mock_kubernetes_task(): function mock_kubernetes_cluster (line 38) | def mock_kubernetes_cluster(): function mock_disabled_kubernetes_cluster (line 53) | def mock_disabled_kubernetes_cluster(): function mock_event_factory (line 64) | def mock_event_factory( function test_get_event_logger_add_unique_handlers (line 83) | def test_get_event_logger_add_unique_handlers(mock_kubernetes_task): function test_handle_event_log_event_info_exception (line 95) | def test_handle_event_log_event_info_exception(mock_kubernetes_task): function test_handle_event_exit_early_on_misrouted_event (line 107) | def test_handle_event_exit_early_on_misrouted_event(mock_kubernetes_task): function test_handle_event_running (line 123) | def test_handle_event_running(mock_kubernetes_task): function test_handle_event_exit_on_finished (line 131) | def test_handle_event_exit_on_finished(mock_kubernetes_task): function test_handle_event_exit_on_failed (line 175) | def test_handle_event_exit_on_failed(mock_kubernetes_task): function test_handle_event_spot_interruption_exit (line 187) | def test_handle_event_spot_interruption_exit(mock_kubernetes_task): function test_handle_event_node_scaledown_exit (line 255) | def test_handle_event_node_scaledown_exit(mock_kubernetes_task): function test_handle_event_exit_not_terminated (line 300) | def test_handle_event_exit_not_terminated(mock_kubernetes_task): function test_handle_event_abnormal_exit (line 338) | def test_handle_event_abnormal_exit(mock_kubernetes_task): function test_handle_event_missing_state (line 383) | def test_handle_event_missing_state(mock_kubernetes_task): function test_handle_event_code_from_state (line 416) | def test_handle_event_code_from_state(mock_kubernetes_task): function test_handle_event_lost (line 461) | def test_handle_event_lost(mock_kubernetes_task): function test_create_task_disabled (line 473) | def test_create_task_disabled(): function test_create_task (line 505) | def test_create_task(mock_kubernetes_cluster): function test_create_task_with_task_id (line 536) | def test_create_task_with_task_id(mock_kubernetes_cluster): function test_create_task_with_invalid_task_id (line 569) | def test_create_task_with_invalid_task_id(mock_kubernetes_cluster): function test_create_task_with_config (line 603) | def test_create_task_with_config(mock_kubernetes_cluster): function test_process_event_task (line 678) | def test_process_event_task(mock_kubernetes_cluster): function test_process_event_task_invalid_id (line 689) | def test_process_event_task_invalid_id(mock_kubernetes_cluster): function test_stop_default (line 700) | def test_stop_default(mock_kubernetes_cluster): function test_stop_disabled (line 710) | def test_stop_disabled(): function test_set_enabled_enable_already_on (line 716) | def test_set_enabled_enable_already_on(mock_kubernetes_cluster): function test_set_enabled_enable (line 732) | def test_set_enabled_enable(mock_disabled_kubernetes_cluster): function test_set_enabled_disable (line 748) | def test_set_enabled_disable(mock_kubernetes_cluster): function test_configure_default_volumes (line 760) | def test_configure_default_volumes(): function test_submit_disabled (line 782) | def test_submit_disabled(mock_disabled_kubernetes_cluster, mock_kubernet... function test_submit (line 790) | def test_submit(mock_kubernetes_cluster, mock_kubernetes_task): function test_recover (line 798) | def test_recover(mock_kubernetes_cluster, mock_kubernetes_task): function test_kuberntes_cluster_repository (line 807) | def test_kuberntes_cluster_repository(): FILE: tests/mcp_reconfigure_test.py class TestMCPReconfigure (line 21) | class TestMCPReconfigure(TestCase): method _get_config (line 170) | def _get_config(self, idx, output_dir): method _get_runs_to_schedule (line 175) | def _get_runs_to_schedule(self, sched): method setup_mcp (line 181) | def setup_mcp(self): method teardown_mcp (line 189) | def teardown_mcp(self): method reconfigure (line 193) | def reconfigure(self): method test_job_list (line 199) | def test_job_list(self): method test_job_unchanged (line 209) | def test_job_unchanged(self): method test_job_unchanged_disabled (line 235) | def test_job_unchanged_disabled(self): method test_job_removed (line 247) | def test_job_removed(self): method test_job_changed (line 265) | def test_job_changed(self): method test_job_changed_disabled (line 293) | def test_job_changed_disabled(self): method test_job_new (line 303) | def test_job_new(self): method test_daily_reschedule (line 319) | def test_daily_reschedule(self): method test_action_added (line 339) | def test_action_added(self): FILE: tests/mcp_test.py class TestMasterControlProgram (line 21) | class TestMasterControlProgram: method setup_mcp (line 26) | def setup_mcp(self): method test_reconfigure_default (line 38) | def test_reconfigure_default(self): method test_reconfigure_namespace (line 44) | def test_reconfigure_namespace(self): method test_load_config (line 58) | def test_load_config(self, reconfigure, namespace): method test_apply_config (line 81) | def test_apply_config(self, mock_repo, mock_cluster_repo, mock_k8s_clu... method test_update_state_watcher_config_changed (line 117) | def test_update_state_watcher_config_changed(self): method test_update_state_watcher_config_no_change (line 134) | def test_update_state_watcher_config_no_change(self): class TestMasterControlProgramRestoreState (line 142) | class TestMasterControlProgramRestoreState(TestCase): method setup_mcp (line 144) | def setup_mcp(self): method teardown_mcp (line 155) | def teardown_mcp(self): method test_restore_state (line 159) | def test_restore_state(self): FILE: tests/mesos_test.py class TestMesosClusterRepository (line 14) | class TestMesosClusterRepository(TestCase): method mock_cluster (line 16) | def mock_cluster(self): method test_get_cluster_repeated_mesos_address (line 28) | def test_get_cluster_repeated_mesos_address(self): method test_shutdown (line 34) | def test_shutdown(self): method test_configure (line 41) | def test_configure(self): function mock_task_event (line 86) | def mock_task_event( class TestMesosTask (line 105) | class TestMesosTask(TestCase): method setup (line 107) | def setup(self): method test_aws_credentials_redacted (line 135) | def test_aws_credentials_redacted(self): method test_handle_staging (line 141) | def test_handle_staging(self): method test_handle_starting (line 149) | def test_handle_starting(self): method test_handle_running (line 157) | def test_handle_running(self): method test_handle_running_for_other_task (line 165) | def test_handle_running_for_other_task(self): method test_handle_finished (line 173) | def test_handle_finished(self): method test_handle_failed (line 184) | def test_handle_failed(self): method test_handle_killed (line 196) | def test_handle_killed(self): method test_handle_lost (line 208) | def test_handle_lost(self): method test_handle_error (line 220) | def test_handle_error(self): method test_handle_terminal_event_offer_timeout (line 232) | def test_handle_terminal_event_offer_timeout(self): method test_handle_success_sequence (line 246) | def test_handle_success_sequence(self): method test_log_event_error (line 275) | def test_log_event_error(self): method test_get_event_logger_add_unique_handlers (line 291) | def test_get_event_logger_add_unique_handlers(self): class TestMesosCluster (line 303) | class TestMesosCluster(TestCase): method setup_mocks (line 305) | def setup_mocks(self): method test_init (line 324) | def test_init(self, mock_socket): method test_init_disabled (line 377) | def test_init_disabled(self): method test_set_enabled_off (line 385) | def test_set_enabled_off(self): method test_set_enabled_on (line 395) | def test_set_enabled_on(self): method test_set_enabled_on_already (line 416) | def test_set_enabled_on_already(self): method test_configure_tasks (line 423) | def test_configure_tasks(self): method test_submit (line 450) | def test_submit(self): method test_submit_with_clusterman (line 469) | def test_submit_with_clusterman(self): method test_submit_disabled (line 501) | def test_submit_disabled(self): method test_recover (line 515) | def test_recover(self): method test_recover_disabled (line 528) | def test_recover_disabled(self): method test_create_task_defaults (line 538) | def test_create_task_defaults(self, mock_task): method test_create_task_with_task_id (line 576) | def test_create_task_with_task_id(self, mock_task): method test_create_task_disabled (line 605) | def test_create_task_disabled(self, mock_task): method test_create_task_with_configuration (line 625) | def test_create_task_with_configuration(self, mock_task): method test_process_event_task (line 696) | def test_process_event_task(self): method test_process_event_task_id_invalid (line 706) | def test_process_event_task_id_invalid(self): method test_process_event_control_stop (line 716) | def test_process_event_control_stop(self): method test_stop_default (line 726) | def test_stop_default(self): method test_stop_disabled (line 737) | def test_stop_disabled(self): method test_kill (line 742) | def test_kill(self): FILE: tests/metrics_test.py function all_metrics (line 9) | def all_metrics(): function test_get_metric (line 14) | def test_get_metric(all_metrics): function test_timer (line 40) | def test_timer(mock_get_metric): function test_count (line 56) | def test_count(mock_get_metric): function test_meter (line 72) | def test_meter(mock_get_metric): function test_gauge (line 88) | def test_gauge(mock_get_metric): function test_histogram (line 104) | def test_histogram(mock_get_metric): function test_view_all_metrics_empty (line 119) | def test_view_all_metrics_empty(): function test_view_all_metrics (line 130) | def test_view_all_metrics(): FILE: tests/mocks.py class MockAction (line 9) | class MockAction(MagicMock): method __init__ (line 10) | def __init__(self, *args, **kwargs): class MockActionGraph (line 17) | class MockActionGraph(MagicMock): method __init__ (line 18) | def __init__(self, *args, **kwargs): method __getitem__ (line 24) | def __getitem__(self, item): method get_required_actions (line 29) | def get_required_actions(self, name): class MockActionRun (line 33) | class MockActionRun(MagicMock): method __init__ (line 34) | def __init__(self, *args, **kwargs): class MockActionRunCollection (line 42) | class MockActionRunCollection(MagicMock): method __init__ (line 43) | def __init__(self, *args, **kwargs): method __getitem__ (line 48) | def __getitem__(self, item): class MockJobRun (line 54) | class MockJobRun(MagicMock): method __init__ (line 55) | def __init__(self, *args, **kwargs): class MockNode (line 66) | class MockNode(MagicMock): method __init__ (line 67) | def __init__(self, hostname=None): method run (line 71) | def run(self, runnable): class MockNodePool (line 76) | class MockNodePool: method __init__ (line 79) | def __init__(self, *node_names): method __getitem__ (line 88) | def __getitem__(self, value): method next (line 95) | def next(self): class MockJobRunCollection (line 107) | class MockJobRunCollection(MagicMock): method __iter__ (line 108) | def __iter__(self): FILE: tests/node_test.py function create_mock_node (line 22) | def create_mock_node(name=None): function create_mock_pool (line 29) | def create_mock_pool(): class TestNodePoolRepository (line 33) | class TestNodePoolRepository(TestCase): method setup_store (line 35) | def setup_store(self): method teardown_store (line 41) | def teardown_store(self): method test_single_instance (line 44) | def test_single_instance(self): method test_get_by_name (line 48) | def test_get_by_name(self): method test_get_by_name_miss (line 52) | def test_get_by_name_miss(self): method test_clear (line 55) | def test_clear(self): method test_update_from_config (line 60) | def test_update_from_config(self): method test_nodes_by_name (line 81) | def test_nodes_by_name(self): method test_get_node (line 87) | def test_get_node(self): class TestKnownHost (line 92) | class TestKnownHost(TestCase): method setup_known_hosts (line 94) | def setup_known_hosts(self): method test_get_public_key (line 99) | def test_get_public_key(self): method test_get_public_key_not_found (line 105) | def test_get_public_key_not_found(self): class TestDetermineJitter (line 110) | class TestDetermineJitter(TestCase): method setup_node_settings (line 112) | def setup_node_settings(self): method patch_random (line 120) | def patch_random(self): method test_jitter_under_min_load (line 125) | def test_jitter_under_min_load(self): method test_jitter_with_load_factor (line 129) | def test_jitter_with_load_factor(self): method test_jitter_with_max_delay (line 134) | def test_jitter_with_max_delay(self): function build_node (line 140) | def build_node( class TestNode (line 152) | class TestNode(TestCase): class TestConnection (line 153) | class TestConnection: method openChannel (line 154) | def openChannel(self, chan): method setup_node (line 158) | def setup_node(self): method test_output_logging (line 161) | def test_output_logging(self): method test_from_config (line 176) | def test_from_config(self): method test__eq__true (line 198) | def test__eq__true(self): method test__eq__false_config_changed (line 205) | def test__eq__false_config_changed(self): method test__eq__false_pub_key_changed (line 209) | def test__eq__false_pub_key_changed(self): method test__eq__false_ssh_options_changed (line 213) | def test__eq__false_ssh_options_changed(self): method test_stop_not_tracked (line 218) | def test_stop_not_tracked(self): method test_stop (line 225) | def test_stop(self): class TestNodePool (line 236) | class TestNodePool(TestCase): method setup_nodes (line 238) | def setup_nodes(self): method test_from_config (line 242) | def test_from_config(self): method test__init__ (line 250) | def test__init__(self): method test__eq__ (line 254) | def test__eq__(self): method test_next (line 258) | def test_next(self): method test_next_round_robin (line 263) | def test_next_round_robin(self): FILE: tests/sandbox.py function wait_on_sandbox (line 31) | def wait_on_sandbox(func, delay=0.1, max_wait=5.0): function wait_on_state (line 43) | def wait_on_state(client_func, url, state, field="state"): function wait_on_proc_terminate (line 53) | def wait_on_proc_terminate(pid): function build_waiter_func (line 64) | def build_waiter_func(client_func, url): function handle_output (line 68) | def handle_output(cmd, out_err, returncode): function find_unused_port (line 82) | def find_unused_port(): class TronSandboxException (line 91) | class TronSandboxException(Exception): class SandboxTestCase (line 95) | class SandboxTestCase(TestCase): method make_sandbox (line 102) | def make_sandbox(self): method delete_sandbox (line 108) | def delete_sandbox(self): method start_with_config (line 113) | def start_with_config(self, config): method restart_trond (line 117) | def restart_trond(self): class ClientProxy (line 126) | class ClientProxy: method __init__ (line 131) | def __init__(self, client, log_filename): method log_contents (line 135) | def log_contents(self): method wrap (line 140) | def wrap(self, func, *args, **kwargs): method __getattr__ (line 151) | def __getattr__(self, name): function verify_environment (line 159) | def verify_environment(): class TronSandbox (line 167) | class TronSandbox: method __init__ (line 170) | def __init__(self): method abs_path (line 187) | def abs_path(self, filename): method setup_logging_conf (line 191) | def setup_logging_conf(self): method delete (line 199) | def delete(self): method save_config (line 204) | def save_config(self, config_text): method run_command (line 208) | def run_command(self, command_name, args=None, stdin_lines=None): method tronctl (line 222) | def tronctl(self, *args): method tronview (line 226) | def tronview(self, *args): method trond (line 231) | def trond(self, *args): method tronfig (line 245) | def tronfig( method get_trond_pid (line 254) | def get_trond_pid(self): method shutdown_trond (line 260) | def shutdown_trond(self, sig_num=signal.SIGTERM): FILE: tests/scheduler_test.py class TestSchedulerFromConfig (line 24) | class TestSchedulerFromConfig(TestCase): method test_cron_scheduler (line 25) | def test_cron_scheduler(self): method test_daily_scheduler (line 35) | def test_daily_scheduler(self): class GeneralSchedulerTestCase (line 51) | class GeneralSchedulerTestCase(testingutils.MockTimeTestCase): method expected_time (line 55) | def expected_time(self, date): method build_scheduler (line 59) | def build_scheduler(self): method test_next_run_time (line 66) | def test_next_run_time(self): method test_next_run_time_with_jitter (line 74) | def test_next_run_time_with_jitter(self, mock_jitter): method test__str__ (line 81) | def test__str__(self): method test__str__with_jitter (line 84) | def test__str__with_jitter(self): class GeneralSchedulerTimeTestBase (line 89) | class GeneralSchedulerTimeTestBase(testingutils.MockTimeTestCase): method build_scheduler (line 94) | def build_scheduler(self): class GeneralSchedulerTodayTest (line 98) | class GeneralSchedulerTodayTest(GeneralSchedulerTimeTestBase): method test (line 102) | def test(self): class GeneralSchedulerTomorrowTest (line 117) | class GeneralSchedulerTomorrowTest(GeneralSchedulerTimeTestBase): method test (line 121) | def test(self): class GeneralSchedulerLongJobRunTest (line 137) | class GeneralSchedulerLongJobRunTest(GeneralSchedulerTimeTestBase): method test_long_jobs_dont_wedge_scheduler (line 141) | def test_long_jobs_dont_wedge_scheduler(self): class GeneralSchedulerDSTTest (line 155) | class GeneralSchedulerDSTTest(testingutils.MockTimeTestCase): method hours_until_time (line 160) | def hours_until_time(self, run_time, sch): method hours_diff_at_datetime (line 167) | def hours_diff_at_datetime(self, sch, *args, **kwargs): method _assert_range (line 178) | def _assert_range(self, x, lower, upper): method test_fall_back (line 182) | def test_fall_back(self): method test_correct_time (line 205) | def test_correct_time(self): method test_spring_forward (line 210) | def test_spring_forward(self): method test_handles_tz_specific_jobs_with_tz_specific_start_time (line 233) | def test_handles_tz_specific_jobs_with_tz_specific_start_time(self): method test_handles_unsetting_the_time_zone (line 238) | def test_handles_unsetting_the_time_zone(self): method test_handles_changing_the_time_zone (line 243) | def test_handles_changing_the_time_zone(self): function parse_groc (line 251) | def parse_groc(config): function scheduler_from_config (line 256) | def scheduler_from_config(config): class ComplexParserTest (line 260) | class ComplexParserTest(testingutils.MockTimeTestCase): method test_parse_all (line 264) | def test_parse_all(self): method test_parse_no_weekday (line 277) | def test_parse_no_weekday(self): method test_parse_no_month (line 287) | def test_parse_no_month(self): method test_parse_monthly (line 295) | def test_parse_monthly(self): method test_wildcards (line 304) | def test_wildcards(self): method test_daily (line 312) | def test_daily(self): method test_daily_with_time (line 321) | def test_daily_with_time(self): method test_weekly (line 332) | def test_weekly(self): method test_weekly_in_month (line 346) | def test_weekly_in_month(self): method test_monthly (line 364) | def test_monthly(self): FILE: tests/serialize/filehandler_test.py class TestFileHandleWrapper (line 23) | class TestFileHandleWrapper(TestCase): method setup_fh_wrapper (line 25) | def setup_fh_wrapper(self): method teardown_fh_wrapper (line 31) | def teardown_fh_wrapper(self): method test_init (line 35) | def test_init(self): method test_close (line 38) | def test_close(self): method test_close_with_write (line 44) | def test_close_with_write(self): method test_write (line 53) | def test_write(self): method test_close_many (line 72) | def test_close_many(self): method test_context_manager (line 77) | def test_context_manager(self): class TestFileHandleManager (line 85) | class TestFileHandleManager(TestCase): method setup_fh_manager (line 87) | def setup_fh_manager(self): method teardown_fh_manager (line 95) | def teardown_fh_manager(self): method test_get_instance (line 98) | def test_get_instance(self): method test_set_max_idle_time (line 103) | def test_set_max_idle_time(self): method test_open (line 108) | def test_open(self): method test_cleanup_none (line 122) | def test_cleanup_none(self): method test_cleanup_single (line 128) | def test_cleanup_single(self): method test_cleanup_many (line 139) | def test_cleanup_many(self): method test_cleanup_opened (line 162) | def test_cleanup_opened(self): method test_cleanup_natural (line 175) | def test_cleanup_natural(self): method test_remove (line 192) | def test_remove(self): method test_update (line 203) | def test_update(self): class TestOutputStreamSerializer (line 218) | class TestOutputStreamSerializer(TestCase): method setup_serializer (line 220) | def setup_serializer(self): method teardown_test_dir (line 228) | def teardown_test_dir(self): method _write_contents (line 231) | def _write_contents(self): method test_open (line 235) | def test_open(self): method test_init_with_output_path (line 243) | def test_init_with_output_path(self): method test_tail (line 248) | def test_tail(self): method test_tail_num_lines (line 252) | def test_tail_num_lines(self): method test_tail_file_does_not_exist (line 256) | def test_tail_file_does_not_exist(self): class TestOutputPath (line 261) | class TestOutputPath(TestCase): method setup_path (line 263) | def setup_path(self): method test__init__ (line 266) | def test__init__(self): method test__iter__ (line 274) | def test__iter__(self): method test__str__ (line 277) | def test__str__(self): method test_append (line 281) | def test_append(self): method test_clone (line 285) | def test_clone(self): method test_clone_with_parts (line 295) | def test_clone_with_parts(self): method test_delete (line 299) | def test_delete(self): method test__eq__ (line 305) | def test__eq__(self): method test__ne__ (line 309) | def test__ne__(self): FILE: tests/serialize/runstate/dynamodb_state_store_test.py function mock_transact_write_items (line 15) | def mock_transact_write_items(self): function store (line 62) | def store(): function small_job (line 104) | def small_job(): function small_object (line 112) | def small_object(): function large_object (line 126) | def large_object(): class TestDynamoDBStateStore (line 147) | class TestDynamoDBStateStore: method test_save (line 148) | def test_save(self, store, small_job, small_object): method test_save_multi_partition_object (line 186) | def test_save_multi_partition_object(self, store, large_object): method test_restore (line 206) | def test_restore(self, store, small_object): method test_restore_multi_partition_object (line 221) | def test_restore_multi_partition_object(self, store, large_object): method test_delete_item (line 242) | def test_delete_item(self, store, small_object): method test_delete_multi_partition_item (line 257) | def test_delete_multi_partition_item(self, store, large_object): method test_delete_if_val_is_none (line 277) | def test_delete_if_val_is_none(self, store, small_object): method test_retry_saving (line 323) | def test_retry_saving( method test_calculate_backoff_delay (line 360) | def test_calculate_backoff_delay(self, store, attempt, expected_delay): method test_retry_reading (line 364) | def test_retry_reading(self, store): method test_restore_exception_propagation (line 387) | def test_restore_exception_propagation(self, store): method test_serialization_failure_preserves_existing_row (line 401) | def test_serialization_failure_preserves_existing_row(self, store, sma... method test_serialization_retry_succeeds (line 429) | def test_serialization_retry_succeeds(self, store, small_object): method test_delete_sentinel_proceeds_with_deletion (line 452) | def test_delete_sentinel_proceeds_with_deletion(self, store, small_obj... FILE: tests/serialize/runstate/shelvestore_test.py class TestShelveStateStore (line 15) | class TestShelveStateStore(TestCase): method setup_store (line 17) | def setup_store(self): method teardown_store (line 23) | def teardown_store(self): method test__init__ (line 26) | def test__init__(self): method test_save (line 29) | def test_save(self): method test_delete (line 52) | def test_delete(self): method test_restore (line 81) | def test_restore(self): FILE: tests/serialize/runstate/statemanager_test.py class TestPersistenceManagerFactory (line 25) | class TestPersistenceManagerFactory(TestCase): method test_from_config_shelve (line 26) | def test_from_config_shelve(self): class TestStateSaveBuffer (line 43) | class TestStateSaveBuffer(TestCase): method setup_buffer (line 45) | def setup_buffer(self): method test_save (line 49) | def test_save(self): method test__iter__ (line 58) | def test__iter__(self): class TestPersistentStateManager (line 66) | class TestPersistentStateManager(TestCase): method setup_manager (line 68) | def setup_manager(self): method test__init__ (line 74) | def test__init__(self): method test_keys_for_items (line 77) | def test_keys_for_items(self): method test_restore (line 84) | def test_restore(self): method test_restore_runs_for_job (line 111) | def test_restore_runs_for_job(self): method test_restore_runs_for_job_one_missing (line 126) | def test_restore_runs_for_job_one_missing(self): method test_restore_dicts (line 141) | def test_restore_dicts(self): method test_save (line 164) | def test_save(self): method test_save_failed (line 170) | def test_save_failed(self): method test_save_while_disabled (line 180) | def test_save_while_disabled(self): method test_delete (line 185) | def test_delete(self): method test_cleanup (line 191) | def test_cleanup(self): method test_disabled (line 195) | def test_disabled(self): method test_disabled_with_exception (line 200) | def test_disabled_with_exception(self): method test_disabled_nested (line 208) | def test_disabled_nested(self): class TestStateChangeWatcher (line 215) | class TestStateChangeWatcher(TestCase): method setup_watcher (line 217) | def setup_watcher(self): method test_update_from_config_no_change (line 222) | def test_update_from_config_no_change(self): method test_update_from_config_changed (line 233) | def test_update_from_config_changed(self, mock_factory): method test_save_job (line 245) | def test_save_job(self): method test_shutdown (line 254) | def test_shutdown(self): method test_disabled (line 259) | def test_disabled(self): method test_restore (line 263) | def test_restore(self): method test_handler_mesos_change (line 268) | def test_handler_mesos_change(self): method test_handler_job_state_change (line 279) | def test_handler_job_state_change(self): method test_handler_job_new_run (line 288) | def test_handler_job_new_run(self): method test_handler_job_run_state_change (line 312) | def test_handler_job_run_state_change(self): method test_handler_job_run_removed (line 324) | def test_handler_job_run_removed(self): FILE: tests/serialize/runstate/yamlstore_test.py class TestYamlStateStore (line 13) | class TestYamlStateStore(TestCase): method setup_store (line 15) | def setup_store(self): method teardown_store (line 31) | def teardown_store(self): method test_restore (line 37) | def test_restore(self): method test_restore_missing_type_key (line 48) | def test_restore_missing_type_key(self): method test_restore_file_missing (line 57) | def test_restore_file_missing(self): method test_save (line 61) | def test_save(self): method test_delete (line 82) | def test_delete(self): FILE: tests/ssh_test.py class TestClientTransport (line 13) | class TestClientTransport(TestCase): method setup_transport (line 15) | def setup_transport(self): method test_verifyHostKey_missing_pub_key (line 25) | def test_verifyHostKey_missing_pub_key(self): method test_verifyHostKey_matching_pub_key (line 31) | def test_verifyHostKey_matching_pub_key(self, mock_keys): method test_verifyHostKey_mismatch_pub_key (line 39) | def test_verifyHostKey_mismatch_pub_key(self, _): method test_connnectionSecure (line 44) | def test_connnectionSecure(self): class TestSSHAuthOptions (line 54) | class TestSSHAuthOptions(TestCase): method test_from_config_none (line 55) | def test_from_config_none(self): method test_from_config_both (line 61) | def test_from_config_both(self): method test__eq__true (line 68) | def test__eq__true(self): method test__eq__false (line 75) | def test__eq__false(self): FILE: tests/testingutils.py class MockReactorTestCase (line 18) | class MockReactorTestCase(TestCase): method class_setup_patched_reactor (line 25) | def class_setup_patched_reactor(self): method teardown_patched_reactor (line 31) | def teardown_patched_reactor(self): method setup_mock_reactor (line 35) | def setup_mock_reactor(self): class MockTimeTestCase (line 41) | class MockTimeTestCase(TestCase): method setup_current_time (line 46) | def setup_current_time(self): method teardown_current_time (line 52) | def teardown_current_time(self): function retry (line 59) | def retry(max_tries=3, delay=0.1, exceptions=(KeyError, IndexError)): function autospec_method (line 79) | def autospec_method(method, *args, **kwargs): FILE: tests/tools/sync_tron_state_from_k8s_test.py function create_mock_pod (line 13) | def create_mock_pod(name: str, phase: str, labels: dict[str, str], creat... class TestSyncTronStateFromK8s (line 19) | class TestSyncTronStateFromK8s: method setup_test_data (line 21) | def setup_test_data(self): method test_get_matching_pod (line 118) | def test_get_matching_pod(self, job_name, run_num, expected_pod_name): method test_get_tron_state_from_api (line 127) | def test_get_tron_state_from_api(self, mock_client, mock_get_client_co... method test_update_tron (line 142) | def test_update_tron(self, mock_subprocess_run): FILE: tests/trond_test.py class TrondEndToEndTestCase (line 63) | class TrondEndToEndTestCase(sandbox.SandboxTestCase): method test_end_to_end_basic (line 64) | def test_end_to_end_basic(self): method test_node_reconfig (line 124) | def test_node_reconfig(self): class TronCommandsTestCase (line 175) | class TronCommandsTestCase(sandbox.SandboxTestCase): method test_tronview (line 176) | def test_tronview(self): method test_tronctl_with_job (line 189) | def test_tronctl_with_job(self): method test_tronfig (line 218) | def test_tronfig(self): method test_tronfig_failure (line 223) | def test_tronfig_failure(self): class JobEndToEndTestCase (line 235) | class JobEndToEndTestCase(sandbox.SandboxTestCase): method test_cleanup_on_failure (line 236) | def test_cleanup_on_failure(self): method test_skip_failed_actions (line 272) | def test_skip_failed_actions(self): method test_failure_on_multi_step_job_doesnt_wedge_tron (line 312) | def test_failure_on_multi_step_job_doesnt_wedge_tron(self): method test_cancel_schedules_a_new_run (line 340) | def test_cancel_schedules_a_new_run(self): method test_job_queueing_false_with_overlap (line 370) | def test_job_queueing_false_with_overlap(self): method test_trond_restart_job_with_run_history (line 409) | def test_trond_restart_job_with_run_history(self): method test_trond_restart_job_running_with_dependencies (line 444) | def test_trond_restart_job_running_with_dependencies(self): FILE: tests/trondaemon_test.py class TronDaemonTestCase (line 12) | class TronDaemonTestCase(TestCase): method setup (line 16) | def setup(self): method teardown (line 24) | def teardown(self): method test_init (line 29) | def test_init(self): method test_run_uses_context (line 40) | def test_run_uses_context(self): method test_run_manhole_new_manhole (line 56) | def test_run_manhole_new_manhole(self): FILE: tests/utils/collections_test.py class TestMappingCollections (line 14) | class TestMappingCollections(TestCase): method setup_collection (line 16) | def setup_collection(self): method test_filter_by_name (line 20) | def test_filter_by_name(self): method test_remove_missing (line 27) | def test_remove_missing(self): method test_remove (line 30) | def test_remove(self): method test_contains_item_false (line 37) | def test_contains_item_false(self): method test_contains_item_not_equal (line 42) | def test_contains_item_not_equal(self): method test_contains_item_true (line 49) | def test_contains_item_true(self): method test_add_contains (line 54) | def test_add_contains(self): method test_add_new (line 60) | def test_add_new(self): method test_replace (line 66) | def test_replace(self): FILE: tests/utils/crontab_test.py class TestConvertPredefined (line 11) | class TestConvertPredefined(TestCase): method test_convert_predefined_valid (line 12) | def test_convert_predefined_valid(self): method test_convert_predefined_invalid (line 16) | def test_convert_predefined_invalid(self): method test_convert_predefined_none (line 19) | def test_convert_predefined_none(self): class TestParseCrontab (line 24) | class TestParseCrontab(TestCase): method test_parse_asterisk (line 25) | def test_parse_asterisk(self): method test_parse (line 37) | def test_parse(self, mock_dow, mock_month, mock_monthday, mock_hour, m... method test_full_crontab_line (line 46) | def test_full_crontab_line(self): method test_full_crontab_line_with_last (line 58) | def test_full_crontab_line_with_last(self): class TestMinuteFieldParser (line 71) | class TestMinuteFieldParser(TestCase): method setup_parser (line 73) | def setup_parser(self): method test_validate_bounds (line 76) | def test_validate_bounds(self): method test_get_values_asterisk (line 81) | def test_get_values_asterisk(self): method test_get_values_min_only (line 84) | def test_get_values_min_only(self): method test_get_values_with_step (line 88) | def test_get_values_with_step(self): method test_get_values_with_step_and_range (line 91) | def test_get_values_with_step_and_range(self): method test_get_values_with_step_and_overflow_range (line 94) | def test_get_values_with_step_and_overflow_range(self): method test_parse_with_groups (line 97) | def test_parse_with_groups(self): method test_parse_with_groups_and_ranges (line 100) | def test_parse_with_groups_and_ranges(self): class TestMonthFieldParser (line 105) | class TestMonthFieldParser(TestCase): method setup_parser (line 107) | def setup_parser(self): method test_parse (line 110) | def test_parse(self): class TestWeekdayFieldParser (line 115) | class TestWeekdayFieldParser(TestCase): method setup_parser (line 117) | def setup_parser(self): method test_parser (line 120) | def test_parser(self): class TestMonthdayFieldParser (line 125) | class TestMonthdayFieldParser(TestCase): method setup_parser (line 127) | def setup_parser(self): method test_parse_last (line 130) | def test_parse_last(self): class TestComplexExpressions (line 135) | class TestComplexExpressions(TestCase): method setup_parser (line 137) | def setup_parser(self): method test_complex_expression (line 140) | def test_complex_expression(self): class TestInvalidInputs (line 145) | class TestInvalidInputs(TestCase): method setup_parser (line 147) | def setup_parser(self): method test_invalid_expression (line 150) | def test_invalid_expression(self): class TestBoundaryValues (line 155) | class TestBoundaryValues(TestCase): method setup_parser (line 157) | def setup_parser(self): method test_boundary_values (line 160) | def test_boundary_values(self): FILE: tests/utils/logreader_test.py function static_conf_patch (line 18) | def static_conf_patch(args): function test_read_log_stream_for_action_run_not_available (line 22) | def test_read_log_stream_for_action_run_not_available(): function test_read_log_stream_for_action_run (line 34) | def test_read_log_stream_for_action_run(): function test_read_log_stream_for_action_run_tz (line 101) | def test_read_log_stream_for_action_run_tz(local_datetime, expected_date... function test_read_log_stream_for_action_run_for_long_output (line 127) | def test_read_log_stream_for_action_run_for_long_output(): function test_decompose_action_id_file_not_found (line 163) | def test_decompose_action_id_file_not_found(): function test_decompose_action_id_yaml_error (line 174) | def test_decompose_action_id_yaml_error(): function test_decompose_action_id_generic_error (line 187) | def test_decompose_action_id_generic_error(): function test_decompose_action_id_service_not_found (line 200) | def test_decompose_action_id_service_not_found(): FILE: tests/utils/observer_test.py class TestObservable (line 12) | class TestObservable(TestCase): method setup_observer (line 14) | def setup_observer(self): method test_attach (line 17) | def test_attach(self): method test_listen_seq (line 25) | def test_listen_seq(self): method test_notify (line 34) | def test_notify(self): class TestObserverClear (line 43) | class TestObserverClear(TestCase): method setup_observer (line 45) | def setup_observer(self): method test_clear_listeners_all (line 56) | def test_clear_listeners_all(self): method test_clear_listeners_some (line 60) | def test_clear_listeners_some(self): method test_remove_observer_none (line 65) | def test_remove_observer_none(self): method test_remove_observer (line 75) | def test_remove_observer(self): class MockObserver (line 88) | class MockObserver(Observer): method __init__ (line 89) | def __init__(self, obs, event): method handler (line 96) | def handler(self, obs, event, event_data): class TestObserver (line 103) | class TestObserver(TestCase): method setup_observer (line 105) | def setup_observer(self): method test_watch (line 108) | def test_watch(self): FILE: tests/utils/proxy_test.py class DummyTarget (line 11) | class DummyTarget: method __init__ (line 12) | def __init__(self, v): method foo (line 15) | def foo(self): method not_foo (line 19) | def not_foo(self): method equals (line 22) | def equals(self, b, sometimes=False): class DummyObject (line 28) | class DummyObject: method __init__ (line 29) | def __init__(self, proxy): method __getattr__ (line 32) | def __getattr__(self, item): class TestCollectionProxy (line 36) | class TestCollectionProxy(TestCase): method setup_proxy (line 38) | def setup_proxy(self): method test_add (line 50) | def test_add(self): method test_perform (line 54) | def test_perform(self): method test_perform_not_defined (line 58) | def test_perform_not_defined(self): method test_perform_with_params (line 61) | def test_perform_with_params(self): class TestAttributeProxy (line 70) | class TestAttributeProxy(TestCase): method setup_proxy (line 72) | def setup_proxy(self): method test_add (line 77) | def test_add(self): method test_perform (line 81) | def test_perform(self): method test_perform_not_defined (line 85) | def test_perform_not_defined(self): FILE: tests/utils/state_test.py class TestStateMachineSimple (line 7) | class TestStateMachineSimple(TestCase): method build_machine (line 9) | def build_machine(self): method test_transition_many (line 15) | def test_transition_many(self): method test_check (line 28) | def test_check(self): class TestStateMachineMultiOption (line 34) | class TestStateMachineMultiOption(TestCase): method build_machine (line 36) | def build_machine(self): method test_transition_many (line 47) | def test_transition_many(self): method test_transition_set (line 63) | def test_transition_set(self): FILE: tests/utils/timeutils_test.py class TestTimeDelta (line 15) | class TestTimeDelta(TestCase): method make_dates (line 17) | def make_dates(self): method check_delta (line 25) | def check_delta(self, start, target, years=0, months=0, days=0): method test_days (line 37) | def test_days(self): method test_months (line 69) | def test_months(self): method test_years (line 101) | def test_years(self): method test_start_date_with_timezone (line 133) | def test_start_date_with_timezone(self): class TestDuration (line 148) | class TestDuration(TestCase): method setup_times (line 150) | def setup_times(self): method test_duration (line 154) | def test_duration(self): method test_duration_no_end (line 160) | def test_duration_no_end(self): method test_duration_no_start (line 164) | def test_duration_no_start(self): class TestDeltaTotalSeconds (line 168) | class TestDeltaTotalSeconds(TestCase): method test (line 169) | def test(self): class DateArithmeticTestCase (line 176) | class DateArithmeticTestCase(testingutils.MockTimeTestCase): method _cmp_date (line 182) | def _cmp_date(self, item, dt): method _cmp_day (line 185) | def _cmp_day(self, item, dt): method _cmp_month (line 188) | def _cmp_month(self, item, dt): method _cmp_year (line 191) | def _cmp_year(self, item, dt): method test_shortdate (line 194) | def test_shortdate(self): method test_shortdate_plus (line 197) | def test_shortdate_plus(self): method test_shortdate_minus (line 202) | def test_shortdate_minus(self): method test_day (line 207) | def test_day(self): method test_day_minus (line 210) | def test_day_minus(self): method test_day_plus (line 215) | def test_day_plus(self): method test_month (line 220) | def test_month(self): method test_month_plus (line 223) | def test_month_plus(self): method test_month_minus (line 228) | def test_month_minus(self): method test_year (line 233) | def test_year(self): method test_year_plus (line 236) | def test_year_plus(self): method test_year_minus (line 241) | def test_year_minus(self): method test_unixtime (line 246) | def test_unixtime(self): method test_unixtime_plus (line 250) | def test_unixtime_plus(self): method test_unixtime_minus (line 254) | def test_unixtime_minus(self): method test_daynumber (line 258) | def test_daynumber(self): method test_daynumber_plus (line 262) | def test_daynumber_plus(self): method test_daynumber_minus (line 266) | def test_daynumber_minus(self): method test_hour (line 270) | def test_hour(self): method test_hour_plus (line 274) | def test_hour_plus(self): method test_hour_minus (line 278) | def test_hour_minus(self): method test_bad_date_format (line 282) | def test_bad_date_format(self): method test_round_day (line 285) | def test_round_day(self): class DateArithmeticYMDHTest (line 291) | class DateArithmeticYMDHTest(TestCase): method test_ym_plus (line 292) | def test_ym_plus(self): method test_ym_minus (line 299) | def test_ym_minus(self): method test_ymd_plus (line 306) | def test_ymd_plus(self): method test_ymd_minus (line 313) | def test_ymd_minus(self): method test_ymdh_plus (line 320) | def test_ymdh_plus(self): method test_ymdh_minus (line 327) | def test_ymdh_minus(self): method test_ymdhm_plus (line 334) | def test_ymdhm_plus(self): method test_ymdhm_minus (line 341) | def test_ymdhm_minus(self): method test_ym_minus_round (line 348) | def test_ym_minus_round(self): method test_ymd_plus_whitespace (line 353) | def test_ymd_plus_whitespace(self): method test_ymd_minus_whitespace (line 360) | def test_ymd_minus_whitespace(self): class TestDateArithmeticWithTimezone (line 368) | class TestDateArithmeticWithTimezone(DateArithmeticTestCase): FILE: tests/utils/trontimespec_test.py class TestGetTime (line 11) | class TestGetTime(TestCase): method test_get_time (line 12) | def test_get_time(self): method test_get_time_invalid_time (line 16) | def test_get_time_invalid_time(self): class TestTimeSpecification (line 21) | class TestTimeSpecification(TestCase): method _cmp (line 22) | def _cmp(self, start_time, expected): method test_get_match_months (line 27) | def test_get_match_months(self): method test_get_match_monthdays (line 33) | def test_get_match_monthdays(self): method test_get_match_weekdays (line 40) | def test_get_match_weekdays(self): method test_next_month_generator (line 45) | def test_next_month_generator(self): method test_next_day_monthdays (line 51) | def test_next_day_monthdays(self): method test_next_day_monthdays_with_last (line 59) | def test_next_day_monthdays_with_last(self): method test_next_day_weekdays (line 64) | def test_next_day_weekdays(self): method test_next_day_weekdays_with_ordinals (line 72) | def test_next_day_weekdays_with_ordinals(self): method test_next_time_timestr (line 83) | def test_next_time_timestr(self): method test_next_time_hours (line 94) | def test_next_time_hours(self): method test_next_time_minutes (line 105) | def test_next_time_minutes(self): method test_next_time_hours_and_minutes_and_seconds (line 119) | def test_next_time_hours_and_minutes_and_seconds(self): method test_get_match_dst_spring_forward (line 134) | def test_get_match_dst_spring_forward(self): method test_get_match_dst_fall_back (line 147) | def test_get_match_dst_fall_back(self): FILE: tools/action_dag_diagram.py function parse_args (line 17) | def parse_args(): function build_diagram (line 39) | def build_diagram(job_config): function get_job (line 51) | def get_job(config_container, namespace, job_name): FILE: tools/compress_json.py function get_dynamodb_table (line 30) | def get_dynamodb_table( function get_dynamodb_client (line 37) | def get_dynamodb_client( function scan_keys (line 45) | def scan_keys(source_table: ServiceResource) -> set[str]: function resolve_keys (line 65) | def resolve_keys(args, parser, source_table: ServiceResource) -> list[str]: function is_compressed (line 90) | def is_compressed(json_val) -> bool: function get_json_val_bytes (line 106) | def get_json_val_bytes(json_val) -> bytes: function classify_item (line 115) | def classify_item(item: dict) -> str: function compress_json_for_key (line 133) | def compress_json_for_key( function verify_compressed_json_for_key (line 305) | def verify_compressed_json_for_key(source_table: ServiceResource, key: s... function delete_pickle_for_key (line 369) | def delete_pickle_for_key(source_table: ServiceResource, key: str, dry_r... function cmd_compress (line 420) | def cmd_compress(args, source_table: ServiceResource, client, table_name... function cmd_delete_pickles (line 503) | def cmd_delete_pickles(args, source_table: ServiceResource, keys: list[s... function cmd_status (line 554) | def cmd_status(args, source_table: ServiceResource) -> None: function add_key_arguments (line 591) | def add_key_arguments(subparser: argparse.ArgumentParser) -> None: function main (line 610) | def main(): FILE: tools/inspect_serialized_state.py function parse_options (line 17) | def parse_options(): function get_container (line 33) | def get_container(config_path): function get_state (line 38) | def get_state(container): function format_date (line 45) | def format_date(date_string): function format_jobs (line 49) | def format_jobs(job_states): function display_report (line 67) | def display_report(state_config, job_states): function main (line 74) | def main(config_path, working_dir): FILE: tools/migration/migrate_config_0.2_to_0.3.py class Loader (line 18) | class Loader(yaml.Loader): method compose_document (line 21) | def compose_document(self): function strip_tags (line 28) | def strip_tags(source): function name_from_doc (line 33) | def name_from_doc(doc): function warn_node_pools (line 48) | def warn_node_pools(content): function warn_requires_list (line 64) | def warn_requires_list(content): function create_loader (line 89) | def create_loader(content): function build_anchor_mapping (line 96) | def build_anchor_mapping(content): function update_references (line 106) | def update_references(content): function convert (line 130) | def convert(source, dest): FILE: tools/migration/migrate_config_0.5.1_to_0.5.2.py function parse_options (line 16) | def parse_options(): function main (line 33) | def main(source, dest): FILE: tools/migration/migrate_state.py function parse_options (line 26) | def parse_options(): function get_state_manager_from_config (line 64) | def get_state_manager_from_config(config_path, working_dir): function get_current_config (line 73) | def get_current_config(config_path): function add_namespaces (line 78) | def add_namespaces(state_data): function strip_namespace (line 82) | def strip_namespace(names): function convert_state (line 86) | def convert_state(opts): FILE: tools/migration/migrate_state_1.3.15_to_1.4.0.py function parse_args (line 10) | def parse_args(): function create_job_runs_for_job (line 31) | def create_job_runs_for_job(state_manager, job_name, job_state): function move_job_runs_to_job (line 43) | def move_job_runs_to_job(state_manager, job_name, job_state): function update_state (line 51) | def update_state(state_manager, job_names, back): function migrate_state (line 60) | def migrate_state(config_path, working_dir, back): FILE: tools/pickles_to_json.py function get_dynamodb_table (line 20) | def get_dynamodb_table( function get_all_jobs (line 34) | def get_all_jobs(source_table: ServiceResource) -> list[str]: function get_job_names (line 45) | def get_job_names(base_url: str) -> list[str]: function combine_pickle_partitions (line 63) | def combine_pickle_partitions(source_table: ServiceResource, key: str) -... function dump_pickle_key (line 85) | def dump_pickle_key(source_table: ServiceResource, key: str) -> None: function dump_pickle_keys (line 102) | def dump_pickle_keys(source_table: ServiceResource, keys: list[str]) -> ... function dump_json_key (line 112) | def dump_json_key(source_table: ServiceResource, key: str) -> None: function dump_json_keys (line 129) | def dump_json_keys(source_table: ServiceResource, keys: list[str]) -> None: function delete_keys (line 140) | def delete_keys(source_table: ServiceResource, keys: list[str]) -> None: function get_num_partitions (line 164) | def get_num_partitions(source_table: ServiceResource, key: str) -> int: function combine_json_partitions (line 180) | def combine_json_partitions(source_table: ServiceResource, key: str) -> ... function convert_pickle_to_json_and_update_table (line 207) | def convert_pickle_to_json_and_update_table(source_table: ServiceResourc... function convert_pickles_to_json_and_update_table (line 253) | def convert_pickles_to_json_and_update_table( function scan_table (line 325) | def scan_table(source_table: ServiceResource) -> list[dict]: function main (line 340) | def main(): FILE: tools/sync_tron_state_from_k8s.py function limit_size_with_hash (line 41) | def limit_size_with_hash(name: str, limit: int = 63, suffix: int = 4) ->... function parse_args (line 57) | def parse_args(): function fetch_pods (line 113) | def fetch_pods(kubeconfig_path: str, kubecontext: str | None) -> dict[st... function get_tron_state_from_api (line 127) | def get_tron_state_from_api(tron_server: str, num_runs: int = 100) -> li... function get_matching_pod (line 153) | def get_matching_pod(action_run: dict[str, Any], pods: dict[str, V1Pod])... function get_desired_state_from_pod (line 178) | def get_desired_state_from_pod(pod: V1Pod) -> str: function update_tron_from_pods (line 183) | def update_tron_from_pods( FILE: tron/actioncommand.py class ActionCommand (line 18) | class ActionCommand(Observable): method __init__ (line 54) | def __init__(self, id, command, serializer=None): method state (line 70) | def state(self): method transition_and_notify (line 73) | def transition_and_notify(self, target): method started (line 78) | def started(self): method exited (line 83) | def exited(self, exit_status): method write_stderr (line 89) | def write_stderr(self, value): method write_stdout (line 92) | def write_stdout(self, value): method done (line 95) | def done(self): method handle_errback (line 101) | def handle_errback(self, result): method is_unknown (line 111) | def is_unknown(self): method is_failed (line 115) | def is_failed(self): method is_complete (line 119) | def is_complete(self): method is_done (line 124) | def is_done(self): method __repr__ (line 131) | def __repr__(self): class StringBufferStore (line 135) | class StringBufferStore: method __init__ (line 140) | def __init__(self): method open (line 143) | def open(self, name): method clear (line 146) | def clear(self): class NoActionRunnerFactory (line 151) | class NoActionRunnerFactory: method create (line 155) | def create(cls, id, command, serializer): method build_stop_action_command (line 159) | def build_stop_action_command(cls, _id, _command): method from_json (line 164) | def from_json(): method to_json (line 168) | def to_json(): class SubprocessActionRunnerFactory (line 172) | class SubprocessActionRunnerFactory(Persistable): method __init__ (line 178) | def __init__(self, status_path, exec_path): method from_config (line 183) | def from_config(cls, config): method create (line 186) | def create(self, id, command, serializer): method build_command (line 190) | def build_command(self, id, command, exec_name): method build_stop_action_command (line 195) | def build_stop_action_command(self, id, command): method __eq__ (line 200) | def __eq__(self, other): method __ne__ (line 207) | def __ne__(self, other): method from_json (line 211) | def from_json(state_data: str) -> dict[str, Any]: method to_json (line 224) | def to_json(state_data: dict) -> str: function create_action_runner_factory_from_config (line 240) | def create_action_runner_factory_from_config(config): FILE: tron/api/adapter.py class ReprAdapter (line 26) | class ReprAdapter: method __init__ (line 32) | def __init__(self, internal_obj): method _get_field_names (line 37) | def _get_field_names(self): method _get_translation_mapping (line 40) | def _get_translation_mapping(self): method get_repr (line 43) | def get_repr(self): function adapt_many (line 50) | def adapt_many(adapter_class, seq, *args, **kwargs): function toggle_flag (line 54) | def toggle_flag( class RunAdapter (line 80) | class RunAdapter(ReprAdapter): method get_state (line 83) | def get_state(self): method get_node (line 86) | def get_node(self): method get_duration (line 89) | def get_duration(self): class ActionRunAdapter (line 94) | class ActionRunAdapter(RunAdapter): method __init__ (line 128) | def __init__( method get_raw_command (line 144) | def get_raw_command(self): method get_command (line 147) | def get_command(self): method get_requirements (line 151) | def get_requirements(self): method _get_serializer (line 156) | def _get_serializer(self, path: str | None = None) -> filehandler.Outp... method _get_alternate_output_paths (line 160) | def _get_alternate_output_paths(self): method get_meta (line 182) | def get_meta(self) -> list[str]: method get_stdout (line 198) | def get_stdout(self) -> list[str]: method get_stderr (line 240) | def get_stderr(self) -> list[str]: method get_job_name (line 281) | def get_job_name(self): method get_run_num (line 284) | def get_run_num(self): method get_retries_delay (line 287) | def get_retries_delay(self): method get_in_delay (line 291) | def get_in_delay(self): method get_triggered_by (line 295) | def get_triggered_by(self) -> str: method get_trigger_downstreams (line 300) | def get_trigger_downstreams(self) -> str: class ActionGraphAdapter (line 305) | class ActionGraphAdapter: method __init__ (line 306) | def __init__(self, action_graph): method get_repr (line 309) | def get_repr(self): class ActionRunGraphAdapter (line 322) | class ActionRunGraphAdapter: method __init__ (line 323) | def __init__(self, action_run_collection): method get_repr (line 326) | def get_repr(self): class JobRunAdapter (line 357) | class JobRunAdapter(RunAdapter): method __init__ (line 377) | def __init__( method get_url (line 387) | def get_url(self): method get_runs (line 391) | def get_runs(self): method get_action_graph (line 395) | def get_action_graph(self): class JobAdapter (line 399) | class JobAdapter(ReprAdapter): method __init__ (line 418) | def __init__( method get_name (line 434) | def get_name(self): method get_monitoring (line 437) | def get_monitoring(self): method get_scheduler (line 440) | def get_scheduler(self): method get_action_names (line 443) | def get_action_names(self): method get_node_pool (line 447) | def get_node_pool(self): method get_last_success (line 450) | def get_last_success(self): method get_next_run (line 454) | def get_next_run(self): method get_url (line 458) | def get_url(self): method get_runs (line 462) | def get_runs(self): method get_max_runtime (line 470) | def get_max_runtime(self): method get_expected_runtime (line 473) | def get_expected_runtime(self): method get_actions_expected_runtime (line 476) | def get_actions_expected_runtime(self): method get_action_graph (line 480) | def get_action_graph(self): class JobIndexAdapter (line 484) | class JobIndexAdapter(ReprAdapter): method get_name (line 488) | def get_name(self): method get_actions (line 491) | def get_actions(self): class SchedulerAdapter (line 501) | class SchedulerAdapter(ReprAdapter): method get_value (line 505) | def get_value(self): method get_type (line 508) | def get_type(self): method get_jitter (line 511) | def get_jitter(self): class EventAdapter (line 515) | class EventAdapter(ReprAdapter): method get_level (line 520) | def get_level(self): class NodeAdapter (line 524) | class NodeAdapter(ReprAdapter): class NodePoolAdapter (line 528) | class NodePoolAdapter(ReprAdapter): method get_name (line 531) | def get_name(self): method get_nodes (line 534) | def get_nodes(self): FILE: tron/api/async_resource.py function report_resource_request (line 10) | def report_resource_request(resource, request, duration_ms): class AsyncResource (line 18) | class AsyncResource: method finish (line 24) | def finish(result, request, resource): method process (line 31) | def process(fn, resource, request): method bounded (line 39) | def bounded(fn): method exclusive (line 54) | def exclusive(fn): FILE: tron/api/auth.py class AuthorizationOutcome (line 18) | class AuthorizationOutcome(NamedTuple): class AuthorizationFilter (line 23) | class AuthorizationFilter: method __init__ (line 26) | def __init__(self, endpoint: str, enforce: bool): method get_from_env (line 38) | def get_from_env(cls) -> "AuthorizationFilter": method is_request_authorized (line 44) | def is_request_authorized(self, request: Request) -> AuthorizationOutc... method _is_request_authorized_impl (line 65) | def _is_request_authorized_impl( method _extract_service_from_path (line 109) | def _extract_service_from_path(path: str) -> str | None: FILE: tron/api/controller.py class UnknownCommandError (line 20) | class UnknownCommandError(Exception): class InvalidCommandForActionState (line 24) | class InvalidCommandForActionState(Exception): method __init__ (line 30) | def __init__(self, command: str, action_name: str, action_state: str) ... class JobCollectionController (line 38) | class JobCollectionController: method __init__ (line 39) | def __init__(self, job_collection): method handle_command (line 42) | def handle_command(self, command, old_name=None, new_name=None): class ActionRunController (line 53) | class ActionRunController: method __init__ (line 67) | def __init__(self, action_run: ActionRun, job_run: JobRun) -> None: method handle_command (line 71) | def handle_command(self, command, **kwargs): method handle_termination (line 100) | def handle_termination(self, command): method handle_retry (line 112) | def handle_retry(self, original_command): class JobRunController (line 123) | class JobRunController: method __init__ (line 127) | def __init__(self, job_run, job_scheduler): method handle_command (line 131) | def handle_command(self, command): class JobController (line 155) | class JobController: method __init__ (line 156) | def __init__(self, job_scheduler): method handle_command (line 159) | def handle_command(self, command, run_time=None): class ConfigResponse (line 186) | class ConfigResponse(TypedDict): class ConfigController (line 191) | class ConfigController: method __init__ (line 198) | def __init__(self, mcp: "MasterControlProgram") -> None: method _get_config_content (line 202) | def _get_config_content(self, name: str) -> str: method read_config (line 207) | def read_config(self, name: str) -> ConfigResponse: method read_all_configs (line 212) | def read_all_configs(self) -> dict[str, ConfigResponse]: method check_config (line 224) | def check_config(self, name, content, config_hash): method update_config (line 235) | def update_config(self, name, content, config_hash): method delete_config (line 256) | def delete_config(self, name, content, config_hash): method get_namespaces (line 272) | def get_namespaces(self): class EventsController (line 276) | class EventsController: method publish (line 279) | def publish(self, event): method discard (line 295) | def discard(self, event): method info (line 306) | def info(self): FILE: tron/api/requestargs.py function get_integer (line 8) | def get_integer(request, key): function get_string (line 19) | def get_string(request, key): function get_bool (line 37) | def get_bool(request, key, default=None): function get_datetime (line 46) | def get_datetime(request, key): FILE: tron/api/resource.py class JSONEncoder (line 33) | class JSONEncoder(json.JSONEncoder): method default (line 36) | def default(self, o): function respond (line 49) | def respond(request, response, code=None, headers=None): function handle_command (line 77) | def handle_command(request, api_controller, obj, **kwargs): class AuthenticatedResource (line 105) | class AuthenticatedResource(resource.Resource): method render (line 106) | def render(self, request): class ErrorResource (line 119) | class ErrorResource(resource.Resource): method __init__ (line 123) | def __init__(self, error="No Such Resource", code=http.NOT_FOUND): method render_GET (line 129) | def render_GET(self, request): method render_POST (line 133) | def render_POST(self, request): method getChild (line 136) | def getChild(self, chnam, request): function resource_from_collection (line 141) | def resource_from_collection(collection, name, child_resource): class ActionRunResource (line 151) | class ActionRunResource(AuthenticatedResource): method __init__ (line 155) | def __init__(self, action_run, job_run): method render_GET (line 163) | def render_GET(self, request): method render_POST (line 176) | def render_POST(self, request): class JobRunResource (line 186) | class JobRunResource(AuthenticatedResource): method __init__ (line 187) | def __init__(self, job_run, job_scheduler): method getChild (line 193) | def getChild(self, action_name, _): method render_GET (line 209) | def render_GET(self, request): method render_POST (line 220) | def render_POST(self, request): function is_negative_int (line 224) | def is_negative_int(string): class JobResource (line 228) | class JobResource(AuthenticatedResource): method __init__ (line 229) | def __init__(self, job_scheduler): method get_run_from_identifier (line 234) | def get_run_from_identifier(self, run_id): method getChild (line 243) | def getChild(self, run_id, _): method render_GET (line 262) | def render_GET(self, request): method render_POST (line 279) | def render_POST(self, request): class ActionRunHistoryResource (line 289) | class ActionRunHistoryResource(AuthenticatedResource): method __init__ (line 293) | def __init__(self, action_runs): method render_GET (line 298) | def render_GET(self, request): class JobCollectionResource (line 305) | class JobCollectionResource(AuthenticatedResource): method __init__ (line 306) | def __init__(self, job_collection): method getChild (line 311) | def getChild(self, name, request): method get_data (line 318) | def get_data( method get_job_index (line 335) | def get_job_index(self): method render_GET (line 343) | def render_GET(self, request): method render_POST (line 375) | def render_POST(self, request): class ConfigResource (line 387) | class ConfigResource(AuthenticatedResource): method __init__ (line 392) | def __init__(self, master_control): method get_config_index (line 396) | def get_config_index(self): method render_GET (line 400) | def render_GET(self, request): method render_POST (line 409) | def render_POST(self, request): class StatusResource (line 442) | class StatusResource(resource.Resource): method __init__ (line 446) | def __init__(self, master_control): method render_GET (line 451) | def render_GET(self, request): class MetricsResource (line 462) | class MetricsResource(resource.Resource): method __init__ (line 466) | def __init__(self): method render_GET (line 470) | def render_GET(self, request): class EventsResource (line 474) | class EventsResource(AuthenticatedResource): method __init__ (line 477) | def __init__(self): method render_GET (line 482) | def render_GET(self, request): method render_POST (line 487) | def render_POST(self, request): class ApiRootResource (line 501) | class ApiRootResource(AuthenticatedResource): method __init__ (line 502) | def __init__(self, mcp): method render_GET (line 520) | def render_GET(self, request): class RootResource (line 529) | class RootResource(resource.Resource): method __init__ (line 530) | def __init__(self, mcp, web_path): method render_GET (line 538) | def render_GET(self, request): method __str__ (line 543) | def __str__(self): class LogAdapter (line 547) | class LogAdapter: method __init__ (line 548) | def __init__(self, logger): method write (line 551) | def write(self, line): method close (line 554) | def close(self): class TronSite (line 558) | class TronSite(server.Site): method create (line 564) | def create(cls, mcp, web_path): method startFactory (line 567) | def startFactory(self): method log (line 571) | def log(self, request): method __repr__ (line 582) | def __repr__(self): FILE: tron/bin/action_runner.py class StatusFile (line 19) | class StatusFile: method __init__ (line 22) | def __init__(self, filename): method get_content (line 25) | def get_content(self, run_id, command, proc): method wrap (line 36) | def wrap(self, command, run_id, proc): function validate_output_dir (line 64) | def validate_output_dir(path): function build_environment (line 76) | def build_environment(run_id, original_env=None): function build_labels (line 96) | def build_labels( function run_proc (line 120) | def run_proc(output_path, command, run_id, proc): function parse_args (line 133) | def parse_args(): function run_command (line 150) | def run_command(command, run_id): function stream (line 160) | def stream(source, dst): function configure_logging (line 178) | def configure_logging(run_id, output_dir): function main (line 187) | def main(): FILE: tron/bin/action_status.py function get_field (line 14) | def get_field(field, status_file): function print_status_file (line 20) | def print_status_file(status_file): function send_signal (line 25) | def send_signal(signal_num, status_file): function parse_args (line 44) | def parse_args(): function run_command (line 61) | def run_command(command, status_file): function main (line 65) | def main(): FILE: tron/bin/check_tron_datastore_staleness.py function get_last_run_time (line 21) | def get_last_run_time(job): function parse_cli (line 34) | def parse_cli(): function read_config (line 67) | def read_config(args): function main (line 71) | def main(): FILE: tron/bin/check_tron_jobs.py class State (line 29) | class State(Enum): function parse_cli (line 39) | def parse_cli(): function _timestamp_to_timeobj (line 72) | def _timestamp_to_timeobj(timestamp): function _timestamp_to_shortdate (line 76) | def _timestamp_to_shortdate(timestamp, separator="."): function compute_check_result_for_job_runs (line 83) | def compute_check_result_for_job_runs(client, job, job_content, url_inde... function pretty_print_job (line 189) | def pretty_print_job(job_content): function pretty_print_job_run (line 193) | def pretty_print_job_run(job_run): function pretty_print_actions (line 198) | def pretty_print_actions(action_run): function get_relevant_run_and_state (line 202) | def get_relevant_run_and_state(job_content): function is_action_failed_or_unknown (line 238) | def is_action_failed_or_unknown(job_run): function is_job_stuck (line 245) | def is_job_stuck( function is_job_run_exceeding_expected_runtime (line 277) | def is_job_run_exceeding_expected_runtime(job_run, job_expected_runtime): function is_action_run_exceeding_expected_runtime (line 293) | def is_action_run_exceeding_expected_runtime( function get_relevant_action (line 309) | def get_relevant_action(*, action_runs, last_state, actions_expected_run... function guess_realert_every (line 328) | def guess_realert_every(job): function get_earliest_run_time_to_check (line 354) | def get_earliest_run_time_to_check(job_content, interval): function sort_runs_by_interval (line 365) | def sort_runs_by_interval(job_content, interval="day", until=None): function compute_check_result_for_job (line 407) | def compute_check_result_for_job(client, job, url_index): function check_job (line 469) | def check_job(job, client, url_index): function check_job_result (line 480) | def check_job_result(job, client, url_index, dry_run): function main (line 498) | def main(): FILE: tron/bin/get_tron_metrics.py function parse_cli (line 18) | def parse_cli(): function check_bin_exists (line 31) | def check_bin_exists(bin): function send_data_metric (line 47) | def send_data_metric(name, metric_type, value, dimensions={}, dry_run=Fa... function send_counter (line 91) | def send_counter(name, **kwargs): function send_gauge (line 101) | def send_gauge(name, **kwargs): function send_meter (line 111) | def send_meter(name, **kwargs): function send_histogram (line 115) | def send_histogram(name, **kwargs): function send_timer (line 122) | def send_timer(name, **kwargs): function send_metrics (line 138) | def send_metrics(metrics, cluster=None, dry_run=False): function main (line 157) | def main(): FILE: tron/bin/recover_batch.py class StatusFileWatcher (line 18) | class StatusFileWatcher: method __init__ (line 23) | def __init__(self, to_watch, callback): function parse_args (line 29) | def parse_args(): function read_last_yaml_entries (line 37) | def read_last_yaml_entries(filename): function notify (line 47) | def notify(notify_queue, ignored, filepath, mask): function get_exit_code (line 54) | def get_exit_code(filepath): function run (line 78) | def run(fpath): FILE: tron/command_context.py function build_context (line 11) | def build_context(object, parent): function build_filled_context (line 18) | def build_filled_context(*context_objects): class CommandContext (line 34) | class CommandContext: method __init__ (line 45) | def __init__(self, base=None, next=None): method get (line 54) | def get(self, name, default=None): method __getitem__ (line 60) | def __getitem__(self, name): method __eq__ (line 71) | def __eq__(self, other): method __ne__ (line 74) | def __ne__(self, other): class JobContext (line 78) | class JobContext: method __init__ (line 81) | def __init__(self, job): method name (line 85) | def name(self): method __getitem__ (line 88) | def __getitem__(self, item): method _get_date_spec_parts (line 106) | def _get_date_spec_parts(self, name): method namespace (line 113) | def namespace(self): class JobRunContext (line 117) | class JobRunContext: method __init__ (line 118) | def __init__(self, job_run): method runid (line 122) | def runid(self): method manual (line 126) | def manual(self): method cleanup_job_status (line 130) | def cleanup_job_status(self): method __getitem__ (line 140) | def __getitem__(self, name): class ActionRunContext (line 183) | class ActionRunContext: method __init__ (line 186) | def __init__(self, action_run): method actionname (line 190) | def actionname(self): method node (line 194) | def node(self): class Filler (line 198) | class Filler: method __getattr__ (line 204) | def __getattr__(self, _): method __str__ (line 207) | def __str__(self): method __mod__ (line 210) | def __mod__(self, _): method __nonzero__ (line 213) | def __nonzero__(self): method __bool__ (line 216) | def __bool__(self): FILE: tron/commands/authentication.py function get_instance_oidc_identity_token (line 11) | def get_instance_oidc_identity_token(role: str, ecosystem: str | None = ... function get_and_cache_jwt_default (line 14) | def get_and_cache_jwt_default(client_id: str, refreshable: bool = False,... function get_sso_auth_token (line 18) | def get_sso_auth_token(no_cache: bool = False) -> str: function get_vault_auth_token (line 24) | def get_vault_auth_token() -> str: function get_auth_token (line 30) | def get_auth_token(no_cache: bool = False) -> str: FILE: tron/commands/backfill.py function get_date_range (line 21) | def get_date_range( function print_backfill_cmds (line 35) | def print_backfill_cmds(job: str, date_strs: list[str]) -> None: function confirm_backfill (line 44) | def confirm_backfill(job: str, date_strs: list[str]) -> bool: class BackfillRun (line 61) | class BackfillRun: method __init__ (line 66) | def __init__(self, tron_client: client.Client, job_id: client.TronObje... method run_time_str (line 75) | def run_time_str(self) -> str: method run_until_completion (line 78) | async def run_until_completion(self) -> str: method create (line 88) | async def create(self) -> str | None: method get_run_id (line 128) | async def get_run_id(self) -> client.TronObjectIdentifier | None: method sync_state (line 144) | async def sync_state(self) -> str: method watch_until_completion (line 173) | async def watch_until_completion(self, poll_intv_s: int = DEFAULT_POLL... method cancel (line 193) | async def cancel(self) -> bool: function run_backfill_for_date_range (line 229) | async def run_backfill_for_date_range( class DisplayBackfillRuns (line 293) | class DisplayBackfillRuns(display.TableDisplay): function print_backfill_runs_table (line 303) | def print_backfill_runs_table(runs: list[BackfillRun]) -> None: FILE: tron/commands/client.py class RequestError (line 24) | class RequestError(ValueError): function build_url_request (line 35) | def build_url_request(uri, data, headers=None, method=None): function load_response_content (line 46) | def load_response_content(http_response): function build_http_error_response (line 58) | def build_http_error_response(exc): function request (line 75) | def request(uri, data=None, headers=None, method=None, user_attribution=... function build_get_url (line 93) | def build_get_url(url, data=None): function ensure_user_attribution (line 101) | def ensure_user_attribution(headers: dict[str, str]) -> dict[str, str]: class Client (line 109) | class Client: method __init__ (line 112) | def __init__(self, url_base, cluster_name=None, user_attribution=False): method status (line 122) | def status(self): method metrics (line 125) | def metrics(self): method config (line 128) | def config( method home (line 148) | def home(self): method get_url (line 153) | def get_url(self, identifier): method jobs (line 156) | def jobs( method job (line 171) | def job(self, job_url, include_action_runs=False, count=0): method job_runs (line 178) | def job_runs(self, url, include_runs=True, include_graph=False): method action_runs (line 185) | def action_runs(self, action_run_url, num_lines=0): method http_get (line 193) | def http_get(self, url, data=None): method request (line 196) | def request(self, url, data=None): function build_api_url (line 207) | def build_api_url(resource, identifier_parts): function split_identifier (line 211) | def split_identifier(identifier): function get_job_url (line 215) | def get_job_url(identifier): class TronObjectType (line 219) | class TronObjectType: function first (line 240) | def first(seq): function get_object_type_from_identifier (line 245) | def get_object_type_from_identifier(url_index, identifier): FILE: tron/commands/cmd_utils.py class ExitCode (line 16) | class ExitCode: function get_default_server (line 49) | def get_default_server(): function filter_jobs_actions_runs (line 53) | def filter_jobs_actions_runs(prefix, inputs): function tron_jobs_completer (line 72) | def tron_jobs_completer(prefix, **kwargs): function build_option_parser (line 94) | def build_option_parser(usage=None, epilog=None): function get_client_config (line 134) | def get_client_config(): function load_config (line 147) | def load_config(options): function read_config (line 170) | def read_config(filename=CONFIG_FILE_NAME): function write_config (line 179) | def write_config(config): function save_config (line 184) | def save_config(options): function setup_logging (line 193) | def setup_logging(options: argparse.Namespace) -> int: function suggest_possibilities (line 212) | def suggest_possibilities(word, possibilities, max_suggestions=6): function warning_output (line 226) | def warning_output(text: str, color: str = COLOR_RED) -> str: FILE: tron/commands/display.py class Color (line 16) | class Color: method enable (line 40) | def enable(cls): method set (line 49) | def set(cls, color_name, text): method toggle (line 59) | def toggle(cls, enable): class TableDisplay (line 63) | class TableDisplay: method __init__ (line 97) | def __init__(self, sort_index=0): method banner (line 101) | def banner(self): method header (line 109) | def header(self): method footer (line 113) | def footer(self): method color (line 116) | def color(self, col, field): method sorted_fields (line 119) | def sorted_fields(self, values): method format_row (line 122) | def format_row(self, fields): method get_field_width (line 129) | def get_field_width(self, field_idx): method trim_value (line 132) | def trim_value(self, field_idx, value): method format_value (line 139) | def format_value(self, field_idx, value): method output (line 142) | def output(self): method post_row (line 147) | def post_row(self, row): method row_color (line 150) | def row_color(self, row): method rows (line 153) | def rows(self): method store_data (line 160) | def store_data(self, data): method update_column_widths (line 163) | def update_column_widths(self): method calculate_width (line 169) | def calculate_width(self, field_idx): method format (line 177) | def format(self, data): function add_color_for_state (line 194) | def add_color_for_state(state): function format_fields (line 208) | def format_fields(display_obj, content): function format_job_details (line 226) | def format_job_details(job_content): function format_action_run_details (line 235) | def format_action_run_details(content, stdout=True, stderr=True): class DisplayJobRuns (line 247) | class DisplayJobRuns(TableDisplay): method format_value (line 272) | def format_value(self, field_idx, value): method row_color (line 284) | def row_color(self, fields): method post_row (line 287) | def post_row(self, row): class DisplayJobs (line 301) | class DisplayJobs(TableDisplay): method format_value (line 325) | def format_value(self, field_idx, value): class DisplayActionRuns (line 332) | class DisplayActionRuns(TableDisplay): method __init__ (line 361) | def __init__(self): method banner (line 365) | def banner(self): method format_value (line 369) | def format_value(self, field_idx, value): method row_color (line 380) | def row_color(self, fields): method store_data (line 383) | def store_data(self, data): method rows (line 387) | def rows(self): function display_node (line 398) | def display_node(source, _=None): function display_node_pool (line 404) | def display_node_pool(source, _=None): function display_scheduler (line 410) | def display_scheduler(source, _=None): function display_state_delayed (line 416) | def display_state_delayed(_, obj): function view_with_less (line 434) | def view_with_less(content, color=True): FILE: tron/commands/retry.py function parse_deps_timeout (line 18) | def parse_deps_timeout(duration: str) -> int: class RetryAction (line 34) | class RetryAction: method __init__ (line 42) | def __init__( method job_run_name (line 62) | def job_run_name(self) -> str: method action_name (line 66) | def action_name(self) -> str: method status (line 70) | def status(self) -> str: method succeeded (line 83) | def succeeded(self) -> bool: method _validate_action_name (line 86) | def _validate_action_name(self, full_action_name: str) -> client.TronO... method _get_required_action_indices (line 95) | def _get_required_action_indices(self) -> dict[str, int]: method _log (line 107) | def _log(self, msg: str) -> None: method can_retry (line 110) | async def can_retry(self) -> bool: method check_trigger_statuses (line 131) | async def check_trigger_statuses(self) -> dict[str, bool]: method check_required_actions_statuses (line 153) | async def check_required_actions_statuses(self) -> dict[str, bool]: method wait_and_retry (line 166) | async def wait_and_retry( method wait_for_deps (line 188) | async def wait_for_deps( method issue_retry (line 209) | async def issue_retry(self) -> bool: function retry_actions (line 230) | def retry_actions( class DisplayRetries (line 253) | class DisplayRetries(display.TableDisplay): function print_retries_table (line 263) | def print_retries_table(retries: list[RetryAction]) -> None: FILE: tron/config/__init__.py class ConfigError (line 1) | class ConfigError(Exception): FILE: tron/config/config_parse.py function build_format_string_validator (line 67) | def build_format_string_validator(context_object): function valid_output_stream_dir (line 94) | def valid_output_stream_dir(output_dir, config_context): function valid_identity_file (line 117) | def valid_identity_file(file_path, config_context): function valid_known_hosts_file (line 133) | def valid_known_hosts_file(file_path, config_context): function valid_command_context (line 145) | def valid_command_context(context, config_context): function valid_time_zone (line 150) | def valid_time_zone(tz, config_context): function valid_node_name (line 160) | def valid_node_name(value, config_context): function valid_master_address (line 168) | def valid_master_address(value, config_context): function valid_k8s_master_address (line 203) | def valid_k8s_master_address(value: str, config_context: ConfigContext) ... class ValidateConstraint (line 238) | class ValidateConstraint(Validator): class ValidateDockerParameter (line 250) | class ValidateDockerParameter(Validator): class ValidateVolume (line 261) | class ValidateVolume(Validator): class ValidateSecretSource (line 273) | class ValidateSecretSource(Validator): function valid_permission_mode (line 284) | def valid_permission_mode(value: str | int, config_context: ConfigContex... class ValidateSecretVolumeItem (line 298) | class ValidateSecretVolumeItem(Validator): class ValidateSecretVolume (line 311) | class ValidateSecretVolume(Validator): method post_validation (line 328) | def post_validation(self, valid_input, config_context): class ValidateProjectedSAVolume (line 366) | class ValidateProjectedSAVolume(Validator): class ValidateFieldSelectorSource (line 382) | class ValidateFieldSelectorSource(Validator): function _valid_node_affinity_operator (line 392) | def _valid_node_affinity_operator(value: str, config_context: ConfigCont... class ValidateNodeAffinity (line 400) | class ValidateNodeAffinity(Validator): function _valid_when_unsatisfiable (line 412) | def _valid_when_unsatisfiable(value: str, config_context: ConfigContext)... function _valid_topology_spread_label_selector (line 420) | def _valid_topology_spread_label_selector(value: dict[str, str], config_... class ValidateTopologySpreadConstraints (line 434) | class ValidateTopologySpreadConstraints(Validator): class ValidateSSHOptions (line 447) | class ValidateSSHOptions(Validator): method post_validation (line 481) | def post_validation(self, valid_input, config_context): class ValidateNode (line 492) | class ValidateNode(Validator): method do_shortcut (line 506) | def do_shortcut(self, node): method set_defaults (line 511) | def set_defaults(self, output_dict, config_context): class ValidateNodePool (line 519) | class ValidateNodePool(Validator): method cast (line 526) | def cast(self, node_pool, _context): method set_defaults (line 531) | def set_defaults(self, node_pool, _): function valid_action_name (line 538) | def valid_action_name(value, config_context): function valid_mesos_action (line 553) | def valid_mesos_action(action, config_context): function valid_kubernetes_action (line 566) | def valid_kubernetes_action(action, config_context): function valid_trigger_downstreams (line 579) | def valid_trigger_downstreams(trigger_downstreams, config_context): class ValidateAction (line 585) | class ValidateAction(Validator): method post_validation (line 668) | def post_validation(self, action, config_context): function valid_cleanup_action_name (line 676) | def valid_cleanup_action_name(value, config_context): class ValidateCleanupAction (line 683) | class ValidateCleanupAction(Validator): method post_validation (line 758) | def post_validation(self, action, config_context): class ValidateJob (line 766) | class ValidateJob(Validator): method cast (line 802) | def cast(self, in_dict, config_context): method _validate_dependencies (line 807) | def _validate_dependencies( method post_validation (line 845) | def post_validation(self, job, config_context): class ValidateActionRunner (line 854) | class ValidateActionRunner(Validator): class ValidateStatePersistence (line 870) | class ValidateStatePersistence(Validator): method post_validation (line 888) | def post_validation(self, config, config_context): class ValidateMesos (line 915) | class ValidateMesos(Validator): class ValidateKubernetes (line 945) | class ValidateKubernetes(Validator): function validate_jobs (line 967) | def validate_jobs(config, config_context): class ValidateConfig (line 988) | class ValidateConfig(Validator): method validate_node_pool_nodes (line 1031) | def validate_node_pool_nodes(self, config): method post_validation (line 1042) | def post_validation(self, config, _): class ValidateNamedConfig (line 1062) | class ValidateNamedConfig(Validator): method post_validation (line 1076) | def post_validation(self, config, config_context): function validate_fragment (line 1084) | def validate_fragment(name, fragment, master_config=None): function get_nodes_from_master_namespace (line 1098) | def get_nodes_from_master_namespace(master): function validate_config_mapping (line 1102) | def validate_config_mapping(config_mapping): class ConfigContainer (line 1124) | class ConfigContainer: method __init__ (line 1127) | def __init__(self, config_mapping): method items (line 1130) | def items(self): method create (line 1134) | def create(cls, config_mapping): method get_job_names (line 1138) | def get_job_names(self): method get_jobs (line 1144) | def get_jobs(self): method get_master (line 1149) | def get_master(self): method get_node_names (line 1152) | def get_node_names(self): method __getitem__ (line 1155) | def __getitem__(self, name): method __contains__ (line 1158) | def __contains__(self, name): FILE: tron/config/config_utils.py class StringFormatter (line 15) | class StringFormatter(Formatter): method __init__ (line 16) | def __init__(self, context=None): method get_value (line 20) | def get_value(self, key, args, kwds): class UniqueNameDict (line 30) | class UniqueNameDict(dict): method __init__ (line 38) | def __init__(self, fmt_string): method __setitem__ (line 42) | def __setitem__(self, key, value): function unique_names (line 48) | def unique_names(fmt_string, *seqs): function build_type_validator (line 56) | def build_type_validator(validator, error_fmt): function valid_number (line 75) | def valid_number(type_func, value, config_context, allow_negative=False): function build_enum_validator (line 119) | def build_enum_validator(enum): function build_real_enum_validator (line 125) | def build_real_enum_validator(enum): function valid_time (line 137) | def valid_time(value, config_context): function valid_time_delta (line 161) | def valid_time_delta(value, config_context): function valid_name_identifier (line 175) | def valid_name_identifier(value, config_context): function build_list_of_type_validator (line 182) | def build_list_of_type_validator(item_validator, allow_empty=False): function build_dict_name_validator (line 199) | def build_dict_name_validator(item_validator, allow_empty=False): function build_dict_value_validator (line 223) | def build_dict_value_validator(item_validator, allow_empty=False): class ConfigContext (line 238) | class ConfigContext: method __init__ (line 246) | def __init__(self, path, nodes, command_context, namespace): method build_child_context (line 252) | def build_child_context(self, path): class PartialConfigContext (line 259) | class PartialConfigContext: method __init__ (line 268) | def __init__(self, path, namespace): method build_child_context (line 272) | def build_child_context(self, path): class NullConfigContext (line 277) | class NullConfigContext: method build_child_context (line 285) | def build_child_context(_): class Validator (line 290) | class Validator: method validate (line 300) | def validate(self, in_dict, config_context): method __call__ (line 317) | def __call__(self, in_dict, config_context=NullConfigContext): method type_name (line 321) | def type_name(self): method all_keys (line 329) | def all_keys(self): method do_shortcut (line 332) | def do_shortcut(self, in_dict): method cast (line 339) | def cast(self, in_dict, _): method build_context (line 345) | def build_context(self, in_dict, config_context): method validate_required_keys (line 349) | def validate_required_keys(self, in_dict): method validate_extra_keys (line 364) | def validate_extra_keys(self, in_dict): method set_defaults (line 374) | def set_defaults(self, output_dict, _config_context): method path_name (line 381) | def path_name(self, name=None): method post_validation (line 384) | def post_validation(self, valid_input, config_context): method build_config (line 390) | def build_config(self, in_dict, config_context): method validate_contents (line 400) | def validate_contents(self, input, config_context): FILE: tron/config/manager.py function from_string (line 17) | def from_string(content): function write (line 24) | def write(path, content): function read (line 29) | def read(path): function write_raw (line 34) | def write_raw(path, content): function read_raw (line 41) | def read_raw(path: str) -> str: function hash_digest (line 46) | def hash_digest(content: str | bytes) -> str: class ManifestFile (line 52) | class ManifestFile: method __init__ (line 57) | def __init__(self, path): method create (line 60) | def create(self): method add (line 68) | def add(self, name, filename): method delete (line 73) | def delete(self, name): method get_file_mapping (line 83) | def get_file_mapping(self): method get_file_name (line 86) | def get_file_name(self, name): method __contains__ (line 89) | def __contains__(self, name): class ConfigManager (line 93) | class ConfigManager: method __init__ (line 98) | def __init__(self, config_path, manifest=None): method build_file_path (line 103) | def build_file_path(self, name): method read_raw_config (line 107) | def read_raw_config(self, name: str = schema.MASTER_NAMESPACE) -> str: method write_config (line 112) | def write_config(self, name: str, content: str) -> None: method delete_config (line 128) | def delete_config(self, name: str) -> None: method get_filename_from_manifest (line 141) | def get_filename_from_manifest(self, name): method validate_with_fragment (line 149) | def validate_with_fragment( method get_config_name_mapping (line 169) | def get_config_name_mapping(self): method load (line 176) | def load(self): method get_hash (line 182) | def get_hash(self, name: str) -> str: method __contains__ (line 207) | def __contains__(self, name): method get_namespaces (line 210) | def get_namespaces(self) -> list[str]: function create_new_config (line 214) | def create_new_config(path, master_content): FILE: tron/config/schedule_parse.py class ScheduleParseError (line 36) | class ScheduleParseError(ConfigError): function pad_sequence (line 40) | def pad_sequence(seq, size, padding=None): function schedule_config_from_string (line 46) | def schedule_config_from_string(schedule, config_context): function validate_generic_schedule_config (line 62) | def validate_generic_schedule_config(config, config_context): function schedule_config_from_legacy_dict (line 67) | def schedule_config_from_legacy_dict(schedule, config_context): function valid_schedule (line 80) | def valid_schedule(schedule, config_context): function valid_daily_scheduler (line 91) | def valid_daily_scheduler(config, config_context): function normalize_weekdays (line 118) | def normalize_weekdays(seq): function day_canonicalization_map (line 122) | def day_canonicalization_map(): function month_canonicalization_map (line 162) | def month_canonicalization_map(): function build_groc_schedule_parser_re (line 180) | def build_groc_schedule_parser_re(): function _parse_number (line 240) | def _parse_number(day): function parse_groc_expression (line 244) | def parse_groc_expression(config, config_context): function valid_cron_scheduler (line 290) | def valid_cron_scheduler(config, config_context): class ScheduleValidator (line 311) | class ScheduleValidator(config_utils.Validator): FILE: tron/config/schema.py function config_object_factory (line 16) | def config_object_factory(name, required=None, optional=None): class ConfigSecretVolume (line 285) | class ConfigSecretVolume(_ConfigSecretVolume): # type: ignore method _asdict (line 286) | def _asdict(self) -> dict: class ExecutorTypes (line 347) | class ExecutorTypes(Enum): FILE: tron/config/static_config.py function load_yaml_file (line 10) | def load_yaml_file() -> None: function build_configuration_watcher (line 14) | def build_configuration_watcher(filename: str, namespace: str) -> config... function get_config_watcher (line 21) | def get_config_watcher() -> config.ConfigurationWatcher: FILE: tron/core/action.py class ActionCommandConfig (line 27) | class ActionCommandConfig(Persistable): method state_data (line 55) | def state_data(self): method copy (line 58) | def copy(self): method from_json (line 62) | def from_json( method to_json (line 108) | def to_json(state_data: dict) -> str: class Action (line 178) | class Action: method is_cleanup (line 195) | def is_cleanup(self): method command (line 199) | def command(self): method from_config (line 203) | def from_config(cls, config: ConfigAction) -> "Action": FILE: tron/core/actiongraph.py class ActionGraph (line 13) | class ActionGraph: method __init__ (line 16) | def __init__( method get_dependencies (line 30) | def get_dependencies(self, action_name: str, include_triggers: bool = ... method names (line 42) | def names(self, include_triggers=False): method expected_runtime (line 49) | def expected_runtime(self): method __getitem__ (line 52) | def __getitem__(self, name): method __eq__ (line 62) | def __eq__(self, other): method __ne__ (line 69) | def __ne__(self, other): FILE: tron/core/actionrun.py class ActionRunFactory (line 64) | class ActionRunFactory: method build_action_run_collection (line 70) | def build_action_run_collection(cls, job_run, action_runner): method action_run_collection_from_state (line 85) | def action_run_collection_from_state( method build_run_for_action (line 106) | def build_run_for_action(cls, job_run, action, action_runner): method action_run_from_state (line 139) | def action_run_from_state(cls, job_run, state_data, cleanup=False): class ActionRunAttempt (line 158) | class ActionRunAttempt(Persistable): method exit (line 169) | def exit(self, exit_status, end_time=None): method display_command (line 175) | def display_command(self): method state_data (line 179) | def state_data(self): method to_json (line 189) | def to_json(state_data: dict) -> str: method from_json (line 216) | def from_json(state_data: str) -> dict[str, Any]: # TODO: use a Typed... method from_state (line 237) | def from_state(cls, state_data): class ActionRun (line 253) | class ActionRun(Observable, Persistable): method __init__ (line 365) | def __init__( method state (line 428) | def state(self) -> str: method id (line 432) | def id(self): method name (line 436) | def name(self): method last_attempt (line 440) | def last_attempt(self): method exit_statuses (line 446) | def exit_statuses(self): method command (line 452) | def command(self): method rendered_command (line 459) | def rendered_command(self): method attempts_from_state (line 465) | def attempts_from_state(cls, state_data, command_config): method from_state (line 496) | def from_state( method start (line 563) | def start(self, original_command: bool = True) -> bool | ActionCommand... method create_attempt (line 601) | def create_attempt(self, original_command=True): method submit_command (line 615) | def submit_command(self, attempt: ActionRunAttempt) -> bool | ActionCo... method stop (line 618) | def stop(self): method kill (line 621) | def kill(self, final=True): method recover (line 624) | def recover(self) -> ActionCommand | None: method _done (line 627) | def _done(self, target: str, exit_status: int | None = 0) -> bool | None: method retry (line 651) | def retry(self, original_command=True): method start_after_delay (line 672) | def start_after_delay(self): method restart (line 678) | def restart(self, original_command: bool = True) -> bool | ActionComma... method fail (line 691) | def fail(self, exit_status=None): method _exit_unsuccessful (line 697) | def _exit_unsuccessful( method triggers_to_emit (line 731) | def triggers_to_emit(self) -> list[str]: method emit_triggers (line 742) | def emit_triggers(self): method rendered_triggers (line 754) | def rendered_triggers(self) -> list[str]: method remaining_triggers (line 759) | def remaining_triggers(self): method success (line 762) | def success(self) -> bool | None: method fail_unknown (line 770) | def fail_unknown(self): method cancel_delay (line 775) | def cancel_delay(self): method state_data (line 783) | def state_data(self): method from_json (line 815) | def from_json( method to_json (line 854) | def to_json(state_data: dict) -> str: method render_template (line 894) | def render_template(self, template): method render_command (line 898) | def render_command(self, command): method is_valid_command (line 907) | def is_valid_command(self, command): method is_done (line 911) | def is_done(self): method is_complete (line 915) | def is_complete(self): method is_broken (line 919) | def is_broken(self): method is_active (line 923) | def is_active(self): method cleanup (line 926) | def cleanup(self): method clear_trigger_timeout (line 933) | def clear_trigger_timeout(self): method setup_subscriptions (line 938) | def setup_subscriptions(self): method trigger_timeout_reached (line 956) | def trigger_timeout_reached(self): method trigger_notify (line 966) | def trigger_notify(self, *_): method is_blocked_on_trigger (line 972) | def is_blocked_on_trigger(self): method clear_end_state (line 975) | def clear_end_state(self): method __getattr__ (line 983) | def __getattr__(self, name: str) -> Callable[[], bool | None] | bool: method __str__ (line 999) | def __str__(self): method transition_and_notify (line 1002) | def transition_and_notify(self, target: str) -> bool | None: class SSHActionRun (line 1009) | class SSHActionRun(ActionRun, Observer): method __init__ (line 1012) | def __init__(self, *args, **kwargs): method submit_command (line 1016) | def submit_command(self, attempt): method stop (line 1026) | def stop(self): method kill (line 1039) | def kill(self, final=True): method build_action_command (line 1052) | def build_action_command(self, attempt): method handle_unknown (line 1063) | def handle_unknown(self): method recover (line 1079) | def recover(self) -> DelayedCall | Literal[True] | None: # type: igno... method do_recover (line 1097) | def do_recover(self, delay: float) -> DelayedCall | Literal[True] | None: method submit_recovery_command (line 1146) | def submit_recovery_command( method handle_action_command_state_change (line 1163) | def handle_action_command_state_change(self, action_command, event, ev... class MesosActionRun (line 1187) | class MesosActionRun(ActionRun, Observer): method _create_mesos_task (line 1190) | def _create_mesos_task( method submit_command (line 1213) | def submit_command(self, attempt): method recover (line 1228) | def recover(self) -> MesosTask | None: method stop (line 1268) | def stop(self): method kill (line 1277) | def kill(self, final=True): method _kill_mesos_task (line 1286) | def _kill_mesos_task(self): method handle_action_command_state_change (line 1311) | def handle_action_command_state_change(self, action_command, event, ev... class KubernetesActionRun (line 1337) | class KubernetesActionRun(ActionRun, Observer): method submit_command (line 1340) | def submit_command(self, attempt: ActionRunAttempt) -> KubernetesTask ... method recover (line 1412) | def recover(self) -> KubernetesTask | None: method stop (line 1500) | def stop(self) -> str | None: method kill (line 1509) | def kill(self, final: bool = True) -> str | None: method _exit_unsuccessful (line 1545) | def _exit_unsuccessful( method handle_action_command_state_change (line 1562) | def handle_action_command_state_change( function min_filter (line 1590) | def min_filter(seq): function eager_all (line 1595) | def eager_all(seq): class ActionRunCollection (line 1599) | class ActionRunCollection: method __init__ (line 1602) | def __init__(self, action_graph: ActionGraph, run_map: dict[str, Actio... method action_runs_for_actions (line 1629) | def action_runs_for_actions(self, actions): method get_action_runs_with_cleanup (line 1632) | def get_action_runs_with_cleanup(self): method get_action_runs (line 1637) | def get_action_runs(self): method update_action_config (line 1642) | def update_action_config(self, action_graph): method cleanup_action_run (line 1654) | def cleanup_action_run(self) -> ActionRun | None: method state_data (line 1658) | def state_data(self): method cleanup_action_state_data (line 1662) | def cleanup_action_state_data(self): method get_startable_action_runs (line 1666) | def get_startable_action_runs(self): method has_startable_action_runs (line 1672) | def has_startable_action_runs(self): method _is_run_blocked (line 1675) | def _is_run_blocked(self, action_run, in_job_only=False): method is_blocked_on_trigger (line 1700) | def is_blocked_on_trigger(self): method is_done (line 1704) | def is_done(self): method is_failed (line 1719) | def is_failed(self): method is_complete_without_cleanup (line 1726) | def is_complete_without_cleanup(self): method names (line 1730) | def names(self): method end_time (line 1734) | def end_time(self): method __str__ (line 1740) | def __str__(self): method __getattr__ (line 1747) | def __getattr__(self, name): method __getitem__ (line 1750) | def __getitem__(self, name): method __contains__ (line 1753) | def __contains__(self, name): method __iter__ (line 1756) | def __iter__(self): method get (line 1759) | def get(self, name): FILE: tron/core/job.py class Error (line 23) | class Error(Exception): class ConfigBuildMismatchError (line 27) | class ConfigBuildMismatchError(Error): class InvalidStartStateError (line 31) | class InvalidStartStateError(Error): class Job (line 40) | class Job(Observable, Observer, Persistable): method __init__ (line 76) | def __init__( method from_json (line 124) | def from_json(state_data: str) -> dict[str, Any]: # TODO: make a Type... method to_json (line 139) | def to_json(state_data: dict) -> str: method from_config (line 148) | def from_config( method watch (line 181) | def watch(self, observable, event=True): method update_from_job (line 188) | def update_from_job(self, job): method update_action_config (line 203) | def update_action_config(self): method status (line 208) | def status(self): method get_name (line 221) | def get_name(self): method get_monitoring (line 224) | def get_monitoring(self): method get_time_zone (line 227) | def get_time_zone(self): method get_runs (line 230) | def get_runs(self): method state_data (line 234) | def state_data(self): method get_job_runs_from_state (line 244) | def get_job_runs_from_state(self, state_data): method build_new_runs (line 256) | def build_new_runs(self, run_time, manual=False): method handle_job_run_state_change (line 268) | def handle_job_run_state_change(self, _job_run, event, event_data=None): method __eq__ (line 284) | def __eq__(self, other): method __ne__ (line 287) | def __ne__(self, other): method __str__ (line 290) | def __str__(self): FILE: tron/core/job_collection.py class JobCollection (line 10) | class JobCollection: method __init__ (line 13) | def __init__(self): method update_from_config (line 25) | def update_from_config(self, job_configs, factory, reconfigure, namesp... method add (line 49) | def add(self, job_scheduler): method move (line 52) | def move(self, old_name, new_name): method update (line 65) | def update(self, new_job_scheduler): method restore_state (line 72) | def restore_state(self, job_state_data, config_action_runner): method get_by_name (line 82) | def get_by_name(self, name): method get_names (line 85) | def get_names(self): method get_jobs (line 88) | def get_jobs(self): method get_job_run_collections (line 91) | def get_job_run_collections(self): method __iter__ (line 94) | def __iter__(self): method __getattr__ (line 97) | def __getattr__(self, name): method __contains__ (line 100) | def __contains__(self, name): FILE: tron/core/job_scheduler.py class JobScheduler (line 17) | class JobScheduler(Observer): method __init__ (line 23) | def __init__(self, job: Job): method restore_state (line 27) | def restore_state(self, job_state_data, config_action_runner): method enable (line 50) | def enable(self): method create_and_schedule_runs (line 58) | def create_and_schedule_runs(self, next_run_time=None): method disable (line 70) | def disable(self): method manual_start (line 75) | def manual_start(self, run_time=None): method schedule_reconfigured (line 83) | def schedule_reconfigured(self): method schedule (line 97) | def schedule(self): method update_from_job_scheduler (line 108) | def update_from_job_scheduler(self, job_scheduler): method _set_callback (line 127) | def _set_callback(self, job_run): method run_job (line 135) | def run_job(self, job_run, run_queued=False): method schedule_termination (line 170) | def schedule_termination(self, job_run): method _queue_or_cancel_active (line 175) | def _queue_or_cancel_active(self, job_run): method handle_job_events (line 184) | def handle_job_events(self, _observable, event, event_data=None): method run_queue_schedule (line 192) | def run_queue_schedule(self): method get_runs_to_schedule (line 206) | def get_runs_to_schedule(self, next_run_time): method update_name (line 216) | def update_name(self, name): method __str__ (line 223) | def __str__(self): method get_name (line 226) | def get_name(self): method get_job (line 229) | def get_job(self): method get_job_runs (line 232) | def get_job_runs(self): method __eq__ (line 235) | def __eq__(self, other): method __ne__ (line 238) | def __ne__(self, other): class JobSchedulerFactory (line 242) | class JobSchedulerFactory: method __init__ (line 245) | def __init__(self, context, output_stream_dir, time_zone, action_runne... method build (line 252) | def build(self, job_config): FILE: tron/core/jobgraph.py class JobGraph (line 13) | class JobGraph: method __init__ (line 18) | def __init__(self, config_container: ConfigContainer, should_validate_... method get_action_graph_for_job (line 77) | def get_action_graph_for_job(self, job_name): method _save_action (line 97) | def _save_action(self, action_name, job_name, config): method _get_required_triggers (line 106) | def _get_required_triggers(self, action_name, triggers, search_up=True): FILE: tron/core/jobrun.py class Error (line 34) | class Error(Exception): function get_job_run_id (line 38) | def get_job_run_id(job_name: str, run_num: int) -> str: class JobRun (line 42) | class JobRun(Observable, Observer, Persistable): method __init__ (line 55) | def __init__( method to_json (line 87) | def to_json(state_data: dict) -> str: method from_json (line 114) | def from_json(state_data: str) -> dict[str, Any]: # TODO: make a Type... method id (line 148) | def id(self): method name (line 152) | def name(self): method for_job (line 157) | def for_job(cls, job, run_num, run_time, node, manual): method from_state (line 181) | def from_state( method state_data (line 213) | def state_data(self): method _get_action_runs (line 225) | def _get_action_runs(self): method _set_action_runs (line 228) | def _set_action_runs(self, run_collection): method _del_action_runs (line 250) | def _del_action_runs(self): method update_action_config (line 260) | def update_action_config(self, action_graph): method seconds_until_run_time (line 264) | def seconds_until_run_time(self): method start (line 272) | def start(self): method _do_start (line 277) | def _do_start(self): method stop (line 284) | def stop(self): method _start_action_runs (line 289) | def _start_action_runs(self): method handle_action_run_state_change (line 302) | def handle_action_run_state_change(self, action_run: ActionRun, event:... method finalize (line 353) | def finalize(self) -> None: method cleanup (line 371) | def cleanup(self): method get_action_run (line 382) | def get_action_run(self, action_name): method log_state_update (line 385) | def log_state_update(self, state: str, action_name: str | None = None)... method state (line 417) | def state(self): method cancel (line 442) | def cancel(self): method __getattr__ (line 445) | def __getattr__(self, name): method __str__ (line 456) | def __str__(self): class JobRunCollection (line 460) | class JobRunCollection: method __init__ (line 472) | def __init__(self, run_limit): method from_config (line 477) | def from_config(cls, job_config): method build_new_run (line 481) | def build_new_run(self, job, run_time, node, manual=False): method cancel_pending (line 492) | def cancel_pending(self): method remove_pending (line 497) | def remove_pending(self): method get_run_by_state (line 503) | def get_run_by_state(self, state): method get_run_by_num (line 507) | def get_run_by_num(self, num): method get_run_by_index (line 511) | def get_run_by_index(self, index): method get_newest (line 518) | def get_newest(self, include_manual=True): method get_pending (line 522) | def get_pending(self): method has_pending (line 527) | def has_pending(self): method get_active (line 530) | def get_active(self, node=None): method get_first_queued (line 534) | def get_first_queued(self, node=None): method get_scheduled (line 539) | def get_scheduled(self): method next_run_num (line 544) | def next_run_num(self): method remove_old_runs (line 550) | def remove_old_runs(self): method get_action_runs (line 558) | def get_action_runs(self, action_name): method get_run_nums (line 561) | def get_run_nums(self): method state_data (line 565) | def state_data(self): method last_success (line 570) | def last_success(self): method next_run (line 574) | def next_run(self): method __iter__ (line 577) | def __iter__(self): method __str__ (line 580) | def __str__(self): function job_runs_from_state (line 587) | def job_runs_from_state( FILE: tron/core/recovery.py function filter_action_runs_needing_recovery (line 11) | def filter_action_runs_needing_recovery(action_runs): function launch_recovery_actionruns_for_job_runs (line 28) | def launch_recovery_actionruns_for_job_runs(job_runs, master_action_runn... FILE: tron/eventbus.py function consume_dequeue (line 14) | def consume_dequeue(queue, func): class EventBus (line 20) | class EventBus: method create (line 24) | def create(log_dir): method start (line 44) | def start(): method shutdown (line 50) | def shutdown(): method publish (line 57) | def publish(event): method subscribe (line 63) | def subscribe(prefix, subscriber, callback): method clear_subscriptions (line 69) | def clear_subscriptions(subscriber): method has_event (line 75) | def has_event(event): method discard (line 81) | def discard(event): method __init__ (line 86) | def __init__(self, log_dir): method _start (line 100) | def _start(self): method _shutdown (line 106) | def _shutdown(self): method _publish (line 112) | def _publish(self, event): method _discard (line 123) | def _discard(self, event: str) -> bool: method _subscribe (line 129) | def _subscribe(self, prefix, subscriber, callback): method _clear_subscriptions (line 133) | def _clear_subscriptions(self, subscriber): method _has_event (line 137) | def _has_event(self, event_id: str) -> bool: method sync_load_log (line 140) | def sync_load_log(self): method sync_save_log (line 147) | def sync_save_log(self, reason: str) -> bool: method sync_loop (line 192) | def sync_loop(self): method sync_process (line 204) | def sync_process(self): method sync_publish (line 226) | def sync_publish(self, event): method sync_subscribe (line 243) | def sync_subscribe(self, prefix_subscriber_cb): method sync_unsubscribe (line 248) | def sync_unsubscribe(self, prefix_sub): method sync_clear_subscriptions (line 262) | def sync_clear_subscriptions(self, subscriber): method sync_notify (line 276) | def sync_notify(self, event_id): FILE: tron/kubernetes.py function combine_volumes (line 46) | def combine_volumes( class KubernetesTask (line 60) | class KubernetesTask(ActionCommand): method __init__ (line 61) | def __init__( method get_event_logger (line 72) | def get_event_logger(self) -> Logger: method report_resources (line 91) | def report_resources(self, decrement: bool = False) -> None: method get_kubernetes_id (line 105) | def get_kubernetes_id(self) -> str: method get_config (line 113) | def get_config(self) -> KubernetesTaskConfig: method log_event_info (line 119) | def log_event_info(self, event: Event) -> None: method handle_event (line 132) | def handle_event(self, event: Event) -> None: class KubernetesCluster (line 291) | class KubernetesCluster: method __init__ (line 292) | def __init__( method connect (line 333) | def connect(self) -> None: method get_runner (line 340) | def get_runner(self, kubeconfig_path: str, queue: PyDeferredQueue) -> ... method handle_next_event (line 372) | def handle_next_event(self, _: None = None) -> None: method process_event (line 400) | def process_event(self, event: Event) -> None: method _handle_control_event (line 411) | def _handle_control_event(self, event: Event) -> None: method _handle_task_event (line 418) | def _handle_task_event(self, event: Event) -> None: method kill (line 446) | def kill(self, task_id: str) -> bool: method stop (line 452) | def stop(self, fail_tasks: bool = False) -> None: method set_enabled (line 474) | def set_enabled(self, is_enabled: bool) -> None: method configure_tasks (line 486) | def configure_tasks(self, default_volumes: list[ConfigVolume] | None) ... method create_task (line 489) | def create_task( method _check_connection (line 572) | def _check_connection(self) -> None: method submit (line 584) | def submit(self, task: KubernetesTask) -> None: method recover (line 616) | def recover(self, task: KubernetesTask) -> None: class KubernetesClusterRepository (line 640) | class KubernetesClusterRepository: method attach (line 658) | def attach(cls, _, observer): method get_cluster (line 662) | def get_cluster(cls, kubeconfig_path: str | None = None) -> Kubernetes... method shutdown (line 682) | def shutdown(cls) -> None: method configure (line 687) | def configure(cls, kubernetes_options: ConfigKubernetes) -> None: FILE: tron/manhole.py function make_manhole (line 8) | def make_manhole(namespace): FILE: tron/mcp.py function apply_master_configuration (line 22) | def apply_master_configuration(mapping, master_config): class MasterControlProgram (line 33) | class MasterControlProgram: method __init__ (line 36) | def __init__(self, working_dir, config_path, boot_time): method shutdown (line 47) | def shutdown(self): method reconfigure (line 51) | def reconfigure(self, namespace=None): method _load_config (line 60) | def _load_config(self, reconfigure=False, namespace_to_reconfigure=None): method _update_metrics (line 69) | def _update_metrics(self) -> None: method initial_setup (line 88) | def initial_setup(self): method apply_config (line 119) | def apply_config(self, config_container, reconfigure=False, namespace_... method build_job_scheduler_factory (line 164) | def build_job_scheduler_factory(self, master_config, job_graph): method update_state_watcher_config (line 178) | def update_state_watcher_config(self, state_config): method set_context_base (line 186) | def set_context_base(self, command_context): method configure_eventbus (line 189) | def configure_eventbus(self, enabled): method get_job_collection (line 197) | def get_job_collection(self): method get_config_manager (line 200) | def get_config_manager(self): method restore_state (line 203) | def restore_state(self, action_runner): method __str__ (line 230) | def __str__(self): FILE: tron/mesos.py function get_clusterman_metrics (line 27) | def get_clusterman_metrics(): function get_mesos_leader (line 46) | def get_mesos_leader(master_address, mesos_master_port): function combine_volumes (line 52) | def combine_volumes(defaults, overrides): function get_secret_from_file (line 63) | def get_secret_from_file(file_path): class MesosClusterRepository (line 72) | class MesosClusterRepository: method attach (line 93) | def attach(cls, _, observer): method get_cluster (line 97) | def get_cluster(cls, master_address=None): method shutdown (line 118) | def shutdown(cls): method configure (line 123) | def configure(cls, mesos_options): method restore_state (line 144) | def restore_state(cls, mesos_state): method save (line 148) | def save(cls, master_address, framework_id): method remove (line 153) | def remove(cls, master_address): class MesosTask (line 159) | class MesosTask(ActionCommand): method __init__ (line 162) | def __init__(self, id, task_config, serializer=None): method get_event_logger (line 185) | def get_event_logger(self): method setup_output_logging (line 197) | def setup_output_logging(self): method get_mesos_id (line 208) | def get_mesos_id(self): method get_config (line 211) | def get_config(self): method report_resources (line 214) | def report_resources(self, decrement=False): method log_event_info (line 220) | def log_event_info(self, event): method handle_event (line 255) | def handle_event(self, event): class MesosCluster (line 314) | class MesosCluster: method __init__ (line 315) | def __init__( method set_enabled (line 350) | def set_enabled(self, is_enabled): method configure_tasks (line 357) | def configure_tasks( method connect (line 367) | def connect(self): method handle_next_event (line 371) | def handle_next_event(self, deferred_result=None): method _check_connection (line 383) | def _check_connection(self): method submit (line 392) | def submit(self, task): method recover (line 428) | def recover(self, task): method create_task (line 445) | def create_task( # type: ignore[no-untyped-def] # this file is not l... method get_runner (line 490) | def get_runner(self, mesos_address, queue): method _process_event (line 529) | def _process_event(self, event): method stop (line 563) | def stop(self, fail_tasks=False): method kill (line 579) | def kill(self, task_id): FILE: tron/metrics.py function get_metric (line 10) | def get_metric(metric_type, name, dimensions, default): function timer (line 17) | def timer(name, delta, dimensions=None): function count (line 22) | def count(name, inc=1, dimensions=None): function meter (line 27) | def meter(name, dimensions=None): function gauge (line 32) | def gauge(name, value, dimensions=None): function histogram (line 37) | def histogram(name, value, dimensions=None): function view_timer (line 42) | def view_timer(timer): function view_counter (line 48) | def view_counter(counter): function view_meter (line 52) | def view_meter(meter): function view_gauge (line 61) | def view_gauge(gauge): function view_histogram (line 65) | def view_histogram(histogram): function view_all_metrics (line 88) | def view_all_metrics(): FILE: tron/node.py class Error (line 37) | class Error(Exception): class ConnectError (line 41) | class ConnectError(Error): class ResultError (line 47) | class ResultError(Error): class NodePoolRepository (line 57) | class NodePoolRepository: method __init__ (line 62) | def __init__(self): method get_instance (line 70) | def get_instance(cls): method filter_by_name (line 75) | def filter_by_name(self, node_configs, node_pool_configs): method update_from_config (line 82) | def update_from_config(cls, node_configs, node_pool_configs, ssh_config): method _update_nodes (line 95) | def _update_nodes( method _update_node_pools (line 107) | def _update_node_pools(self, node_pool_configs): method add_node (line 113) | def add_node(self, node): method get_node (line 117) | def get_node(self, node_name, default=None): method __contains__ (line 120) | def __contains__(self, node): method get_by_name (line 123) | def get_by_name(self, name, default=None): method _get_nodes_by_name (line 126) | def _get_nodes_by_name(self, names): method clear (line 129) | def clear(self): class NodePool (line 134) | class NodePool: method __init__ (line 137) | def __init__(self, nodes, name): method from_config (line 144) | def from_config(cls, node_pool_config, nodes): method from_node (line 148) | def from_node(cls, node): method __eq__ (line 151) | def __eq__(self, other): method __ne__ (line 154) | def __ne__(self, other): method get_name (line 157) | def get_name(self): method get_nodes (line 160) | def get_nodes(self): method next (line 163) | def next(self): method next_round_robin (line 167) | def next_round_robin(self): method disable (line 171) | def disable(self): method get_by_hostname (line 175) | def get_by_hostname(self, hostname): method __str__ (line 180) | def __str__(self): class KnownHosts (line 184) | class KnownHosts(KnownHostsFile): method from_path (line 188) | def from_path(cls, file_path): method get_public_key (line 193) | def get_public_key(self, hostname): class RunState (line 200) | class RunState: method __init__ (line 201) | def __init__(self, action_run): method __repr__ (line 207) | def __repr__(self): function determine_jitter (line 211) | def determine_jitter(count, node_settings): class Node (line 220) | class Node: method __init__ (line 223) | def __init__(self, config, ssh_options, pub_key, node_settings): method hostname (line 245) | def hostname(self): method username (line 249) | def username(self): method port (line 253) | def port(self): method from_config (line 257) | def from_config(cls, node_config, ssh_options, pub_key, node_settings): method get_name (line 260) | def get_name(self): method disable (line 265) | def disable(self): method __eq__ (line 269) | def __eq__(self, other): method __ne__ (line 279) | def __ne__(self, other): method submit_command (line 283) | def submit_command(self, command): method run (line 291) | def run(self, run): method stop (line 337) | def stop(self, command): method _do_run (line 342) | def _do_run(self, run): method _cleanup (line 355) | def _cleanup(self, run): method _connection_idle_timeout (line 366) | def _connection_idle_timeout(self): method _fail_run (line 375) | def _fail_run(self, run, result): method _is_run_id_tracked (line 395) | def _is_run_id_tracked(self, run): method _connect_then_run (line 398) | def _connect_then_run(self, run): method _service_stopped (line 432) | def _service_stopped(self, connection): method _connect (line 475) | def _connect(self): method _open_channel (line 542) | def _open_channel(self, run): method _channel_complete (line 575) | def _channel_complete(self, channel, run): method _channel_complete_unknown (line 594) | def _channel_complete_unknown(self, result, run): method _run_started (line 602) | def _run_started(self, channel, run): method _run_start_error (line 611) | def _run_start_error(self, result, run): method __str__ (line 647) | def __str__(self): method __repr__ (line 654) | def __repr__(self): FILE: tron/prom_metrics.py function timer (line 142) | def timer( FILE: tron/scheduler.py function scheduler_from_config (line 32) | def scheduler_from_config(config, time_zone): function get_jitter (line 75) | def get_jitter(time_delta): function get_jitter_str (line 82) | def get_jitter_str(time_delta): class GeneralScheduler (line 88) | class GeneralScheduler: method __init__ (line 93) | def __init__( method next_run_time (line 137) | def next_run_time(self, start_time): method __str__ (line 155) | def __str__(self): method __eq__ (line 158) | def __eq__(self, other): method __ne__ (line 167) | def __ne__(self, other): method get_jitter (line 170) | def get_jitter(self): method get_name (line 173) | def get_name(self): method get_value (line 176) | def get_value(self): FILE: tron/serialize/filehandler.py class NullFileHandle (line 19) | class NullFileHandle: method write (line 25) | def write(cls, _): method close (line 29) | def close(cls): class FileHandleWrapper (line 33) | class FileHandleWrapper: method __init__ (line 41) | def __init__(self, manager, name): method close (line 48) | def close(self): method close_wrapped (line 52) | def close_wrapped(self): method write (line 59) | def write(self, content): method __enter__ (line 76) | def __enter__(self): method __exit__ (line 79) | def __exit__(self, _exc_type, _exc_val, _exc_tb): class FileHandleManager (line 85) | class FileHandleManager: method __init__ (line 97) | def __init__(self, max_idle_time=60): method set_max_idle_time (line 110) | def set_max_idle_time(cls, max_idle_time): method get_instance (line 115) | def get_instance(cls): method reset (line 121) | def reset(cls): method open (line 127) | def open(self, filename): method cleanup (line 138) | def cleanup(self, time_func=time.time): method remove (line 152) | def remove(self, fh_wrapper): method update (line 157) | def update(self, fh_wrapper): class OutputStreamSerializer (line 167) | class OutputStreamSerializer: method __init__ (line 170) | def __init__(self, base_path): method full_path (line 175) | def full_path(self, filename): method tail (line 179) | def tail(self, filename: str, num_lines: int | None = None) -> list[str]: method open (line 195) | def open(self, filename): class OutputPath (line 201) | class OutputPath: method __init__ (line 209) | def __init__(self, base=".", *path_parts): method append (line 213) | def append(self, part): method __iter__ (line 216) | def __iter__(self): method __str__ (line 220) | def __str__(self): method clone (line 223) | def clone(self, *parts): method delete (line 229) | def delete(self): method __eq__ (line 236) | def __eq__(self, other): method __ne__ (line 239) | def __ne__(self, other): FILE: tron/serialize/runstate/dynamodb_state_store.py class DynamoDBStateStore (line 44) | class DynamoDBStateStore: method __init__ (line 45) | def __init__( method build_key (line 75) | def build_key(self, type: str, iden: str) -> str: method restore (line 81) | def restore(self, keys: list[str]) -> dict[str, Any]: method chunk_keys (line 94) | def chunk_keys(self, keys: Sequence[T]) -> list[Sequence[T]]: method _calculate_backoff_delay (line 103) | def _calculate_backoff_delay(self, attempt: int) -> int: method _get_items (line 111) | def _get_items(self, table_keys: list[dict[str, Any]]) -> list[dict[st... method _get_first_partitions (line 167) | def _get_first_partitions(self, keys: list[str]) -> list[dict[str, Any]]: method _get_remaining_partitions (line 171) | def _get_remaining_partitions(self, items: list) -> list[dict[str, Any]]: method _merge_items (line 186) | def _merge_items(self, first_items: list[dict[str, Any]], remaining_it... method save (line 219) | def save(self, key_value_pairs: list[tuple[str, dict[str, Any] | None]... method _consume_save_queue (line 237) | def _consume_save_queue(self) -> None: method get_type_from_key (line 288) | def get_type_from_key(self, key: str) -> str: method _serialize_item (line 292) | def _serialize_item(self, key: Literal[runstate.JOB_STATE, runstate.JO... method _deserialize_item (line 309) | def _deserialize_item(self, key: str, state: str) -> dict[str, Any]: method _save_loop (line 325) | def _save_loop(self) -> None: method __setitem__ (line 341) | def __setitem__(self, key: str, value: tuple[bytes, bytes | None]) -> ... method _delete_item (line 422) | def _delete_item(self, key: str) -> None: method _get_num_of_partitions (line 441) | def _get_num_of_partitions(self, key: str) -> tuple[int, int]: method cleanup (line 460) | def cleanup(self) -> None: FILE: tron/serialize/runstate/shelvestore.py class Py2Shelf (line 17) | class Py2Shelf(shelve.Shelf): method __init__ (line 18) | def __init__(self, filename, flag="c", protocol=2, writeback=False): method __getitem__ (line 25) | def __getitem__(self, key): method __setitem__ (line 38) | def __setitem__(self, key, value): method delete (line 45) | def delete(self, key): class ShelveKey (line 53) | class ShelveKey: method __init__ (line 56) | def __init__(self, type, iden): method key (line 65) | def key(self): method __str__ (line 68) | def __str__(self): method __eq__ (line 71) | def __eq__(self, other): method __hash__ (line 74) | def __hash__(self): class ShelveStateStore (line 78) | class ShelveStateStore: method __init__ (line 81) | def __init__(self, filename): method build_key (line 85) | def build_key(self, type: str, iden: str) -> ShelveKey: method save (line 88) | def save(self, key_value_pairs): method restore (line 97) | def restore(self, keys: list[ShelveKey]) -> dict[ShelveKey, Any]: method cleanup (line 104) | def cleanup(self): method __repr__ (line 107) | def __repr__(self): FILE: tron/serialize/runstate/statemanager.py class VersionMismatchError (line 24) | class VersionMismatchError(ValueError): class PersistenceStoreError (line 28) | class PersistenceStoreError(ValueError): class PersistenceManagerFactory (line 32) | class PersistenceManagerFactory: method from_config (line 36) | def from_config(cls, persistence_config): class StateSaveBuffer (line 58) | class StateSaveBuffer: method __init__ (line 63) | def __init__(self, buffer_size): method save (line 68) | def save(self, key, state_data): method __iter__ (line 75) | def __iter__(self): class PersistentStateManager (line 81) | class PersistentStateManager: method __init__ (line 103) | def __init__(self, persistence_impl, buffer): method restore (line 109) | def restore(self, job_names: list[str]) -> dict[str, Any]: method _restore_runs_for_job (line 136) | def _restore_runs_for_job(self, job_name: str, job_state: dict[str, An... method _keys_for_items (line 152) | def _keys_for_items(self, item_type, names): method _restore_dicts (line 158) | def _restore_dicts(self, item_type: str, items: list[str]) -> dict[str... method delete (line 164) | def delete(self, type_enum, name): method save (line 169) | def save(self, type_enum, name, state_data): method _save_from_buffer (line 179) | def _save_from_buffer(self): method cleanup (line 192) | def cleanup(self): method _timeit (line 197) | def _timeit(self): method disabled (line 205) | def disabled(self): class NullStateManager (line 214) | class NullStateManager: method cleanup (line 218) | def cleanup(): method disabled (line 222) | def disabled(cls): method __enter__ (line 225) | def __enter__(self): method __exit__ (line 228) | def __exit__(self, *args): class StateChangeWatcher (line 232) | class StateChangeWatcher(observer.Observer): method __init__ (line 235) | def __init__(self): method update_from_config (line 239) | def update_from_config(self, state_config): method handler (line 251) | def handler(self, observable, event, event_data=None): method save_job (line 270) | def save_job(self, job): method save_job_run (line 273) | def save_job_run(self, job_run): method delete_job_run (line 276) | def delete_job_run(self, job_run): method save_frameworks (line 281) | def save_frameworks(self, clusters): method _save_object (line 284) | def _save_object(self, state_type, obj): method shutdown (line 289) | def shutdown(self): method disabled (line 293) | def disabled(self): method restore (line 296) | def restore(self, jobs: list[str]) -> dict[str, Any]: FILE: tron/serialize/runstate/yamlstore.py class YamlStateStore (line 21) | class YamlStateStore: method __init__ (line 22) | def __init__(self, filename): method build_key (line 26) | def build_key(self, type, iden): method restore (line 29) | def restore(self, keys): method save (line 40) | def save(self, key_value_pairs): method _delete_from_buffer (line 48) | def _delete_from_buffer(self, key): method _write_buffer (line 55) | def _write_buffer(self): method cleanup (line 59) | def cleanup(self): method __repr__ (line 62) | def __repr__(self): FILE: tron/ssh.py class Error (line 25) | class Error(Exception): class ChannelClosedEarlyError (line 29) | class ChannelClosedEarlyError(Error): class SSHAuthOptions (line 36) | class SSHAuthOptions: method __init__ (line 41) | def __init__(self, identitys, use_agent): method from_config (line 46) | def from_config(cls, ssh_config): method __getitem__ (line 49) | def __getitem__(self, item): method __eq__ (line 54) | def __eq__(self, other): method __ne__ (line 57) | def __ne__(self, other): method __str__ (line 60) | def __str__(self): class NoPasswordAuthClient (line 65) | class NoPasswordAuthClient(default.SSHUserAuthClient): method getGenericAnswers (line 71) | def getGenericAnswers(self, name, instruction, prompts): class ClientTransport (line 82) | class ClientTransport(transport.SSHClientTransport): method __init__ (line 86) | def __init__(self, username, options, expected_pub_key): method verifyHostKey (line 91) | def verifyHostKey(self, public_key, fingerprint): method connectionSecure (line 102) | def connectionSecure(self): class ClientConnection (line 113) | class ClientConnection(connection.SSHConnection): method setToFromStrings (line 118) | def setToFromStrings(self): method serviceStarted (line 130) | def serviceStarted(self): method serviceStopped (line 137) | def serviceStopped(self): method channelClosed (line 143) | def channelClosed(self, channel): method ssh_CHANNEL_REQUEST (line 155) | def ssh_CHANNEL_REQUEST(self, packet): class ExecChannel (line 175) | class ExecChannel(channel.SSHChannel): method __init__ (line 185) | def __init__(self, *args, **kwargs): method channelOpen (line 192) | def channelOpen(self, data): method addOutputCallback (line 217) | def addOutputCallback(self, output_callback): method addErrorCallback (line 220) | def addErrorCallback(self, error_callback): method addEndCallback (line 223) | def addEndCallback(self, end_callback): method openFailed (line 226) | def openFailed(self, reason): method _cbExecSendRequest (line 231) | def _cbExecSendRequest(self, ignored): method request_exit_status (line 234) | def request_exit_status(self, data): method dataReceived (line 244) | def dataReceived(self, data): method extReceived (line 249) | def extReceived(self, dataType, data): method getStdout (line 254) | def getStdout(self): method closed (line 257) | def closed(self): FILE: tron/trondaemon.py function setup_logging (line 28) | def setup_logging(options): function no_daemon_context (line 60) | def no_daemon_context(workdir, lockfile=None, signal_map={}): class TronDaemon (line 65) | class TronDaemon: method __init__ (line 68) | def __init__(self, options): method run (line 78) | def run(self, boot_time): method _run_manhole (line 109) | def _run_manhole(self): method _run_www_api (line 121) | def _run_www_api(self): method _run_mcp (line 129) | def _run_mcp(self, boot_time=None): method _run_reactor (line 144) | def _run_reactor(self): method _handle_shutdown (line 153) | def _handle_shutdown(self, sig_num, stack_frame): method _handle_reconfigure (line 169) | def _handle_reconfigure(self, _signal_number, _stack_frame): method _handle_debug (line 173) | def _handle_debug(self, _signal_number, _stack_frame): FILE: tron/utils/__init__.py function maybe_decode (line 11) | def maybe_decode(maybe_string): function maybe_encode (line 18) | def maybe_encode(maybe_bytes): function next_or_none (line 24) | def next_or_none(iterable): function flock (line 32) | def flock(fd): function chdir (line 53) | def chdir(path): function signals (line 63) | def signals(signal_map): FILE: tron/utils/collections.py class MappingCollection (line 7) | class MappingCollection(dict): method __init__ (line 23) | def __init__(self, item_name): method filter_by_name (line 27) | def filter_by_name(self, names): method remove (line 31) | def remove(self, name): method contains_item (line 38) | def contains_item(self, item, handle_update_func): method add (line 44) | def add(self, item, update_func): method replace (line 52) | def replace(self, item): method remove_item (line 55) | def remove_item(self, item): FILE: tron/utils/crontab.py function convert_predefined (line 17) | def convert_predefined(line: str) -> str: class FieldParser (line 27) | class FieldParser: method normalize (line 41) | def normalize(self, source: str) -> str: method get_groups (line 44) | def get_groups(self, source: str) -> list[str]: method parse (line 47) | def parse(self, source: str) -> list[int] | list[int | str] | None: method get_match_groups (line 63) | def get_match_groups(self, source: str) -> dict: method get_values (line 69) | def get_values(self, source: str) -> list[int | str]: method get_value_range (line 79) | def get_value_range(self, match_groups: dict) -> tuple[int, int]: method get_range (line 91) | def get_range(self, min_value: int, max_value: int, step: int) -> list... method validate_bounds (line 99) | def validate_bounds(self, value: str) -> int: class MinuteFieldParser (line 107) | class MinuteFieldParser(FieldParser): class HourFieldParser (line 112) | class HourFieldParser(FieldParser): class MonthdayFieldParser (line 117) | class MonthdayFieldParser(FieldParser): method get_values (line 121) | def get_values(self, source: str) -> list[int | str]: class MonthFieldParser (line 130) | class MonthFieldParser(FieldParser): method normalize (line 135) | def normalize(self, month: str) -> str: class WeekdayFieldParser (line 143) | class WeekdayFieldParser(FieldParser): method normalize (line 148) | def normalize(self, day_of_week: str) -> str: function parse_crontab (line 164) | def parse_crontab(line: str) -> dict: FILE: tron/utils/logreader.py class S3LogsReader (line 23) | class S3LogsReader: # type: ignore[no-redef] # stub class for internal... method __init__ (line 24) | def __init__(self, superregion: str) -> None: method get_log_reader (line 27) | def get_log_reader( function get_superregion (line 38) | def get_superregion() -> str: function decompose_action_id (line 48) | def decompose_action_id(action_run_id: str, paasta_cluster: str) -> tupl... class PaaSTALogs (line 74) | class PaaSTALogs: method __init__ (line 75) | def __init__(self, component: str, paasta_cluster: str, action_run_id:... method fetch (line 91) | def fetch(self, stream: Iterator[str], max_lines: int | None) -> None: method sorted_lines (line 119) | def sorted_lines(self) -> list[str]: function read_log_stream_for_action_run (line 124) | def read_log_stream_for_action_run( FILE: tron/utils/observer.py class Observable (line 7) | class Observable: method __init__ (line 13) | def __init__(self): method attach (line 16) | def attach(self, watch_spec, observer): method clear_observers (line 31) | def clear_observers(self, watch_spec=None): method remove_observer (line 41) | def remove_observer(self, observer): method _get_handlers_for_event (line 47) | def _get_handlers_for_event(self, event): method notify (line 51) | def notify(self, event, event_data=None): class Observer (line 61) | class Observer: method watch (line 67) | def watch(self, observable, event=True): method watch_all (line 71) | def watch_all(self, observables, event=True): method handler (line 75) | def handler(self, observable, event): method stop_watching (line 79) | def stop_watching(self, observable): FILE: tron/utils/persistable.py class Persistable (line 6) | class Persistable(ABC): method to_json (line 9) | def to_json(state_data: dict[Any, Any]) -> str: method from_json (line 14) | def from_json(state_data: str) -> dict[str, Any]: FILE: tron/utils/proxy.py class CollectionProxy (line 4) | class CollectionProxy: method __init__ (line 7) | def __init__(self, obj_list_getter, definition_list=None): method add (line 14) | def add(self, attribute_name, aggregate_func, is_callable): method perform (line 26) | def perform(self, name): function func_proxy (line 45) | def func_proxy(name, func): function attr_proxy (line 49) | def attr_proxy(name, func): class AttributeProxy (line 53) | class AttributeProxy: method __init__ (line 56) | def __init__(self, dest_obj, attribute_list=None): method add (line 60) | def add(self, attribute_name): method perform (line 63) | def perform(self, attribute_name): FILE: tron/utils/queue.py class PyDeferredQueue (line 6) | class PyDeferredQueue(defer.DeferredQueue): method __init__ (line 11) | def __init__(self, *args, **kwargs): method put (line 14) | def put(self, item, block=None, timeout=None): method get (line 24) | def get(self, block=None, timeout=None): FILE: tron/utils/state.py class Machine (line 8) | class Machine: method from_machine (line 10) | def from_machine(machine, initial=None, state=None): method __init__ (line 21) | def __init__(self, initial: str, **transitions: Mapping[str, str]) -> ... method set_state (line 39) | def set_state(self, state): method reset (line 44) | def reset(self): method check (line 47) | def check(self, transition): method transition (line 54) | def transition(self, transition): method __repr__ (line 67) | def __repr__(self): FILE: tron/utils/timeutils.py function current_time (line 7) | def current_time(tz=None): function current_timestamp (line 12) | def current_timestamp(): function delta_total_seconds (line 17) | def delta_total_seconds(td): function macro_timedelta (line 23) | def macro_timedelta(start_date, years=0, months=0, days=0, hours=0, minu... function duration (line 56) | def duration(start_time, end_time=None): class DateArithmetic (line 69) | class DateArithmetic: method parse (line 89) | def parse(cls, date_str, dt=None): FILE: tron/utils/trontimespec.py function get_timezone (line 19) | def get_timezone(timezone_string): function to_timezone (line 38) | def to_timezone(t, tzinfo): function naive_as_timezone (line 67) | def naive_as_timezone(t, tzinfo): function get_time (line 82) | def get_time(time_string): function validate_spec (line 107) | def validate_spec(source, value_range, type, default=None, allow_last=Fa... class TimeSpecification (line 129) | class TimeSpecification: method __init__ (line 134) | def __init__( method next_day (line 182) | def next_day(self, first_day, year, month): method next_month (line 211) | def next_month(self, start_date): method next_time (line 224) | def next_time(self, start_date, is_start_day): method get_match (line 241) | def get_match(self, start): method handle_timezone (line 275) | def handle_timezone(self, out, tzinfo): method __eq__ (line 280) | def __eq__(self, other): method __ne__ (line 293) | def __ne__(self, other): FILE: tron/utils/twistedutils.py class Error (line 6) | class Error(Exception): function _cancel (line 10) | def _cancel(deferred): function defer_timeout (line 20) | def defer_timeout(deferred, timeout): FILE: tron/yaml.py function dump (line 4) | def dump(*args, **kwargs): function load (line 9) | def load(*args, **kwargs): function load_all (line 14) | def load_all(*args, **kwargs): FILE: tronweb/js/codemirror.js function CodeMirror (line 40) | function CodeMirror(place, options) { function makeDisplay (line 92) | function makeDisplay(place, docStart) { function loadMode (line 194) | function loadMode(cm) { function wrappingChanged (line 206) | function wrappingChanged(cm) { function estimateHeight (line 220) | function estimateHeight(cm) { function estimateLineHeights (line 233) | function estimateLineHeights(cm) { function keyMapChanged (line 241) | function keyMapChanged(cm) { function themeChanged (line 247) | function themeChanged(cm) { function guttersChanged (line 253) | function guttersChanged(cm) { function updateGutters (line 258) | function updateGutters(cm) { function lineLength (line 272) | function lineLength(doc, line) { function computeMaxLength (line 290) | function computeMaxLength(cm) { function setGuttersForLineNumbers (line 306) | function setGuttersForLineNumbers(options) { function updateScrollbars (line 322) | function updateScrollbars(d /* display */, docHeight) { function visibleLines (line 349) | function visibleLines(display, doc, viewPort) { function alignHorizontally (line 360) | function alignHorizontally(cm) { function maybeUpdateLineNumberWidth (line 372) | function maybeUpdateLineNumberWidth(cm) { function lineNumberFor (line 389) | function lineNumberFor(options, i) { function compensateForHScroll (line 392) | function compensateForHScroll(display) { function updateDisplay (line 398) | function updateDisplay(cm, changes, viewPort) { function updateDisplayInner (line 415) | function updateDisplayInner(cm, changes, viewPort) { function updateViewOffset (line 527) | function updateViewOffset(cm) { function computeIntact (line 533) | function computeIntact(intact, changes) { function getDimensions (line 554) | function getDimensions(cm) { function patchDisplay (line 567) | function patchDisplay(cm, from, to, intact, updateNumbersFrom) { function buildLineElement (line 631) | function buildLineElement(cm, line, lineNo, dims, reuse) { function positionLineWidget (line 707) | function positionLineWidget(widget, node, wrap, dims) { function updateSelection (line 727) | function updateSelection(cm) { function updateSelectionCursor (line 749) | function updateSelectionCursor(cm) { function updateSelectionRange (line 765) | function updateSelectionRange(cm) { function restartBlink (line 845) | function restartBlink(cm) { function startWorker (line 858) | function startWorker(cm, time) { function highlightWorker (line 863) | function highlightWorker(cm) { function findStartLine (line 903) | function findStartLine(cm, n) { function getStateBefore (line 918) | function getStateBefore(cm, n) { function paddingTop (line 935) | function paddingTop(display) {return display.lineSpace.offsetTop;} function paddingVert (line 936) | function paddingVert(display) {return display.mover.offsetHeight - displ... function paddingLeft (line 937) | function paddingLeft(display) { function measureChar (line 942) | function measureChar(cm, line, ch, data) { function findCachedMeasurement (line 956) | function findCachedMeasurement(cm, line) { function measureLine (line 967) | function measureLine(cm, line) { function measureLineInner (line 983) | function measureLineInner(cm, line) { function measureLineWidth (line 1048) | function measureLineWidth(cm, line) { function clearCaches (line 1063) | function clearCaches(cm) { function intoCoordSystem (line 1071) | function intoCoordSystem(cm, lineObj, rect, context) { function fromCoordSystem (line 1092) | function fromCoordSystem(cm, coords, context) { function charCoords (line 1110) | function charCoords(cm, pos, context, lineObj) { function cursorCoords (line 1115) | function cursorCoords(cm, pos, context, lineObj, measurement) { function PosMaybeOutside (line 1151) | function PosMaybeOutside(line, ch, outside) { function coordsChar (line 1158) | function coordsChar(cm, x, y) { function coordsCharInner (line 1179) | function coordsCharInner(cm, lineObj, lineNo, x, y) { function textHeight (line 1220) | function textHeight(display) { function charWidth (line 1239) | function charWidth(display) { function startOperation (line 1257) | function startOperation(cm) { function endOperation (line 1273) | function endOperation(cm) { function operation (line 1328) | function operation(cm1, f) { function docOperation (line 1337) | function docOperation(f) { function runInOp (line 1346) | function runInOp(cm, f) { function regChange (line 1354) | function regChange(cm, from, to, lendiff) { function slowPoll (line 1362) | function slowPoll(cm) { function fastPoll (line 1370) | function fastPoll(cm) { function readInput (line 1386) | function readInput(cm) { function resetInput (line 1420) | function resetInput(cm, user) { function focusInput (line 1433) | function focusInput(cm) { function isReadOnly (line 1438) | function isReadOnly(cm) { function registerEventHandlers (line 1444) | function registerEventHandlers(cm) { function eventInWidget (line 1544) | function eventInWidget(display, e) { function posFromMouse (line 1552) | function posFromMouse(cm, e, liberal) { function onMouseDown (line 1567) | function onMouseDown(e) { function onDrop (line 1705) | function onDrop(e) { function clickInGutter (line 1749) | function clickInGutter(cm, e) { function onDragStart (line 1774) | function onDragStart(cm, e) { function setScrollTop (line 1804) | function setScrollTop(cm, val) { function setScrollLeft (line 1812) | function setScrollLeft(cm, val, isScroller) { function onScrollWheel (line 1842) | function onScrollWheel(cm, e) { function doHandleBinding (line 1906) | function doHandleBinding(cm, bound, dropShift) { function allKeyMaps (line 1926) | function allKeyMaps(cm) { function handleKeyBinding (line 1934) | function handleKeyBinding(cm, e) { function handleCharBinding (line 1968) | function handleCharBinding(cm, e, ch) { function onKeyDown (line 1979) | function onKeyDown(e) { function onKeyPress (line 1997) | function onKeyPress(e) { function onFocus (line 2012) | function onFocus(cm) { function onBlur (line 2024) | function onBlur(cm) { function onContextMenu (line 2035) | function onContextMenu(cm, e) { function changeEnd (line 2090) | function changeEnd(change) { function clipPostChange (line 2096) | function clipPostChange(doc, change, pos) { function computeSelAfterChange (line 2112) | function computeSelAfterChange(doc, change, hint) { function filterChange (line 2135) | function filterChange(doc, change) { function makeChange (line 2159) | function makeChange(doc, change, selUpdate, ignoreReadOnly) { function makeChangeNoReadonly (line 2183) | function makeChangeNoReadonly(doc, change, selUpdate) { function makeChangeFromHistory (line 2199) | function makeChangeFromHistory(doc, type) { function shiftDoc (line 2231) | function shiftDoc(doc, distance) { function makeChangeSingleDoc (line 2239) | function makeChangeSingleDoc(doc, change, selAfter, spans) { function makeChangeSingleDocInEditor (line 2269) | function makeChangeSingleDocInEditor(cm, change, spans, selAfter) { function replaceRange (line 2318) | function replaceRange(doc, code, from, to, origin) { function Pos (line 2327) | function Pos(line, ch) { function posEq (line 2333) | function posEq(a, b) {return a.line == b.line && a.ch == b.ch;} function posLess (line 2334) | function posLess(a, b) {return a.line < b.line || (a.line == b.line && a... function copyPos (line 2335) | function copyPos(x) {return Pos(x.line, x.ch);} function clipLine (line 2339) | function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.fi... function clipPos (line 2340) | function clipPos(doc, pos) { function clipToLen (line 2346) | function clipToLen(pos, linelen) { function isLine (line 2352) | function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.si... function extendSelection (line 2356) | function extendSelection(doc, pos, other, bias) { function filterSelectionChange (line 2375) | function filterSelectionChange(doc, anchor, head) { function setSelection (line 2386) | function setSelection(doc, anchor, head, bias, checkAtomic) { function reCheckSelection (line 2414) | function reCheckSelection(cm) { function skipAtomic (line 2418) | function skipAtomic(doc, pos, bias, mayClear) { function scrollCursorIntoView (line 2470) | function scrollCursorIntoView(cm) { function scrollPosIntoView (line 2488) | function scrollPosIntoView(cm, pos, margin) { function scrollIntoView (line 2506) | function scrollIntoView(cm, x1, y1, x2, y2) { function calculateScrollPos (line 2512) | function calculateScrollPos(cm, x1, y1, x2, y2) { function updateScrollPos (line 2534) | function updateScrollPos(cm, left, top) { function addToScrollPos (line 2538) | function addToScrollPos(cm, left, top) { function indentLine (line 2547) | function indentLine(cm, n, how, aggressive) { function changeLine (line 2585) | function changeLine(cm, handle, op) { function findPosH (line 2595) | function findPosH(doc, pos, dir, unit, visually) { function findPosV (line 2640) | function findPosV(cm, pos, dir, unit) { function findWordAt (line 2657) | function findWordAt(line, pos) { function selectLine (line 2671) | function selectLine(cm, line) { function interpret (line 2970) | function interpret(val) { function option (line 3011) | function option(name, deflt, handle, notOnInit) { function copyState (line 3157) | function copyState(mode, state) { function startState (line 3170) | function startState(mode, a1, a2) { function getKeyMap (line 3306) | function getKeyMap(val) { function lookupKey (line 3311) | function lookupKey(name, maps, handle) { function isModifierKey (line 3335) | function isModifierKey(event) { function keyName (line 3339) | function keyName(event, noShift) { function save (line 3372) | function save() {textarea.value = cm.getValue();} function StringStream (line 3414) | function StringStream(string, tabSize) { function TextMarker (line 3480) | function TextMarker(doc, type) { function markText (line 3564) | function markText(doc, from, to, options, type) { function SharedTextMarker (line 3621) | function SharedTextMarker(markers, primary) { function markTextShared (line 3647) | function markTextShared(doc, from, to, options, type) { function getMarkedSpanFor (line 3664) | function getMarkedSpanFor(spans, marker) { function removeMarkedSpan (line 3670) | function removeMarkedSpan(spans, span) { function addMarkedSpan (line 3675) | function addMarkedSpan(line, span) { function markedSpansBefore (line 3680) | function markedSpansBefore(old, startCh, isInsert) { function markedSpansAfter (line 3694) | function markedSpansAfter(old, endCh, isInsert) { function stretchSpansOverChange (line 3708) | function stretchSpansOverChange(doc, change) { function mergeOldSpans (line 3764) | function mergeOldSpans(doc, change) { function removeReadOnlyRanges (line 3786) | function removeReadOnlyRanges(doc, from, to) { function collapsedSpanAt (line 3814) | function collapsedSpanAt(line, ch) { function collapsedSpanAtStart (line 3826) | function collapsedSpanAtStart(line) { return collapsedSpanAt(line, -1); } function collapsedSpanAtEnd (line 3827) | function collapsedSpanAtEnd(line) { return collapsedSpanAt(line, line.te... function visualLine (line 3829) | function visualLine(doc, line) { function lineIsHidden (line 3836) | function lineIsHidden(doc, line) { function lineIsHiddenInner (line 3846) | function lineIsHiddenInner(doc, line, span) { function detachMarkedSpans (line 3861) | function detachMarkedSpans(line) { function attachMarkedSpans (line 3869) | function attachMarkedSpans(line, spans) { function widgetOperation (line 3884) | function widgetOperation(f) { function widgetHeight (line 3911) | function widgetHeight(widget) { function addLineWidget (line 3918) | function addLineWidget(cm, handle, node, options) { function makeLine (line 3938) | function makeLine(text, markedSpans, estimateHeight) { function updateLine (line 3945) | function updateLine(line, text, markedSpans, estimateHeight) { function cleanUpLine (line 3956) | function cleanUpLine(line) { function runMode (line 3964) | function runMode(cm, text, mode, state, f) { function highlightLine (line 3988) | function highlightLine(cm, line, state) { function getLineStyles (line 4027) | function getLineStyles(cm, line) { function processLine (line 4035) | function processLine(cm, line, state) { function styleToClass (line 4046) | function styleToClass(style) { function lineContent (line 4052) | function lineContent(cm, realLine, measure) { function buildToken (line 4107) | function buildToken(builder, text, style, startStyle, endStyle) { function buildTokenMeasure (line 4145) | function buildTokenMeasure(builder, text, style, startStyle, endStyle) { function buildTokenSplitSpaces (line 4170) | function buildTokenSplitSpaces(inner) { function buildCollapsedSpan (line 4182) | function buildCollapsedSpan(builder, size, widget) { function insertLineContent (line 4196) | function insertLineContent(line, builder, styles) { function updateDoc (line 4256) | function updateDoc(doc, change, markedSpans, selAfter, estimateHeight) { function LeafChunk (line 4302) | function LeafChunk(lines) { function BranchChunk (line 4337) | function BranchChunk(children) { function linkedDocs (line 4664) | function linkedDocs(doc, f, sharedHistOnly) { function attachDoc (line 4678) | function attachDoc(cm, doc) { function getLine (line 4691) | function getLine(chunk, n) { function getBetween (line 4703) | function getBetween(doc, start, end) { function getLines (line 4714) | function getLines(doc, from, to) { function updateLineHeight (line 4720) | function updateLineHeight(line, height) { function lineNo (line 4725) | function lineNo(line) { function lineAtHeight (line 4737) | function lineAtHeight(chunk, h) { function heightAtLine (line 4756) | function heightAtLine(cm, lineObj) { function getOrder (line 4775) | function getOrder(line) { function makeHistory (line 4783) | function makeHistory() { function attachLocalSpans (line 4797) | function attachLocalSpans(doc, change, from, to) { function historyChangeFromChange (line 4806) | function historyChangeFromChange(doc, change) { function addToHistory (line 4813) | function addToHistory(doc, change, selAfter, opId) { function removeClearedSpans (line 4853) | function removeClearedSpans(spans) { function getOldSpans (line 4862) | function getOldSpans(doc, change) { function copyHistoryArray (line 4872) | function copyHistoryArray(events, newGroup) { function rebaseHistSel (line 4893) | function rebaseHistSel(pos, from, to, diff) { function rebaseHistArray (line 4909) | function rebaseHistArray(array, from, to, diff) { function rebaseHist (line 4938) | function rebaseHist(hist, change) { function stopMethod (line 4946) | function stopMethod() {e_stop(this);} function addStop (line 4948) | function addStop(event) { function e_preventDefault (line 4953) | function e_preventDefault(e) { function e_stopPropagation (line 4957) | function e_stopPropagation(e) { function e_stop (line 4961) | function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);} function e_target (line 4966) | function e_target(e) {return e.target || e.srcElement;} function e_button (line 4967) | function e_button(e) { function on (line 4980) | function on(emitter, type, f) { function off (line 4992) | function off(emitter, type, f) { function signal (line 5005) | function signal(emitter, type /*, values...*/) { function signalLater (line 5013) | function signalLater(emitter, type /*, values...*/) { function fireDelayed (line 5027) | function fireDelayed() { function hasHandler (line 5034) | function hasHandler(emitter, type) { function Delayed (line 5050) | function Delayed() {this.id = null;} function countColumn (line 5055) | function countColumn(string, end, tabSize, startIndex, startValue) { function spaceStr (line 5069) | function spaceStr(n) { function lst (line 5075) | function lst(arr) { return arr[arr.length-1]; } function selectInput (line 5077) | function selectInput(node) { function indexOf (line 5084) | function indexOf(collection, elt) { function createObj (line 5091) | function createObj(base, props) { function copyObj (line 5099) | function copyObj(obj, target) { function emptyArray (line 5105) | function emptyArray(size) { function bind (line 5110) | function bind(f) { function isWordChar (line 5116) | function isWordChar(ch) { function isEmpty (line 5121) | function isEmpty(obj) { function elt (line 5130) | function elt(tag, content, className, style) { function removeChildren (line 5139) | function removeChildren(e) { function removeChildrenAndAdd (line 5145) | function removeChildrenAndAdd(parent, e) { function setTextContent (line 5149) | function setTextContent(e, str) { function getRect (line 5156) | function getRect(node) { function scrollbarWidth (line 5185) | function scrollbarWidth(measure) { function zeroWidthElement (line 5195) | function zeroWidthElement(measure) { function iterateBidiSections (line 5265) | function iterateBidiSections(order, from, to, f) { function bidiLeft (line 5274) | function bidiLeft(part) { return part.level % 2 ? part.to : part.from; } function bidiRight (line 5275) | function bidiRight(part) { return part.level % 2 ? part.from : part.to; } function lineLeft (line 5277) | function lineLeft(line) { var order = getOrder(line); return order ? bid... function lineRight (line 5278) | function lineRight(line) { function lineStart (line 5284) | function lineStart(cm, lineN) { function lineEnd (line 5292) | function lineEnd(cm, lineN) { function moveVisually (line 5307) | function moveVisually(line, start, dir, byUnit) { function moveLogically (line 5343) | function moveLogically(line, start, dir, byUnit) { function charType (line 5377) | function charType(code) { FILE: tronweb/js/underscore.string.js function get_type (line 59) | function get_type(variable) {