
    kcۋ                     *   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ  G d de j                        Z	 G d	 d
e j                        Z
 G d de j                        Z G d de j                        Z G d de j                        Z G d de j                        Z G d de j                        Z G d de j                        Z G d de j                        Z G d de j                        Z G d d      Z G d de      Z G d d       Zy)!    N)DummySupervisor)DummyRequest)DummySupervisorRPCNamespace	xmlrpclib)httplibc                       e Zd Zd Zd Zy)GetFaultDescriptionTestsc                 ~    ddl m} |j                  |j                  j                        }| j                  |d       y )Nr   xmlrpcSHUTDOWN_STATE)
supervisorr   getFaultDescriptionFaultsr   assertEqualselfr   descs      >/usr/lib/python3/dist-packages/supervisor/tests/test_xmlrpc.py(test_returns_description_for_known_faultzAGetFaultDescriptionTests.test_returns_description_for_known_fault   s0    %))&--*F*FG/0    c                 V    ddl m} |j                  d      }| j                  |d       y )Nr   r   i?B UNKNOWN)r   r   r   r   r   s      r   &test_returns_unknown_for_unknown_faultz?GetFaultDescriptionTests.test_returns_unknown_for_unknown_fault   s%    %))&1y)r   N)__name__
__module____qualname__r   r    r   r   r
   r
   
   s    1
*r   r
   c                   ,    e Zd Zd ZddZd Zd Zd Zy)RPCErrorTestsc                     ddl m} |S )Nr   RPCError)supervisor.xmlrpcr$   )r   r$   s     r   _getTargetClasszRPCErrorTests._getTargetClass   s
    .r   Nc                 0     | j                         ||      S Nr&   )r   codeextras      r   _makeOnezRPCErrorTests._makeOne   s    %t##%dE22r   c                     ddl m} | j                  |j                  j                        }| j                  |j                  d       y )Nr   r   FAILEDr   r   r,   r   r.   r   textr   r   es      r   #test_sets_text_with_fault_name_onlyz1RPCErrorTests.test_sets_text_with_fault_name_only   s1    %MM&--../*r   c                     ddl m} | j                  |j                  j                  d      }| j                  |j                  d       y )Nr   r   oopszFAILED: oopsr/   r1   s      r   (test_sets_text_with_fault_name_and_extraz6RPCErrorTests.test_sets_text_with_fault_name_and_extra"   s3    %MM&--..70r   c                     ddl m} | j                  |j                  j                  d      }| j                  t        |      d|j                  j                  z         y )Nr   r   z/nonexistentz%code=%r, text='NO_FILE: /nonexistent')r   r   r,   r   NO_FILEr   strr1   s      r    test___str___shows_code_and_textz.RPCErrorTests.test___str___shows_code_and_text'   sE    %MM&--//@Q3fmm6K6KK	r   r(   )r   r   r   r&   r,   r3   r6   r:   r   r   r   r!   r!      s    3+
1
r   r!   c                       e Zd Zd Zy)XMLRPCMarshallingTestsc                    ddl m} |j                  d      }| j                  |t	        j
                  dd             t	        j                  dd      }|j                  |      }| j                  |t	        j
                  |             y )Nr   r      )r>   T)methodresponsefoo)r   r   xmlrpc_marshalr   r   dumpsFault)r   r   datafaults       r   test_xmlrpc_marshalz*XMLRPCMarshallingTests.test_xmlrpc_marshal/   si    %$$Q'ytDIJ5)$$U+yu56r   N)r   r   r   rF   r   r   r   r<   r<   .   s    7r   r<   c                   `    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 Zd Zd Zy)XMLRPCHandlerTestsc                     ddl m} |S )Nr   )supervisor_xmlrpc_handler)r%   rJ   )r   rJ   s     r   r&   z"XMLRPCHandlerTests._getTargetClass8   s    ?((r   c                 0     | j                         ||      S r(   r)   )r   supervisordsubinterfacess      r   r,   zXMLRPCHandlerTests._makeOne<   s    %t##%k=AAr   c                     t               }dt               fg}| j                  ||      }| j                  |j                  |       ddlm} | j                  |j                  j                  |       y )Nr   r   )RootRPCInterface)	r   r   r,   r   rL   r%   rO   rpcinterface	__class__)r   r   rM   handlerrO   s        r   	test_ctorzXMLRPCHandlerTests.test_ctor?   sa    $&
&(C(EFG--
M:,,j96--779IJr   c                     G d d      }t               }dt               fg}| j                  ||      }| j                  |j	                   |d            d       | j                  |j	                   |d            d       y )Nc                       e Zd Zd Zy)4XMLRPCHandlerTests.test_match.<locals>.DummyRequest2c                     || _         y r(   )uri)r   rX   s     r   __init__z=XMLRPCHandlerTests.test_match.<locals>.DummyRequest2.__init__I   s	    r   N)r   r   r   rY   r   r   r   DummyRequest2rV   H   s    r   rZ   r   z/RPC2Tz/nopeF)r   r   r,   r   match)r   rZ   r   rM   rR   s        r   
test_matchzXMLRPCHandlerTests.test_matchG   ss    	 	 %&
&(C(EFG--
M:}W'=>E}W'=>Fr   c                 R   t               }dt               fg}| j                  ||      }t        j                  dd      }t        dd d d       }|j                  ||       |j                  j                  j                  }| j                  t        |      d       | j                  |d   d       | j                  |d   d	       | j                  t        |j                        d
       |j                  d   }| j                  t        j                  t        j                  |       y )Nr   )abzsupervisor.noSuchMethod
