public void RnComunicarInicioExclusaoTarefaTest()
        {
            const string ipServidor = "127.0.0.1";
            const int    porta      = 8086;
            TcpListener  servidor   = new TcpListener(IPAddress.Parse(ipServidor), porta);

            servidor.Start();
            WexMultiAccessClientMock cliente = new WexMultiAccessClientMock()
            {
                EnderecoIp    = ipServidor,
                OidCronograma = "C1",
                Porta         = porta,
                Login         = "******"
            };

            cliente.AoServidorDesconectar += (mensagem) => { };
            cliente.Conectar();
            TcpClient tcpEmServidor = servidor.AcceptTcpClient();

            //interceptando  a mensagem de conexão
            TcpUtil.ReceberMensagemTcp(tcpEmServidor);
            cliente.RnComunicarInicioExclusaoTarefa(new string[] { "T1", "T2", "T3" });
            string resposta = TcpUtil.ReceberMensagemTcp(tcpEmServidor);

            resposta = TcpUtil.RemoverStringProtecaoDeIntegridade(resposta);
            MensagemDto mensagemDto = Mensagem.DeserializarMensagemDto(resposta);

            Assert.AreEqual(CsTipoMensagem.ExclusaoTarefaIniciada, mensagemDto.Tipo, "A mensagem recebida veio com tipo diferente do original");
            Assert.IsTrue(mensagemDto.Propriedades.ContainsKey(Constantes.AUTOR_ACAO), "A mensagem deveria conter o usuário que solicitou a exclusão");
            Assert.AreEqual("Joao", (string)mensagemDto.Propriedades[Constantes.AUTOR_ACAO], "O usuário deveria ser o Joao");
            Assert.IsTrue(mensagemDto.Propriedades.ContainsKey(Constantes.TAREFAS), "A mensagem deveria conter tarefas");
            CollectionAssert.AreEquivalent(new string[] { "T1", "T2", "T3" }, (string[])mensagemDto.Propriedades["tarefas"], "A mensagem recebida deveria possuir as mesmas tarefas que foram enviadas");
        }
        public void MultiAccessClientComunicarManagerSobreFimEdicaoTarefa()
        {
            const string ipServidor = "127.0.0.1";
            const int    porta      = 8086;
            TcpListener  servidor   = new TcpListener(IPAddress.Parse(ipServidor), porta);

            servidor.Start();

            WexMultiAccessClientMock cliente = new WexMultiAccessClientMock()
            {
                EnderecoIp = ipServidor, Porta = porta, Login = "******", OidCronograma = "C1"
            };

            cliente.AoServidorDesconectar += (mensagemDto) => { };
            cliente.Conectar();

            TcpClient conexaoTcpEmServidor = servidor.AcceptTcpClient();

            //efetuando a leitura da primeira mensagem do cliente mensagemd e autenticação
            TcpUtil.ReceberMensagemTcp(conexaoTcpEmServidor);
            ///Comunicando o fim da tarefa
            cliente.RnComunicarFimEdicaoTarefa("T2");
            string mensagemJson = TcpUtil.ReceberMensagemTcp(conexaoTcpEmServidor);

            mensagemJson = TcpUtil.RemoverStringProtecaoDeIntegridade(mensagemJson);
            MensagemDto mensagem = Mensagem.DeserializarMensagemDto(mensagemJson);

            Assert.AreEqual(cliente.OidCronograma, (string)mensagem.Propriedades[Constantes.OIDCRONOGRAMA], "Deveria ser o mesmo cronograma em que esta conectado o client");
            Assert.IsTrue(mensagem.Propriedades.ContainsKey(Constantes.AUTOR_ACAO), "Deveria conter o login do colaborador que esta editou a tarefa");
            Assert.AreEqual("T2", (string)mensagem.Propriedades[Constantes.OIDTAREFA], "Deveria ser a mesma tarefa comunicada na mensagem de fim de edição");
            cliente.RnDesconectar();
            servidor.Stop();
        }
        public void RnComunicarFimExclusaoTarefaConcluidaTest()
        {
            DateUtil.CurrentDateTime = DateTime.Now;

            //inicializar o Dicionário tarefasGrid
            const string ipServidor = "127.0.0.1";
            const int    porta      = 8092;

            TcpListener servidor = new TcpListener(IPAddress.Parse(ipServidor), porta);

            servidor.Start();

            WexMultiAccessClientMock client = new WexMultiAccessClientMock();

            client.Porta         = porta;
            client.EnderecoIp    = ipServidor;
            client.Login         = "******";
            client.OidCronograma = "C1";
            client.Conectar();
            client.AoServidorDesconectar += (mensagemDto) => { };
            TcpClient conexaoClienteNoServidor = servidor.AcceptTcpClient();

            //efetuar a leitura da autenticacao do client
            TcpUtil.ReceberMensagemTcp(conexaoClienteNoServidor);
            //representar as tarefas no grid
            Dictionary <string, Int16> tarefasGrid = new Dictionary <string, short>();

            //preencher as tarefas no grid
            //representar as tarefas excluidas
            string[] tarefasExcluidas = new string[] { "T1", "T2" };

            Dictionary <string, Int16> tarefasImpactadas = new Dictionary <string, short>();

            tarefasImpactadas.Add("T3", 1);
            tarefasImpactadas.Add("T4", 2);
            client.RnComunicarFimExclusaoTarefaConcluida(tarefasExcluidas, tarefasImpactadas, new string[] { }, DateUtil.CurrentDateTime);
            string msgJson = TcpUtil.ReceberMensagemTcp(conexaoClienteNoServidor);

            msgJson = TcpUtil.RemoverStringProtecaoDeIntegridade(msgJson);
            MensagemDto mensagemRecebida = Mensagem.DeserializarMensagemDto(msgJson);

            Assert.AreEqual(CsTipoMensagem.ExclusaoTarefaFinalizada, mensagemRecebida.Tipo, string.Format("A mensagem deveria ser do tipo {0}", CsTipoMensagem.ExclusaoTarefaFinalizada));
            Assert.AreEqual("C1", (string)mensagemRecebida.Propriedades[Constantes.OIDCRONOGRAMA], "O cronograma da mensagem deveria ser C1");
            Assert.AreEqual("Joao", (string)mensagemRecebida.Propriedades[Constantes.AUTOR_ACAO], "O login do colaborador que comunicou a exclusão da mensagem deveria ser Joao");
            CollectionAssert.AreEquivalent(tarefasImpactadas, (Dictionary <string, Int16>)mensagemRecebida.Propriedades[Constantes.TAREFAS_IMPACTADAS], "Deveria possuir as " +
                                           "mesmas tarefas na ordem indicada da reordenação");

            CollectionAssert.AreEquivalent(new string[] { }, (string[])mensagemRecebida.Propriedades[Constantes.TAREFAS_NAO_EXCLUIDAS]);
        }
