Exemple #1
0
        public void ToDictionary_contains_all_metrics_and_properties()
        {
            var now    = DateTimeOffset.Now;
            var metric = new MetricLog("test", 1)
            {
                Count             = 1,
                Max               = 1,
                Min               = 1,
                Remark            = "remark",
                StandardDeviation = 1
            };

            metric.Properties["test"]      = "test";
            metric.Properties["null"]      = null;
            metric.Properties["timestamp"] = now;
            var result = metric.ToDictionary();

            Assert.Equal("test", result["name"].ToString());
            Assert.Equal(1.0, (double)result["value"]);
            Assert.Equal(1, (int)result["count"]);
            Assert.Equal(1.0, (double)result["min"]);
            Assert.Equal(1.0, (double)result["max"]);
            Assert.Equal(1.0, (double)result["standardDeviation"]);
            Assert.Equal("remark", result["remark"].ToString());
            Assert.Equal("test", result["test"].ToString());
            Assert.Equal(null, result["null"]);
            Assert.Equal(now, (DateTimeOffset)result["timestamp"]);
        }
Exemple #2
0
        public void Creates_contains_all_metrics_and_properties()
        {
            var now        = DateTimeOffset.Now;
            var properties = new Dictionary <string, object>
            {
                { "LogType", "MetricLog" },
                { "name", "test" },
                { "value", 1.0 },
                { "count", 1 },
                { "min", 1.0 },
                { "max", 1.0 },
                { "standardDeviation", 1.0 },
                { "remark", "remark" },
                { "test", "test" },
                { "null", null },
                { "timestamp", now },
            };
            var result = MetricLog.Create(properties);

            Assert.Equal("test", result.Name);
            Assert.Equal(1.0, result.Value);
            Assert.Equal(1, result.Count);
            Assert.Equal(1.0, result.Min);
            Assert.Equal(1.0, result.Max);
            Assert.Equal(1.0, result.StandardDeviation);
            Assert.Equal("remark", result.Remark);
            Assert.Equal("test", result.Properties["test"]);
            Assert.Equal(null, result.Properties["null"]);
            Assert.Equal(now, (DateTimeOffset)result.Properties["timestamp"]);
        }
Exemple #3
0
        public void ToDictionary_ignores_case()
        {
            var metric = new MetricLog("test", 1);
            var result = metric.ToDictionary();

            Assert.Equal("test", result["name"].ToString());
            Assert.Equal("test", result["Name"].ToString());
            Assert.Equal("test", result["NAME"].ToString());
        }
Exemple #4
0
        public void Creates_ignores_case(string name, string value)
        {
            var metric = MetricLog.Create(new Dictionary <string, object>
            {
                { "LogType", "MetricLog" }, { name, "name" }, { value, 1.0 }
            });

            Assert.NotNull(metric);
        }
        private static DateTime GetTimestamp(MetricLog metric)
        {
            var utcTimezone = TimeZoneInfo.Utc;
            var nzTimezone  = TimeZoneInfo.FindSystemTimeZoneById("Pacific/Auckland");

            var timestampAsUtc = TimeZoneInfo.ConvertTime(metric.Timestamp, nzTimezone, utcTimezone);

            //Console.WriteLine($"Timestamp as UTC: {timestampAsUtc}");

            return(timestampAsUtc);
        }
        private bool LogToCloudWatch(MetricLog metric)
        {
            try
            {
                using (var cloudwatch = new AmazonCloudWatchClient(Environment.GetEnvironmentVariable("AWSAccessKey"), Environment.GetEnvironmentVariable("AWSSecret"), RegionEndpoint.USEast1))
                {
                    var timestamp = GetTimestamp(metric);

                    var dataPoint = new MetricDatum
                    {
                        MetricName      = metric.Name,
                        Unit            = StandardUnit.Count,
                        Value           = double.Parse(metric.Value),
                        TimestampUtc    = timestamp,
                        Dimensions      = new List <Dimension>(),
                        StatisticValues = new StatisticSet()
                    };

                    var mdr = new PutMetricDataRequest
                    {
                        Namespace  = "Environment",
                        MetricData = new List <MetricDatum> {
                            dataPoint
                        }
                    };

                    var resp = cloudwatch.PutMetricDataAsync(mdr).Result;

                    //Console.WriteLine(resp.HttpStatusCode);

                    Debug.Assert(resp.HttpStatusCode == System.Net.HttpStatusCode.OK);
                }

                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + ex.StackTrace);

                while (ex.InnerException != null)
                {
                    ex = ex.InnerException;

                    Console.WriteLine(ex.Message + ex.StackTrace);
                }

                return(false);
            }
        }
        public bool AddMetric(MetricLog metric)
        {
            try
            {
                EnsureTable();

                var context = new DynamoDBContext(_dynamo);

                context.SaveAsync <MetricLog>(metric).Wait();

                //Console.WriteLine("Metric persisted.");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + ex.StackTrace);
            }

            return(true);
        }
        private bool LogToDynamo(MetricLog metric)
        {
            try
            {
                _dynamoDbService.AddMetric(metric);

                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + ex.StackTrace);

                while (ex.InnerException != null)
                {
                    ex = ex.InnerException;

                    Console.WriteLine(ex.Message + ex.StackTrace);
                }

                return(false);
            }
        }
Exemple #9
0
        public void Create_returns_null_without_name_nor_value(Dictionary <string, object> properties)
        {
            var result = MetricLog.Create(properties);

            Assert.Null(result);
        }