/what/ever   z0XML-RPC method called: supervisor.noSuchMethod()zKXML-RPC method supervisor.noSuchMethod() returned fault: [1] UNKNOWN_METHODr>   r   )r   r   r,   r   rB   r   continue_requestoptionsloggerrD   r   len	producersassertRaisesrC   loads)r   r   rM   rR   rD   requestlogdataxml_responses           r   "test_continue_request_nosuchmethodz5XMLRPCHandlerTests.test_continue_request_nosuchmethodQ   s    $&
&(C(EFG--
M:z+DE|T4>  w/$$++00Wq)K	M!	# 	W../3((+)//9??LIr   c                     t               }dt               fg}| j                  ||      }t        j                  dd      }t        dd d d       }|j                  ||       |j                  j                  j                  }| j                  t        |      d       | j                  |d   d       | j                  |d   d	       | j                  t        |j                        d
       |j                  d   }t        j                  |      }ddlm}	 | j                  |d   d   |	       | j                  |j                   d       | j                  |j"                  d   d       | j                  |j"                  d   t        |             y )Nr   r   zsupervisor.getAPIVersionr`   ra   rb   1XML-RPC method called: supervisor.getAPIVersion()rc   ?XML-RPC method supervisor.getAPIVersion() returned successfullyr>   r   API_VERSIONTContent-Typetext/xmlContent-Length)r   r   r,   r   rB   r   rd   re   rf   rD   r   rg   rh   rj   supervisor.rpcinterfacers   _doneheaders
r   r   rM   rR   rD   rk   rl   rm   responsers   s
             r   #test_continue_request_methodsuccessz6XMLRPCHandlerTests.test_continue_request_methodsuccessc   sW   $&
&(C(EFG--
M:r#=>|T4>  w/$$++00Wq)B	DM	OW../3((+??<07!Q5-8*E)9:C<MNr   c                    t               }dt               fg}| j                  ||      }d}t        dd d d       }|j	                  ||       |j
                  j                  j                  }| j                  t        |      d       | j                  |d   d       | j                  |d   d       | j                  t        |j                        d	       |j                  d
   }t        j                  |      }d
dlm}	 | j                  |d
   d
   |	       | j                  |j                  d       | j                  |j                   d   d       | j                  |j                   d   t        |             y )Nr   zp<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>supervisor.getAPIVersion</methodName></methodCall>r`   ra   rb   rp   rc   rq   r>   r   rr   Trt   ru   rv   )r   r   r,   r   rd   re   rf   rD   r   rg   rh   r   rj   rw   rs   rx   ry   rz   s
             r   *test_continue_request_no_params_in_requestz=XMLRPCHandlerTests.test_continue_request_no_params_in_requesty   sO   $&
&(C(EFG--
M: |T4>  w/$$++00Wq)B	DM	OW../3((+??<07!Q5-8*E)9:C<MNr   c                    t               }dt               fg}| j                  ||      }d}t        dd d d       }|j	                  ||       |j
                  j                  j                  }| j                  t        |      d       | j                  |d   j                  d             | j                  t        |      |d   v        | j                  |d   j                  d             | j                  |j                  d       y )	Nr   zX<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName></methodName></methodCall>r`   r>   r   XML-RPC request datazis invalid: no method name  r   r   r,   r   rd   re   rf   rD   r   rg   
assertTrue
startswithreprendswith_errorr   r   rM   rR   rD   rk   rl   s          r   1test_continue_request_400_if_method_name_is_emptyzDXMLRPCHandlerTests.test_continue_request_400_if_method_name_is_empty   s    $&
&(C(EFG--
M:D|T4>  w/$$++00Wq)
--.DEFT
gaj01
++,HIJ-r   c                    t               }dt               fg}| j                  ||      }d}t        dd d d       }|j	                  ||       |j
                  j                  j                  }| j                  t        |      d       | j                  |d   j                  d             | j                  t        |      |d   v        | j                  |d   j                  d             | j                  |j                  d       y )	Nr   z#this is not an xml-rpc request bodyr`   r>   r   r   is invalid: unmarshallabler   r   r   s          r   1test_continue_request_400_if_loads_raises_not_xmlzDXMLRPCHandlerTests.test_continue_request_400_if_loads_raises_not_xml   s    $&
