Пример #1
0
        private void perfGetOneRecordVerifyResult(ManualResetEvent mre, CAS.KeyIn54BitCASHashTable hashTable, ConcurrentDictionary <string, int> SBPHashTable, List <Record> record, int index)
        {
            mre.WaitOne();
            byte[] output = null;
            var    u8     = Encoding.UTF8;

            int InputParametersError = 0;
            int NoExists             = 0;
            int IsDeleted            = 0;
            int ExceptionError       = 0;
            int GetSuccessfully      = 0;
            int ResultMatch          = 0;
            int ResultNotMatch       = 0;
            int Zero = 0;

            int result = -100;

            var externalStopWatch = new Stopwatch();

            externalStopWatch.Start();

            var internalStopWatch = new Stopwatch();

            for (var i = 0; i < perfTestAttemptsForGetOneKeyword; i++)
            {
                try
                {
                    internalStopWatch.Start();
                    result = hashTable.TryGet(record[index].linkId, record[index].clcId, SBPHashTable[record[index].sbp], out output);
                    internalStopWatch.Stop();
                }
                catch (Exception ex)
                {
                    Interlocked.Increment(ref ExceptionError);
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }

                switch (result)
                {
                case 0:
                    Interlocked.Increment(ref GetSuccessfully);
                    if (String.Compare(u8.GetString(record[index].url), u8.GetString(output)) == 0)
                    {
                        Interlocked.Increment(ref ResultMatch);
                    }
                    else
                    {
                        Interlocked.Increment(ref ResultNotMatch);
                    }
                    break;

                case -1:
                    Interlocked.Increment(ref InputParametersError);
                    break;

                case -2:
                    Interlocked.Increment(ref NoExists);
                    break;

                case -3:
                    Interlocked.Increment(ref IsDeleted);
                    break;

                default:
                    Interlocked.Increment(ref Zero);
                    break;
                }
                ;
            }

            var internalTs = internalStopWatch.Elapsed;

            externalStopWatch.Stop();
            var externalTs = externalStopWatch.Elapsed;

            Console.WriteLine(
                "TaskId" + "\t" + Task.CurrentId + "\t" +
                "perfGetOneRecordVerifyResult" + "\t" + perfTestAttemptsForGetOneKeyword + "\t" +
                "InternalAPICallTotalTime" + "\t" + internalTs.ToString() + "\t" +
                "TestingTotalTime" + "\t" + externalTs.ToString() + "\t" +
                "GetSuccessfully" + "\t" + GetSuccessfully + "\t" +
                "ResultMatch" + "\t" + ResultMatch + "\t" +
                "ResultNotMatch" + "\t" + ResultNotMatch + "\t" +
                "InputParametersError" + "\t" + InputParametersError + "\t" +
                "NoExists" + "\t" + NoExists + "\t" +
                "IsDeleted" + "\t" + IsDeleted + "\t" +
                "ExceptionError" + "\t" + ExceptionError + "\t" +
                "Zero" + "\t" + Zero + "\t"
                );
        }
