§
    ÝÇj÷&  ã                   ó  — d Z ddlZddlZddlZddlZddlZddlZddlZddlm	Z	  e	e
¦  «                             ¦   «         j        Zej        Z ee¦  «        ej        vr$ej                             d ee¦  «        ¦  «          ee¦  «        ej        vr$ej                             d ee¦  «        ¦  «         ddlmZmZmZmZmZmZmZmZmZmZmZmZmZm Z   G d„ dej!        ¦  «        Z"e#dk    r ej$        ¦   «          dS dS )z…
Tier 4: Real-World Application Workloads Test Suite
Contains >= 7 realistic, end-to-end workload test cases (Total: 10 test cases).
é    N)ÚPath)ÚFILMMAKER_DIRÚPROMPTS_DIRÚ
ASSETS_DIRÚ	BIBLE_DIRÚPIPELINE_DIRÚEXPORTS_DIRÚWEB_REVIEW_DIRÚread_ep01_screenplayÚget_screenplay_scenesÚfind_male_crying_violationsÚload_muse_prompts_dataÚload_banana_prompts_dataÚcreate_synthetic_wavÚcreate_synthetic_video_mp4c                   óN   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ ZdS )ÚTestTier4Workloadsz^
    Tier 4 tests execute realistic end-to-end application workloads across the pipeline.
    c                 óÊ  — t          ¦   «         }|                      t          |¦  «        dd¦  «         t          j        d|¦  «        }|                      t          |¦  «        dd¦  «         t          |¦  «        }|                      t          |¦  «        dd¦  «         t          j        d|t          j        ¦  «        }|                      t          |¦  «        d	d