&(C(EFG--
M:4|T4>  w/$$++00Wq)
--.DEFT
gaj01
++,HIJ-r   c                    t               }dt               fg}| j                  ||      }d}t        dd d d       }|j	                  ||       |j
                  j                  j                  }| j                  t        |      d       | j                  |d   j                  d             | j                  t        |      |d   v        | j                  |d   j                  d             | j                  |j                  d       y )	Nr   z&<methodName></methodName><junk></junk>r`   r>   r   r   r   r   r   r   s          r   3test_continue_request_400_if_loads_raises_weird_xmlzFXMLRPCHandlerTests.test_continue_request_400_if_loads_raises_weird_xml   s    $&
&(C(EFG--
M:7|T4>  w/$$++00Wq)
--.DEFT
gaj01
++,HIJ-r   c                 \   t               }dt               fg}| j                  ||      }t        j                  dd      }t        dd d d       }|j                  ||       |j                  j                  j                  }| j                  t        |      d       | j                  |d   d       | j                  d|d	   v        | j                  t        |      |d	   v        | j                  d
|d	   v        | j                  d|d	   v        | j                  |j                  d       y )Nr   r   zsupervisor.raiseErrorr`   ra   r   z.XML-RPC method called: supervisor.raiseError()unexpected exceptionr>   	TracebackzValueError: error  r   r   r,   r   rB   r   rd   re   rf   rD   r   rg   r   r   r   r   s          r   <test_continue_request_500_if_rpcinterface_method_call_raiseszOXMLRPCHandlerTests.test_continue_request_500_if_rpcinterface_method_call_raises   s   $&
&(C(EFG--
M:r#:;|T4>  w/$$++00Wq)?	A.'!*<=T
gaj01wqz12+wqz9:-r   c                    t               }dt               fg}| j                  ||      }t        j                  dd      }t        dd d d       }|j                  ||       |j                  j                  j                  }| j                  t        |      d       | j                  |d   d       | j                  |d   d	       | j                  d
|d   v        | j                  t        |      |d   v        | j                  d|d   v        | j                  d|d   v        | j                  |j                  d       y )Nr   r   z"supervisor.getXmlRpcUnmarshallabler`      r   z;XML-RPC method called: supervisor.getXmlRpcUnmarshallable()r>   zIXML-RPC method supervisor.getXmlRpcUnmarshallable() returned successfullyr   ra   r   zTypeError: cannot marshalr   r   r   s          r   0test_continue_request_500_if_xmlrpc_dumps_raiseszCXMLRPCHandlerTests.test_continue_request_500_if_xmlrpc_dumps_raises   s(   $&
&(C(EFG--
M:r#GH|T4>  w/$$++00Wq)L	N'	( 	.'!*<=T
gaj01wqz123wqzAB-r   c                 <    G d dt               }t               }dt               fd |       fg}| j                  ||      }t	        j
                  dd      }t        dd d d       }|j                  ||       |j                  j                  j                  }| j                  t        |      d       | j                  |d	   d
       | j                  |d   d       | j                  t        |j                        d       | j                  |j                  d       y )Nc                       e Zd Zd Zy)UXMLRPCHandlerTests.test_continue_request_value_is_function.<locals>.DummyRPCNamespacec                     d }d|_         |S )Nc                      yNr>   r   r   s    r   innerzhXMLRPCHandlerTests.test_continue_request_value_is_function.<locals>.DummyRPCNamespace.foo.<locals>.inner   s    r   g?)delay)r   r   s     r   r@   zYXMLRPCHandlerTests.test_continue_request_value_is_function.<locals>.DummyRPCNamespace.foo   s    !r   Nr   r   r   r@   r   r   r   DummyRPCNamespacer      s    r   r   r   ns1r   ns1.foor`   ra   rb   z XML-RPC method called: ns1.foo()rc   z.XML-RPC method ns1.foo() returned successfullyr   F)objectr   r   r,   r   rB   r   rd   re   rf   rD   r   rg   rh   rx   )r   r   r   rM   rR   rD   rk   rl   s           r   'test_continue_request_value_is_functionz:XMLRPCHandlerTests.test_continue_request_value_is_function   s    	 	 %&
&(C(EF "3"568--
M:r9-|T4>  w/$$++00Wq)1	3<	>W../3.r   c                    d}t               }dt               fg}| j                  ||      }|j                  |      }|\  }}dd l}| j                  |d       | j                  |d   d       | j                  |d   d       | j                  |d   d	       | j                  |d
   d       | j                  |d   d	       | j                  |d   d       | j                  |d   d       | j                  |d   |j	                  dddddd             | j                  |d   d       | j                  |d   ddd       | j                  |d   g d       | j                  |d   ddi gi       y )Na  <?xml version="1.0"?>
        <methodCall>
        <methodName>examples.getStateName</methodName>
        <params>
        <param>
        <value><i4>41</i4></value>
        </param>
        <param>
        <value><string>foo</string></value>
        </param>
        <param>
        <value><string></string></value>
        </param>
        <param>
        <!-- xml-rpc spec allows strings without <string> tag -->
        <value>bar</value>
        </param>
        <param>
        <value></value>
        </param>
        <param>
        <value><boolean>1</boolean></value>
        </param>
        <param>
        <value><double>-12.214</double></value>
        </param>
        <param>
        <value>
        <dateTime.iso8601>19980717T14:08:55</dateTime.iso8601>
        </value>
        </param>
        <param>
        <value><base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64></value>
        </param>
        <param>
        <struct>
        <member><name>j</name><value><i4>5</i4></value></member>
        <member><name>k</name><value>abc</value></member>
        </struct>
        </param>
        <param>
        <array>
          <data>
            <value><i4>12</i4></value>
            <value><string>abc</string></value>
            <value>def</value>
            <value><i4>34</i4></value>
          </data>
        </array>
        </param>
        <param>
        <struct>
          <member>
            <name>k</name>
            <value><array><data>
              <value><i4>1</i4></value>
              <struct></struct>
            </data></array></value>
          </member>
        </struct>
        </param>
        </params>
        </methodCall>
        r   r   zexamples.getStateName)   r>   r@   ra    r   bar      T   g!rhm(   i           7   zyou can't read this!	   abc)jk
   )   r   def"      r   )r   r   r,   rj   datetimer   )	r   sr   rM   rR   resultparamsmethodr   s	            r   test_iterparse_loads_methodcallz2XMLRPCHandlerTests.test_iterparse_loads_methodcall   st   ?@ %&
&(C(EFG--
M:q!!89B'E*B'E*B'D)G,H$5$5dAr2q"$MN$:;!%$89%;<cAr7^4r   N)r   r   r   r&   r,   rS   r\   rn   r|   r~   r   r   r   r   r   r   r   r   r   r   rH   rH   7   sO    )BKGJ$O,O2....".(/.S5r   rH   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TraverseTestsc                     ddl m}  G d d      } G d d      } |       } |       |_        | j                  |j                  |j
                  |dg        y )Nr   r   c                       e Zd Zy)FTraverseTests.test_security_disallows_underscore_methods.<locals>.RootNr   r   r   r   r   r   Rootr   Q      r   r   c                       e Zd Zd Zy)CTraverseTests.test_security_disallows_underscore_methods.<locals>.Ac                      yNTr   r   s    r   _dangerzKTraverseTests.test_security_disallows_underscore_methods.<locals>.A._dangerT      r   N)r   r   r   r   r   r   r   Ar   S      r   r   z	a._dangerr   r   r^   ri   r$   traverser   r   r   r   roots        r   *test_security_disallows_underscore_methodsz8TraverseTests.test_security_disallows_underscore_methodsO  sL    %	 		 	 v&//6??+r	#r   c                     ddl m}  G d d      } G d d      } G d d      } |       } |       |_         |       |j                  _        | j	                  |j
                  |j                  |d	g        y )
Nr   r   c                       e Zd Zy)DTraverseTests.test_security_disallows_object_traversal.<locals>.RootNr   r   r   r   r   r   ]  r   r   r   c                       e Zd Zy)ATraverseTests.test_security_disallows_object_traversal.<locals>.ANr   r   r   r   r   r   _  r   r   r   c                       e Zd Zd Zy)ATraverseTests.test_security_disallows_object_traversal.<locals>.Bc                      yr   r   r   s    r   dangerzHTraverseTests.test_security_disallows_object_traversal.<locals>.B.dangerb  r   r   N)r   r   r   r   r   r   r   Br   a  r   r   r   z
a.b.dangerr   r   r^   r_   ri   r$   r   r   r   r   r   r   r   s         r   (test_security_disallows_object_traversalz6TraverseTests.test_security_disallows_object_traversal[  sc    %	 		 		 	 v3&//6??,	$r   c                     ddl m}  G d d      } |       }| j                  |j                  |j                  |dd        y )Nr   r   c                       e Zd Zy)9TraverseTests.test_namespace_name_not_found.<locals>.RootNr   r   r   r   r   r   l  r   r   r   znotfound.hello)r   r   ri   r$   r   )r   r   r   r   s       r   test_namespace_name_not_foundz+TraverseTests.test_namespace_name_not_foundj  s8    %	 	v&//6??"D	*r   c                     ddl m}  G d d      } G d d      } |       } |       |_        | j                  |j                  |j
                  |dg        y )Nr   r   c                       e Zd Zy)6TraverseTests.test_method_name_not_found.<locals>.RootNr   r   r   r   r   r   t  r   r   r   c                       e Zd Zy)3TraverseTests.test_method_name_not_found.<locals>.ANr   r   r   r   r   r   v  r   r   r   z
a.notfoundr   r   s        r   test_method_name_not_foundz(TraverseTests.test_method_name_not_foundr  sJ    %	 		 	v&//6??,	$r   c                     ddl m}  G d d      } G d d      } G d d      } |       } |       |_         |       |j                  _        | j	                  |j
                  |j                  |d	g        y )
Nr   r   c                       e Zd Zy)GTraverseTests.test_method_name_exists_but_is_not_a_method.<locals>.RootNr   r   r   r   r   r     r   r   r   c                       e Zd Zy)DTraverseTests.test_method_name_exists_but_is_not_a_method.<locals>.ANr   r   r   r   r   r     r   r   r   c                       e Zd Zy)DTraverseTests.test_method_name_exists_but_is_not_a_method.<locals>.BNr   r   r   r   r   r     r   r   r   za.br   r   s         r   +test_method_name_exists_but_is_not_a_methodz9TraverseTests.test_method_name_exists_but_is_not_a_method}  sa    %	 		 		 	v3&//6??%	r   c                     ddl m}  G d d      } G d d      } |       } |       |_        | j                  |j                  |j
                  |ddd	g       y )
Nr   r   c                       e Zd Zy)+TraverseTests.test_bad_params.<locals>.RootNr   r   r   r   r   r     r   r   r   c                       e Zd Zd Zy)(TraverseTests.test_bad_params.<locals>.Ac                     d|z  S NzHello %sr   r   names     r   helloz.TraverseTests.test_bad_params.<locals>.A.hello      !D((r   Nr   r   r   r   r   r   r   r   r         )r   r   a.hellotherer+   r   r   s        r   test_bad_paramszTraverseTests.test_bad_params  sQ    %	 		) 	) v&//6??)gw/	1r   c                     ddl m}  G d d      } G d d      } |       } |       |_        |j                  |ddg      }| j	                  |d	       y )
Nr   r   c                       e Zd Zy)(TraverseTests.test_success.<locals>.RootNr   r   r   r   r   r    r   r   r   c                       e Zd Zd Zy)%TraverseTests.test_success.<locals>.Ac                     d|z  S r   r   r   s     r   r   z+TraverseTests.test_success.<locals>.A.hello  r   r   Nr  r   r   r   r   r
    r  r   r   r  r  zHello there)r   r   r^   r   r   )r   r   r   r   r   r   s         r   test_successzTraverseTests.test_success  sO    %	 		) 	) vy7)</r   N)
r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   N  s%    
#$*	$
1
0r   r   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)SupervisorTransportTestsc                     ddl m} |S )Nr   )SupervisorTransport)r%   r  )r   r  s     r   r&   z(SupervisorTransportTests._getTargetClass  s    9""r   c                 .     | j                         |i |S r(   r)   r   argkws      r   r,   z!SupervisorTransportTests._makeOne  s    %t##%s1b11r   c                    ddl m} | j                  ddd      }|j                         }| j	                  t        ||j                               | j                  |j                  d       | j                  |j                  d       y )Nr   r   userpasszunix:///foo/bar	localhostz/foo/bar)
r   r   r,   _get_connectionr   
isinstanceUnixStreamHTTPConnectionr   host
socketfile)r   r   	transportconns       r   test_ctor_unixz'SupervisorTransportTests.test_ctor_unix  sg    %MM&&2CD	((*
4)H)HIJK0*5r   c                 J    | j                  t        | j                  ddd       y )Nr  r  zunknown:///foo/bar)ri   
ValueErrorr,   r   s    r   test_ctor_unknownz*SupervisorTransportTests.test_ctor_unknown  s     *MM66+?	r   c                    | j                  ddd      }|j                         }| j                  t        |t        j
                               | j                  |j                  d       | j                  |j                  d       y )Nr  r  zhttp://127.0.0.1:9001/	127.0.0.1i)#  	r,   r  r   r  r   HTTPConnectionr   r  portr   r  r  s      r   test__get_connection_http_9001z7SupervisorTransportTests.test__get_connection_http_9001  sd    MM&&2JK	((*
4)?)?@AK0D)r   c                    | j                  ddd      }|j                         }| j                  t        |t        j
                               | j                  |j                  d       | j                  |j                  d       y )Nr  r  http://127.0.0.1/r%  P   r&  r)  s      r   test__get_connection_http_80z5SupervisorTransportTests.test__get_connection_http_80  sd    MM&&2EF	((*
4)?)?@AK0B'r   c                 &   | j                  ddd      }t        dd      fd}||_        | j                  t        j
                  |j                  ddd       | j                  |j                  d        | j                  j                  d	       y )
Nr  r  r,  r   r   c                       S r(   r   
dummy_conns   r   getconnzGSupervisorTransportTests.test_request_non_200_response.<locals>.getconn  	    r   r  /T)
r,   DummyConnectionr  ri   r   ProtocolErrorrk   r   
connectionclosedr   r  r3  r2  s      @r   test_request_non_200_responsez6SupervisorTransportTests.test_request_non_200_response  s    MM&&2EF	$S"-
	$+	!)11#++[#r	C--t4**D1r   c                    | j                  ddd      }t        dd      fd}||_        | j                  t        j
                  |j                  ddd       | j                  |j                  d        | j                  j                  d	       | j                  j                  d
   d       | j                  j                  d   d       | j                  j                  d   d       | j                  j                  d   d   d       | j                  j                  d   d   d       | j                  j                  d   d   d       | j                  j                  d   d   d       y )Nr  r  r,  r   r   c                       S r(   r   r1  s   r   r3  zCSupervisorTransportTests.test_request_400_response.<locals>.getconn  r4  r   r  r5  Tr   POSTr>   ra   r   r   rv   0rt   ru   AuthorizationBasic dXNlcjpwYXNzAccept)r,   r6  r  ri   r   r7  rk   r   r8  r9  requestargsr:  s      @r   test_request_400_responsez2SupervisorTransportTests.test_request_400_response  sV   MM&&2EF	$S"-
	$+	!)11#++[#r	C--t4**D1//2F;//2C8//2C8//23CDcJ//2>BJO//2?C-	///28<jIr   c                    | j                  ddd      }d}t        d|      fd}||_        |j                  ddd	      }| j	                  |j
                         | j	                  j                  d
       | j	                  j                  d   d       | j	                  j                  d   d       | j	                  j                  d   d       | j	                  j                  d   d   d       | j	                  j                  d   d   d       | j	                  j                  d   d   d       | j	                  j                  d   d   d       | j	                  |d       y )Nr  r  r,  z<?xml version="1.0"?>
        <methodResponse>
        <params>
        <param>
        <value><string>South Dakota</string></value>
        </param>
        </params>
        </methodResponse>   c                       S r(   r   r1  s   r   r3  zCSupervisorTransportTests.test_request_200_response.<locals>.getconn  r4  r   r  r5  r   Fr   r>  r>   ra   r   r   rv   r?  rt   ru   r@  rA  rB  )zSouth Dakota)r,   r6  r  rk   r   r8  r9  rC  )r   r  r{   r3  r   r2  s        @r   test_request_200_responsez2SupervisorTransportTests.test_request_200_response  s^   MM&&2EF	 %S(3
	$+	!"";R8--z:**E2//2F;//2C8//2C8//23CDcJ//2>BJO//2?C-	///28<jI!23r   c                     | j                  ddd      }t        dd      fd}||_        |j                  ddd	       |j	                          | j                  j                         y )
Nr  r  r,  rF  zH<?xml version="1.0"?>
        <methodResponse><params/></methodResponse>c                       S r(   r   r1  s   r   r3  z4SupervisorTransportTests.test_close.<locals>.getconn  r4  r   r  r5  r   )r,   r6  r  rk   closer   r9  r:  s      @r   
test_closez#SupervisorTransportTests.test_close  sb    MM&&2EF	$S +6 7
	$+	!+sB/
))*r   N)r   r   r   r&   r,   r   r#  r*  r.  r;  rD  rH  rL  r   r   r   r  r    s5    #26
*(	2J&46	+r   r  c                   \    e Zd Zd ZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zy)TestDeferredXMLRPCResponsec                     ddl m} |S )Nr   )DeferredXMLRPCResponse)r%   rP  )r   rP  s     r   r&   z*TestDeferredXMLRPCResponse._getTargetClass  s    <%%r   Nc                 x    |t        d d d d d       }|t               }d|_         | j                         ||      S r   )r   Dummyr   r&   )r   rk   callbacks      r   r,   z#TestDeferredXMLRPCResponse._makeOne  sE    ?"4tT4@GwHHN%t##%gx88r   c                 ,   t               }d|_        | j                  d|      }| j                  |j                  |       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       y )Nr>   rk   )rk   rS  g      ?F)rR  r   r,   r   rS  rk   finishedr   rS  insts      r   rS   z$TestDeferredXMLRPCResponse.test_ctor  sr    7}}Y}B1S)y1.r   c                 v    | j                         }d|_        |j                         }| j                  |d       y )NTr   )r,   rU  morer   r   rW  r   s      r   test_more_finishedz-TestDeferredXMLRPCResponse.test_more_finished   s/    }}"%r   c                     ddl m fd}d|_        | j                  |      }| j	                  |j                                y )Nr   NOT_DONE_YETc                       S r(   r   r]  s   r   rS  zTTestDeferredXMLRPCResponse.test_more_callback_returns_not_done_yet.<locals>.callback(  s	    r   r>   rS  )supervisor.httpr^  r   r,   r   rY  )r   rS  rW  r^  s      @r   'test_more_callback_returns_not_done_yetzBTestDeferredXMLRPCResponse.test_more_callback_returns_not_done_yet&  s8    0	 }}h}/l3r   c                 ~   ddl mm fd}d|_        | j	                  |      }| j                  |j                         d        | j                  t        |j                  j                        d       | j                  d|j                  j                  d   v        | j                  |j                         y )Nr   r$   r   c                  (      j                         r(   )UNKNOWN_METHODr   r$   s   r   rS  zOTestDeferredXMLRPCResponse.test_more_callback_raises_RPCError.<locals>.callback0  s    60011r   r>   r`  rf  )r%   r$   r   r   r,   r   rY  rg   rk   rh   r   rU  )r   rS  rW  r   r$   s      @@r   "test_more_callback_raises_RPCErrorz=TestDeferredXMLRPCResponse.test_more_callback_raises_RPCError.  s    6	2}}h}/d+T\\334a8(DLL,B,B1,EEF&r   c                 d   d }d|_         | j                  |      }| j                  |j                         d        | j                  t	        |j
                  j                        d       | j                  d|j
                  j                  d   v        | j                  |j                         y )Nc                       y)Nr   r   r   r   r   rS  zMTestDeferredXMLRPCResponse.test_more_callback_returns_value.<locals>.callback:  s    r   r>   r`  r   r   )	r   r,   r   rY  rg   rk   rh   r   rU  rV  s      r    test_more_callback_returns_valuez;TestDeferredXMLRPCResponse.test_more_callback_returns_value9  s    	}}h}/d+T\\334a8!7!7!::;&r   c                    d }d|_         | j                  |      }| j                  |j                         d        | j                  |j                  j
                  d       | j                  |j                         |j                  j                  j                  j                  j                  }| j                  t        |      d       |d   \  }}| j                  |d       | j                  d|v        y )Nc                      t        d      Nr@   )r"  r   r   r   rS  z[TestDeferredXMLRPCResponse.test_more_callback_raises_unexpected_exception.<locals>.callbackD  s    U##r   r>   r`  r   r   zXML-RPC response callback errorr   )r   r,   r   rY  rk   r   r   rU  channelserverrf   loggedrg   )r   rS  rW  rq  srcmsgs         r   .test_more_callback_raises_unexpected_exceptionzITestDeferredXMLRPCResponse.test_more_callback_raises_unexpected_exceptionC  s    	$}}h}/d+,,c2&%%,,33::Va(!9S?@s*+r   c                 b   | j                         }d|j                  _        |j                  j                  j	                  d       |j                  d       | j                  t        |j                  j                        d       | j                  |j                  j                  d   d       y )N1.0zConnection: keep-aliver   r>   
