taskgraph.test package

Submodules

taskgraph.test.test_create module

class taskgraph.test.test_create.TestCreate(methodName='runTest')

Bases: unittest.case.TestCase

fake_create_task(session, task_id, label, task_def)
setUp()
tearDown()
test_create_task_without_dependencies()

a task with no dependencies depends on the decision task

test_create_tasks()
test_create_tasks_fails_if_create_fails(*args, **keywargs)

creat_tasks fails if a single create_task call fails

taskgraph.test.test_cron_util module

class taskgraph.test.test_cron_util.TestMatchUtc(methodName='runTest')

Bases: unittest.case.TestCase

test_hour_minute()
test_hour_only()
test_invalid_minute()
test_minute_only()
test_zeroes()

taskgraph.test.test_decision module

class taskgraph.test.test_decision.TestDecision(methodName='runTest')

Bases: unittest.case.TestCase

test_write_artifact_json()
test_write_artifact_yml()
class taskgraph.test.test_decision.TestGetDecisionParameters(methodName='runTest')

Bases: unittest.case.TestCase

setUp()
test_no_email_owner()
test_simple_options()
test_try_options()
test_try_task_config()
ttc_file = u'/builds/worker/checkouts/gecko/try_task_config.json'

taskgraph.test.test_files_changed module

class taskgraph.test.test_files_changed.FakeResponse
json()
class taskgraph.test.test_files_changed.TestCheck(methodName='runTest')

Bases: unittest.case.TestCase

setUp()
test_check_match()
test_check_no_match()
test_check_no_params()
class taskgraph.test.test_files_changed.TestGetChangedFiles(methodName='runTest')

Bases: unittest.case.TestCase

setUp()
tearDown()
test_get_changed_files()

Get_changed_files correctly gets the list of changed files in a push. This tests against the production hg.mozilla.org so that it will detect any changes in the format of the returned data.

taskgraph.test.test_generator module

class taskgraph.test.test_generator.FakeKind(name, path, config, graph_config)

Bases: taskgraph.generator.Kind

load_tasks(parameters, loaded_tasks)
class taskgraph.test.test_generator.FakeOptimization(mode, *args, **kwargs)

Bases: taskgraph.optimize.OptimizationStrategy

should_remove_task(task, params, arg)
class taskgraph.test.test_generator.FakeParameters

Bases: dict

strict = True
class taskgraph.test.test_generator.TestGenerator(methodName='runTest')

Bases: unittest.case.TestCase

maketgg(target_tasks=None, kinds=[(u'_fake', [])], params=None)
patch(monkeypatch)
test_always_target_tasks()

The target_task_graph includes tasks with ‘always_target’

test_full_task_graph()

The full_task_graph property has all tasks, and links

test_full_task_set()

The full_task_set property has all tasks

test_kind_ordering()

When task kinds depend on each other, they are loaded in postorder

test_optimized_task_graph()

The optimized task graph contains task ids

test_target_task_graph()

The target_task_graph property has the targeted tasks and deps

test_target_task_set()

The target_task_set property has the targeted tasks

class taskgraph.test.test_generator.WithFakeKind(root_dir, parameters)

Bases: taskgraph.generator.TaskGraphGenerator

taskgraph.test.test_generator.fake_load_graph_config(root_dir)
taskgraph.test.test_generator.fake_loader(kind, path, config, parameters, loaded_tasks)

taskgraph.test.test_graph module

class taskgraph.test.test_graph.TestGraph(methodName='runTest')

Bases: unittest.case.TestCase

assert_postorder(seq, all_nodes)
assert_preorder(seq, all_nodes)
diamonds = <Graph nodes=set([u'A', u'C', u'B', u'E', u'D', u'G', u'F', u'I', u'H', u'J']) edges=set([(u'G', u'I', u'L'), (u'E', u'G', u'L'), (u'F', u'I', u'L'), (u'A', u'D', u'L'), (u'D', u'G', u'L'), (u'C', u'H', u'L'), (u'D', u'F', u'L'), (u'B', u'E', u'L'), (u'B', u'D', u'L'), (u'A', u'F', u'L'), (u'H', u'J', u'L'), (u'E', u'H', u'L'), (u'G', u'J', u'L'), (u'C', u'E', u'L')])>
disjoint = <Graph nodes=set([u'\u03b1', u'\u03b2', u'\u03b3', u'1', u'3', u'2', u'4']) edges=set([(u'4', u'3', u'green'), (u'2', u'1', u'red'), (u'3', u'1', u'red'), (u'3', u'2', u'green'), (u'\u03b2', u'\u03b3', u'\u03ba\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf'), (u'\u03b1', u'\u03b2', u'\u03c0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf'), (u'\u03b1', u'\u03b3', u'\u03bc\u03c0\u03bb\u03b5')])>
linear = <Graph nodes=set([u'1', u'3', u'2', u'4']) edges=set([(u'2', u'3', u'L'), (u'3', u'4', u'L'), (u'1', u'2', u'L')])>
multi_edges = <Graph nodes=set([u'1', u'3', u'2', u'4']) edges=set([(u'4', u'3', u'green'), (u'2', u'1', u'red'), (u'3', u'1', u'red'), (u'3', u'2', u'green'), (u'2', u'1', u'blue'), (u'3', u'2', u'blue')])>