¦  «         dS )z\Workload 1: Parse entire EP01 screenplay, extracting metadata, scene breakdown, and metrics.iÐ  z0EP01 screenplay must contain substantive contentz\d+\.\s*\*\*([^*]+)\*\*é   z$EP01 must list main character rosteré   z$EP01 must contain at least 12 scenesu   Há»’I\s*(\d+)é   z Screenplay must delineate 3 actsN)r   ÚassertGreaterÚlenÚreÚfindallÚassertGreaterEqualr   Ú
IGNORECASE)ÚselfÚ
screenplayÚchar_rosterÚscenesÚactss        ú3C:\Projects\KieuStory\tests\test_tier4_workloads.pyÚ7test_workload_01_full_ep01_screenplay_parse_and_metricszJTestTier4Workloads.test_workload_01_full_ep01_screenplay_parse_and_metrics$   sÌ   € å)Ñ+Ô+ˆ
Ø×Ò�3˜z™?œ?¨DÐ2dÑeÔeÐeõ ”jÐ!;¸ZÑHÔHˆØ×Ò¥ KÑ 0Ô 0°!Ð5[Ñ\Ô\Ð\õ ' zÑ2Ô2ˆØ×Ò¥ F¡¤¨RÐ1WÑXÔXÐXõ ŒzÐ*¨J½¼ÑFÔFˆØ×Ò¥ D¡	¤	¨1Ð.PÑQÔQÐQÐQÐQó    c                 óL  — t          ¦   «         }t          ¦   «         }|                      |t          d¦  «         |                      |t          d¦  «         |                     di ¦  «        }|                      t          |¦  «        dd¦  «         t          |                     ¦   «         ¦  «        dd…         D ]k\  }}|  	                    t          |t          ¦  «        ot          |¦  «        dk    ¦  «         t          |t          ¦  «        r|                      d|¦  «         ŒldS )	zKWorkload 2: Validate JSON registries for Gemini Banana and Muse.ai prompts.z4gemini_banana_prompts.json must be a JSON dictionaryz4muse_ai_video_prompts.json must be a JSON dictionaryÚmotion_promptsr   z)Motion prompts registry must not be emptyNé   Úmotion_prompt)r   r   ÚassertIsInstanceÚdictÚgetr   r   ÚlistÚitemsÚ
assertTrueÚ
isinstanceÚstrÚassertIn)r   Úbanana_dataÚ	muse_datar'   Úshot_idÚ	shot_infos         r#   ÚGtest_workload_02_prompt_registries_schema_and_cross_reference_integrityzZTestTier4Workloads.test_workload_02_prompt_registries_schema_and_cross_reference_integrity5   s  € å.Ñ0Ô0ˆÝ*Ñ,Ô,ˆ	à×Ò˜k­4Ð1gÑhÔhÐhØ×Ò˜i­Ð/eÑfÔfÐfà"ŸšÐ'7¸Ñ<Ô<ˆØ×Ò�3˜~Ñ.Ô.°Ð3^Ñ_Ô_Ð_õ #' ~×';Ò';Ñ'=Ô'=Ñ">Ô">¸sÀ¸sÔ"Cð 	:ð 	:ÑˆG�YØ�OŠO�J wµÑ4Ô4ÐI½¸W¹¼ÈÒ9IÑJÔJÐJÝ˜)¥TÑ*Ô*ð :Ø—’˜o¨yÑ9Ô9Ð9øð	:ð 	:r%   c           	      ó¾  — ddl m}m}  |¦   «         }t          j        ¦   «         5 }t          |¦  «        }t          |dz  ¦  «        }t          |dz  ¦  «        }t          |d¬¦  «        }|                      |d¦  «          |¦   «         }	|	 	                    ||d¬	¦  «        }
|                      |
d
¦  «         |                      t          j                             |¦  «        d¦  «         |d|dddddg}t          j        |dd¬¦  «        }|                      |j        d¦  «         |j        }|                      d|¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z\Workload 3: Generate synthetic audio and execute EBU R128 loudness normalization via FFmpeg.r   )ÚAudioContinuityEngineÚ
get_ffmpegztest_input.mp4ztest_normalized.mp4g      @©Úduration_seczMust generate synthetic videog      ,À)Útarget_lufsz.normalize_loudness must succeed on valid videozOutput video must existz-iz-filter_complexzebur128=peak=truez-fÚnullú-T)Úcapture_outputÚtextzIntegrated loudness:N)Úaudio_continuity_enginer9   r:   ÚtempfileÚTemporaryDirectoryr   r1   r   r/   Únormalize_loudnessÚosÚpathÚexistsÚ
subprocessÚrunÚassertEqualÚ
returncodeÚstderrr2   )r   r9   r:   ÚffmpegÚtmpdirÚtmp_pathÚinput_videoÚoutput_videoÚcreatedÚengineÚsuccessÚmeasure_cmdÚresrM   s                 r#   Ú8test_workload_03_synthetic_audio_mastering_two_pass_lufszKTestTier4Workloads.test_workload_03_synthetic_audio_mastering_two_pass_lufsF   s½  € àMÐMÐMÐMÐMÐMÐMÐMà�‘”ˆÝÔ(Ñ*Ô*ð 	:¨fÝ˜F‘|”|ˆHÝ˜hÐ)9Ñ9Ñ:Ô:ˆKÝ˜xÐ*?Ñ?Ñ@Ô@ˆLõ 1°È3ÐOÑOÔOˆGØ�OŠO˜GÐ%DÑEÔEÐEð +Ð*Ñ,Ô,ˆFØ×/Ò/°¸\ÐW\Ð/Ñ]Ô]ˆGØ�OŠO˜GÐ%UÑVÔVÐVØ�OŠO�BœGŸNšN¨<Ñ8Ô8Ð:SÑTÔTÐTð ˜˜lØ!Ð#6Ø�f˜cðˆKõ
 ”. ¸TÈÐMÑMÔMˆCØ×Ò˜Sœ^¨QÑ/Ô/Ð/Ø”ZˆFð �MŠMÐ0°&Ñ9Ô9Ð9ð5	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	:ð 	:s   ¦DEÅEÅEc                 óv  — ddl m} t          j        ¦   «         5 }t	          |¦  «        }t          |dz  ¦  «        }t          |dz  ¦  «        }t          |dz  ¦  «        }t          |d¬¦  «         t          |d¬¦  «          |¦   «         }|                     ||g|d¬	¦  «        }|                      |d
¦  «         |                      t          j
                             |¦  «        ¦  «         |                      t          j
                             |¦  «        d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zVWorkload 4: Assemble multiple synthetic video clips using equal-power audio crossfade.r   )r9   z