Example #4
0
        public void TestarSerializacaoEDeserializacaoMensagemCriarNovaTarefa()
        {
            DateUtil.CurrentDateTime = DateTime.Now;

            //TODO: Verificar Falha
            MensagemDto mensagemCriada1 = Mensagem.RnCriarMensagemNovaTarefaCriada("T1", "Joao", "C1", null, DateUtil.CurrentDateTime);
            MensagemDto mensagemCriada2 = Mensagem.RnCriarMensagemNovoUsuarioConectado(new string[] { "Joao", "Marcos" }, "C1");
            string      mensagemJson1   = JsonConvert.SerializeObject(mensagemCriada1);
            string      mensagemJson2   = JsonConvert.SerializeObject(mensagemCriada2);

            MensagemDto mensagemDeserializada1 = Mensagem.DeserializarMensagemDto(mensagemJson1);
            MensagemDto mensagemDeserializada2 = Mensagem.DeserializarMensagemDto(mensagemJson2);

            Assert.AreEqual(mensagemCriada1.Propriedades[Constantes.AUTOR_ACAO].ToString(), mensagemDeserializada1.Propriedades[Constantes.AUTOR_ACAO].ToString());
            Assert.AreEqual(mensagemCriada1.Propriedades[Constantes.OIDCRONOGRAMA].ToString(), mensagemDeserializada1.Propriedades[Constantes.OIDCRONOGRAMA].ToString());

            string[] usuariosMensagemCriada, usuariosMensagemRecebida;
            usuariosMensagemCriada   = (string[])mensagemCriada2.Propriedades[Constantes.USUARIOS];
            usuariosMensagemRecebida = (string[])mensagemDeserializada2.Propriedades[Constantes.USUARIOS];
            Assert.IsTrue(usuariosMensagemCriada.SequenceEqual(usuariosMensagemRecebida));
            Assert.AreEqual(mensagemCriada2.Propriedades[Constantes.OIDCRONOGRAMA].ToString(), mensagemDeserializada2.Propriedades[Constantes.OIDCRONOGRAMA].ToString());
        }
