public void ReceberMensagemFimEdicaoTarefaTest() { //Configurações do Servidor IPAddress ipServidor = IPAddress.Parse("127.0.0.1"); const int portaServidor = 8007; //Instanciar e iniciar o Servidor (Listener) TcpListener servidor = new TcpListener(ipServidor, portaServidor); servidor.Start(); Queue <MensagemDto> filaProcessamento = new Queue <MensagemDto>(); //Instanciar os Clientes (2x TcpClient) TcpClient cliente1 = new TcpClient(); TcpClient cliente2 = new TcpClient(); const string login1 = "Joao"; const string login2 = "Pedro"; const string oidCronograma = "C1"; //Tentativa de conexao do cliente1 cliente1.Connect(ipServidor, portaServidor); // Servidor aceitar a conexao do cliente1 e armazenar TcpClient cliente1EmServidor = servidor.AcceptTcpClient(); //Tentativa de conexao do cliente2 cliente2.Connect(ipServidor, portaServidor); // Servidor aceitar a conexao do cliente1 e armazenar TcpClient cliente2EmServidor = servidor.AcceptTcpClient(); //Iniciar ConexaoCliente do cliente1 ConexaoClienteMock c1 = new ConexaoClienteMock(login1, cliente1EmServidor, filaProcessamento) { PermissaoDeEscrita = false }; //Iniciar ConexaoCliente do cliente2 ConexaoClienteMock c2 = new ConexaoClienteMock(login2, cliente2EmServidor, filaProcessamento) { PermissaoDeEscrita = false }; //Criar mensagemDto novoUsuarioConectado para o cliente1 MensagemDto m1 = Mensagem.RnCriarMensagemNovoUsuarioConectado(new string[] { login1 }, oidCronograma); string m1Json = JsonConvert.SerializeObject(m1); m1Json = TcpUtil.AdicionarStringProtecaoDeIntegridade(m1Json); //Criar mensagemDto novoUsuarioConectado para o cliente2 MensagemDto m2 = Mensagem.RnCriarMensagemNovoUsuarioConectado(new string[] { login2 }, oidCronograma); string m2Json = JsonConvert.SerializeObject(m2); m2Json = TcpUtil.AdicionarStringProtecaoDeIntegridade(m2Json); //Enviar a mensagem Json do primeiro cliente atráves do tcp cliente1; TcpUtil.EnviarMensagemTcp(m1Json, cliente1); ControleDeEsperaUtil.AguardarAte(() => { return(filaProcessamento.Count > 0); }); //Enviar a mensagem Json do segundo cliente atráves do tcp cliente2; TcpUtil.EnviarMensagemTcp(m2Json, cliente2); ControleDeEsperaUtil.AguardarAte(() => { return(filaProcessamento.Count > 1); }); Assert.AreEqual(2, filaProcessamento.Count, "Deveria ser enfileirada 2 objetos MensagemDto"); MensagemDto m3 = Mensagem.RnCriarMensagemFinalizarEdicaoTarefa("T1", "gabriel", "C1"); string m3Json = JsonConvert.SerializeObject(m3); m3Json = TcpUtil.AdicionarStringProtecaoDeIntegridade(m3Json); TcpUtil.EnviarMensagemTcp(m3Json, cliente2); ControleDeEsperaUtil.AguardarAte(() => { return(filaProcessamento.Count > 2); }); c1.Desconectar(); c2.Desconectar(); servidor.Stop(); cliente1.Close(); cliente2.Close(); cliente1EmServidor.Close(); cliente2EmServidor.Close(); }
public void ReceberMensagemQuandoJsonEstiverCompleto() { #region Estimativa de Teste: /* * Estimativa Teste: * Receber uma mensagemDto Json e enfileirar na fila de leitura; * Cenário: * - Instanciar um Listener (gerenciar as conexoes) * - Instanciar 2 TcpClients (Efetuar a comunicação de conexão) * - Montar as MensagemDTOs de NovoUsarioConectado * - Serializar as Mensagens * - Escrever cada mensagem no stream de seu respectivo tcp * - Ler a Mensagem no stream * - Processar Cada Mensagem e enfileirar na fila de leitura * Resultado Estimado: * - Deve ter sido possivel o enfileiramento das 2 mensagens dto recebidas */ #endregion //Configurações do Servidor IPAddress ipServidor = IPAddress.Parse("127.0.0.1"); const int portaServidor = 8000; //Instanciar e iniciar o Servidor (Listener) TcpListener servidor = new TcpListener(ipServidor, portaServidor); servidor.Start(); Queue <MensagemDto> filaProcessamento = new Queue <MensagemDto>(); //Instanciar os Clientes (2x TcpClient) TcpClient cliente1 = new TcpClient(); TcpClient cliente2 = new TcpClient(); const string login1 = "Joao"; const string login2 = "Pedro"; const string oidCronograma = "C1"; //Tentativa de conexao do cliente1 cliente1.Connect(ipServidor, portaServidor); // Servidor aceitar a conexao do cliente1 e armazenar TcpClient cliente1EmServidor = servidor.AcceptTcpClient(); //Tentativa de conexao do cliente2 cliente2.Connect(ipServidor, portaServidor); // Servidor aceitar a conexao do cliente1 e armazenar TcpClient cliente2EmServidor = servidor.AcceptTcpClient(); //Iniciar ConexaoCliente do cliente1 ConexaoClienteMock c1 = new ConexaoClienteMock(login1, cliente1EmServidor, filaProcessamento) { PermissaoDeEscrita = false }; //Iniciar ConexaoCliente do cliente2 ConexaoClienteMock c2 = new ConexaoClienteMock(login2, cliente2EmServidor, filaProcessamento) { PermissaoDeEscrita = false }; //Criar mensagemDto novoUsuarioConectado para o cliente1 MensagemDto m1 = Mensagem.RnCriarMensagemNovoUsuarioConectado(new string[] { login1 }, oidCronograma); string m1Json = JsonConvert.SerializeObject(m1); m1Json = TcpUtil.AdicionarStringProtecaoDeIntegridade(m1Json); //Criar mensagemDto novoUsuarioConectado para o cliente2 MensagemDto m2 = Mensagem.RnCriarMensagemNovoUsuarioConectado(new string[] { login2 }, oidCronograma); string m2Json = JsonConvert.SerializeObject(m2); m2Json = TcpUtil.AdicionarStringProtecaoDeIntegridade(m2Json); //Enviar a mensagem Json do primeiro cliente atráves do tcp cliente1; TcpUtil.EnviarMensagemTcp(m1Json, cliente1); ControleDeEsperaUtil.AguardarAte(() => { return(filaProcessamento.Count > 0); }); //Enviar a mensagem Json do segundo cliente atráves do tcp cliente2; TcpUtil.EnviarMensagemTcp(m2Json, cliente2); ControleDeEsperaUtil.AguardarAte(() => { return(filaProcessamento.Count > 1); }); Assert.AreEqual(2, filaProcessamento.Count, "Deveria ser enfileirada 2 objetos MensagemDto"); #region Testes: //Verificar see enfileirou as mensagens recebidas // Assert.AreEqual(2, filaProcessamento.Count, "Deveria possuir 2 mensagens enfileiradas"); //Checar se não há nenhuma mensagem incompleta no buffer de mensagens das conexões // Assert.IsTrue(string.IsNullOrEmpty(conexaoCliente.Buffer), "Buffer deveria estar vazio pois as mensagens json eram mensagens válidas"); // Assert.IsTrue(string.IsNullOrEmpty(conexaoCliente2.Buffer), "Buffer deveria estar vazio pois as mensagens json eram mensagens válidas"); #endregion #region Finalização Cenário c1.Desconectar(); c2.Desconectar(); servidor.Stop(); cliente1.Close(); cliente2.Close(); cliente1EmServidor.Close(); cliente2EmServidor.Close(); #endregion }