Пример #2
0
        private void perfUpdateOneRecordVerifyResult(ManualResetEvent mre, CAS.KeyIn54BitCASHashTable hashTable, ConcurrentDictionary <string, int> SBPHashTable, List <Record> record, int index)
        {
            mre.WaitOne();
            var u8 = Encoding.UTF8;

            int InputParametersError = 0;
            int ExceptionError       = 0;
            int AddSuccessfully      = 0;
            int UpdateSuccessfully   = 0;
            int Zero = 0;

            int result = -100;

            var externalStopWatch = new Stopwatch();

            externalStopWatch.Start();

            var internalStopWatch = new Stopwatch();

            for (var i = 0; i < perfTestAttemptsForUpdateOneKeyword; i++)
            {
                try
                {
                    internalStopWatch.Start();
                    result = hashTable.TrySet(record[index].linkId, record[index].clcId, SBPHashTable[record[index].sbp], record[index].url);
                    internalStopWatch.Stop();
                }
                catch (Exception ex)
                {
                    Interlocked.Increment(ref ExceptionError);
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }

                switch (result)
                {
                case 0:
                    Interlocked.Increment(ref AddSuccessfully);
                    break;

                case 1:
                    Interlocked.Increment(ref UpdateSuccessfully);
                    break;

                case -1:
                    Interlocked.Increment(ref InputParametersError);
                    break;

                default:
                    Interlocked.Increment(ref Zero);
                    break;
                }
                ;
            }

            var internalTs = internalStopWatch.Elapsed;

            externalStopWatch.Stop();
            var externalTs = externalStopWatch.Elapsed;

            Console.WriteLine(
                "TaskId" + "\t" + Task.CurrentId + "\t" +
                "perfUpdateOneRecordVerifyResult" + "\t" + perfTestAttemptsForUpdateOneKeyword + "\t" +
                "InternalAPICallTotalTime" + "\t" + internalTs.ToString() + "\t" +
                "TestingTotalTime" + "\t" + externalTs.ToString() + "\t" +
                "AddSuccessfully" + "\t" + AddSuccessfully + "\t" +
                "UpdateSuccessfully" + "\t" + UpdateSuccessfully + "\t" +
                "InputParametersError" + "\t" + InputParametersError + "\t" +
                "ExceptionError" + "\t" + ExceptionError + "\t" +
                "Zero" + "\t" + Zero + "\t"
                );
        }
Пример #3
0
        private void perfDeleteRandomVerifyResult(ManualResetEvent mre, CAS.KeyIn54BitCASHashTable hashTable, ConcurrentDictionary <string, int> SBPHashTable, List <Record> record)
        {
            mre.WaitOne();

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

            var rnd   = new Random(seed);
            int index = 0;

            var u8 = Encoding.UTF8;

            int InputParametersError = 0;
            int NoExists             = 0;
            int IsDeleted            = 0;
            int ExceptionError       = 0;
            int DeleteSuccessfully   = 0;
            int Zero = 0;

            int result = -100;

            var externalStopWatch = new Stopwatch();

            externalStopWatch.Start();

            var internalStopWatch = new Stopwatch();

            for (var i = 0; i < perfTestAttemptsForDelete; i++)
            {
                index = rnd.Next(totoalRecord);

                try
                {
                    internalStopWatch.Start();
                    result = hashTable.TryDelete(record[index].linkId, record[index].clcId, SBPHashTable[record[index].sbp]);
                    internalStopWatch.Stop();
                }
                catch (Exception ex)
                {
                    Interlocked.Increment(ref ExceptionError);
                    if (log.IsFatalEnabled)
                    {
                        log.Fatal(ex.Message + "\t" + ex.StackTrace);
                    }
                }

                switch (result)
                {
                case 0:
                    Interlocked.Increment(ref DeleteSuccessfully);
                    break;

                case -1:
                    Interlocked.Increment(ref InputParametersError);
                    break;

                case -2:
                    Interlocked.Increment(ref NoExists);
                    break;

                case -3:
                    Interlocked.Increment(ref IsDeleted);
                    break;

                default:
                    Interlocked.Increment(ref Zero);
                    break;
                }
                ;
            }

            var internalTs = internalStopWatch.Elapsed;

            externalStopWatch.Stop();
            var externalTs = externalStopWatch.Elapsed;

            Console.WriteLine(
                "TaskId" + "\t" + Task.CurrentId + "\t" +
                "perfDeleteRandomVerifyResult" + "\t" + perfTestAttemptsForDelete + "\t" +
                "InternalAPICallTotalTime" + "\t" + internalTs.ToString() + "\t" +
                "TestingTotalTime" + "\t" + externalTs.ToString() + "\t" +
                "DeleteSuccessfully" + "\t" + DeleteSuccessfully + "\t" +
                "InputParametersError" + "\t" + InputParametersError + "\t" +
                "NoExists" + "\t" + NoExists + "\t" +
                "IsDeleted" + "\t" + IsDeleted + "\t" +
                "ExceptionError" + "\t" + ExceptionError + "\t" +
                "Zero" + "\t" + Zero + "\t"
                );
        }