Connectionz
Keep-Alive)
r,   rk   versionheaderappendgetresponser   rg   rh   ry   r   rW  s     r   'test_getresponse_http_10_with_keepalivezBTestDeferredXMLRPCResponse.test_getresponse_http_10_with_keepaliveQ  s~    }}$""#;<T\\334a8--l;\Jr   c                    | j                         }d|j                  _        |j                  d       | j	                  t        |j                  j                        d       | j	                  |j                  j                  d   d       y )Nrv  r   r>   rw  rK  r,   rk   rx  r{  r   rg   rh   ry   r|  s     r   %test_getresponse_http_10_no_keepalivez@TestDeferredXMLRPCResponse.test_getresponse_http_10_no_keepaliveY  se    }}$T\\334a8--l;WEr   c                    | j                         }d|j                  _        |j                  d       | j	                  t        |j                  j                        d       | j                  d|j                  j                  v       y )N1.1r   r>   rw  )	r,   rk   rx  r{  r   rg   rh   r   ry   r|  s     r   &test_getresponse_http_11_without_closezATestDeferredXMLRPCResponse.test_getresponse_http_11_without_close`  sa    }}$T\\334a8DLL,@,@@Ar   c                 b   | j                         }|j                  j                  j                  d       d|j                  _        |j                  d       | j                  t        |j                  j                        d       | j                  |j                  j                  d   d       y )NzConnection: closer  r   r>   rw  rK  )
r,   rk   ry  rz  rx  r{  r   rg   rh   ry   r|  s     r   #test_getresponse_http_11_with_closez>TestDeferredXMLRPCResponse.test_getresponse_http_11_with_closeg  s~    }}""#67$T\\334a8--l;WEr   c                    | j                         }d |j                  _        |j                  d       | j	                  t        |j                  j                        d       | j	                  |j                  j                  d   d       y )Nr   r>   rw  rK  r  r|  s     r   test_getresponse_http_unknownz8TestDeferredXMLRPCResponse.test_getresponse_http_unknowno  se    }}#T\\334a8--l;WEr   )NN)r   r   r   r&   r,   rS   r[  rb  rh  rk  rt  r}  r  r  r  r  r   r   r   rN  rN  
  sH    &9/&4	'',KFBFFr   rN  c                   t    e Zd Zd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 Zd Zd Zd Zd Zy)TestSystemNamespaceRPCInterfacec                     ddl m}  ||      S )Nr   )SystemNamespaceRPCInterface)r%   r  )r   
