add some extra general.idle_wait() and general.idle_wait_frames() calls to increase test stability to stop race condition / intermittent failure in test

main
jromnoa 5 years ago
parent 3143b41020
commit c3fe375e8f

@ -63,13 +63,13 @@ def run():
# undo component addition # undo component addition
general.undo() general.undo()
TestHelper.wait_for_condition(lambda: not hydra.has_components(new_entity.id, [component_name]), 2.0) TestHelper.wait_for_condition(lambda: not hydra.has_components(new_entity.id, [component_name]), 1.5)
general.log(f"{component_name}_test: Component removed after UNDO: " general.log(f"{component_name}_test: Component removed after UNDO: "
f"{not hydra.has_components(new_entity.id, [component_name])}") f"{not hydra.has_components(new_entity.id, [component_name])}")
# redo component addition # redo component addition
general.redo() general.redo()
TestHelper.wait_for_condition(lambda: hydra.has_components(new_entity.id, [component_name]), 2.0) TestHelper.wait_for_condition(lambda: hydra.has_components(new_entity.id, [component_name]), 1.5)
general.log(f"{component_name}_test: Component added after REDO: " general.log(f"{component_name}_test: Component added after REDO: "
f"{hydra.has_components(new_entity.id, [component_name])}") f"{hydra.has_components(new_entity.id, [component_name])}")
@ -77,10 +77,10 @@ def run():
def verify_enter_exit_game_mode(component_name): def verify_enter_exit_game_mode(component_name):
general.enter_game_mode() general.enter_game_mode()
TestHelper.wait_for_condition(lambda: general.is_in_game_mode(), 1.0) TestHelper.wait_for_condition(lambda: general.is_in_game_mode(), 1.5)
general.log(f"{component_name}_test: Entered game mode: {general.is_in_game_mode()}") general.log(f"{component_name}_test: Entered game mode: {general.is_in_game_mode()}")
general.exit_game_mode() general.exit_game_mode()
TestHelper.wait_for_condition(lambda: not general.is_in_game_mode(), 1.0) TestHelper.wait_for_condition(lambda: not general.is_in_game_mode(), 1.5)
general.log(f"{component_name}_test: Exit game mode: {not general.is_in_game_mode()}") general.log(f"{component_name}_test: Exit game mode: {not general.is_in_game_mode()}")
def verify_hide_unhide_entity(component_name, entity_obj): def verify_hide_unhide_entity(component_name, entity_obj):
@ -97,16 +97,16 @@ def run():
def verify_deletion_undo_redo(component_name, entity_obj): def verify_deletion_undo_redo(component_name, entity_obj):
editor.ToolsApplicationRequestBus(bus.Broadcast, "DeleteEntityById", entity_obj.id) editor.ToolsApplicationRequestBus(bus.Broadcast, "DeleteEntityById", entity_obj.id)
TestHelper.wait_for_condition(lambda: not hydra.find_entity_by_name(entity_obj.name), 1.0) TestHelper.wait_for_condition(lambda: not hydra.find_entity_by_name(entity_obj.name), 1.5)
general.log(f"{component_name}_test: Entity deleted: {not hydra.find_entity_by_name(entity_obj.name)}") general.log(f"{component_name}_test: Entity deleted: {not hydra.find_entity_by_name(entity_obj.name)}")
general.undo() general.undo()
TestHelper.wait_for_condition(lambda: hydra.find_entity_by_name(entity_obj.name) is not None, 1.0) TestHelper.wait_for_condition(lambda: hydra.find_entity_by_name(entity_obj.name) is not None, 1.5)
general.log(f"{component_name}_test: UNDO entity deletion works: " general.log(f"{component_name}_test: UNDO entity deletion works: "
f"{hydra.find_entity_by_name(entity_obj.name) is not None}") f"{hydra.find_entity_by_name(entity_obj.name) is not None}")
general.redo() general.redo()
TestHelper.wait_for_condition(lambda: not hydra.find_entity_by_name(entity_obj.name), 1.0) TestHelper.wait_for_condition(lambda: not hydra.find_entity_by_name(entity_obj.name), 1.5)
general.log(f"{component_name}_test: REDO entity deletion works: " general.log(f"{component_name}_test: REDO entity deletion works: "
f"{not hydra.find_entity_by_name(entity_obj.name)}") f"{not hydra.find_entity_by_name(entity_obj.name)}")
@ -120,7 +120,7 @@ def run():
f"{not is_component_enabled(entity_obj.components[0])}") f"{not is_component_enabled(entity_obj.components[0])}")
for component in components_to_add: for component in components_to_add:
entity_obj.add_component(component) entity_obj.add_component(component)
TestHelper.wait_for_condition(lambda: is_component_enabled(entity_obj.components[0]), 1.0) TestHelper.wait_for_condition(lambda: is_component_enabled(entity_obj.components[0]), 1.5)
general.log( general.log(
f"{component_name}_test: Entity enabled after adding " f"{component_name}_test: Entity enabled after adding "
f"required components: {is_component_enabled(entity_obj.components[0])}" f"required components: {is_component_enabled(entity_obj.components[0])}"
@ -135,7 +135,9 @@ def run():
# Delete all existing entities initially # Delete all existing entities initially
search_filter = azlmbr.entity.SearchFilter() search_filter = azlmbr.entity.SearchFilter()
all_entities = entity.SearchBus(azlmbr.bus.Broadcast, "SearchEntities", search_filter) all_entities = entity.SearchBus(azlmbr.bus.Broadcast, "SearchEntities", search_filter)
general.idle_wait_frames(1)
editor.ToolsApplicationRequestBus(bus.Broadcast, "DeleteEntities", all_entities) editor.ToolsApplicationRequestBus(bus.Broadcast, "DeleteEntities", all_entities)
general.idle_wait_frames(1)
class ComponentTests: class ComponentTests:
"""Test launcher for each component.""" """Test launcher for each component."""
@ -147,9 +149,11 @@ def run():
def run_component_tests(self): def run_component_tests(self):
# Run common and additional tests # Run common and additional tests
entity_obj = create_entity_undo_redo_component_addition(self.component_name) entity_obj = create_entity_undo_redo_component_addition(self.component_name)
general.idle_wait(0.5)
# Enter/Exit game mode test # Enter/Exit game mode test
verify_enter_exit_game_mode(self.component_name) verify_enter_exit_game_mode(self.component_name)
general.idle_wait(0.5)
# Any additional tests are executed here # Any additional tests are executed here
for test in self.additional_tests: for test in self.additional_tests:
@ -157,13 +161,16 @@ def run():
# Hide/Unhide entity test # Hide/Unhide entity test
verify_hide_unhide_entity(self.component_name, entity_obj) verify_hide_unhide_entity(self.component_name, entity_obj)
general.idle_wait(0.5)
# Deletion/Undo/Redo test # Deletion/Undo/Redo test
verify_deletion_undo_redo(self.component_name, entity_obj) verify_deletion_undo_redo(self.component_name, entity_obj)
general.idle_wait(0.5)
# DepthOfField Component # DepthOfField Component
camera_entity = hydra.Entity("camera_entity") camera_entity = hydra.Entity("camera_entity")
camera_entity.create_entity(math.Vector3(512.0, 512.0, 34.0), ["Camera"]) camera_entity.create_entity(math.Vector3(512.0, 512.0, 34.0), ["Camera"])
general.idle_wait(0.5)
depth_of_field = "DepthOfField" depth_of_field = "DepthOfField"
ComponentTests( ComponentTests(
depth_of_field, depth_of_field,

@ -163,7 +163,7 @@ class TestAtomEditorComponentsMain(object):
] ]
unexpected_lines = [ unexpected_lines = [
"failed to open", "Trace::Error",
"Traceback (most recent call last):", "Traceback (most recent call last):",
] ]

Loading…
Cancel
Save