void InvalidSendToInfluxShouldNotPass()
        {
            string nodeId = "4816d758dd37833a3a5551001dac8a5fa737a342";

            PayloadSigner signer = new PayloadSigner(nodeId, new FileKeyStore("./"));

            signer.Init();

            RealTimeTelemetryManager mgr = new RealTimeTelemetryManager(
                nodeId,
                "http://127.0.0.1",
                "ws://127.0.0.1",
                "https://localhost:5010/api/ingress/realtime",
                "ED:40:5C:C9:E2:71:44:11:78:47:1C:09:6F:28:2E:B5:F9:4D:6E:CE:90:BC:64:5B:ED:9A:46:1F:20:E2:EE:4E",
                signer,
                _ftpMgr,
                true);

            RealTimeTelemetryPayload rttp = new RealTimeTelemetryPayload
            {
                Client        = "Parity",
                BlockNum      = 0,
                BlockHash     = "",
                BlockTS       = 0,
                BlockReceived = 0,
                NumPeers      = 0,
                NumTxInBlock  = 0
            };

            RealTimeTelemetry rtt = new RealTimeTelemetry
            {
                NodeId    = "",
                Payload   = rttp,
                Signature = signer.SignPayload(JsonConvert.SerializeObject(rttp))
            };

            var currentConsoleOut = Console.Out;

            using (var cop = new ConsoleOutputCapturer())
            {
                MethodInfo methodInfo = typeof(RealTimeTelemetryManager).GetMethod("SendDataToIngress", BindingFlags.NonPublic | BindingFlags.Instance);
                object[]   parameters = { rtt };
                methodInfo.Invoke(mgr, parameters);

                string ret = cop.GetOuput();
                Assert.Contains("Connection refused", ret);
                //Assert.True(ret.Contains("ERROR Occurred While sending data to Ingress"));
            }
        }
        /// <summary>
        /// Function for parsing and signing block data
        /// </summary>
        /// <param name="buffer">block data in byte array</param>
        /// <returns>returns instance of RealTimeTelemetry if valid data is provided else null</returns>
        private RealTimeTelemetry ParseAndSignData(byte[] buffer)
        {
            try
            {
                string numPeers      = GetCurrentNumPeers();
                string clientVersion = GetCurrentClientVersion();

                dynamic jsonObj   = JsonConvert.DeserializeObject(_encoder.GetString(buffer).Trim());
                dynamic paramsObj = jsonObj["params"];
                if (paramsObj != null && paramsObj["result"] != null)
                {
                    dynamic resultObj = paramsObj["result"];

                    string gasLimit = resultObj["gasLimit"];
                    string gasUsed  = resultObj["gasUsed"];

                    long currentEPoch = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;

                    RealTimeTelemetryPayload rttp = new RealTimeTelemetryPayload
                    {
                        Client        = clientVersion,
                        BlockNum      = Convert.ToUInt64(resultObj["number"].ToString(), 16),
                        BlockHash     = resultObj["hash"].ToString(),
                        BlockTS       = Convert.ToInt64(resultObj["timestamp"].ToString(), 16),
                        BlockReceived = currentEPoch,
                        NumPeers      = Convert.ToUInt16(numPeers, 16),
                        NumTxInBlock  = (ushort)resultObj["transactions"].Count,
                        GasLimit      = Convert.ToInt64(gasLimit, 16),
                        GasUsed       = Convert.ToInt64(gasUsed, 16)
                    };

                    RealTimeTelemetry rtt = new RealTimeTelemetry
                    {
                        NodeId    = _nodeId,
                        Payload   = rttp,
                        Signature = _signer.SignPayload(JsonConvert.SerializeObject(rttp))
                    };

                    if (_verbose)
                    {
                        Console.WriteLine("New Block received");
                        Console.WriteLine("block num: {0}", rttp.BlockNum);
                        Console.WriteLine("block hash: {0}", rttp.BlockHash);
                        Console.WriteLine("block time stamp: {0}", rttp.BlockTS);
                        Console.WriteLine("Tx Count: {0}", rttp.NumTxInBlock);
                        Console.WriteLine("Gas Limit: {0}", Convert.ToInt64(gasLimit, 16));
                        Console.WriteLine("Gas Used: {0}", Convert.ToInt64(gasUsed, 16));
                        Console.WriteLine("Peers: {0} ", rttp.NumPeers);
                    }

                    return(rtt);
                }

                Console.WriteLine("Unable to Parse\\Sign real Time data. Invalid Data");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Unable to Parse\\Sign real Time data. Error Occurred {0}", ex);
            }
            return(null);
        }