
    S                     6   S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
Jr  SSK
Jr  \R                  R                  \R                  R                  \R                  R                  \5      5      5      r\R                  R%                  \R                  R'                  \S5      5        SSKr\R                  R                  \R                  R                  \5      5      r " S S\R,                  5      r\S:X  a  \	R2                  " 5         gg)	zTests of the java runtime.    N)testutil)ext_runtimelibc                      ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r Sr!U =r"$ ) RuntimeTests.   c                 @   > [         U l        [        [        U ]  5         g N)RUNTIME_DEF_ROOTruntime_def_rootsuperr   setUp)self	__class__s    .platform/ext-runtime/java/test/runtime_test.pyr   RuntimeTests.setUp0   s     0lD')    c                 z    U R                  [        R                  R                  U R                  " U6 5      5        g r
   )assertFalseospathexists	full_path)r   r   s     r   assert_no_fileRuntimeTests.assert_no_file4   s&    (=>?r   c                      SR                  US9$ )Nzenv: flex
runtime: {runtime}
)runtime)format)r   r   s     r   make_app_yamlRuntimeTests.make_app_yaml7   s    0777HHr   c                    U R                  SS5        U R                  5         U R                  SU R                  S5      5        U R	                  S5        U R	                  S5        U R                  SS9  U R                  SU R                  S	S
5      5        [        R                  [        R                  R                  S5      [        R                  R                  S5      /nU R                  SSR                  U5      5        U R                  [        [        R                  " U R                   5      5      1 Sk5        g )Nfoo.jar app.yamljava
Dockerfile.dockerignoreTdeploydatadockerignore>   r&   r"   r$   r'   )
write_filegenerate_configs assert_file_exists_with_contentsr   r   read_runtime_def_file	constantsDOCKERFILE_JAVA_PREAMBLEDOCKERFILE_INSTALL_APPr   DOCKERFILE_JAVA8_JAR_CMDjoinassertEqualsetr   listdir	temp_pathr   dockerfile_contentss     r   test_java_all_defaults#RuntimeTests.test_java_all_defaults:   s   	2&--j.2.@.@.H	JL)O,T*--&&v~>	@ ..,,33I>..55i@

 	--l.0gg6I.J	L 	RZZ78O	Qr   c                    U R                  SS5        U R                  5         U R                  SU R                  S5      5        U R	                  S5        U R	                  S5        U R                  SS9nU R                  USU R                  S	S
5      5        [        R                  [        R                  R                  S5      [        R                  R                  S5      /nU R                  USSR                  U5      5        U R                  [        [         R"                  " U R$                  5      5      SS15        g)z1Test generate_config_data after writing app.yaml.r"   r#   r$   r%   r&   r'   Tr(   r*   r+   N)r,   r-   r.   r   r   generate_config_data#assert_genfile_exists_with_contentsr/   r0   r1   r2   r   r3   r4   r5   r6   r   r7   r8   r   	cfg_filesr:   s      r   test_java_all_defaults_no_write,RuntimeTests.test_java_all_defaults_no_writeT   s   	2&--j.2.@.@.H	JL)O,--T-:	00&&v~>	@
 ..,,33I>..55i@

 	00GG'(	*
 	RZZ78$i0	2r   c                    U R                  SS5        U R                  SSS9  U R                  SU R                  S5      5        U R                  SU R	                  S	S
5      5        [
        R                  [
        R                  R                  S5      [
        R                  R                  S5      /nU R                  SSR                  U5      5        g )Nr"   r#   FTr)   customr$   rF   r'   r*   r+   r&   )r,   r-   r.   r   r/   r0   r1   r2   r   r3   r4   r9   s     r   test_java_customRuntimeTests.test_java_customr   s    	2&U48--j.2.@.@.J	L 	--&&v~>	@ ..,,33I>..55i@

 	--l.0gg6I.J	Lr   c                    U R                  SS5        U R                  SSS9nU R                  SU R                  S5      5        U R	                  USU R                  S	S
5      5        [        R                  [        R                  R                  S5      [        R                  R                  S5      /nU R	                  USSR                  U5      5        g)zTest generate_config_data with custom=True.

app.yaml should be written to disk. Also tests correct dockerfile
contents with a .jar.
r"   r#   FTrE   r$   rF   r'   r*   r+   r&   N)r,   r>   r.   r   r?   r/   r0   r1   r2   r   r3   r4   r@   s      r   test_java_custom_no_write&RuntimeTests.test_java_custom_no_write   s     		2&--U4-H	--j.2.@.@.J	L 	00&&v~>	@
 ..,,33I>..55i@

 	00GG'(	*r   c                     U R                  SS5        U R                  U R                  5       5        U R                  [        R
                  " U R                  5      S/5        g )Nz
foo.nojavar#   )r,   r   r-   r5   r   r7   r8   )r   s    r   test_java_files_no_java$RuntimeTests.test_java_files_no_java   sF    b)..01DNN3l^Dr   c                    U R                  SS5        U R                  5         U R                  SU R                  S5      5        U R	                  S5        U R	                  S5        U R                  SS9  [
        R                  [
        R                  R                  S5      /nU R                  SSR                  U5      5        U R                  SU R                  S	S
5      5        g )Nfoo.warr#   r$   r%   r&   r'   Tr(   r*   r+   )r,   r-   r.   r   r   r0   DOCKERFILE_JETTY_PREAMBLEDOCKERFILE_INSTALL_WARr   r4   r/   r9   s     r   test_java_files_with_war%RuntimeTests.test_java_files_with_war   s    	2&--j.2.@.@.H	JL)O,T*//,,33I>
 	--l,.GG4G,H	J--T77O	Qr   c                    U R                  SS5        U R                  5         U R                  SU R                  S5      5        U R	                  S5        U R	                  S5        U R                  SS9n[        R                  [        R                  R                  S5      /nU R                  USSR                  U5      5        U R                  USU R                  S	S
5      5        g)z=Test generate_config_data Dockerfile contents with .war file.rP   r#   r$   r%   r&   r'   Tr(   r*   r+   N)r,   r-   r.   r   r   r>   r0   rQ   rR   r   r?   r4   r/   r@   s      r   !test_java_files_with_war_no_write.RuntimeTests.test_java_files_with_war_no_write   s    	2&--j.2.@.@.H	JL)O,--T-:	//,,33I>
 	00GG'(	* 	00&&v~>	@r   c                    U R                  SS5        U R                  5         U R                  SU R                  S5      5        U R	                  S5        U R	                  S5        U R                  SS9  [
        R                  [
        R                  R                  S5      [
        R                  R                  S5      /nU R                  SSR                  U5      5        U R                  SU R                  S	S
5      5        g )Nr"   r#   r$   r%   r&   r'   Tr(   r*   r+   )r,   r-   r.   r   r   r0   r1   r2   r   r3   r4   r/   r9   s     r   test_java_files_with_jar%RuntimeTests.test_java_files_with_jar   s    	2&--j.2.@.@.H	JL)O,T*..,,33I>..55i@

 	--l.0gg6I.J	L--&&v~>	@r   c                    U R                  SS5        U R                  5         U R                  SU R                  S5      5        U R	                  S5        U R	                  S5        U R                  SS9n[        R                  [        R                  R                  S5      [        R                  R                  S5      /nU R                  USSR                  U5      5        U R                  USU R                  S	S
5      5        g)z=Test generate_config_data Dockerfile contents with .jar file.r"   r#   r$   r%   r&   r'   Tr(   r*   r+   N)r,   r-   r.   r   r   r>   r0   r1   r2   r   r3   r?   r4   r/   r@   s      r   !test_java_files_with_jar_no_write.RuntimeTests.test_java_files_with_jar_no_write   s    	2&--j.2.@.@.H	JL)O,--T-:	..,,33I>..55i@

 	00GG'(	* 	00&&v~>	@r   c                    U R                  SS5        U R                  5         U R                  SU R                  S5      5        U R	                  S5        U R	                  S5        U R                  SS9  [
        R                  [
        R                  R                  S	5      /nU R                  SSR                  U5      5        U R                  SU R                  S
S5      5        g )NWEB-INFr#   r$   r%   r&   r'   Tr(   .r*   r+   )r,   r-   r.   r   r   r0   DOCKERFILE_COMPAT_PREAMBLEr2   r   r4   r/   r9   s     r   test_java_files_with_webinf(RuntimeTests.test_java_files_with_webinf   s    	2&--j.2.@.@.H	JL)O,T*00,,33C8
 	--l.0gg6I.J	L--&&v~>	@r   c                    U R                  SS5        U R                  5         U R                  SU R                  S5      5        U R	                  S5        U R	                  S5        U R                  SS9n[        R                  [        R                  R                  S	5      /nU R                  USSR                  U5      5        U R                  USU R                  S
S5      5        g)zBTest generate_config_data Dockerfile contents with 'WEB-INF' file.r_   r#   r$   r%   r&   r'   Tr(   r`   r*   r+   N)r,   r-   r.   r   r   r>   r0   ra   r2   r   r?   r4   r/   r@   s      r   $test_java_files_with_webinf_no_write1RuntimeTests.test_java_files_with_webinf_no_write  s    	2&--j.2.@.@.H	JL)O,--T-:	00,,33C8
 	00GG'(	* 	00&&v~>	@r   c                 V  ^ U R                  SS5        U R                  SS5        / mU4S jn[        R                  R                  [        R
                  SU05         U R                  U R                  5       5        S S S 5        U R                  TS/5        g ! , (       d  f       N"= f)Nr_   r#   r"   c                 (   > TR                  U 5        g r
   appendmessageerrorss    r   	ErrorFakeGRuntimeTests.test_java_files_with_too_many_artifacts.<locals>.ErrorFake.      
--
 r   errorz@Too many java artifacts to deploy (.jar, .war, or Java Web App).)	r,   mockpatchdictr   
_LOG_FUNCSr   r-   r5   )r   rn   rm   s     @r   'test_java_files_with_too_many_artifacts4RuntimeTests.test_java_files_with_too_many_artifacts(  s    	2&	2&	! ZZ__[33gy5IJT2245 K 	+ ,	- KJs    B
B(c           	      h   U R                  SS5        [        R                  " SS[        SSS9S9nU R	                  US	S
9  [
        R                  [
        R                  R                  S5      /nU R                  SSR                  U5      5        U R                  SU R                  SS5      5        g )NrP   r#   r%   flexopenjdk8jetty9jdkserverr   envruntime_configTappinfor)   r&   r'   r*   r+   )r,   r   AppInfoFakert   r-   r0   rQ   rR   r   r.   r4   r/   )r   r   r:   s      r   !test_java_files_with_war_and_yaml.RuntimeTests.test_java_files_with_war_and_yaml;  s    	2&&&!" 	gd;//,,33I>
 	--l.0gg6I.J	L--&&v~>	@r   c           	      l   U R                  SS5        [        R                  " SS[        SSS9S9nU R	                  US	S
9n[
        R                  [
        R                  R                  S5      /nU R                  USSR                  U5      5        U R                  USU R                  SS5      5        g)z5Test generate_config_data with .war and fake appinfo.rP   r#   r%   2rz   r{   r|   r   Tr   r&   r'   r*   r+   N)r,   r   r   rt   r>   r0   rQ   rR   r   r?   r4   r/   )r   r   rA   r:   s       r   *test_java_files_with_war_and_yaml_no_write7RuntimeTests.test_java_files_with_war_and_yaml_no_writeN  s    	2&&&!" --gd-K	//,,33I>
 	00GG'(	* 	00&&v~>	@r   c           	      h   U R                  SS5        [        R                  " SS[        SSS9S9nU R	                  US	S
9  [
        R                  [
        R                  R                  S5      /nU R                  SSR                  U5      5        U R                  SU R                  SS5      5        g )Nr_   r#   r%   r   rz   r{   r|   r   Tr   r`   r&   r'   r*   r+   r,   r   r   rt   r-   r0   ra   r2   r   r.   r4   r/   r   configr:   s      r   .test_java_files_with_web_inf_and_yaml_and_env2;RuntimeTests.test_java_files_with_web_inf_and_yaml_and_env2e  s    	2&%%  	fT:00,,33C8
 	--l.0gg6I.J	L--&&v~>	@r   c           	      l   U R                  SS5        [        R                  " SS[        SSS9S9nU R	                  US	S
9n[
        R                  [
        R                  R                  S5      /nU R                  USSR                  U5      5        U R                  USU R                  SS5      5        g)z9Test generate_config_data with .war, fake appinfo, env=2.r_   r#   r%   r   rz   r{   r|   r   Tr   r`   r&   r'   r*   r+   Nr,   r   r   rt   r>   r0   ra   r2   r   r?   r4   r/   r   r   rA   r:   s       r   7test_java_files_with_web_inf_and_yaml_and_env2_no_writeDRuntimeTests.test_java_files_with_web_inf_and_yaml_and_env2_no_writex  s    	2&%%!" --fT-J	00,,33C8
 	00GG'(	* 	00&&v~>	@r   c                 f   U R                  SS5        [        R                  " SS[        SS9S9nU R	                  USS9  [
        R                  [
        R                  R                  S	5      /nU R                  S
SR                  U5      5        U R                  SU R                  SS5      5        g )Nr_   r#   r%   Tr{   r~   r   vmr   r   r`   r&   r'   r*   r+   )r,   r   r   rt   r-   r0   DOCKERFILE_LEGACY_PREAMBLEr2   r   r.   r4   r/   r   s      r   1test_java_files_with_web_inf_and_yaml_and_no_env2>RuntimeTests.test_java_files_with_web_inf_and_yaml_and_no_env2  s    	2&%%x02 	fT:00,,33C8
 	--l.0gg6I.J	L--&&v~>	@r   c                 j   U R                  SS5        [        R                  " SS[        SS9S9nU R	                  USS9n[
        R                  [
        R                  R                  S	5      /nU R                  US
SR                  U5      5        U R                  USU R                  SS5      5        g)z<Test generate_config_data with .war, fake appinfo, env != 2.r_   r#   r%   Tr{   r   r   r   r`   r&   r'   r*   r+   N)r,   r   r   rt   r>   r0   r   r2   r   r?   r4   r/   r   s       r   :test_java_files_with_web_inf_and_yaml_and_no_env2_no_writeGRuntimeTests.test_java_files_with_web_inf_and_yaml_and_no_env2_no_write  s    	2&%%x02 --fT-J	00,,33C8
 	00GG'(	* 	00&&v~>	@r   c           	      h   U R                  SS5        [        R                  " SS[        SSS9S9nU R	                  USS	9  [
        R                  [
        R                  R                  S
5      /nU R                  SSR                  U5      5        U R                  SU R                  SS5      5        g )Nr_   r#   r%   Trz   r{   r|   r   r   r`   r&   r'   r*   r+   r   r   s      r   ;test_java_files_with_web_inf_and_yaml_and_open_jdk8_no_env2HRuntimeTests.test_java_files_with_web_inf_and_yaml_and_open_jdk8_no_env2  s    	2&%%!" 	fT:00,,33C8
 	--l.0gg6I.J	L--&&v~>	@r   c           	      l   U R                  SS5        [        R                  " SS[        SSS9S9nU R	                  USS	9n[
        R                  [
        R                  R                  S
5      /nU R                  USSR                  U5      5        U R                  USU R                  SS5      5        g)z:Test generate_config_data with WEB-INF file, fake appinfo.r_   r#   r%   Trz   r{   r|   r   r   r`   r&   r'   r*   r+   Nr   r   s       r   Dtest_java_files_with_web_inf_and_yaml_and_open_jdk8_no_env2_no_writeQRuntimeTests.test_java_files_with_web_inf_and_yaml_and_open_jdk8_no_env2_no_write  s     		2&%%!" --fT-J	00,,33C8
 	00GG'(	* 	00&&v~>	@r   c                 l  ^ U R                  SS5        / mU4S jn[        R                  " SS[        SS9S9n[        R
                  R                  [        R                  S	U05         U R                  U R                  US
S95        S S S 5        U R                  TS/5        g ! , (       d  f       N"= f)NrP   r#   c                 (   > TR                  U 5        g r
   ri   rk   s    r   rn   ARuntimeTests.test_java_files_with_config_error.<locals>.ErrorFake  rp   r   r%   r   openjdk9)r}   r   rq   Tr   zUnknown JDK : openjdk9.)r,   r   r   rt   rr   rs   r   ru   r   r-   r5   )r   rn   r   rm   s      @r   !test_java_files_with_config_error.RuntimeTests.test_java_files_with_config_error  s    	2&	! %% !
 ZZ__[33gy5IJT226$2OP K";!<= KJs   ) B%%
B3c                     U R                  SS5        [        R                  " SSS9nU R                  U R	                  USS95        g )Nr"   r#   r%   r   r   r   Tr   )r,   r   r   
assertTruer-   )r   r   s     r   test_java_custom_runtime_field+RuntimeTests.test_java_custom_runtime_field  sD    	2&%% 	--fT-JKr   c                 V   U R                  SS5        [        R                  " SSS9nU R                  USS9  [        R
                  [        R                  R                  S5      /nU R                  SSR                  U5      5        U R                  S	U R                  S
S5      5        g )Nr_   r#   java7Tr   r   r   r`   r&   r'   r*   r+   )r,   r   r   r-   r0   r   r2   r   r.   r4   r/   r   s      r   test_java7_runtimeRuntimeTests.test_java7_runtime  s    	2&%% 	fT:00,,33C8
 	--l.0gg6I.J	L--&&v~>	@r   c                 Z   U R                  SS5        [        R                  " SSS9nU R                  USS9n[        R
                  [        R                  R                  S5      /nU R                  USSR                  U5      5        U R                  US	U R                  S
S5      5        g)z-Test generate_config_data with java7 runtime.r_   r#   r   Tr   r   r`   r&   r'   r*   r+   N)r,   r   r   r>   r0   r   r2   r   r?   r4   r/   r   s       r   test_java7_runtime_no_write(RuntimeTests.test_java7_runtime_no_write  s    	2&%% --fT-J	00,,33C8
 	00GG'(	* 	00&&v~>	@r   c                     U R                  SS5        U R                  5       nU R                  UR                  SSS.5        g )NrP   r#   r%   ry   r   r,   detectr5   generated_appinfor   configurators     r   test_detect_appinfo_war$RuntimeTests.test_detect_appinfo_war  =    	2&{{}77FAG:I 	Jr   c                     U R                  SS5        U R                  5       nU R                  UR                  SSS.5        g )Nr"   r#   r%   ry   r   r   r   s     r   test_detect_appinfo_jar$RuntimeTests.test_detect_appinfo_jar"  r   r   )r   )#__name__
__module____qualname____firstlineno__r   r   r   r;   rB   rG   rJ   rM   rS   rV   rY   r\   rb   re   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes____classcell__)r   s   @r   r   r   .   s    *@IQ42<L$*4E
Q&@0@*@2@(@0-&@&@.@&@.@"@*@&@0>"L@ @(JJ Jr   r   __main__)__doc__loggingrr   r   resysshutiltempfiletextwrapunittestgae_ext_runtimer   r   r   dirnameabspath__file__ROOT_DIRrj   r4   r0   r   TestBaser   r   main r   r   <module>r      s     !   	 	 
     $ ' 77??277??277??8+DEF Xu- .  77??277??8#<= xJ8$$ xJt z
--/ r   