public void SplitNameAndTags()
        {
            IDictionary<string, string> tags = new Dictionary<string, string>();
            tags.Add("env","prod");
            tags.Add("version","1.0.0");

            DatadogCounter counter = new DatadogCounter(
                "test[tag1:value1,tag2:value2,tag3:value3]", 1L, 1234L, tags);
            IList<string> allTags = counter.Tags;

            Assert.AreEqual(5, allTags.Count);
            Assert.AreEqual("tag1:value1", allTags[0]);
            Assert.AreEqual("tag2:value2", allTags[1]);
            Assert.AreEqual("tag3:value3", allTags[2]);
            Assert.AreEqual("env:prod", allTags[3]);
            Assert.AreEqual("version:1.0.0", allTags[4]);
        }
            /**
             * statsd has no notion of batch request, so counters are pushed as they are received
             */
            public void AddCounter(DatadogCounter counter)
            {
                string[] tags = counter.Tags.ToArray();
                StringBuilder sb = new StringBuilder("");
                for (int i = tags.Length - 1; i >= 0; i--)
                {
                    sb.Append(tags[i]);
                    if (i > 0)
                    {
                        sb.Append(",");
                    }
                }

                string metric = counter.Name;
                string readonlyMetricsSeenName = metric + ":" + sb.ToString();
                long rawValue = counter.Value;
                long readonlyValue = rawValue;
                if (_lastSeenCounters.ContainsKey(readonlyMetricsSeenName))
                {
                    // If we've seen this counter before then calculate the difference
                    // by subtracting the new value from the old. StatsD expects a relative
                    // counter, not an absolute!
                    readonlyValue = Math.Max(0, rawValue - _lastSeenCounters[readonlyMetricsSeenName]);
                }
                // Store the last value we saw so that the next addCounter call can make
                // the proper relative value
                _lastSeenCounters.Add(readonlyMetricsSeenName, rawValue);

                DogStatsd.Counter(metric, readonlyValue, _sampleRate, tags);
            }