Teste :: Poe :: Server :: TCP

Um componente PoE fornecendo serviços de servidor TCP para casos de teste
Baixe Agora

Teste :: Poe :: Server :: TCP Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Preço:
  • FREE
  • Nome do editor:
  • Chris Williams
  • Site do editor:
  • http://search.cpan.org/~bingos/

Teste :: Poe :: Server :: TCP Tag


Teste :: Poe :: Server :: TCP Descrição

Um componente POE prestação de serviços de servidor TCP para casos de teste O módulo Test :: POE :: Servidor :: TCP é um componente POE que fornece uma estrutura de servidor TCP para inclusão em casos de teste de componentes do cliente, em vez de ter que rolar o registrado own.Once com o componente, uma sessão receberá eventos relacionados para conecta clientes, desconecta, entrada e saída corada. Cada um desses eventos irá se referir a um ID de cliente único, que pode ser usado na comunicação com o componente ao enviar dados para o cliente ou desconectar um cliente connection.SYNOPSISA servidor de eco muito simples, com o registo de pedidos de cada cliente: use strict; use poe; uso Test :: POE :: Servidor :: TCP; POE :: Session-> create (package_states => ,],); $ poe_kernel-> correr (); saída 0; sub _start {# O Spawn o servidor Test :: POE :: Servidor :: TCP. $ _ -> {TESTD} = Test :: POE :: Servidor :: TCP-> desova (endereço => '127.0.0.1', port => 0,); Retorna; } Sub testd_connected {my ($ pilha, $ id) = @_ ; # A cliente conectado a identificação única está em arg0 # Criar um ARRAYREF em branco para este cliente on * nossa * montão $ montão -> {clients} -> {$ id} = []; Retorna; } Sub testd_client_input {my ($ kernel, $ montão, $ sender, $ id, $ input) = @_ ; # O cliente enviou-nos uma linha de entrada # permite armazená-lo empurrar @ {$ montão -> {clients} -> {$ id}, $ input; # Ok, nós somos um servidor de eco, então vamos enviá-lo de volta para o cliente # Nós conhecer o remetente assim que pode sempre obter o objeto servidor. my $ TESTD = $-remetente> get_heap (); $ Testd-> send_to_client ($ id, $ input); # Ou mesmo # $-remetente> get_heap () -> send_to_client ($ id, $ input); # Em alternativa que podíamos para trás apenas pós para o remetente # $ kernel-> pós ($ sender, 'send_to_client', $ id, $ input); Retorna; } Sub testd_disconnected {my ($ pilha, $ id) = @_ ; # Cliente desconectado por qualquer motivo # Precisamos liberar nosso armazenamento de exclusão $ montão -> {clients} -> {$ id}; Retorna; } Usando o módulo numa testcase: uso rigoroso; uso Test :: Mais; uso POE qw (Roda :: SocketFactory Roda :: Filtro ReadWrite :: Line); uso Test :: POE :: Servidor :: TCP; testes plano => 5; minha @data = ( 'Este é um teste', 'Este é outro teste', 'Este é o último teste',); POE :: Session-> create (package_states => ,], montão => {data => \ @data,}); $ poe_kernel-> correr (); saída 0; sub _start {$ _ -> {TESTD} = Test :: POE :: Servidor :: TCP-> desova (endereço => '127.0.0.1', port => 0,); Retorna; } Sub testd_registered {minha ($ pilha, objeto $) = @_ ; $ Montão -> {port} = $ object-> port (); $ Montão -> {fábrica} = POE :: Roda :: SocketFactory-> new (RemoteAddress => '127.0.0.1', RemotePort => $ montão -> {port}, SuccessEvent => '_sock_up', FailureEvent => ' _sock_fail',); Retorna; } Sub _sock_up {minha ($ montão, tomada $) = @_ ; excluir $ montão -> {fábrica}; $ Montão -> {tomada} = POE :: Roda :: ReadWrite-> new (Handle => $ socket, InputEvent => '_sock_in', ErrorEvent => '_sock_err',); $ Montão -> {tomada} -> put ($ pilha -> {data} -> ); Retorna; } Sub _sock_fail {my $ montão = $ _ ; excluir $ montão -> {fábrica}; $ Montão -> {TESTD} -> shutdown (); Retorna; } Sub _sock_in {minha ($ pilha, $ entrada) = @_ ; meus $ dados = shift @ {$ montão -> {data}}; ok ($ input eq $ dados, 'dados combinados'); a menos (escalar @ {$ montão -> {data}}) {exclusão $ montão -> {tomada}; Retorna; } $ Montão -> {tomada} -> put ($ pilha -> {data} -> ); Retorna; } Sub _sock_err {delete $ _ -> {tomada}; Retorna; } Sub testd_connected {my ($ pilha, $ estado, $ id) = @_ ; passar ($ Estado); Retorna; } Sub testd_disconnected {pass ($ _ ); $ Poe_kernel-> pós ($ _ , 'desligamento'); Retorna; } Sub testd_client_input {my ($ sender, $ id, $ input) = @_ ; my $ TESTD = $ _ -> get_heap (); $ Testd-> send_to_client ($ id, $ input); Retorna; } Requisitos: · Perl.


Teste :: Poe :: Server :: TCP Software Relacionado

Cps.

Estruturas de controle de fluxo no estilo de passagem de continuação ...

145

Download