namespacesr  s      r   r,   z(TestSystemNamespaceRPCInterface._makeOnew  s    A*:66r   c                 l    | j                         }|j                         }| j                  |g d       y )N)system.listMethodssystem.methodHelpsystem.methodSignaturesystem.multicall)r,   listMethodsr   rZ  s      r   test_listMethods_gardenpathz;TestSystemNamespaceRPCInterface.test_listMethods_gardenpath{  s1    }}!!#	r   c                      G d dt               } |       }| j                  d|fg      }|j                         }| j                  |g d       y )Nc                       e Zd Zd Zd Zy)_TestSystemNamespaceRPCInterface.test_listMethods_omits_underscore_attrs.<locals>.DummyNamespacec                      y r(   r   r   s    r   r@   zcTestSystemNamespaceRPCInterface.test_listMethods_omits_underscore_attrs.<locals>.DummyNamespace.foo      r   c                      y r(   r   r   s    r   _barzdTestSystemNamespaceRPCInterface.test_listMethods_omits_underscore_attrs.<locals>.DummyNamespace._bar  r  r   N)r   r   r   r@   r  r   r   r   DummyNamespacer    s     r   r  r   )r   r  r  r  r  )r   r,   r  r   )r   r  r   rW  r   s        r   'test_listMethods_omits_underscore_attrszGTestSystemNamespaceRPCInterface.test_listMethods_omits_underscore_attrs  sP    	!V 	! }}ucl^,!!#	r   c                 l    | j                         }|j                  d      }| j                  d|v        y )Nr  array)r,   
methodHelpr   rZ  s      r   test_methodHelp_known_methodz<TestSystemNamespaceRPCInterface.test_methodHelp_known_method  s-    }}!566)*r   c                 j    ddl m} | j                         }| j                  ||j                  d       y Nr   r#   zwont.be.found)r%   r$   r,   ri   r  r   r$   rW  s      r   test_methodHelp_unknown_methodz>TestSystemNamespaceRPCInterface.test_methodHelp_unknown_method  s&    .}}(DOO_Er   c                 n    | j                         }|j                  d      }| j                  |ddg       y )Nr  r  string)r,   methodSignaturer   rZ  s      r   !test_methodSignature_known_methodzATestSystemNamespaceRPCInterface.test_methodSignature_known_method  s3    }}%%&>?'8!45r   c                 j    ddl m} | j                         }| j                  ||j                  d       y r  )r%   r$   r,   ri   r  r  s      r   #test_methodSignature_unknown_methodzCTestSystemNamespaceRPCInterface.test_methodSignature_unknown_method  s(    .}}(D$8$8/Jr   c                     ddl m}  G d dt              } |       }| j                  d|fg      }| j	                  ||j
                  d       y )Nr   r#   c                       e Zd Zd Zy)YTestSystemNamespaceRPCInterface.test_methodSignature_with_bad_sig.<locals>.DummyNamespacec                      y)z @param string name The thingNr   r   s    r   r@   z]TestSystemNamespaceRPCInterface.test_methodSignature_with_bad_sig.<locals>.DummyNamespace.foo  r  r   Nr   r   r   r   r  r    s    4r   r  r   r   )r%   r$   r   r,   ri   r  )r   r$   r  r   rW  s        r   !test_methodSignature_with_bad_sigzATestSystemNamespaceRPCInterface.test_methodSignature_with_bad_sig  sG    .	4V 	4 }}ucl^,(D$8$8)Dr   c                     ddl m} | j                         }ddig}|j                  |      }| j	                  ||j
                  ddg       y )Nr   r   