shot01.mp4z
shot02.mp4zscene_crossfaded.mp4g      @r;   g      à?)Úcrossfade_durz(stitch_with_audio_crossfade must succeediè  N)rB   r9   rC   rD   r   r1   r   Ústitch_with_audio_crossfader/   rF   rG   rH   r   Úgetsize)	r   r9   rO   rP   Úv1Úv2Ú
out_masterrT   rU   s	            r#   Ú>test_workload_04_synthetic_multi_shot_video_crossfade_assemblyzQTestTier4Workloads.test_workload_04_synthetic_multi_shot_video_crossfade_assemblyg   s‡  € àAÐAÐAÐAÐAÐAåÔ(Ñ*Ô*ð 	B¨fÝ˜F‘|”|ˆHÝ�X Ñ,Ñ-Ô-ˆBÝ�X Ñ,Ñ-Ô-ˆBÝ˜XÐ(>Ñ>Ñ?Ô?ˆJõ ' r¸Ð<Ñ<Ô<Ð<Ý& r¸Ð<Ñ<Ô<Ð<à*Ð*Ñ,Ô,ˆFØ×8Ò8¸"¸b¸À:Ð]`Ð8ÑaÔaˆGØ�OŠO˜GÐ%OÑPÔPÐPØ�OŠO�BœGŸNšN¨:Ñ6Ô6Ñ7Ô7Ð7Ø×Ò�rœwŸš¨zÑ:Ô:¸DÑAÔAÐAð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bs   šDD.Ä.D2Ä5D2c                 óT  — ddl m} ddlm}  ||¦  «        }|                     d¦  «        }|                      |j        d¦  «         |                     d¦  «        }|                      |j        d¦  «         |                     ¦   «         }|                      d|¦  «         |                      d|¦  «         |                     d	¦  «        }|                      |j        d¦  «         |                     d
¦  «        }|                      |j        d¦  «         |                     d¦  «        }	|                      |	j        d¦  «         |                     d¦  «        }
|                      |
j        d¦  «         |                     d¦  «        }|                      |j        d¦  «         dS )zKWorkload 5: Comprehensive HTTP walk across all Web Review Studio endpoints.r   )Úapp)Ú
TestClientú/éÈ   z/api/libraryÚsummaryÚ
raw_scenesz/api/videosz/api/charactersz/api/promptsz/api/episodesz/api/statusN)	Úserverrb   Ústarlette.testclientrc   r,   rK   Ústatus_codeÚjsonr2   )r   rb   rc   ÚclientÚr_indexÚr_libÚlib_dataÚr_vidsÚr_charsÚ	r_promptsÚr_epsÚr_statuss               r#   Ú8test_workload_05_web_review_studio_api_full_catalog_walkzKTestTier4Workloads.test_workload_05_web_review_studio_api_full_catalog_walk{   s¡  € àÐÐÐÐÐØ3Ð3Ð3Ð3Ð3Ð3à�˜C‘”ˆð —*’*˜S‘/”/ˆØ×Ò˜Ô,¨cÑ2Ô2Ð2ð —
’
˜>Ñ*Ô*ˆØ×Ò˜Ô*¨CÑ0Ô0Ð0Ø—:’:‘<”<ˆØ�Š�i Ñ*Ô*Ð*Ø�Š�l HÑ-Ô-Ð-ð —’˜MÑ*Ô*ˆØ×Ò˜Ô+¨SÑ1Ô1Ð1ð —*’*Ð.Ñ/Ô/ˆØ×Ò˜Ô,¨cÑ2Ô2Ð2ð —J’J˜~Ñ.Ô.ˆ	Ø×Ò˜Ô.°Ñ4Ô4Ð4ð —
’
˜?Ñ+Ô+ˆØ×Ò˜Ô*¨CÑ0Ô0Ð0ð —:’:˜mÑ,Ô,ˆØ×Ò˜Ô-¨sÑ3Ô3Ð3Ð3Ð3r%   c                 óø   — t          ¦   «         }t          |¦  «        }t          |¦  «        dk    rId                     d„ |D ¦   «         ¦  «        }|                      dt          |¦  «        › d|› �¦  «         dS dS )z[Workload 6: Exhaustive audit of all male dialogue lines and parentheticals across Acts 1-3.r   ú
c           	      óH   — g | ]}d |d         › d|d         › d|d         › �‘Œ S )zLine Úline_numz: Ú	characterz -> rA   © )Ú.0Úvs     r#   ú
<listcomp>zfTestTier4Workloads.test_workload_06_complete_anti_male_tears_audit_across_all_acts.<locals>.<listcomp>¦   s>   € ÐjÐjÐjÐZ[ÐU Q z¤]ÐUÐU°a¸´nÐUÐUÈ!ÈFÌ)ÐUÐUÐjÐjÐjr%   zAnti-Male-Tears audit failed (z violations):
N)r   r   r   ÚjoinÚfail)r   r   Ú
violationsÚmsgs       r#   Ú?test_workload_06_complete_anti_male_tears_audit_across_all_actszRTestTier4Workloads.test_workload_06_complete_anti_male_tears_audit_across_all_acts¡   s„   € å)Ñ+Ô+ˆ
Ý0°Ñ<Ô<ˆ
Ýˆz‰?Œ?˜QÒÐØ—)’)ÐjÐjÐ_iÐjÑjÔjÑkÔkˆCØ�IŠIÐ\µs¸:±´Ð\Ð\ÐWZÐ\Ð\Ñ]Ô]Ð]Ð]Ð]ð Ðr%   c           	      ó¾  — t          ¦   «         }t          |¦  «        }d„ |D ¦   «         }|                      t          |¦  «        dk    d¦  «         |d         }|                      t	          t          j        d|t
          j        ¦  «        ¦  «        d¦  «         |                      t	          t          j        d|t
          j        ¦  «        ¦  «        d¦  «         |                      t	          t          j        d|t
          j        ¦  «        ¦  «        d	¦  «         |                      t	          t          j        d