Example #5
0
        /// <summary>
        /// Responsável por fazer a escuta em tempo real da threadComunicaoServidor
        /// </summary>
        protected virtual void RnProcessarEventos()
        {
            String        mensagemJson = "";
            MensagemDto   m;
            List <string> mensagens;
            string        msgAtual = "";

            try
            {
                while (autenticado)
                {
                    if (tcpAdapter == null || !tcpAdapter.ValidarConexao())
                    {
                        ProcessarMensagemEvento(Mensagem.RnCriarMensagemServidorDesconectando("Você acabou se ser desconectado, verifique sua rede ou contate o administrador"));
                        continue;
                    }
                    if (!autenticado)
                    {
                        continue;
                    }
                    if (!tcpAdapter.PossuiDadosParaLeitura())
                    {
                        Thread.Sleep(15);
                        continue;
                    }
                    mensagemJson = tcpAdapter.EfetuarLeitura();
                    if (mensagemJson.Trim() == "")
                    {
                        continue;
                    }

                    if (mensagemJson.Contains("\n"))
                    {
                        mensagens = mensagemJson.Split('\n').ToList();
                        foreach (string msg in mensagens)
                        {
                            if (String.IsNullOrEmpty(msg))
                            {
                                continue;
                            }

                            msgAtual = msg.Trim();
                            if (Buffer != "")
                            {
                                msgAtual = Buffer + msgAtual;
                                Buffer   = "";
                            }
                            m = Mensagem.DeserializarMensagemDto(TcpUtil.RemoverStringProtecaoDeIntegridade(msgAtual));
                            ProcessarMensagemEvento(m);
                            msgAtual = "";
                        }
                    }
                    else
                    {
                        Buffer += mensagemJson;
                    }

                    Thread.Sleep(10);
                }
            }
            catch (JsonException excessao)
            {
                Debug.WriteLine(string.Format("MultiAccessClient do {3} (Leitura) - Mensagem Json:{2}Excessão:{0}\nCallStack{1}", excessao.Message, excessao.StackTrace, msgAtual, Login), "JsonConvert:");
                //continue;
                throw excessao;
            }
            catch (InvalidOperationException e)
            {
                Debug.WriteLine(string.Format("Ocorreu a excessão:{0}\nLocal:{1}", e.Message, e.StackTrace), Thread.CurrentThread.Name);
                ProcessarMensagemEvento(Mensagem.RnCriarMensagemServidorDesconectando(String.Format("{0}\n {1}", e.Message, e.StackTrace)));
                RnDesconectar();
                throw e;
            }
            catch (Exception e)
            {
                DumperExtension.ShowStackTrace("Exception no client.");
                Debug.WriteLine(string.Format("Ocorreu a excessão:{0}\nLocal:{1}\n Target Site:{2}", e.Message, e.StackTrace, e.TargetSite), Thread.CurrentThread.Name);
                RnDesconectar();
                throw e;
            }
        }