private void ResetData()
 {
     _dict    = new AsyncLockFreeDictionary <string, string>();
     _removed = new ConcurrentInt64();
     _added   = new ConcurrentInt64();
     _read    = new ConcurrentInt64();
 }
        public void AsyncLockFreeDictionaryIntItShouldBePossibleToDisposeEnumeratorsConcurrently()
        {
            var dict = new AsyncLockFreeDictionary <string, string>();

            dict.Add("1", "v1");
            dict.Add("2", "v2");
            dict.Add("3", "v3");

            Thread.Sleep(100);

            var enumerator1 = dict.GetEnumerator();
            var enumerator2 = dict.GetEnumerator();

            enumerator1.MoveNext();
            enumerator2.MoveNext();

            enumerator2.Dispose();

            var current = enumerator1.Current;

            Assert.AreEqual("v1", current.Value);

            dict.Remove("2");

            Thread.Sleep(100);

            enumerator1.MoveNext();
            current = enumerator1.Current;
            Assert.AreEqual("v3", current.Value);
        }
Exemple #3
0
        public void LockFreeDictionaryTryAddKeyValuePair()
        {
            var dict = new AsyncLockFreeDictionary <int, int>();

            Thread.Sleep(100);
            dict.Add(1, 1);
            dict.Add(2, 2);
            Thread.Sleep(100);
            dict.TryAdd(new KeyValuePair <int, int>(1, 100), (preExisting, newKeyValuePair) => new KeyValuePair <int, int>(newKeyValuePair.Key, newKeyValuePair.Value * 2));
            Thread.Sleep(100);

            Assert.AreEqual(2, dict.Count);
            Assert.AreEqual(200, dict[1]);
            Assert.AreEqual(2, dict[2]);
        }
Exemple #4
0
        public void LockFreeDictionaryContainsKeyValuePair()
        {
            var dict = new AsyncLockFreeDictionary <int, int>();

            Thread.Sleep(100);
            dict.Add(1, 1);
            dict.Add(2, 2);
            dict.Add(3, 3);
            dict.Add(4, 4);
            dict.Add(5, 5);
            Thread.Sleep(100);

            Assert.AreEqual(5, dict.Count);
            Assert.IsFalse(dict.Contains(new KeyValuePair <int, int>(1, 9)));
            Assert.IsTrue(dict.Contains(new KeyValuePair <int, int>(1, 1)));
        }
Exemple #5
0
        public void LockFreeDictionaryAddKeyValuePair()
        {
            var dict = new AsyncLockFreeDictionary <int, int>();

            Thread.Sleep(100);
            dict.Add(new KeyValuePair <int, int>(1, 1));
            dict.Add(new KeyValuePair <int, int>(2, 2));
            dict.Add(new KeyValuePair <int, int>(3, 3));
            dict.Add(new KeyValuePair <int, int>(4, 4));
            dict.Add(new KeyValuePair <int, int>(5, 5));
            Thread.Sleep(100);

            Assert.AreEqual(5, dict.Count);

            Assert.AreEqual(1, dict[1]);
            Assert.AreEqual(2, dict[2]);
            Assert.AreEqual(3, dict[3]);
            Assert.AreEqual(4, dict[4]);
            Assert.AreEqual(5, dict[5]);
        }
Exemple #6
0
        public void LockFreeDictionaryAdd()
        {
            var dict = new AsyncLockFreeDictionary <int, int>();

            Thread.Sleep(100);
            dict.Add(1, 1);
            dict.Add(2, 2);
            dict.Add(3, 3);
            dict.Add(4, 4);
            dict.Add(5, 5);
            Thread.Sleep(100);

            Assert.AreEqual(5, dict.Count);

            Assert.AreEqual(1, dict[1]);
            Assert.AreEqual(2, dict[2]);
            Assert.AreEqual(3, dict[3]);
            Assert.AreEqual(4, dict[4]);
            Assert.AreEqual(5, dict[5]);
        }
Exemple #7
0
        public void LockFreeDictionaryContainsKey()
        {
            var dict = new AsyncLockFreeDictionary <int, int>();

            Thread.Sleep(100);
            dict.Add(1, 1);
            dict.Add(2, 2);
            dict.Add(3, 3);
            dict.Add(4, 4);
            dict.Add(5, 5);
            Thread.Sleep(100);

            Assert.AreEqual(5, dict.Count);


            Assert.IsTrue(dict.ContainsKey(1));
            Assert.IsTrue(dict.ContainsKey(2));
            Assert.IsTrue(dict.ContainsKey(3));
            Assert.IsTrue(dict.ContainsKey(4));
            Assert.IsTrue(dict.ContainsKey(5));
        }
Exemple #8
0
        public void LockFreeDictionaryEnumerator()
        {
            var dict = new AsyncLockFreeDictionary <int, int>();

            Thread.Sleep(100);
            dict.Add(1, 1);
            dict.Add(2, 2);
            dict.Add(3, 3);
            dict.Add(4, 4);
            dict.Add(5, 5);
            Thread.Sleep(100);

            int compare = 1;

            foreach (var item in dict)
            {
                var result = item.Value;
                Assert.AreEqual(compare, result);
                compare++;
            }
        }
Exemple #9
0
        public void LockFreeDictionaryRemoveKeyValuePair()
        {
            var dict = new AsyncLockFreeDictionary <int, int>();

            Thread.Sleep(100);
            dict.Add(1, 1);
            dict.Add(2, 2);
            dict.Add(3, 3);
            dict.Add(4, 4);
            dict.Add(5, 5);
            Thread.Sleep(100);

            dict.Remove(new KeyValuePair <int, int>(4, 0));
            Thread.Sleep(100);

            Assert.AreEqual(4, dict.Count);


            Assert.IsTrue(dict.ContainsKey(1));
            Assert.IsTrue(dict.ContainsKey(2));
            Assert.IsTrue(dict.ContainsKey(3));
            Assert.IsTrue(dict.ContainsKey(5));
        }
Exemple #10
0
        /*public static void AddRunCountMonitor(string id)
         * {
         *      _perfData.TryAdd(id.ToLowerInvariant(), new BaseMetric(true, false, _periodRun));
         * }
         *
         * public static void AddDurationMonitor(string id)
         * {
         *      _perfData.TryAdd(id.ToLowerInvariant(), new BaseMetric(false, true, _periodRun));
         * }
         *
         * public static void AddMonitor(string id)
         * {
         *      _perfData.TryAdd(id.ToLowerInvariant(), new BaseMetric(true, true, _periodRun));
         * }
         *
         * public static void AddStatusMonitor(string id, object baseStatus)
         * {
         *      _perfData.TryAdd(id.ToLowerInvariant(), new BaseMetric(false, false, _periodRun, baseStatus));
         * }*/

        static PerfMon()
        {
            _accessibleData = new LockFreeItem <ReadOnlyCollection <BaseMetric> >(new ReadOnlyCollection <BaseMetric>(new List <BaseMetric>()));
            _perfData       = new AsyncLockFreeDictionary <string, BaseMetric>();
            _stopWatch      = new Stopwatch();
        }