示例#1
0
        public virtual void TestMutiEntryDataStatistics()
        {
            DataStatistics statistics = new DataStatistics();

            statistics.Add(17);
            statistics.Add(29);
            NUnit.Framework.Assert.AreEqual(2, statistics.Count(), Tol);
            NUnit.Framework.Assert.AreEqual(23.0, statistics.Mean(), Tol);
            NUnit.Framework.Assert.AreEqual(36.0, statistics.Var(), Tol);
            NUnit.Framework.Assert.AreEqual(6.0, statistics.Std(), Tol);
            NUnit.Framework.Assert.AreEqual(29.0, statistics.Outlier(1.0f), Tol);
        }
示例#2
0
        public virtual void UpdateAttempt(TaskAttemptStatusUpdateEvent.TaskAttemptStatus
                                          status, long timestamp)
        {
            TaskAttemptId attemptID = status.id;
            TaskId        taskID    = attemptID.GetTaskId();
            JobId         jobID     = taskID.GetJobId();

            Org.Apache.Hadoop.Mapreduce.V2.App.Job.Job job = context.GetJob(jobID);
            if (job == null)
            {
                return;
            }
            Task task = job.GetTask(taskID);

            if (task == null)
            {
                return;
            }
            long        boxedStart  = startTimes[attemptID];
            long        start       = boxedStart == null ? long.MinValue : boxedStart;
            TaskAttempt taskAttempt = task.GetAttempt(attemptID);

            if (taskAttempt.GetState() == TaskAttemptState.Succeeded)
            {
                bool isNew = false;
                // is this  a new success?
                lock (doneTasks)
                {
                    if (!doneTasks.Contains(task))
                    {
                        doneTasks.AddItem(task);
                        isNew = true;
                    }
                }
                // It's a new completion
                // Note that if a task completes twice [because of a previous speculation
                //  and a race, or a success followed by loss of the machine with the
                //  local data] we only count the first one.
                if (isNew)
                {
                    long finish = timestamp;
                    if (start > 1L && finish > 1L && start <= finish)
                    {
                        long           duration   = finish - start;
                        DataStatistics statistics = DataStatisticsForTask(taskID);
                        if (statistics != null)
                        {
                            statistics.Add(duration);
                        }
                    }
                }
            }
        }
示例#3
0
        public virtual void TestUpdateStatistics()
        {
            DataStatistics statistics = new DataStatistics(17);

            statistics.Add(29);
            NUnit.Framework.Assert.AreEqual(2, statistics.Count(), Tol);
            NUnit.Framework.Assert.AreEqual(23.0, statistics.Mean(), Tol);
            NUnit.Framework.Assert.AreEqual(36.0, statistics.Var(), Tol);
            statistics.UpdateStatistics(17, 29);
            NUnit.Framework.Assert.AreEqual(2, statistics.Count(), Tol);
            NUnit.Framework.Assert.AreEqual(29.0, statistics.Mean(), Tol);
            NUnit.Framework.Assert.AreEqual(0.0, statistics.Var(), Tol);
        }