@@ -73,6 +73,7 @@ def test_job_job_events_children_summary(get, organization_factory, job_template
7373 job_id = job .pk , uuid = 'uuid3' , parent_uuid = 'uuid2' , event = "playbook_on_task_start" , counter = 3 , stdout = 'a' * 1024 , job_created = job .created
7474 ).save ()
7575 JobEvent .create_from_data (job_id = job .pk , uuid = 'uuid4' , parent_uuid = '' , event = 'verbose' , counter = 4 , stdout = 'a' * 1024 , job_created = job .created ).save ()
76+
7677 JobEvent .create_from_data (
7778 job_id = job .pk , uuid = 'uuid5' , parent_uuid = 'uuid1' , event = "playbook_on_play_start" , counter = 5 , stdout = 'a' * 1024 , job_created = job .created
7879 ).save ()
@@ -131,3 +132,46 @@ def test_job_job_events_children_summary_is_tree(get, organization_factory, job_
131132 assert response .data ["meta_event_nested_uuid" ] == {}
132133 assert response .data ["event_processing_finished" ] == True
133134 assert response .data ["is_tree" ] == False
135+
136+
137+ @pytest .mark .django_db
138+ def test_job_job_events_children_summary_empty_event (get , organization_factory , job_template_factory ):
139+ objs = organization_factory ("org" , superusers = ['admin' ])
140+ jt = job_template_factory ("jt" , organization = objs .organization , inventory = 'test_inv' , project = 'test_proj' ).job_template
141+ job = jt .create_unified_job ()
142+ url = reverse ('api:job_job_events_children_summary' , kwargs = {'pk' : job .pk })
143+ response = get (url , user = objs .superusers .admin , expect = 200 )
144+ assert response .data ["event_processing_finished" ] == False
145+ '''
146+ E1
147+ E2
148+ E3
149+ E4 (verbose)
150+ E5
151+ '''
152+ JobEvent .create_from_data (
153+ job_id = job .pk , uuid = 'uuid1' , parent_uuid = '' , event = "playbook_on_start" , counter = 1 , stdout = 'a' * 1024 , job_created = job .created
154+ ).save ()
155+ JobEvent .create_from_data (
156+ job_id = job .pk , uuid = 'uuid2' , parent_uuid = 'uuid1' , event = "playbook_on_play_start" , counter = 2 , stdout = 'a' * 1024 , job_created = job .created
157+ ).save ()
158+ JobEvent .create_from_data (
159+ job_id = job .pk , uuid = 'uuid3' , parent_uuid = 'uuid2' , event = "playbook_on_task_start" , counter = 3 , stdout = 'a' * 1024 , job_created = job .created
160+ ).save ()
161+ JobEvent .create_from_data (job_id = job .pk , uuid = 'uuid4' , parent_uuid = '' , event = 'verbose' , counter = 4 , stdout = 'a' * 1024 , job_created = job .created ).save ()
162+
163+ JobEvent .create_from_data (job_id = job .pk , uuid = 'uuid4' , parent_uuid = '' , event = '' , counter = 5 , stdout = 'a' * 1024 , job_created = job .created ).save ()
164+
165+ JobEvent .create_from_data (
166+ job_id = job .pk , uuid = 'uuid5' , parent_uuid = 'uuid1' , event = "playbook_on_play_start" , counter = 6 , stdout = 'a' * 1024 , job_created = job .created
167+ ).save ()
168+
169+ job .emitted_events = job .get_event_queryset ().count ()
170+ job .status = "successful"
171+ job .save ()
172+ url = reverse ('api:job_job_events_children_summary' , kwargs = {'pk' : job .pk })
173+ response = get (url , user = objs .superusers .admin , expect = 200 )
174+ assert response .data ["children_summary" ] == {1 : {"rowNumber" : 0 , "numChildren" : 4 }, 2 : {"rowNumber" : 1 , "numChildren" : 2 }}
175+ assert response .data ["meta_event_nested_uuid" ] == {4 : "uuid2" }
176+ assert response .data ["event_processing_finished" ] == True
177+ assert response .data ["is_tree" ] == True
0 commit comments