Exemplo n.º 1
0
        public void KeyIn54BitCheckAddEachSync()
        {
            KeyIn54BitCASHashTable hashTable = null;

            try
            {
                hashTable = new KeyIn54BitCASHashTable(arrayLength, contentLength);
            }
            catch (Exception ex)
            {
                if (log.IsFatalEnabled)
                {
                    log.Fatal(ex.Message + "\t" + ex.StackTrace);
                }
            }

            var result = Utility.GetData().Result;

            int SBPCounter   = 0;
            var SBPHashTable = new ConcurrentDictionary <string, int>();
            int SBPId        = 0;

            //var stopWatch = new Stopwatch();
            foreach (var record in result.EmptyIfNull())
            {
                if (!SBPHashTable.ContainsKey(record.sbp))
                {
                    SBPId = Interlocked.Increment(ref SBPCounter);
                    SBPHashTable.TryAdd(record.sbp, SBPId);
                }
                else
                {
                    SBPId = SBPHashTable[record.sbp];
                }

                //stopWatch.Restart();
                try
                {
                    Assert.AreEqual(hashTable.TrySet(record.linkId, record.clcId, SBPId, record.url), 0);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
                //stopWatch.Stop();
                //Console.WriteLine("Add one records" + "\t" + stopWatch.Elapsed.ToString());
            }
        }
Exemplo n.º 2
0
 public void KeyIn54BitCheckDeleteNotFound()
 {
     try
     {
         var hashTable = new KeyIn54BitCASHashTable(arrayLength, contentLength);
         Assert.AreEqual(hashTable.TryDelete(2097151, 262143, 16383), -2);
     }
     catch (Exception ex)
     {
         if (log.IsFatalEnabled)
         {
             log.Fatal(ex.Message + "\t" + ex.StackTrace);
         }
     }
 }
Exemplo n.º 3
0
 public void KeyIn54BitCheckGetNotFound()
 {
     try
     {
         var    hashTable = new KeyIn54BitCASHashTable(arrayLength, contentLength);
         byte[] output;
         Assert.AreEqual(hashTable.TryGet(2097151, 262143, 16383, out output), -2);
         Assert.IsNull(output);
     }
     catch (Exception ex)
     {
         if (log.IsFatalEnabled)
         {
             log.Fatal(ex.Message + "\t" + ex.StackTrace);
         }
     }
 }
Exemplo n.º 4
0
        public void KeyIn54BitInitialize()
        {
            var stopWatch = new Stopwatch();

            stopWatch.Start();

            try
            {
                var hashTable = new KeyIn54BitCASHashTable(arrayLength, contentLength);
            }
            catch (Exception ex)
            {
                if (log.IsFatalEnabled)
                {
                    log.Fatal(ex.Message + "\t" + ex.StackTrace);
                }
            }

            stopWatch.Stop();
            var ts = stopWatch.Elapsed;

            Console.WriteLine("Create hash table" + "\t" + ts.ToString());
        }
Exemplo n.º 5
0
        public void KeyIn54BitPerfTestingOneRecordVerifyResult()
        {
            var stopWatch = new Stopwatch();
            KeyIn54BitCASHashTable hashTable = null;

            try
            {
                hashTable = new KeyIn54BitCASHashTable(arrayLength, contentLength);
            }
            catch (Exception ex)
            {
                if (log.IsFatalEnabled)
                {
                    log.Fatal(ex.Message + "\t" + ex.StackTrace);
                }
            }
            var ts = stopWatch.Elapsed;

            Console.WriteLine("Create hash table" + "\t" + ts.ToString());

            stopWatch.Restart();
            var result = Utility.GetData().Result;

            stopWatch.Stop();
            Console.WriteLine("Get " + result.Count + " data from database" + "\t" + stopWatch.Elapsed.ToString());

            int SBPCounter   = 0;
            var SBPHashTable = new ConcurrentDictionary <string, int>();
            int SBPId        = 0;

            stopWatch.Restart();
            foreach (var record in result.EmptyIfNull())
            {
                if (!SBPHashTable.ContainsKey(record.sbp))
                {
                    SBPId = Interlocked.Increment(ref SBPCounter);
                    SBPHashTable.TryAdd(record.sbp, SBPId);
                }
                else
                {
                    SBPId = SBPHashTable[record.sbp];
                }
                try
                {
                    hashTable.TrySet(record.linkId, record.clcId, SBPId, record.url);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
            }
            stopWatch.Stop();
            Console.WriteLine("Add all records" + "\t" + stopWatch.Elapsed.ToString());

            var mre = new ManualResetEvent(false);

            bool getEnabled    = true;
            bool deleteEnabled = false;
            bool updateEnabled = false;

            Task tGet1 = null, tGet2 = null, tGet3 = null, tGet4 = null, tGet5 = null, tGet6 = null, tGet7 = null, tGet8 = null, tGet9 = null, tGet10 = null;
            Task tDelete1 = null, tDelete2 = null, tDelete3 = null, tDelete4 = null, tDelete5 = null, tDelete6 = null, tDelete7 = null, tDelete8 = null, tDelete9 = null, tDelete10 = null;
            Task tUpdate1 = null, tUpdate2 = null, tUpdate3 = null, tUpdate4 = null, tUpdate5 = null, tUpdate6 = null, tUpdate7 = null, tUpdate8 = null, tUpdate9 = null, tUpdate10 = null;

            int totoalRecord = result.Count;
            var rndTemp      = new Random();
            int seed         = rndTemp.Next(totoalRecord);

            var rnd   = new Random(seed);
            var index = rnd.Next(totoalRecord);

            if (getEnabled)
            {
                tGet1 = Task.Run(() => { perfGetOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (updateEnabled)
            {
                tUpdate1 = Task.Run(() => { perfUpdateOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (deleteEnabled)
            {
                tDelete1 = Task.Run(() => { perfDeleteOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }


            if (getEnabled)
            {
                tGet2 = Task.Run(() => { perfGetOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (updateEnabled)
            {
                tUpdate2 = Task.Run(() => { perfUpdateOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (deleteEnabled)
            {
                tDelete2 = Task.Run(() => { perfDeleteOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }


            if (getEnabled)
            {
                tGet3 = Task.Run(() => { perfGetOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (updateEnabled)
            {
                tUpdate3 = Task.Run(() => { perfUpdateOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (deleteEnabled)
            {
                tDelete3 = Task.Run(() => { perfDeleteOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }


            if (getEnabled)
            {
                tGet4 = Task.Run(() => { perfGetOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (updateEnabled)
            {
                tUpdate4 = Task.Run(() => { perfUpdateOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (deleteEnabled)
            {
                tDelete4 = Task.Run(() => { perfDeleteOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }


            if (getEnabled)
            {
                tGet5 = Task.Run(() => { perfGetOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (updateEnabled)
            {
                tUpdate5 = Task.Run(() => { perfUpdateOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (deleteEnabled)
            {
                tDelete5 = Task.Run(() => { perfDeleteOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }


            if (getEnabled)
            {
                tGet6 = Task.Run(() => { perfGetOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (updateEnabled)
            {
                tUpdate6 = Task.Run(() => { perfUpdateOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (deleteEnabled)
            {
                tDelete6 = Task.Run(() => { perfDeleteOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }


            if (getEnabled)
            {
                tGet7 = Task.Run(() => { perfGetOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (updateEnabled)
            {
                tUpdate7 = Task.Run(() => { perfUpdateOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (deleteEnabled)
            {
                tDelete7 = Task.Run(() => { perfDeleteOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }


            if (getEnabled)
            {
                tGet8 = Task.Run(() => { perfGetOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (updateEnabled)
            {
                tUpdate8 = Task.Run(() => { perfUpdateOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (deleteEnabled)
            {
                tDelete8 = Task.Run(() => { perfDeleteOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }


            if (getEnabled)
            {
                tGet9 = Task.Run(() => { perfGetOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (updateEnabled)
            {
                tUpdate9 = Task.Run(() => { perfUpdateOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (deleteEnabled)
            {
                tDelete9 = Task.Run(() => { perfDeleteOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }


            if (getEnabled)
            {
                tGet10 = Task.Run(() => { perfGetOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (updateEnabled)
            {
                tUpdate10 = Task.Run(() => { perfUpdateOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }

            if (deleteEnabled)
            {
                tDelete10 = Task.Run(() => { perfDeleteOneRecordVerifyResult(mre, hashTable, SBPHashTable, result, index); });
            }


            mre.Set();

            stopWatch.Restart();

            Task.WaitAll(
                tGet1, tGet2, tGet3, tGet4, tGet5, tGet6, tGet7, tGet8, tGet9, tGet10
                , tDelete1, tDelete2, tDelete3, tDelete4, tDelete5, tDelete6, tDelete7, tDelete8, tDelete9, tDelete10
                , tUpdate1, tUpdate2, tUpdate3, tUpdate4, tUpdate5, tUpdate6, tUpdate7, tUpdate8, tUpdate9, tUpdate10
                );

            stopWatch.Stop();
            ts = stopWatch.Elapsed;
            Console.WriteLine("Finish all tast in" + "\t" + ts.ToString());
        }
Exemplo n.º 6
0
        public void KeyIn54BitCheckUpdateBringDeletedBack()
        {
            KeyIn54BitCASHashTable hashTable = null;

            try
            {
                hashTable = new KeyIn54BitCASHashTable(arrayLength, contentLength);
            }
            catch (Exception ex)
            {
                if (log.IsFatalEnabled)
                {
                    log.Fatal(ex.Message + "\t" + ex.StackTrace);
                }
            }

            var result = Utility.GetData().Result;

            int SBPCounter   = 0;
            var SBPHashTable = new ConcurrentDictionary <string, int>();
            int SBPId        = 0;

            foreach (var record in result.EmptyIfNull())
            {
                if (!SBPHashTable.ContainsKey(record.sbp))
                {
                    SBPId = Interlocked.Increment(ref SBPCounter);
                    SBPHashTable.TryAdd(record.sbp, SBPId);
                }
                else
                {
                    SBPId = SBPHashTable[record.sbp];
                }
                try
                {
                    Assert.AreEqual(hashTable.TrySet(record.linkId, record.clcId, SBPId, record.url), 0);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
            }

            string message = string.Empty;

            byte[] output;

            foreach (var record in result.EmptyIfNull())
            {
                SBPId = SBPHashTable[record.sbp];
                try
                {
                    Assert.AreEqual(hashTable.TryDelete(record.linkId, record.clcId, SBPId), 0);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
                output = null;
                try
                {
                    Assert.AreEqual(hashTable.TryGet(record.linkId, record.clcId, SBPId, out output), -3);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
                Assert.IsNull(output);
            }

            var u8 = Encoding.UTF8;

            //Update all the records again.
            foreach (var record in result.EmptyIfNull())
            {
                SBPId = SBPHashTable[record.sbp];
                try
                {
                    Assert.AreEqual(hashTable.TrySet(record.linkId, record.clcId, SBPId, record.url), 1);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
            }

            //We should get all the URL again.
            output = null;
            foreach (var record in result.EmptyIfNull())
            {
                SBPId = SBPHashTable[record.sbp];
                try
                {
                    Assert.AreEqual(hashTable.TryGet(record.linkId, record.clcId, SBPId, out output), 0);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
                Assert.AreEqual(u8.GetString(record.url), u8.GetString(output));
            }
        }
Exemplo n.º 7
0
        public void KeyIn54BitCheckUpdate()
        {
            KeyIn54BitCASHashTable hashTable = null;

            try
            {
                hashTable = new KeyIn54BitCASHashTable(arrayLength, contentLength);
            }
            catch (Exception ex)
            {
                if (log.IsFatalEnabled)
                {
                    log.Fatal(ex.Message + "\t" + ex.StackTrace);
                }
            }
            var result = Utility.GetDataArrayList().Result;

            int SBPCounter   = 0;
            var SBPHashTable = new ConcurrentDictionary <string, int>();
            int SBPId        = 0;

            for (var i = 0; i < result.Count; i++)
            {
                if (!SBPHashTable.ContainsKey(((Record)result[i]).sbp))
                {
                    SBPId = Interlocked.Increment(ref SBPCounter);
                    SBPHashTable.TryAdd(((Record)result[i]).sbp, SBPId);
                }
                else
                {
                    SBPId = SBPHashTable[((Record)result[i]).sbp];
                }
                try
                {
                    Assert.AreEqual(hashTable.TrySet(((Record)result[i]).linkId, ((Record)result[i]).clcId, SBPId, ((Record)result[i]).url), 0);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
            }

            var temp = new byte[hashTable.ContentLength];

            for (int i = 0; i < hashTable.ContentLength; i++)
            {
                temp[i] = 0;
            }

            for (var i = 0; i < result.Count; i++)
            {
                for (var j = 0; j < ((Record)result[i]).url.Length; j++)
                {
                    ((Record)result[i]).url[j] = 0xFF;
                }
            }

            var u8 = Encoding.UTF8;

            byte[] output = null;

            for (var i = 0; i < result.Count; i++)
            {
                SBPId = SBPHashTable[((Record)result[i]).sbp];
                try
                {
                    Assert.AreEqual(hashTable.TryGet(((Record)result[i]).linkId, ((Record)result[i]).clcId, SBPId, out output), 0);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
                if (((Record)result[i]).url.Length == 0)
                {
                    Assert.AreNotEqual("haha", u8.GetString(output));
                }
                else
                {
                    Assert.AreNotEqual(u8.GetString(((Record)result[i]).url), u8.GetString(output));
                }
                output = null;
            }

            for (var i = 0; i < result.Count; i++)
            {
                SBPId = SBPHashTable[((Record)result[i]).sbp];
                try
                {
                    Assert.AreEqual(hashTable.TrySet(((Record)result[i]).linkId, ((Record)result[i]).clcId, SBPId, ((Record)result[i]).url), 1);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
            }

            for (var i = 0; i < result.Count; i++)
            {
                SBPId = SBPHashTable[((Record)result[i]).sbp];
                try
                {
                    Assert.AreEqual(hashTable.TryGet(((Record)result[i]).linkId, ((Record)result[i]).clcId, SBPId, out output), 0);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
                Assert.AreEqual(u8.GetString(((Record)result[i]).url), u8.GetString(output));
                output = null;
            }
        }
Exemplo n.º 8
0
        public void KeyIn54BitCheckDeleteAgain()
        {
            var stopWatch = new Stopwatch();
            KeyIn54BitCASHashTable hashTable = null;

            try
            {
                hashTable = new KeyIn54BitCASHashTable(arrayLength, contentLength);
            }
            catch (Exception ex)
            {
                if (log.IsFatalEnabled)
                {
                    log.Fatal(ex.Message + "\t" + ex.StackTrace);
                }
            }
            var result = Utility.GetData().Result;

            int SBPCounter   = 0;
            var SBPHashTable = new ConcurrentDictionary <string, int>();
            int SBPId        = 0;

            foreach (var record in result.EmptyIfNull())
            {
                if (!SBPHashTable.ContainsKey(record.sbp))
                {
                    SBPId = Interlocked.Increment(ref SBPCounter);
                    SBPHashTable.TryAdd(record.sbp, SBPId);
                }
                else
                {
                    SBPId = SBPHashTable[record.sbp];
                }
                try
                {
                    Assert.AreEqual(hashTable.TrySet(record.linkId, record.clcId, SBPId, record.url), 0);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
            }

            byte[] output;

            foreach (var record in result.EmptyIfNull())
            {
                SBPId = SBPHashTable[record.sbp];
                try
                {
                    Assert.AreEqual(hashTable.TryDelete(record.linkId, record.clcId, SBPId), 0);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
                output = null;

                try
                {
                    Assert.AreEqual(hashTable.TryGet(record.linkId, record.clcId, SBPId, out output), -3);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
                Assert.IsNull(output);
            }

            output = null;
            //Delete all the records again and nothing should happens.
            foreach (var record in result.EmptyIfNull())
            {
                SBPId = SBPHashTable[record.sbp];
                try
                {
                    Assert.AreEqual(hashTable.TryDelete(record.linkId, record.clcId, SBPId), -3);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }

                output = null;
                try
                {
                    Assert.AreEqual(hashTable.TryGet(record.linkId, record.clcId, SBPId, out output), -3);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
                Assert.IsNull(output);
            }
        }
Exemplo n.º 9
0
        public void KeyIn54BitCheckDeleteInvildInput()
        {
            KeyIn54BitCASHashTable hashTable = null;

            try
            {
                hashTable = new KeyIn54BitCASHashTable(arrayLength, contentLength);
            }
            catch (Exception ex)
            {
                if (log.IsFatalEnabled)
                {
                    log.Fatal(ex.Message + "\t" + ex.StackTrace);
                }
            }

            try
            {
                string message = null;
                try { hashTable.TryDelete(0, 1, 1); }
                catch (ArgumentOutOfRangeException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("linkId"));

                message = null;
                try { hashTable.TryDelete(4194304, 1, 1); }
                catch (ArgumentOutOfRangeException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("linkId"));

                message = null;
                try { hashTable.TryDelete(1, 0, 1); }
                catch (ArgumentOutOfRangeException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("clcId"));

                message = null;
                try { hashTable.TryDelete(1, 262144, 1); }
                catch (ArgumentOutOfRangeException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("clcId"));

                message = null;
                try { hashTable.TryDelete(1, 1, 0); }
                catch (ArgumentOutOfRangeException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("sbp"));

                message = null;
                try { hashTable.TryDelete(1, 1, 16384); }
                catch (ArgumentOutOfRangeException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("sbp"));
            }
            catch (Exception ex)
            {
                if (log.IsFatalEnabled)
                {
                    log.Fatal(ex.Message + "\t" + ex.StackTrace);
                }
            }
        }
Exemplo n.º 10
0
        public void KeyIn54BitCheckAddTotalSync()
        {
            var stopWatch = new Stopwatch();
            KeyIn54BitCASHashTable hashTable = null;

            try
            {
                hashTable = new KeyIn54BitCASHashTable(arrayLength, contentLength);
            }
            catch (Exception ex)
            {
                if (log.IsFatalEnabled)
                {
                    log.Fatal(ex.Message + "\t" + ex.StackTrace);
                }
            }
            var ts = stopWatch.Elapsed;

            Console.WriteLine("Create hash table" + "\t" + ts.ToString());

            stopWatch.Restart();
            var result = Utility.GetData().Result;

            stopWatch.Stop();
            Console.WriteLine("Get " + result.Count + " data from database" + "\t" + stopWatch.Elapsed.ToString());

            int SBPCounter   = 0;
            var SBPHashTable = new ConcurrentDictionary <string, int>();
            int SBPId        = 0;

            stopWatch.Restart();
            foreach (var record in result.EmptyIfNull())
            {
                if (!SBPHashTable.ContainsKey(record.sbp))
                {
                    SBPId = Interlocked.Increment(ref SBPCounter);
                    SBPHashTable.TryAdd(record.sbp, SBPId);
                }
                else
                {
                    SBPId = SBPHashTable[record.sbp];
                }
                try
                {
                    Assert.AreEqual(hashTable.TrySet(record.linkId, record.clcId, SBPId, record.url), 0);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
            }
            stopWatch.Stop();
            Console.WriteLine("Add all records" + "\t" + stopWatch.Elapsed.ToString());

            var u8 = Encoding.UTF8;

            byte[] output = null;

            foreach (var record in result)
            {
                SBPId = SBPHashTable[record.sbp];
                try
                {
                    Assert.AreEqual(hashTable.TryGet(record.linkId, record.clcId, SBPId, out output), 0);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }
                Assert.AreEqual(u8.GetString(record.url), u8.GetString(output));
                output = null;
            }
        }
Exemplo n.º 11
0
        public void KeyIn54BitCheckGetDeleted()
        {
            KeyIn54BitCASHashTable hashTable = null;

            try
            {
                hashTable = new KeyIn54BitCASHashTable(arrayLength, contentLength);
            }
            catch (Exception ex)
            {
                if (log.IsFatalEnabled)
                {
                    log.Fatal(ex.Message + "\t" + ex.StackTrace);
                }
            }
            var result = Utility.GetData().Result;

            int SBPCounter   = 0;
            var SBPHashTable = new ConcurrentDictionary <string, int>();
            int SBPId        = 0;
            int i            = 0;

            long linkIdTemp = 0;
            long clcIdTemp  = 0;
            long SBPIdTemp  = 0;

            foreach (var record in result.EmptyIfNull())
            {
                if (!SBPHashTable.ContainsKey(record.sbp))
                {
                    SBPId = Interlocked.Increment(ref SBPCounter);
                    SBPHashTable.TryAdd(record.sbp, SBPId);
                }
                else
                {
                    SBPId = SBPHashTable[record.sbp];
                }

                try
                {
                    Assert.AreEqual(hashTable.TrySet(record.linkId, record.clcId, SBPId, record.url), 0);
                }
                catch (Exception ex)
                {
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }

                if (i++ == 1)
                {
                    linkIdTemp = record.linkId;
                    clcIdTemp  = record.clcId;
                    SBPIdTemp  = SBPId;
                }
            }

            try
            {
                Assert.AreEqual(hashTable.TryDelete(linkIdTemp, clcIdTemp, SBPIdTemp), 0);
                byte[] output = null;
                Assert.AreEqual(hashTable.TryGet(linkIdTemp, clcIdTemp, SBPIdTemp, out output), -3);
                Assert.IsNull(output);
            }
            catch (Exception ex)
            {
                if (log.IsFatalEnabled)
                {
                    log.Fatal(ex.Message + "\t" + ex.StackTrace);
                }
            }
        }
Exemplo n.º 12
0
        public void KeyIn54BitCheckAddInvildInput()
        {
            KeyIn54BitCASHashTable hashTable = null;

            try
            {
                hashTable = new KeyIn54BitCASHashTable(arrayLength, contentLength);
            }
            catch (Exception ex)
            {
                if (log.IsFatalEnabled)
                {
                    log.Fatal(ex.Message + "\t" + ex.StackTrace);
                }
            }

            try
            {
                var temp0 = new byte[hashTable.ContentLength];
                for (int i = 0; i < hashTable.ContentLength; i++)
                {
                    temp0[i] = 0;
                }

                var temp = new byte[hashTable.ContentLength + 1];
                for (int i = 0; i < hashTable.ContentLength + 1; i++)
                {
                    temp[i] = 0;
                }

                string message = null;
                try { hashTable.TrySet(0, 1, 1, temp0); }
                catch (ArgumentOutOfRangeException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("linkId"));

                message = null;
                try { hashTable.TrySet(4194304, 1, 1, temp0); }
                catch (ArgumentOutOfRangeException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("linkId"));

                message = null;
                try { hashTable.TrySet(1, 0, 1, temp0); }
                catch (ArgumentOutOfRangeException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("clcId"));

                message = null;
                try { hashTable.TrySet(1, 262144, 1, temp0); }
                catch (ArgumentOutOfRangeException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("clcId"));

                message = null;
                try { hashTable.TrySet(1, 1, 0, temp0); }
                catch (ArgumentOutOfRangeException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("sbp"));

                message = null;
                try { hashTable.TrySet(1, 1, 16384, temp0); }
                catch (ArgumentOutOfRangeException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("sbp"));

                message = null;
                try { hashTable.TrySet(4194303, 262143, 16383, null); }
                catch (ArgumentNullException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("contentLength"));

                message = null;
                try { hashTable.TrySet(4194303, 262143, 16383, temp); }
                catch (ArgumentOutOfRangeException e)
                { message = e.Message; }
                Assert.IsTrue(message.Contains("contentLength"));
            }
            catch (Exception ex)
            {
                if (log.IsFatalEnabled)
                {
                    log.Fatal(ex.Message + "\t" + ex.StackTrace);
                }
            }
        }