|t
          j        ¦  «        ¦  «        d¦  «         dS )z\Workload 7: Verify dramatic progression of Scene 05 from stroll to grave discovery to grief.c                 ó(   — g | ]\  }}d |v sd|v ¯|‘ŒS )u	   Cáº¢NH 05u   Cáº¢NH 5r{   )r|   ÚhÚcs      r#   r~   zgTestTier4Workloads.test_workload_07_full_scene05_sub_beat_dramatic_arc_verification.<locals>.<listcomp>­   s+   € ÐPÐPÐP™$˜!˜Q¨K¸1Ð,<Ð,<À
ÈaÀÀ�AÀÀÀr%   r   zScene 05 must existu   tiá»ƒu khÃª|suá»‘izMust feature pastoral strollu   sÃ¨ sÃ¨|náº¥m má»“zMust feature discovery of moundu   Ä‘au Ä‘á»›n thay|báº¡c má»‡nhzMust feature mourning for fateu   dáº¥u hÃ i|dáº¥u giÃ y|in rÃªuzMust feature footprints in mossN)r   r   r/   r   Úboolr   Úsearchr   )r   r   r!   Úsc5_listÚsc5s        r#   Ú@test_workload_07_full_scene05_sub_beat_dramatic_arc_verificationzSTestTier4Workloads.test_workload_07_full_scene05_sub_beat_dramatic_arc_verification©   s2  € å)Ñ+Ô+ˆ
Ý& zÑ2Ô2ˆØPÐP &ÐPÑPÔPˆØ�Š�˜H™œ¨Ò)Ð+@ÑAÔAÐAØ�qŒkˆð 	�Š��RœYÐ'<¸cÅ2Ä=ÑQÔQÑRÔRÐTrÑsÔsÐsØ�Š��RœYÐ'<¸cÅ2Ä=ÑQÔQÑRÔRÐTuÑvÔvÐvØ�Š��RœYÐ'GÈÍbÌmÑ\Ô\Ñ]Ô]Ð_ñ  	Aô  	Að  	AØ�Š��RœYÐ'HÈ#ÍrÌ}Ñ]Ô]Ñ^Ô^ð  aBñ  	Cô  	Cð  	Cð  	Cð  	Cr%   c                 óô   — ddl m}m}  |d¦  «        }|                      t	          |¦  «        dd¦  «         |D ]=\  }} |||¦  «        }|                      |du pt          |t          ¦  «        ¦  «         Œ>dS )zZWorkload 8: Simulate orchestrator batch workflow (list shots, resolve frames, continuity).r   )Úget_shots_for_sceneÚresolve_start_frameÚep01_scene01z&Scene 01 must contain registered shotsN)Úproduction_orchestratorrŽ   r�   r   r   r/   r0   r1   )r   rŽ   r�   Úshotsr5   Ú	shot_dataÚstart_frames          r#   Ú?test_workload_08_production_orchestrator_scene_batch_simulationzRTestTier4Workloads.test_workload_08_production_orchestrator_scene_batch_simulation·   s¦   € àTÐTÐTÐTÐTÐTÐTÐTà#Ð# NÑ3Ô3ˆØ×Ò�3˜u™:œ: qÐ*RÑSÔSÐSà"'ð 	Qð 	QÑˆG�YØ-Ð-¨g°yÑAÔAˆKØ�OŠO˜K¨4Ð/ÐOµ:¸kÍ3Ñ3OÔ3OÑPÔPÐPÐPð	Qð 	Qr%   c                 óD  — t           dz  }|                      |                     ¦   «         ¦  «         |                     d¬¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         dS )	zTWorkload 9: Verify feature assembly pipeline script and FFmpeg command construction.zassemble_ep01_feature.pyzutf-8)ÚencodingÚfilter_complexz	concat=n=Úlibx264ÚaacN)r   r/   rH   Ú	read_textr2   )r   Úscript_pathÚcodes      r#   Ú;test_workload_09_master_feature_grand_assembly_verificationzNTestTier4Workloads.test_workload_09_master_feature_grand_assembly_verificationÂ   s˜   € å"Ð%?Ñ?ˆØ�Š˜×*Ò*Ñ,Ô,Ñ-Ô-Ð-Ø×$Ò$¨gÐ$Ñ6Ô6ˆØ�ŠÐ&¨Ñ-Ô-Ð-Ø�Š�k 4Ñ(Ô(Ð(Ø�Š�i Ñ&Ô&Ð&Ø�Š�e˜TÑ"Ô"Ð"Ð"Ð"r%   c           
      ó>  — t           dz  t           dz  t           dz  t           dz  t           dz  t           dz  t           dz  t           dz  t           d	z  g	}|D ]F}|                      |                     ¦   «         o|                     ¦   «         d
