-P`c@sddlZddlZddlZddlZddlZddlZddlmZmZddlm Z ddl m Z ddl mZdefdYZdZd ejfd YZed krejndS( iN(tLsmErrort ErrorNumber(t SocketEOF(t DataDecoder(t DataEncodert TransPortcBseZdZdZdZdZdZdZedZ dZ dZ d Z d Z dd Zd d ZdZRS(s Provides wire serialization by using json. Loosely conforms to json-rpc, however a length header was added so that we would have the ability to use non sax like json parsers, which are more abundant. s    N(t__name__t __module__t__doc__RRRR R"t staticmethodR/R0R:R=RARRERGR>(((s2/usr/lib/python2.7/site-packages/lsm/_transport.pyRs         cCst|}|j}zxk|ddkr|ddkrh|j|d|dd|ddn|j|d|j}qW|j|dWd|jXdS( s) Test echo server for test case. R1tdoneRR2R3t errorcodeterrormsgN(RR=RERGR0(R tsrvR((s2/usr/lib/python2.7/site-packages/lsm/_transport.pyt_servers   t_TestTransportcBs5eZdZdZdZdZdZRS(cCshtjtjtj\|_|_t|j|_tj dt d|jf|_ |j j dS(NttargetR8( Rt socketpairR#R$tcR Rtclientt threadingtThreadRQtservertstart(R ((s2/usr/lib/python2.7/site-packages/lsm/_transport.pytsetUps !cCs{ddddddg}x\|D]T}|jjd||jj\}}|j|dk|j||kqWdS( Nt0t s s{}:""sSome text messagetDEADBEEFttestid(RVR:R>t assertTrue(R ttcttR?R@((s2/usr/lib/python2.7/site-packages/lsm/_transport.pyt test_simples  cCsd}d}|jjdi|d6|d6|jt|jjy2|jjdi|d6|d6|jjWn?tk r}|j|j|k|j|j|knXdS(NsTest error messageidRRNRO(RVR:t assertRaisesRR>R`RBR(R te_msgte_codeR((s2/usr/lib/python2.7/site-packages/lsm/_transport.pyttest_exceptionss! c CsxtdddD]}d|}idd6dd6|d 6}tj|d t}tjt|tj|}|j t|dkx|D]}|j j |qW|j j \}}|j ||kqWdS( Niii txtdripR1idR2R3R4(trangeR5R6R7tstringRRRRR`RUtsendRVR>( R RtpayloadRRtwiretiR?R@((s2/usr/lib/python2.7/site-packages/lsm/_transport.pyt test_slows  cCsL|jjdd|jj\}}|j|dk|jjdS(NRM(RVR:RR>R`RYtjoin(R RHR@((s2/usr/lib/python2.7/site-packages/lsm/_transport.pyttearDowns(RIRJR[RcRgRpRr(((s2/usr/lib/python2.7/site-packages/lsm/_transport.pyRRs   t__main__(R5RRkR%tunittestRWt lsm._commonRRRR t lsm._dataRR<RR7tobjectRRQtTestCaseRRRItmain(((s2/usr/lib/python2.7/site-packages/lsm/_transport.pyts       >