methodNamer  z:INCORRECT_PARAMETERS: Recursive system.multicall forbidden	faultCodefaultStringr%   r   r,   	multicallr   INCORRECT_PARAMETERSr   r   rW  callsresultss        r   #test_multicall_faults_for_recursionzCTestSystemNamespaceRPCInterface.test_multicall_faults_for_recursion  sU    ,}}123..'!66;= >	r   c                     ddl m} | j                         }i g}|j                  |      }| j	                  ||j
                  ddg       y )Nr   r  z#INCORRECT_PARAMETERS: No methodNamer  r  r  s        r   ,test_multicall_faults_for_missing_methodNamezLTestSystemNamespaceRPCInterface.test_multicall_faults_for_missing_methodName  sN    ,}}..'!66BD E	r   c                     ddl m} | j                         }ddig}|j                  |      }| j	                  ||j
                  ddg       y )Nr   r  r  zbad.stopProcessrf  r  )r%   r   r,   r  r   rf  r  s        r   2test_multicall_faults_for_methodName_bad_namespacezRTestSystemNamespaceRPCInterface.test_multicall_faults_for_methodName_bad_namespace  sS    ,}} 123..'!00-/ 0	r   c                     ddl m}  G d dt              } |       }| j                  d|fg      }ddig}|j	                  |      }| j                  ||j                  dd	g       y )