link dict for a graph with multiple edges is correct

named link dict for a graph with multiple edges is correct

reverse link dict for a graph with multiple edges is correct

test_transitive_closure_disjoint()

transitive closure of a disjoint set is a subset

test_transitive_closure_disjoint_edges()

transitive closure of a disjoint graph keeps those edges

test_transitive_closure_empty()

transitive closure of an empty set is an empty graph

test_transitive_closure_linear()

transitive closure of a linear graph includes all nodes in the line

test_transitive_closure_multi_edges()

transitive closure of a tree with multiple edges between nodes keeps those edges

test_transitive_closure_trees()

transitive closure of a tree, at two non-root nodes, is the two subtrees

test_visit_postorder_diamonds()

postorder visit of a graph full of diamonds satisfies invariant

test_visit_postorder_disjoint()

postorder visit of a disjoint graph satisfies invariant

test_visit_postorder_empty()

postorder visit of an empty graph is empty

test_visit_postorder_multi_edges()

postorder visit of a graph with duplicate edges satisfies invariant

test_visit_postorder_tree()

postorder visit of a tree satisfies invariant

test_visit_preorder_diamonds()

preorder visit of a graph full of diamonds satisfies invariant

test_visit_preorder_disjoint()

preorder visit of a disjoint graph satisfies invariant

test_visit_preorder_multi_edges()

preorder visit of a graph with duplicate edges satisfies invariant

test_visit_preorder_tree()

preorder visit of a tree satisfies invariant

tree = <Graph nodes=set([u'a', u'c', u'b', u'e', u'd', u'g', u'f']) edges=set([(u'b', u'd', u'K'), (u'c', u'f', u'N'), (u'b', u'e', u'K'), (u'a', u'b', u'L'), (u'c', u'g', u'N'), (u'a', u'c', u'L')])>

taskgraph.test.test_morph module

class taskgraph.test.test_morph.MorphTestCase(methodName='runTest')

Bases: unittest.case.TestCase

make_taskgraph(tasks)
class taskgraph.test.test_morph.TestApplyJSONeTemplates(methodName='runTest')

Bases: taskgraph.test.test_morph.MorphTestCase

tasks = [{u'attributes': {}, u'kind': u'build', u'task': {u'tags': {u'kind': u'build'}, u'payload': {u'env': {u'FOO': u'BAR'}}, u'extra': {u'treeherder': {u'symbol': u'B', u'group': u'tc'}}}, u'label': u'a'}, {u'attributes': {}, u'kind': u'test', u'task': {u'tags': {u'kind': u'test'}, u'payload': {u'env': {u'FOO': u'BAR'}}, u'extra': {u'treeherder': {u'symbol': u't', u'group': u'tc'}}}, u'label': u'b'}]
test_template_artifact()
test_template_env()
test_template_rebuild()
class taskgraph.test.test_morph.TestIndexTask(methodName='runTest')

Bases: taskgraph.test.test_morph.MorphTestCase

test_make_index_tasks()

taskgraph.test.test_optimize module

class taskgraph.test.test_optimize.Remove

Bases: taskgraph.optimize.OptimizationStrategy

should_remove_task(task, params, arg)
class taskgraph.test.test_optimize.Replace

Bases: taskgraph.optimize.OptimizationStrategy

should_replace_task(task, params, taskid)
class taskgraph.test.test_optimize.TestOptimize(methodName='runTest')

Bases: unittest.case.TestCase

assert_remove_tasks(graph, exp_removed, do_not_optimize=set([]))
assert_replace_tasks(graph, exp_replaced, exp_removed=set([]), exp_label_to_taskid={}, do_not_optimize=None, label_to_taskid=None, removed_tasks=None, existing_tasks=None)
assert_subgraph(graph, removed_tasks, replaced_tasks, label_to_taskid, exp_subgraph, exp_label_to_taskid)
make_graph(*tasks_and_edges)
make_opt_graph(*tasks_and_edges)
make_task(label, optimization=None, task_def=None, optimized=None, task_id=None, dependencies=None)
make_triangle(**opts)