|j        › �¦  «         ŒGdS )zKWorkload 10: Health audit of core project directories, files, and licenses.Ú00_Project_BibleÚ01_Scripts_And_EpisodesÚ02_AI_PromptsÚ	04_AssetsÚ05_Production_PipelineÚ
06_ExportsÚ	FilmMakerÚ
web_reviewÚlicensezCore directory missing: N)ÚBASE_DIRr/   rH   Úis_dirÚname)r   Ú	core_dirsÚds      r#   Ú0test_workload_10_end_to_end_project_health_auditzCTestTier4Workloads.test_workload_10_end_to_end_project_health_auditÌ   s®   € õ Ð)Ñ)ÝÐ0Ñ0Ý�Ñ&Ý�{Ñ"ÝÐ/Ñ/Ý�|Ñ#Ý�{Ñ"Ý�|Ñ#Ý�yÑ ð

ˆ	ð ð 	\ð 	\ˆAØ�OŠO˜AŸHšH™JœJÐ5¨1¯8ª8©:¬:Ð7ZÐRSÔRXÐ7ZÐ7ZÑ[Ô[Ð[Ð[ð	\ð 	\r%   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   r7   rX   r`   ru   rƒ   rŒ   r•   rž   r®   r{   r%   r#   r   r      sÊ   € € € € € ðð ðRð Rð Rð":ð :ð :ð":ð :ð :ðBBð Bð Bð($4ð $4ð $4ðL^ð ^ð ^ðCð Cð Cð	Qð 	Qð 	Qð#ð #ð #ð\ð \ð \ð \ð \r%   r   Ú__main__)%r²   rF   Úsysr   rk   rC   rI   ÚunittestÚpathlibr   Ú__file__ÚresolveÚparentÚ	TESTS_DIRr©   r1   rG   ÚinsertÚtestsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   ÚTestCaser   r¯   Úmainr{   r%   r#   ú<module>r¿      sõ  ððð ð
 
€	€	€	Ø 
€
€
€
Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð ð ˆD�‰NŒN×"Ò"Ñ$Ô$Ô+€	ØÔ€Ø€3€x�=„=˜œÐ Ð Ø„H‡O‚O�A�s�s˜8‘}”}Ñ%Ô%Ð%Ø€3€y�>„>˜œÐ!Ð!Ø„H‡O‚O�A�s�s˜9‘~”~Ñ&Ô&Ð&ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð{\ð {\ð {\ð {\ð {\˜Ô*ñ {\ô {\ð {\ð| ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr%   