Nr   r  c                       e Zd Zy)oTestSystemNamespaceRPCInterface.test_multicall_faults_for_methodName_good_ns_bad_method.<locals>.DummyNamespaceNr   r   r   r   r  r    r   r   r  r   r  zns1.badrf  r  )r%   r   r   r,   r  r   rf  )r   r   r  r   rW  r  r  s          r   7test_multicall_faults_for_methodName_good_ns_bad_methodzWTestSystemNamespaceRPCInterface.test_multicall_faults_for_methodName_good_ns_bad_method  so    ,	V 	}}ucl^,	*+..'!00-/ 0	r   c                 n    | j                         }g }|j                  |      }| j                  |g        y r(   )r,   r  r   )r   rW  r  r  s       r   4test_multicall_returns_empty_results_for_empty_callszTTestSystemNamespaceRPCInterface.test_multicall_returns_empty_results_for_empty_calls  s0    }}..'"%r   c                      G d dt               } |       }| j                  d|fg      }ddgdddgdddgdg}|j                  |      }| j                  |g d	       y )
Nc                       e Zd Zd Zy)nTestSystemNamespaceRPCInterface.test_multicall_performs_noncallback_functions_serially.<locals>.DummyNamespacec                     |S )z  @param string name Process namer   r   s     r   sayzrTestSystemNamespaceRPCInterface.test_multicall_performs_noncallback_functions_serially.<locals>.DummyNamespace.say  s    r   N)r   r   r   r  r   r   r   r  r    s    r   r  r   zns1.sayAlvinr  r   SimonTheodore)r  r  r  )r   r,   r  r   )r   r  r   rW  r  r  s         r   6test_multicall_performs_noncallback_functions_seriallyzVTestSystemNamespaceRPCInterface.test_multicall_performs_noncallback_functions_serially  sr    	V 	 }}ucl^,$	:$	:$=

 ..'"@Ar   c                 "  	
 dd l 
ddlm	m  G 	
fddt              } |       }| j                  d|fg      }ddiddig}|j                  |      }j                  d	d
}j                  dt        z  d
}| j                  |||g       y )Nr   rd  c                   $    e Zd Z fdZfdZy)eTestSystemNamespaceRPCInterface.test_multicall_catches_noncallback_exceptions.<locals>.DummyNamespacec                 *     j                   d      rn  BAD_NAME)r   r   r$   s    r   bad_nameznTestSystemNamespaceRPCInterface.test_multicall_catches_noncallback_exceptions.<locals>.DummyNamespace.bad_name  s    v66r   c                 .    t        j                        r(   OSErrorENOENT)r   errnos    r   os_errorznTestSystemNamespaceRPCInterface.test_multicall_catches_noncallback_exceptions.<locals>.DummyNamespace.os_error   s    ell++r   Nr   r   r   r  r  r   r$   r  s   r   r  r    s    7,r   r  r   r  ns1.bad_namens1.os_errorBAD_NAME: foor  FAILED: %s:2)r  r%   r$   r   r   r,   r  r  r.   r  r   )r   r  r   rW  r  r  r  r  r   r$   r  s           @@@r   -test_multicall_catches_noncallback_exceptionszMTestSystemNamespaceRPCInterface.test_multicall_catches_noncallback_exceptions  s    6	, 	,V 	,
 }}ucl^,/,1OP..'!'#24!'#1G#;=8X"67r   c                 R  
 dd l ddlmm
 ddlm}  G 