Make a “triangle” graph like this:

t1 <——– t3
`—- t2 –’
strategies = {u'never': <taskgraph.optimize.OptimizationStrategy object>, u'remove': <taskgraph.test.test_optimize.Remove object>, u'replace': <taskgraph.test.test_optimize.Replace object>}
test_get_subgraph_no_change()

get_subgraph returns a similarly-shaped subgraph when nothing is removed

test_get_subgraph_removed()

get_subgraph returns a smaller subgraph when tasks are removed

test_get_subgraph_removed_dep()

get_subgraph raises an Exception when a task depends on a removed task

test_get_subgraph_replaced()

get_subgraph returns a smaller subgraph when tasks are replaced

test_remove_tasks_all()

A graph full of optimization=remove has removes everything

test_remove_tasks_blocked()

Removable tasks that are depended on by non-removable tasks are not removed

test_remove_tasks_do_not_optimize()

Removable tasks that are marked do_not_optimize are not removed

test_remove_tasks_never()

A graph full of optimization=never has nothing removed

test_replace_tasks_all()

All replacable tasks are replaced when strategy is ‘replace’

test_replace_tasks_blocked()

A task cannot be replaced if it depends on one that was not replaced

test_replace_tasks_do_not_optimize()

A task cannot be replaced if it depends on one that was not replaced

test_replace_tasks_never()

No tasks are replaced when strategy is ‘never’

test_replace_tasks_removed()

A task can be replaced with nothing

taskgraph.test.test_parameters module

class taskgraph.test.test_parameters.TestCommParameters(methodName='runTest')

Bases: unittest.case.TestCase

test_Parameters_check()

Specifying all of the gecko and comm parameters doesn’t result in an error.

test_Parameters_check_extra()

If parameters other than the global and comm parameters are specified, an error is reported.

test_Parameters_check_missing()

If any of the comm parameters are specified, all of them must be specified.

vals = {u'release_history': u'release_history', u'try_options': u'try_options', u'owner': u'owner', u'include_nightly': u'include_nightly', u'filters': u'filters', u'pushlog_id': u'pushlog_id', u'message': u'message', u'try_mode': u'try_mode', u'existing_tasks': u'existing_tasks', u'head_ref': u'head_ref', u'build_date': u'build_date', u'build_number': u'build_number', u'head_rev': u'head_rev', u'comm_head_ref': u'comm_head_ref', u'comm_base_repository': u'comm_base_repository', u'base_repository': u'base_repository', u'comm_head_rev': u'comm_head_rev', u'comm_head_repository': u'comm_head_repository', u'do_not_optimize': u'do_not_optimize', u'next_version': u'next_version', u'moz_build_date': u'moz_build_date', u'head_repository': u'head_repository', u'level': u'level', u'optimize_target_tasks': u'optimize_target_tasks', u'target_tasks_method': u'target_tasks_method', u'project': u'project', u'try_task_config': u'try_task_config', u'pushdate': u'pushdate'}
class taskgraph.test.test_parameters.TestParameters(methodName='runTest')

Bases: unittest.case.TestCase

test_Parameters_check()
test_Parameters_check_extra()
test_Parameters_check_missing()
test_Parameters_get()
test_Parameters_immutable()
test_Parameters_invalid_KeyError()

even if the value is present, if it’s not a valid property, raise KeyError

test_Parameters_missing_KeyError()
test_load_parameters_file_json()
test_load_parameters_file_yaml()
vals = {u'release_history': u'release_history', u'try_options': u'try_options', u'owner': u'owner', u'include_nightly': u'include_nightly', u'filters': u'filters', u'pushlog_id': u'pushlog_id', u'message': u'message', u'try_mode': u'try_mode', u'existing_tasks': u'existing_tasks', u'head_ref': u'head_ref', u'build_date': u'build_date', u'build_number': u'build_number', u'head_rev': u'head_rev', u'base_repository': u'base_repository', u'do_not_optimize': u'do_not_optimize', u'next_version': u'next_version', u'moz_build_date': u'moz_build_date', u'head_repository': u'head_repository', u'level': u'level', u'optimize_target_tasks': u'optimize_target_tasks', u'target_tasks_method': u'target_tasks_method', u'project': u'project', u'try_task_config': u'try_task_config', u'pushdate': u'pushdate'}

taskgraph.test.test_target_tasks module

class taskgraph.test.test_target_tasks.FakeTryOptionSyntax(message, task_graph, graph_config)

Bases: object

task_matches(task)
class taskgraph.test.test_target_tasks.TestTargetTasks(methodName='runTest')

Bases: unittest.case.TestCase

default_matches(run_on_projects, project)
fake_TryOptionSyntax(*args, **kwds)
make_task_graph()
test_default_all()

run_on_projects=[all] includes release, integration, and other projects

test_default_integration()

run_on_projects=[integration] includes integration projects

test_default_nothing()

run_on_projects=[] includes nothing

test_default_release()

run_on_projects=[release] includes release projects

test_empty_try()

try_mode = None runs nothing

test_try_option_syntax()

try_mode = try_option_syntax uses TryOptionSyntax

test_try_task_config()

try_mode = try_task_config uses the try config

taskgraph.test.test_taskgraph module

class taskgraph.test.test_taskgraph.TestTaskGraph(methodName='runTest')

Bases: unittest.case.TestCase

maxDiff = None
test_round_trip()
test_taskgraph_to_json()

taskgraph.test.test_transforms_base module

class taskgraph.test.test_transforms_base.TestTransformSequence(methodName='runTest')

Bases: unittest.case.TestCase

test_sequence()
taskgraph.test.test_transforms_base.trans1(config, tests)
taskgraph.test.test_transforms_base.trans2(config, tests)

taskgraph.test.test_try_option_syntax module

class taskgraph.test.test_try_option_syntax.TestTryOptionSyntax(methodName='runTest')

Bases: unittest.case.TestCase

test_all_email()

–all-emails sets notifications

test_apostrophe_in_message()

apostrophe does not break parsing

test_b_d()

-b d should produce build_types=[‘debug’]

test_b_do()

-b do should produce both build_types

test_b_dx()

-b dx should produce build_types=[‘debug’], silently ignoring the x

test_b_o()

-b o should produce build_types=[‘opt’]

test_build_o()

–build o should produce build_types=[‘opt’]

test_fail_email()

–failure-emails sets notifications

test_interactive()

–interactive sets interactive

test_j_all()

-j all sets jobs=None

test_j_job()

-j somejob sets jobs=[‘somejob’]

test_j_jobs()

-j job1,job2 sets jobs=[‘job1’, ‘job2’]

test_j_twice()

-j job1 -j job2 sets jobs=job1, job2

test_no_email()

no email settings don’t set notifications

test_no_retry()

–no-retry sets no_retry to true

test_p_all()

-p all sets platforms=None

test_p_expands_ridealongs()

-p linux,linux64 includes the RIDEALONG_BUILDS

test_p_linux()

-p linux sets platforms=[‘linux’, ‘linux-ridealong’]

test_p_linux_win32()

-p linux,win32 sets platforms=[‘linux’, ‘linux-ridealong’, ‘win32’]

test_profile()

–geckoProfile sets profile to true

test_setenv()

–setenv VAR=value adds a environment variables setting to env

test_t_all()

-t all sets talos=[..whole list..]

test_t_none()

-t none sets talos=[]

test_t_single()

-t mochitest-webgl sets talos=[mochitest-webgl]

test_tag()

–tag TAG sets tag to TAG value

test_talos_trigger_tests()

–rebuild-talos 10 sets talos_trigger_tests

test_trigger_tests()

–rebuild 10 sets trigger_tests

test_u_alias()

-u mochitest-gl sets unittests=[mochitest-webgl]

test_u_all()

-u all sets unittests=[..whole list..]

test_u_chunks()

-u gtest-3,gtest-4 selects the third and fourth chunk of gtest

test_u_chunks_platforms()

-u gtest-1[linux,win32] selects the linux and win32 platforms for chunk 1 of gtest

test_u_commas()

-u mochitest-webgl,gtest sets unittests=both

test_u_multi_alias()

-u e10s sets unittests=[all e10s unittests]

test_u_none()

-u none sets unittests=[]

test_u_platform()

-u gtest[linux] selects the linux platform for gtest

test_u_platforms()

-u gtest[linux,win32] selects the linux and win32 platforms for gtest

test_u_platforms_negated()

-u gtest[-linux] selects all platforms but linux for gtest

test_u_platforms_negated_pretty()

-u gtest[Ubuntu,-x64] selects just linux for gtest

test_u_platforms_pretty()

-u gtest[Ubuntu] selects the linux, linux64, linux64-asan, linux64-stylo-disabled, and linux64-stylo-sequential platforms for gtest

test_u_single()

-u mochitest-webgl sets unittests=[mochitest-webgl]

test_unknown_args()

unknown arguments are ignored

taskgraph.test.test_try_option_syntax.talos_task(n, tp, bt=u'opt')
taskgraph.test.test_try_option_syntax.unittest_task(n, tp, bt=u'opt')

taskgraph.test.test_util_attributes module

class taskgraph.test.test_util_attributes.Attrmatch(methodName='runTest')

Bases: unittest.case.TestCase

test_all_matches_required()

If only one attribute does not match, the result is False

test_callable_attribute()

Callable attributes are called and any False causes the match to fail

test_literal_attribute()

Literal attributes must match exactly

test_missing_attribute()

If a filtering attribute is not present, no match

test_set_attribute()

Set attributes require set membership

test_trivial_match()

Given no conditions, anything matches

class taskgraph.test.test_util_attributes.MatchRunOnProjects(methodName='runTest')

Bases: unittest.case.TestCase

test_all()
test_combo()
test_empty()
test_integration()
test_release()

taskgraph.test.test_util_docker module

class taskgraph.test.test_util_docker.TestDocker(methodName='runTest')

Bases: unittest.case.TestCase

test_create_context_absolute_path()
test_create_context_extra_directory()
test_create_context_missing_extra()
test_create_context_outside_topsrcdir()
test_create_context_tar_basic()
test_create_context_topsrcdir_files()
test_docker_image_default_registry()
test_docker_image_default_registry_by_tag()
test_docker_image_explicit_registry()
test_docker_image_explicit_registry_by_tag()
test_generate_context_hash()

taskgraph.test.test_util_parameterization module

class taskgraph.test.test_util_parameterization.TestTaskRefs(methodName='runTest')

Bases: unittest.case.TestCase

do(input, output)
test_embedded()

resolve_task_references resolves ebmedded references

test_escaping()

resolve_task_references resolves escapes in task references

test_in_dict()

resolve_task_references resolves task references in a dict

test_in_list()

resolve_task_references resolves task references in a list

test_invalid()

resolve_task_references raises a KeyError on reference to an invalid task

test_multikey()

resolve_task_references is ignored when there is another key in the dict

test_multiple()

resolve_task_references resolves multiple references in the same string

test_no_change()

resolve_task_references does nothing when there are no task references

class taskgraph.test.test_util_parameterization.TestTimestamps(methodName='runTest')

Bases: unittest.case.TestCase

test_appears_with_other_keys()
test_buried_replacement()
test_no_change()

taskgraph.test.test_util_python_path module

class taskgraph.test.test_util_python_path.TestObject

Bases: object

testClassProperty = <object object>
class taskgraph.test.test_util_python_path.TestPythonPath(methodName='runTest')

Bases: unittest.case.TestCase

test_find_object_exists()

find_object finds an existing object

test_find_object_no_such_module()

find_object raises ImportError for a nonexistent module

test_find_object_no_such_object()

find_object raises AttributeError for a nonexistent object

taskgraph.test.test_util_schema module

class taskgraph.test.test_util_schema.TestResolveKeyedBy(methodName='runTest')

Bases: unittest.case.TestCase

test_match_default()
test_match_extra_value()
test_match_nested_exact()
test_match_partial_regexp()
test_match_regexp()
test_multiple_matches()
test_nested()
test_no_by()
test_no_by_dotted()
test_no_by_empty_dict()
test_no_by_not_by()
test_no_by_not_dict()
test_no_by_not_only_by()
test_no_match()
class taskgraph.test.test_util_schema.TestValidateSchema(methodName='runTest')

Bases: unittest.case.TestCase

test_invalid()
test_valid()

taskgraph.test.test_util_templates module

class taskgraph.test.test_util_templates.MergeTest(methodName='runTest')

Bases: unittest.case.TestCase

test_merge()
test_merge_diff_types()
test_merge_to_dicts()
test_merge_to_lists()

taskgraph.test.test_util_time module

class taskgraph.test.test_util_time.FromNowTest(methodName='runTest')

Bases: unittest.case.TestCase

test_invalid_str()
test_json_from_now()
test_json_from_now_utc_now()
test_missing_unit()
test_missing_unknown_unit()
test_value_of()

taskgraph.test.test_util_treeherder module

class taskgraph.test.test_util_treeherder.TestSymbols(methodName='runTest')

Bases: unittest.case.TestCase

test_join_no_group()
test_join_with_group()
test_split_no_group()
test_split_with_group()

taskgraph.test.test_util_yaml module

class taskgraph.test.test_util_yaml.TestYaml(methodName='runTest')

Bases: unittest.case.TestCase

test_load()

Module contents