fddt              } |       }| j                  d|fg      }ddidd	ig}|j                  |      }|}||u r |       }||u r
j                  d
d}
j                  dt        z  d}	| j                  |||	g       y )Nr   rd  r]  c                   $    e Zd Z fdZfdZy)bTestSystemNamespaceRPCInterface.test_multicall_catches_callback_exceptions.<locals>.DummyNamespacec                     fd}|S )Nc                  *      j                   d      rn  r  rg  s   r   r   zzTestSystemNamespaceRPCInterface.test_multicall_catches_callback_exceptions.<locals>.DummyNamespace.bad_name.<locals>.inner  s    "6??E::r   r   )r   r   r   r$   s     r   r  zkTestSystemNamespaceRPCInterface.test_multicall_catches_callback_exceptions.<locals>.DummyNamespace.bad_name  s    ;r   c                     fd}|S )Nc                  .    t         j                        r(   r  )r  s   r   r   zzTestSystemNamespaceRPCInterface.test_multicall_catches_callback_exceptions.<locals>.DummyNamespace.os_error.<locals>.inner  s    !%,,//r   r   )r   r   r  s     r   r  zkTestSystemNamespaceRPCInterface.test_multicall_catches_callback_exceptions.<locals>.DummyNamespace.os_error  s    0r   Nr  r  s   r   r  r    s    r   r  r   r  r  r  r  r  r  )r  r%   r$   r   ra  r^  r   r,   r  r  r.   r  r   )r   r^  r  r   rW  r  rS  r  r  r  r   r$   r  s             @@@r   *test_multicall_catches_callback_exceptionszJTestSystemNamespaceRPCInterface.test_multicall_catches_callback_exceptions  s    60	 	V 	 }}ucl^,/,1OP>>%(%jG % "(#24!'#1G#;=8X"67r   c                     ddl m  G fddt              } |       }| j                  d|fg      }dddid	d
ddid	g}|j	                  |      }}|u r |       }|u r| j                  |ddg       y )Nr   r]  c                   (    e Zd Z fdZ fdZd Zy)kTestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_serially.<locals>.DummyNamespacec                 ,    dg| _         dg| _        y )Nstop resultstart result)stop_resultsstart_results)r   r^  s    r   rY   ztTestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_serially.<locals>.DummyNamespace.__init__+  s"    %1< -%1!&4%5"r   c                       fd}|S )Nc                  T    j                   j                  d      } | urd_        | S )Nr   T)r  popstopped)r   r^  r   s    r   r   zTestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_serially.<locals>.DummyNamespace.stopProcess.<locals>.inner0  s-    !..2215F\1'+!Mr   r   )r   r   r   r^  s   `  r   stopProcesszwTestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_serially.<locals>.DummyNamespace.stopProcess/  s    "
 r   c                       fd}|S )Nc                  h     j                   st        d       j                  j                  d      S )NzThis should not raiser   )r  	Exceptionr  r  r   s   r   r   zTestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_serially.<locals>.DummyNamespace.startProcess.<locals>.inner7  s-    <<'(?@@--11!44r   r   )r   r   r   s   `  r   startProcesszxTestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_serially.<locals>.DummyNamespace.startProcess6  s    5 r   N)r   r   r   rY   r  r  r]  s   r   r  r  *  s    6r   r  r   zns1.stopProcessr   r@   r  zns1.startProcessr  r  )ra  r^  r   r,   r  r   )r   r  r   rW  r  rS  r  r^  s          @r   3test_multicall_performs_callback_functions_seriallyzSTestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_serially(  s    0	V 	$ }}ucl^, 1#UO- 2#UO-. >>%(%jG %=."ABr   N)r   )r   r   r   r,   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  v  s\    7
"+
F
6
K
E
		&B8&86Cr   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)Test_gettagsc                     ddl m}  ||      S )Nr   )gettags)r%   r  )r   commentr  s      r   _callFUTzTest_gettags._callFUTI  s    -wr   c                 R    d}| j                  |      }| j                  |ddg       y )Nz@foor   NNNr   )r   r@   r   r   r   r  r   r   linesr   s      r   test_one_atpartzTest_gettags.test_one_atpartM  s/    u%&(>?	r   c                 R    d}| j                  |      }| j                  |ddg       y )Nz
@foo arrayr  )r   r@   r  r   r   r  r  s      r   test_two_atpartszTest_gettags.test_two_atpartsU  s/    u%&(CD	r   c                 R    d}| j                  |      }| j                  |ddg       y )Nz@foo array namer  )r   r@   r  r   r   r  r  s      r   test_three_atpartszTest_gettags.test_three_atparts]  s/    !u%&(GH	r   c                 R    d}| j                  |      }| j                  |ddg       y )Nz@foo array name textr  )r   r@   r  r   r0   r  r  s      r   test_four_atpartszTest_gettags.test_four_atpartse  s/    &u%&(KL	r   N)r   r   r   r  r
  r  r  r  r   r   r   r   r   H  s     r   r   c                   $    e Zd Zd Zd Zd Zd Zy)Test_capped_intc                     ddl m}  ||      S )Nr   )
capped_int)r%   r  )r   valuer  s      r   r  zTest_capped_int._callFUTn  s    0%  r   c                 F    | j                  | j                  d      d       y )N42*   )r   r  r   s    r   test_converts_value_to_integerz.Test_capped_int.test_converts_value_to_integerr  s    t,b1r   c                     ddl m} | j                  | j                  |j                  dz
        |j                         y Nr   r   r>   )supervisor.compatr   r   r  MININTr   r   s     r   test_caps_value_below_minintz,Test_capped_int.test_caps_value_below_minintu  /    /y'7'7!';<i>N>NOr   c                     ddl m} | j                  | j                  |j                  dz         |j                         y r  )r  r   r   r  MAXINTr  s     r   test_caps_value_above_maxintz,Test_capped_int.test_caps_value_above_maxinty  r   r   N)r   r   r   r  r  r  r#  r   r   r   r  r  m  s    !2PPr   r  c                       e Zd ZddZd Zy)DummyResponsec                 .    || _         || _        || _        y r(   )statusbodyreasonr   r'  r(  r)  s       r   rY   zDummyResponse.__init__  s    	r   c                     | j                   S r(   )r(  r   s    r   readzDummyResponse.read  s    yyr   NrF  r   r)  )r   r   r   rY   r,  r   r   r   r%  r%  ~  s    
r   r%  c                       e Zd Zy)rR  Nr   r   r   r   rR  rR    s    r   rR  c                   *    e Zd ZdZddZd Zd Zd Zy)r6  Fc                 (    t        |||      | _        y r(   )r%  r{   r*  s       r   rY   zDummyConnection.__init__  s    %fdF;r   c                     | j                   S r(   )r{   r   s    r   r{  zDummyConnection.getresponse  s    }}r   c                      || _         || _        y r(   )rC  	requestkwr  s      r   rk   zDummyConnection.request  s    r   c                     d| _         y r   )r9  r   s    r   rK  zDummyConnection.close  s	    r   Nr-  )r   r   r   r9  rY   r{  rk   rK  r   r   r   r6  r6    s    F<r   r6  )unittestsupervisor.tests.baser   r   r   r  r   r   TestCaser
   r!   r<   rH   r   r  rN  r  r   r  r%  r   rR  r6  r   r   r   <module>r8     s    1 . = ' %	*x00 	*H%% 27X.. 7U5** U5nS0H%% S0je+x00 e+NjF!2!2 jFXPCh&7&7 PCd#8$$ #JPh'' P" 	F 	 r   