Esempio n. 1
0
      public void SMP_1_FAHlog() // verbosity 9
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\SMP_1\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);
         
         // Check Run 0 Positions
         var expectedRun = new ClientRun(2);
         expectedRun.UnitIndexes.Add(new UnitIndex(5, 30));
         expectedRun.UnitIndexes.Add(new UnitIndex(6, 150));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 7, 30, 0, 40, 27, DateTimeKind.Utc);
         expectedRun.Arguments = "-smp -verbosity 9";
         expectedRun.ClientVersion = "6.24beta";
         expectedRun.FoldingID = "harlam357";
         expectedRun.Team = 32;
         expectedRun.UserID = "5131EA752EB60547";
         expectedRun.MachineID = 1;
         expectedRun.CompletedUnits = 1;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 261;
         expectedRun.Status = SlotStatus.RunningNoFrameTimes;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         // Check Run 1 Positions
         expectedRun = new ClientRun(274);
         expectedRun.UnitIndexes.Add(new UnitIndex(6, 302));
         expectedRun.UnitIndexes.Add(new UnitIndex(7, 402));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 7, 31, 0, 7, 43, DateTimeKind.Utc);
         expectedRun.Arguments = "-smp -verbosity 9";
         expectedRun.ClientVersion = "6.24beta";
         expectedRun.FoldingID = "harlam357";
         expectedRun.Team = 32;
         expectedRun.UserID = "5131EA752EB60547";
         expectedRun.MachineID = 1;
         expectedRun.CompletedUnits = 2;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 263;
         expectedRun.Status = SlotStatus.GettingWorkPacket;

         DoClientRunCheck(expectedRun, clientRuns[1]);

         // Verify LogLine Properties
         Assert.IsNotNull(logInterpreter.PreviousWorkUnitLogLines);
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);
         
         // Spot Check Work Unit Data (Run Index 0 - Unit Index 0)
         Assert.AreEqual(5, logLines[33].LineData);
         Assert.AreEqual(2.08f, logLines[40].LineData);
         Assert.That(logLines[51].ToString().Contains("Project: 2677 (Run 10, Clone 29, Gen 28)"));
         Assert.AreEqual(WorkUnitResult.FinishedUnit, logLines[109].LineData);
      }
Esempio n. 2
0
        private static UnitInfo BuildUnitInfo(QueueEntry queueEntry, ClientRun clientRun, UnitRun unitRun, UnitInfoLogData unitInfoLogData, bool matchOverride = false)
        {
            // queueEntry can be null
            Debug.Assert(clientRun != null);
            // unitInfoLogData can be null

            var unit = new UnitInfo();

            UnitRunData unitRunData;

            if (unitRun == null)
            {
                if (matchOverride)
                {
                    unitRunData = new UnitRunData();
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                unit.LogLines = unitRun.ToList();
                unitRunData   = unitRun.Data;
            }
            unit.UnitStartTimeStamp = unitRunData.UnitStartTimeStamp ?? TimeSpan.MinValue;
            unit.FramesObserved     = unitRunData.FramesObserved;
            unit.CoreVersion        = unitRunData.CoreVersion;
            unit.UnitResult         = unitRunData.WorkUnitResult;

            if (queueEntry != null)
            {
                UpdateUnitInfoFromQueueData(unit, queueEntry);
                SearchFahLogUnitDataProjects(unit, unitRunData);
                UpdateUnitInfoFromLogData(unit, clientRun.Data, unitRunData, unitInfoLogData);

                if (!ProjectsMatch(unit, unitRunData) && !ProjectsMatch(unit, unitInfoLogData) && !matchOverride)
                {
                    return(null);
                }
            }
            else
            {
                UpdateUnitInfoFromLogData(unit, clientRun.Data, unitRunData, unitInfoLogData);
            }

            return(unit);
        }
Esempio n. 3
0
            /// <summary>
            /// Creates a new <see cref="ClientRunData"/> object from the information contained in the <see cref="ClientRun"/> object.
            /// </summary>
            protected override ClientRunData OnGetClientRunData(ClientRun clientRun)
            {
                var clientRunData = new FahClientClientRunData();

                foreach (var line in clientRun.LogLines)
                {
                    switch (line.LineType)
                    {
                    case LogLineType.LogOpen:
                        clientRunData.StartTime = (DateTime)line.Data;
                        break;
                    }
                }

                return(clientRunData);
            }
Esempio n. 4
0
        public ClientMessageAggregatorResult AggregateData()
        {
            var result = new ClientMessageAggregatorResult();

            result.CurrentUnitIndex = -1;

            ClientRun clientRun = FahClient.Messages.Log.ClientRuns.Last();
            SlotRun   slotRun   = null;

            if (clientRun.SlotRuns.ContainsKey(SlotModel.SlotID))
            {
                slotRun = clientRun.SlotRuns[SlotModel.SlotID];
            }
            result.StartTime = clientRun.Data.StartTime;

            if (FahClient.Logger.IsDebugEnabled)
            {
                foreach (var s in LogLineEnumerable.Create(clientRun).Where(x => x.Data is LogLineDataParserError))
                {
                    FahClient.Logger.Debug(String.Format(Logger.NameFormat, FahClient.Settings.Name, $"Failed to parse log line: {s}"));
                }
            }

            var unitCollection  = FahClient.Messages.UnitCollection;
            var options         = FahClient.Messages.Options;
            var currentWorkUnit = SlotModel.WorkUnitModel.WorkUnit;
            var info            = FahClient.Messages.Info;

            BuildWorkUnits(result, slotRun, unitCollection, options, currentWorkUnit, SlotModel.SlotID);
            result.WorkUnitQueue = BuildWorkUnitQueue(unitCollection, info, SlotModel);

            if (result.WorkUnits.ContainsKey(result.CurrentUnitIndex) && result.WorkUnits[result.CurrentUnitIndex].LogLines != null)
            {
                result.CurrentLogLines = result.WorkUnits[result.CurrentUnitIndex].LogLines;
            }
            else if (slotRun != null)
            {
                result.CurrentLogLines = LogLineEnumerable.Create(slotRun).ToList();
            }
            else
            {
                result.CurrentLogLines = LogLineEnumerable.Create(clientRun).ToList();
            }

            return(result);
        }
Esempio n. 5
0
            /// <summary>
            /// Creates a new <see cref="ClientRunData"/> object from the information contained in the <see cref="ClientRun"/> object.
            /// </summary>
            protected override ClientRunData OnGetClientRunData(ClientRun clientRun)
            {
                var clientRunData = new LegacyClientRunData();

                foreach (var line in clientRun.LogLines)
                {
                    switch (line.LineType)
                    {
                    case LogLineType.LogOpen:
                        clientRunData.StartTime = (DateTime)line.Data;
                        break;

                    case LogLineType.ClientVersion:
                        clientRunData.ClientVersion = line.Data.ToString();
                        break;

                    case LogLineType.ClientArguments:
                        clientRunData.Arguments = line.Data.ToString();
                        break;

                    case LogLineType.ClientUserNameAndTeam:
                    {
                        var data = (ClientUserNameAndTeamData)line.Data;
                        clientRunData.FoldingID = data.FoldingID;
                        clientRunData.Team      = data.Team;
                        break;
                    }

                    case LogLineType.ClientUserID:
                    case LogLineType.ClientReceivedUserID:
                        clientRunData.UserID = line.Data.ToString();
                        break;

                    case LogLineType.ClientMachineID:
                        clientRunData.MachineID = (int)line.Data;
                        break;
                    }
                }

                return(clientRunData);
            }
Esempio n. 6
0
      public void Client_v7_7()
      {
         // Scan
         IList<LogLine> logLines = LogReader.GetLogLines(File.ReadAllLines("..\\..\\..\\TestFiles\\Client_v7_7\\log.txt"), LogFileType.FahClient).ToList();
         IList<ClientRun> clientRuns = LogReader.GetClientRuns(logLines, LogFileType.FahClient);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(0);
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 64, 293));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 60, 439));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 261, 690));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 412, 788));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 654, 959));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 928, 1163));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 755, 1324));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 1172, 1398));
         expectedRun.StartTime = new DateTime(2011, 8, 21, 23, 5, 1, DateTimeKind.Utc);
         expectedRun.Arguments = "";
         expectedRun.FoldingID = String.Empty;
         expectedRun.Team = 0;
         expectedRun.UserID = "";
         expectedRun.MachineID = 0;
         expectedRun.CompletedUnits = 8;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 0;
         expectedRun.Status = SlotStatus.Unknown;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         var logInterpreter = new LogInterpreter(logLines, clientRuns);
         Assert.AreEqual(1, logInterpreter.LogLineParsingErrors.Count());

         logLines = logInterpreter.GetLogLinesForQueueIndex(0, new ProjectInfo { ProjectID = 6801, ProjectRun = 6348, ProjectClone = 0, ProjectGen = 305 });
         Assert.AreEqual(158, logLines.Count);
         FahLogUnitData fahLogData = LogReader.GetFahLogDataFromLogLines(logLines);
         Assert.AreEqual(new TimeSpan(0, 37, 38), fahLogData.UnitStartTimeStamp);
         Assert.AreEqual(2.20f, fahLogData.CoreVersion);
         Assert.AreEqual(101, fahLogData.FrameDataList.Count);
         Assert.AreEqual(101, fahLogData.FramesObserved);
         Assert.AreEqual(6801, fahLogData.ProjectID);
         Assert.AreEqual(6348, fahLogData.ProjectRun);
         Assert.AreEqual(0, fahLogData.ProjectClone);
         Assert.AreEqual(305, fahLogData.ProjectGen);
         Assert.AreEqual(WorkUnitResult.Unknown, fahLogData.UnitResult);

         logLines = logInterpreter.GetLogLinesForQueueIndex(2, new ProjectInfo { ProjectID = 11051, ProjectRun = 0, ProjectClone = 2, ProjectGen = 39 });
         Assert.AreEqual(141, logLines.Count);
         fahLogData = LogReader.GetFahLogDataFromLogLines(logLines);
         Assert.AreEqual(new TimeSpan(18, 29, 47), fahLogData.UnitStartTimeStamp);
         Assert.AreEqual(2.27f, fahLogData.CoreVersion);
         Assert.AreEqual(101, fahLogData.FrameDataList.Count);
         Assert.AreEqual(101, fahLogData.FramesObserved);
         Assert.AreEqual(11051, fahLogData.ProjectID);
         Assert.AreEqual(0, fahLogData.ProjectRun);
         Assert.AreEqual(2, fahLogData.ProjectClone);
         Assert.AreEqual(39, fahLogData.ProjectGen);
         Assert.AreEqual(WorkUnitResult.FinishedUnit, fahLogData.UnitResult);
      }
Esempio n. 7
0
      public void Client_v7_1()
      {
         // Scan
         IList<LogLine> logLines = LogReader.GetLogLines(File.ReadAllLines("..\\..\\..\\TestFiles\\Client_v7_1\\log.txt"), LogFileType.FahClient).ToList();
         IList<ClientRun> clientRuns = LogReader.GetClientRuns(logLines, LogFileType.FahClient);
         
         // Check Run 0 Positions
         var expectedRun = new ClientRun(0);
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 174, 272));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 236, 433));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 399, 609));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 561, 771));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 740, 1085));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 899, 1240));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 1208, 1400));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 1369, 1564));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 1526, 1726));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 1692, 1886));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 1853, 2063));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 2015, 2225));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 2194, 2385));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 2352, 2546));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 2511, 2707));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 2673, 2868));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 2833, 3028));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 2997, 3198));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 3154, 3360));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 3325, 3523));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 3487, 3699));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 3664, 3876));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 3827, 4053));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 4005, -1));
         expectedRun.StartTime = new DateTime(2011, 5, 19, 18, 5, 3, DateTimeKind.Utc);
         expectedRun.Arguments = String.Empty;
         expectedRun.FoldingID = String.Empty;
         expectedRun.Team = 0;
         expectedRun.UserID = String.Empty;
         expectedRun.MachineID = 0;
         expectedRun.CompletedUnits = 23;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 0;
         expectedRun.Status = SlotStatus.Unknown;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         var logInterpreter = new LogInterpreter(logLines, clientRuns);
         Assert.AreEqual(1, logInterpreter.LogLineParsingErrors.Count());

         logLines = logInterpreter.GetLogLinesForQueueIndex(1, new ProjectInfo { ProjectID = 7136, ProjectRun = 0, ProjectClone = 39, ProjectGen = 103 });
         Assert.AreEqual(56, logLines.Count);
         FahLogUnitData fahLogData = LogReader.GetFahLogDataFromLogLines(logLines);
         Assert.AreEqual(new TimeSpan(18, 6, 54), fahLogData.UnitStartTimeStamp);
         Assert.AreEqual(2.27f, fahLogData.CoreVersion);
         Assert.AreEqual(6, fahLogData.FrameDataList.Count);
         Assert.AreEqual(6, fahLogData.FramesObserved);
         Assert.AreEqual(7136, fahLogData.ProjectID);
         Assert.AreEqual(0, fahLogData.ProjectRun);
         Assert.AreEqual(39, fahLogData.ProjectClone);
         Assert.AreEqual(103, fahLogData.ProjectGen);
         Assert.AreEqual(WorkUnitResult.FinishedUnit, fahLogData.UnitResult);

         logLines = logInterpreter.GetLogLinesForQueueIndex(0, new ProjectInfo { ProjectID = 6984, ProjectRun = 0, ProjectClone = 1, ProjectGen = 18 });
         Assert.AreEqual(142, logLines.Count);
         fahLogData = LogReader.GetFahLogDataFromLogLines(logLines);
         Assert.AreEqual(new TimeSpan(18, 39, 17), fahLogData.UnitStartTimeStamp);
         Assert.AreEqual(2.27f, fahLogData.CoreVersion);
         Assert.AreEqual(101, fahLogData.FrameDataList.Count);
         Assert.AreEqual(101, fahLogData.FramesObserved);
         Assert.AreEqual(6984, fahLogData.ProjectID);
         Assert.AreEqual(0, fahLogData.ProjectRun);
         Assert.AreEqual(1, fahLogData.ProjectClone);
         Assert.AreEqual(18, fahLogData.ProjectGen);
         Assert.AreEqual(WorkUnitResult.FinishedUnit, fahLogData.UnitResult);
      }
Esempio n. 8
0
      public void Standard_9_FAHlog() // v6.23 A4 Uniprocessor
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\Standard_9\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(0);
         expectedRun.UnitIndexes.Add(new UnitIndex(5, 24, -1));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 3, 16, 18, 46, 15, DateTimeKind.Utc);
         expectedRun.Arguments = "-oneunit -verbosity 9";
         expectedRun.ClientVersion = "6.23";
         expectedRun.FoldingID = "Amaruk";
         expectedRun.Team = 50625;
         expectedRun.UserID = "1E53CB2Axxxxxxxx";
         expectedRun.MachineID = 14;
         expectedRun.CompletedUnits = 1;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 173;
         expectedRun.Status = SlotStatus.Stopped;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         // Verify LogLine Properties
         Assert.IsNull(logInterpreter.PreviousWorkUnitLogLines);
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 0 - Unit Index 0)
         Assert.AreEqual(5, logLines[31].LineData);
         Assert.AreEqual(2.27f, logLines[38].LineData);
         Assert.That(logLines[47].ToString().Contains("Project: 10741 (Run 0, Clone 1996, Gen 3)"));
      }
Esempio n. 9
0
      public void Standard_6_FAHlog() // verbosity normal / Gromacs 3.3
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\Standard_6\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(2);
         expectedRun.UnitIndexes.Add(new UnitIndex(9, 27));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 294));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 554));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 814));
         expectedRun.UnitIndexes.Add(new UnitIndex(3, 1074));
         expectedRun.UnitIndexes.Add(new UnitIndex(4, 1338));
         expectedRun.UnitIndexes.Add(new UnitIndex(5, 1602));
         expectedRun.UnitIndexes.Add(new UnitIndex(6, 1870));
         expectedRun.UnitIndexes.Add(new UnitIndex(7, 2130));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 3, 10, 15, 48, 32, DateTimeKind.Utc);
         expectedRun.Arguments = String.Empty;
         expectedRun.ClientVersion = "6.23";
         expectedRun.FoldingID = "DrSpalding";
         expectedRun.Team = 48083;
         expectedRun.UserID = "1E19BD450434A6ED";
         expectedRun.MachineID = 1;
         expectedRun.CompletedUnits = 8;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 229;
         expectedRun.Status = SlotStatus.Paused;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         // Verify LogLine Properties
         Assert.IsNotNull(logInterpreter.PreviousWorkUnitLogLines);
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 0 - Unit Index 6)
         Assert.AreEqual(7, logLines[2133].LineData);
         Assert.AreEqual(1.90f, logLines[2138].LineData);
         Assert.That(logLines[2147].ToString().Contains("Project: 4461 (Run 886, Clone 3, Gen 56)"));
         
         // Special Check to be sure the reader is catching the Pause For Battery line
         Assert.AreEqual(LogLineType.WorkUnitPausedForBattery, logLines[2323].LineType);
      }
Esempio n. 10
0
      public void SMP_15_FAHlog() // lots of Client-core communications error
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\SMP_15\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(2);
         expectedRun.UnitIndexes.Add(new UnitIndex(7, 36));
         expectedRun.UnitIndexes.Add(new UnitIndex(8, 234));
         expectedRun.UnitIndexes.Add(new UnitIndex(9, 284));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 334));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 658));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 708));
         expectedRun.UnitIndexes.Add(new UnitIndex(3, 758));
         expectedRun.UnitIndexes.Add(new UnitIndex(4, 1082));
         expectedRun.UnitIndexes.Add(new UnitIndex(5, 1147));
         expectedRun.UnitIndexes.Add(new UnitIndex(6, 1219));
         expectedRun.UnitIndexes.Add(new UnitIndex(7, 1269));
         expectedRun.UnitIndexes.Add(new UnitIndex(8, 1341));
         expectedRun.UnitIndexes.Add(new UnitIndex(9, 1436));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 1538));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 1588));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 1638));
         expectedRun.UnitIndexes.Add(new UnitIndex(3, 1710));
         expectedRun.UnitIndexes.Add(new UnitIndex(4, 1760));
         expectedRun.UnitIndexes.Add(new UnitIndex(5, 1825));
         expectedRun.UnitIndexes.Add(new UnitIndex(6, 2149));
         expectedRun.UnitIndexes.Add(new UnitIndex(7, 2199));
         expectedRun.UnitIndexes.Add(new UnitIndex(8, 2418));
         expectedRun.UnitIndexes.Add(new UnitIndex(9, 2490));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 2540));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 2590));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 2914));
         expectedRun.UnitIndexes.Add(new UnitIndex(3, 2964));
         expectedRun.UnitIndexes.Add(new UnitIndex(4, 3014));
         expectedRun.UnitIndexes.Add(new UnitIndex(5, 3353));
         expectedRun.UnitIndexes.Add(new UnitIndex(6, 3448));
         expectedRun.UnitIndexes.Add(new UnitIndex(7, 3498));
         expectedRun.UnitIndexes.Add(new UnitIndex(8, 3645));
         expectedRun.UnitIndexes.Add(new UnitIndex(9, 3710));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 3760));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 9, 14, 2, 48, 27, DateTimeKind.Utc);
         expectedRun.Arguments = "-smp -verbosity 9";
         expectedRun.ClientVersion = "6.30";
         expectedRun.FoldingID = "harlam357";
         expectedRun.Team = 32;
         expectedRun.UserID = "DC1DAF57D91DF79";
         expectedRun.MachineID = 1;
         expectedRun.CompletedUnits = 1;
         expectedRun.FailedUnits = 33;
         expectedRun.TotalCompletedUnits = 617;
         expectedRun.Status = SlotStatus.EuePause;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         // Verify LogLine Properties
         Assert.IsNotNull(logInterpreter.PreviousWorkUnitLogLines);
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 0 - Unit Index 33)
         Assert.AreEqual(0, logLines[3763].LineData);
         Assert.AreEqual(2.22f, logLines[3770].LineData);
         Assert.That(logLines[3780].ToString().Contains("Project: 6071 (Run 0, Clone 39, Gen 70)"));
         Assert.AreEqual(WorkUnitResult.ClientCoreError, logLines[3786].LineData);
      }
Esempio n. 11
0
      public void GPU2_7_FAHlog() // verbosity (normal) / Project String After "+ Processing work unit"
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\GPU2_7\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(0);
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 24));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 1, 31, 1, 57, 21, DateTimeKind.Utc);
         expectedRun.Arguments = String.Empty;
         expectedRun.ClientVersion = "6.23";
         expectedRun.FoldingID = "Zagen30";
         expectedRun.Team = 46301;
         expectedRun.UserID = "xxxxxxxxxxxxxxxxxxx";
         expectedRun.MachineID = 2;
         expectedRun.CompletedUnits = 0;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 1994;
         expectedRun.Status = SlotStatus.RunningNoFrameTimes;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         // Verify LogLine Properties
         Assert.IsNull(logInterpreter.PreviousWorkUnitLogLines);
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 0 - Unit Index 0)
         Assert.AreEqual(0, logLines[28].LineData);
         Assert.AreEqual(1.31f, logLines[37].LineData);
         Assert.That(logLines[50].ToString().Contains("Project: 5781 (Run 2, Clone 700, Gen 2)"));

         var unitData = LogReader.GetFahLogDataFromLogLines(logInterpreter.CurrentWorkUnitLogLines);
         Assert.AreEqual(new TimeSpan(1, 57, 21), unitData.UnitStartTimeStamp);
         Assert.AreEqual(5, unitData.FrameDataList.Count);
         Assert.AreEqual(5, unitData.FramesObserved);
         Assert.AreEqual(1.31f, unitData.CoreVersion);
         Assert.AreEqual(-1, unitData.ProjectInfoIndex);
         Assert.AreEqual(2, unitData.ProjectInfoList.Count);
         Assert.AreEqual(5781, unitData.ProjectID);
         Assert.AreEqual(2, unitData.ProjectRun);
         Assert.AreEqual(700, unitData.ProjectClone);
         Assert.AreEqual(2, unitData.ProjectGen);
         Assert.AreEqual(unitData.ProjectID, unitData.ProjectInfoList[unitData.ProjectInfoList.Count - 1].ProjectID);
         Assert.AreEqual(unitData.ProjectRun, unitData.ProjectInfoList[unitData.ProjectInfoList.Count - 1].ProjectRun);
         Assert.AreEqual(unitData.ProjectClone, unitData.ProjectInfoList[unitData.ProjectInfoList.Count - 1].ProjectClone);
         Assert.AreEqual(unitData.ProjectGen, unitData.ProjectInfoList[unitData.ProjectInfoList.Count - 1].ProjectGen);
         Assert.AreEqual(WorkUnitResult.Unknown, unitData.UnitResult);
      }
Esempio n. 12
0
      public void Client_v7_10()
      {
         // Scan
         IList<LogLine> logLines = LogReader.GetLogLines(File.ReadAllLines("..\\..\\..\\TestFiles\\Client_v7_10\\log.txt"), LogFileType.FahClient).ToList();
         IList<ClientRun> clientRuns = LogReader.GetClientRuns(logLines, LogFileType.FahClient);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(0);
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 120, 349));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 85, -1));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 319, -1));
         expectedRun.StartTime = new DateTime(2012, 1, 11, 3, 24, 22, DateTimeKind.Utc);
         expectedRun.Arguments = "";
         expectedRun.ClientVersion = "";
         expectedRun.FoldingID = String.Empty;
         expectedRun.Team = 0;
         expectedRun.UserID = "";
         expectedRun.MachineID = 0;
         expectedRun.CompletedUnits = 1;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 0;
         expectedRun.Status = SlotStatus.Unknown;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         var logInterpreter = new LogInterpreter(logLines, clientRuns);
         Assert.AreEqual(1, logInterpreter.LogLineParsingErrors.Count());

         logLines = logInterpreter.GetLogLinesForQueueIndex(1, new ProjectInfo { ProjectID = 7610, ProjectRun = 630, ProjectClone = 0, ProjectGen = 59 });
         Assert.AreEqual(39, logLines.Count);
         FahLogUnitData fahLogData = LogReader.GetFahLogDataFromLogLines(logLines);
         Assert.AreEqual(new TimeSpan(3, 25, 32), fahLogData.UnitStartTimeStamp);
         Assert.AreEqual(2.27f, fahLogData.CoreVersion);
         Assert.AreEqual(10, fahLogData.FrameDataList.Count);
         Assert.AreEqual(10, fahLogData.FramesObserved);
         Assert.AreEqual(7610, fahLogData.ProjectID);
         Assert.AreEqual(630, fahLogData.ProjectRun);
         Assert.AreEqual(0, fahLogData.ProjectClone);
         Assert.AreEqual(59, fahLogData.ProjectGen);
         Assert.AreEqual(WorkUnitResult.Unknown, fahLogData.UnitResult);

         logLines = logInterpreter.GetLogLinesForQueueIndex(2, new ProjectInfo { ProjectID = 5772, ProjectRun = 7, ProjectClone = 364, ProjectGen = 252 });
         Assert.AreEqual(87, logLines.Count);
         fahLogData = LogReader.GetFahLogDataFromLogLines(logLines);
         Assert.AreEqual(new TimeSpan(4, 21, 52), fahLogData.UnitStartTimeStamp);
         Assert.AreEqual(1.31f, fahLogData.CoreVersion);
         Assert.AreEqual(53, fahLogData.FrameDataList.Count);
         Assert.AreEqual(53, fahLogData.FramesObserved);
         Assert.AreEqual(5772, fahLogData.ProjectID);
         Assert.AreEqual(7, fahLogData.ProjectRun);
         Assert.AreEqual(364, fahLogData.ProjectClone);
         Assert.AreEqual(252, fahLogData.ProjectGen);
         Assert.AreEqual(WorkUnitResult.Unknown, fahLogData.UnitResult);
      }
Esempio n. 13
0
      public void GPU2_2_FAHlog() // verbosity (normal)
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\GPU2_2\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(2);
         expectedRun.UnitIndexes.Add(new UnitIndex(8, 34));
         expectedRun.UnitIndexes.Add(new UnitIndex(9, 208));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 382));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 8, 14, 4, 40, 2, DateTimeKind.Utc);
         expectedRun.Arguments = String.Empty;
         expectedRun.ClientVersion = "6.23";
         expectedRun.FoldingID = "harlam357";
         expectedRun.Team = 32;
         expectedRun.UserID = "51108B97183EA3DF";
         expectedRun.MachineID = 2;
         expectedRun.CompletedUnits = 2;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 4221;
         expectedRun.Status = SlotStatus.Stopped;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         // Verify LogLine Properties
         Assert.IsNotNull(logInterpreter.PreviousWorkUnitLogLines);
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 0 - Unit Index 0)
         Assert.AreEqual(8, logLines[37].LineData);
         Assert.AreEqual(1.19f, logLines[42].LineData);
         Assert.That(logLines[56].ToString().Contains("Project: 5751 (Run 8, Clone 205, Gen 527)"));
         Assert.AreEqual(WorkUnitResult.FinishedUnit, logLines[188].LineData);
      }
Esempio n. 14
0
      public void GPU2_3_FAHlog() // verbosity (normal) / EUE Pause Test
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\GPU2_3\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(0);
         expectedRun.UnitIndexes.Add(new UnitIndex(6, 24));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 8, 18, 3, 26, 33, DateTimeKind.Utc);
         expectedRun.Arguments = String.Empty;
         expectedRun.ClientVersion = "6.23";
         expectedRun.FoldingID = "JollySwagman";
         expectedRun.Team = 32;
         expectedRun.UserID = "1D1493BB0A79C9AE";
         expectedRun.MachineID = 2;
         expectedRun.CompletedUnits = 0;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 0;
         expectedRun.Status = SlotStatus.Stopped;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         // Check Run 1 Positions
         expectedRun = new ClientRun(56);
         expectedRun.UnitIndexes.Add(new UnitIndex(6, 80));
         expectedRun.UnitIndexes.Add(new UnitIndex(7, 221));
         expectedRun.UnitIndexes.Add(new UnitIndex(8, 271));
         expectedRun.UnitIndexes.Add(new UnitIndex(9, 320));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 373));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 421));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 8, 18, 3, 54, 16, DateTimeKind.Utc);
         expectedRun.Arguments = String.Empty;
         expectedRun.ClientVersion = "6.23";
         expectedRun.FoldingID = "JollySwagman";
         expectedRun.Team = 32;
         expectedRun.UserID = "1D1493BB0A79C9AE";
         expectedRun.MachineID = 2;
         expectedRun.CompletedUnits = 1;
         expectedRun.FailedUnits = 5;
         expectedRun.TotalCompletedUnits = 224;
         expectedRun.Status = SlotStatus.EuePause;

         DoClientRunCheck(expectedRun, clientRuns[1]);

         // Verify LogLine Properties
         Assert.IsNotNull(logInterpreter.PreviousWorkUnitLogLines);
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 1 - Unit Index 3)
         Assert.AreEqual(9, logLines[323].LineData);
         Assert.AreEqual(1.19f, logLines[328].LineData);
         Assert.That(logLines[342].ToString().Contains("Project: 5756 (Run 6, Clone 32, Gen 480)"));
         Assert.AreEqual(WorkUnitResult.UnstableMachine, logLines[359].LineData);

         // Special Check to be sure the reader is catching the EUE Pause line
         Assert.AreEqual(LogLineType.ClientEuePauseState, logLines[463].LineType);
      }
Esempio n. 15
0
      public void SMP_3_FAHlog() // verbosity (normal) / Handles Core Download on Startup / notfred's instance
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\SMP_3\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(2);
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 231));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 385));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 8, 25, 18, 11, 37, DateTimeKind.Utc);
         expectedRun.Arguments = "-local -forceasm -smp 4";
         expectedRun.ClientVersion = "6.02";
         expectedRun.FoldingID = "harlam357";
         expectedRun.Team = 32;
         // verbosity (normal) does not output User ID after requested from server
         // see ClientLogLines indexes 29 & 30
         expectedRun.UserID = String.Empty;
         expectedRun.MachineID = 1;
         expectedRun.CompletedUnits = 1;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 0; //TODO: not capturing line "+ Starting local stats count at 1"
         expectedRun.Status = SlotStatus.RunningNoFrameTimes;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         // Verify LogLine Properties
         Assert.IsNotNull(logInterpreter.PreviousWorkUnitLogLines);
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 0 - Unit Index 0)
         Assert.AreEqual(1, logLines[234].LineData);
         Assert.AreEqual(2.08f, logLines[239].LineData);
         Assert.That(logLines[246].ToString().Contains("Project: 2677 (Run 4, Clone 60, Gen 40)"));
         Assert.AreEqual(WorkUnitResult.FinishedUnit, logLines[368].LineData);
      }
Esempio n. 16
0
      public void GPU2_1_FAHlog() // verbosity 9
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\GPU2_1\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(2);
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 130));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 326));
         expectedRun.UnitIndexes.Add(new UnitIndex(3, 387));
         expectedRun.UnitIndexes.Add(new UnitIndex(4, 449));
         expectedRun.UnitIndexes.Add(new UnitIndex(5, 510));
         expectedRun.UnitIndexes.Add(new UnitIndex(6, 571));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 8, 8, 5, 7, 18, DateTimeKind.Utc);
         expectedRun.Arguments = "-verbosity 9 -local";
         expectedRun.ClientVersion = "6.23";
         expectedRun.FoldingID = "harlam357";
         expectedRun.Team = 32;
         expectedRun.UserID = "CF185086C102A47";
         expectedRun.MachineID = 2;
         expectedRun.CompletedUnits = 1;
         expectedRun.FailedUnits = 5;
         expectedRun.TotalCompletedUnits = 0; //TODO: not capturing line "+ Starting local stats count at 1"
         expectedRun.Status = SlotStatus.Stopped;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         // Check Run 1 Positions
         expectedRun = new ClientRun(618);
         expectedRun.UnitIndexes.Add(new UnitIndex(7, 663));
         expectedRun.UnitIndexes.Add(new UnitIndex(8, 737));
         expectedRun.UnitIndexes.Add(new UnitIndex(9, 935));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 1132));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 1329));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 1526));
         expectedRun.UnitIndexes.Add(new UnitIndex(3, 1724));
         expectedRun.UnitIndexes.Add(new UnitIndex(4, 1926));
         expectedRun.UnitIndexes.Add(new UnitIndex(5, 2123));
         expectedRun.UnitIndexes.Add(new UnitIndex(6, 2321));
         expectedRun.UnitIndexes.Add(new UnitIndex(7, 2518));
         expectedRun.UnitIndexes.Add(new UnitIndex(8, 2715));
         expectedRun.UnitIndexes.Add(new UnitIndex(9, 2917));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 8, 8, 6, 18, 28, DateTimeKind.Utc);
         expectedRun.Arguments = "-verbosity 9 -local";
         expectedRun.ClientVersion = "6.23";
         expectedRun.FoldingID = "harlam357";
         expectedRun.Team = 32;
         expectedRun.UserID = "CF185086C102A47";
         expectedRun.MachineID = 2;
         expectedRun.CompletedUnits = 11;
         expectedRun.FailedUnits = 1;
         expectedRun.TotalCompletedUnits = 12;
         expectedRun.Status = SlotStatus.RunningNoFrameTimes;

         DoClientRunCheck(expectedRun, clientRuns[1]);

         // Verify LogLine Properties
         Assert.IsNotNull(logInterpreter.PreviousWorkUnitLogLines);
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 0 - Unit Index 0)
         Assert.AreEqual(1, logLines[133].LineData);
         Assert.AreEqual(1.19f, logLines[140].LineData);
         Assert.That(logLines[154].ToString().Contains("Project: 5771 (Run 12, Clone 109, Gen 805)"));
         Assert.AreEqual(WorkUnitResult.FinishedUnit, logLines[286].LineData);
      }
Esempio n. 17
0
      public void SMP_17_FAHlog() // v6.23 A4 SMP
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\SMP_17\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(0);
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 24, -1));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 175, -1));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 3, 20, 7, 52, 34, DateTimeKind.Utc);
         expectedRun.Arguments = "-smp -bigadv -betateam -verbosity 9";
         expectedRun.ClientVersion = "6.34";
         expectedRun.FoldingID = "GreyWhiskers";
         expectedRun.Team = 0;
         expectedRun.UserID = "51EA5C9A7EF9D58E";
         expectedRun.MachineID = 2;
         expectedRun.CompletedUnits = 1;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 885;
         expectedRun.Status = SlotStatus.RunningNoFrameTimes;

         DoClientRunCheck(expectedRun, clientRuns[0]);
         
         // Verify LogLine Properties
         Assert.IsNotNull(logInterpreter.PreviousWorkUnitLogLines);
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 0 - Unit Index 0)
         Assert.AreEqual(0, logLines[32].LineData);
         Assert.AreEqual(2.27f, logLines[39].LineData);
         Assert.That(logLines[51].ToString().Contains("Project: 8022 (Run 11, Clone 318, Gen 24)"));
         Assert.AreEqual(WorkUnitResult.FinishedUnit, logLines[130].LineData);
      }
Esempio n. 18
0
      public void SMP_2_FAHlog() // verbosity 9
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\SMP_2\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(2);
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 30));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 221));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 8, 18, 2, 40, 5, DateTimeKind.Utc);
         expectedRun.Arguments = "-smp -verbosity 9";
         expectedRun.ClientVersion = "6.24beta";
         expectedRun.FoldingID = "harlam357";
         expectedRun.Team = 32;
         expectedRun.UserID = "3A49EBB303C19834";
         expectedRun.MachineID = 1;
         expectedRun.CompletedUnits = 2;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 292;
         expectedRun.Status = SlotStatus.SendingWorkPacket;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         // Verify LogLine Properties
         Assert.IsNotNull(logInterpreter.PreviousWorkUnitLogLines);
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 0 - Unit Index 0)
         Assert.AreEqual(1, logLines[33].LineData);
         Assert.AreEqual(2.08f, logLines[40].LineData);
         Assert.That(logLines[47].ToString().Contains("Project: 2677 (Run 10, Clone 49, Gen 38)"));
         Assert.AreEqual(WorkUnitResult.FinishedUnit, logLines[180].LineData);

         // Special Check to be sure the reader is catching the Attempting To Send line
         Assert.AreEqual(LogLineType.ClientSendStart, logLines[379].LineType);
      }
Esempio n. 19
0
        /// <summary>
        /// Aggregate Data and return UnitInfo Dictionary.
        /// </summary>
        public DataAggregatorResult AggregateData(ClientRun clientRun, UnitCollection unitCollection, Info info, Options options,
                                                  SlotOptions slotOptions, UnitInfo currentUnitInfo, int slotId)
        {
            if (clientRun == null)
            {
                throw new ArgumentNullException("clientRun");
            }
            if (unitCollection == null)
            {
                throw new ArgumentNullException("unitCollection");
            }
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }
            if (slotOptions == null)
            {
                throw new ArgumentNullException("slotOptions");
            }
            if (currentUnitInfo == null)
            {
                throw new ArgumentNullException("currentUnitInfo");
            }

            var result = new DataAggregatorResult();

            result.CurrentUnitIndex = -1;

            SlotRun slotRun = null;

            if (clientRun.SlotRuns.ContainsKey(slotId))
            {
                slotRun = clientRun.SlotRuns[slotId];
            }
            result.StartTime     = clientRun.Data.StartTime;
            result.Arguments     = clientRun.Data.Arguments;
            result.ClientVersion = clientRun.Data.ClientVersion;
            result.UserID        = clientRun.Data.UserID;
            result.MachineID     = clientRun.Data.MachineID;
            result.Status        = slotRun != null ? slotRun.Data.Status : SlotStatus.Unknown;

            if (Logger.IsDebugEnabled)
            {
                foreach (var s in clientRun.Where(x => x.LineType == LogLineType.Error))
                {
                    Logger.DebugFormat(Constants.ClientNameFormat, ClientName, String.Format("Failed to parse log line: {0}", s));
                }
            }

            GenerateUnitInfoDataFromQueue(result, slotRun, unitCollection, options, slotOptions, currentUnitInfo, slotId);
            result.Queue = BuildQueueDictionary(unitCollection, info, slotOptions, slotId);

            if (result.UnitInfos.ContainsKey(result.CurrentUnitIndex) && result.UnitInfos[result.CurrentUnitIndex].LogLines != null)
            {
                result.CurrentLogLines = result.UnitInfos[result.CurrentUnitIndex].LogLines;
            }
            else if (slotRun != null)
            {
                result.CurrentLogLines = slotRun.ToList();
            }
            else
            {
                result.CurrentLogLines = clientRun.ToList();
            }

            return(result);
        }
Esempio n. 20
0
      public void Client_v7_8()
      {
         // Scan
         IList<LogLine> logLines = LogReader.GetLogLines(File.ReadAllLines("..\\..\\..\\TestFiles\\Client_v7_8\\log.txt"), LogFileType.FahClient).ToList();
         IList<ClientRun> clientRuns = LogReader.GetClientRuns(logLines, LogFileType.FahClient);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(0);
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 114, -1));
         expectedRun.StartTime = new DateTime(2011, 9, 6, 19, 55, 42, DateTimeKind.Utc);
         expectedRun.Arguments = "";
         expectedRun.FoldingID = String.Empty;
         expectedRun.Team = 0;
         expectedRun.UserID = "";
         expectedRun.MachineID = 0;
         expectedRun.CompletedUnits = 0;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 0;
         expectedRun.Status = SlotStatus.Unknown;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         var logInterpreter = new LogInterpreter(logLines, clientRuns);
         Assert.AreEqual(2, logInterpreter.LogLineParsingErrors.Count());

         logLines = logInterpreter.GetLogLinesForQueueIndex(1, new ProjectInfo { ProjectID = 7704, ProjectRun = 4, ProjectClone = 7, ProjectGen = 1 });
         Assert.AreEqual(27, logLines.Count);
         FahLogUnitData fahLogData = LogReader.GetFahLogDataFromLogLines(logLines);
         Assert.AreEqual(new TimeSpan(22, 1, 5), fahLogData.UnitStartTimeStamp);
         Assert.AreEqual(2.27f, fahLogData.CoreVersion);
         Assert.AreEqual(0, fahLogData.FrameDataList.Count);
         Assert.AreEqual(0, fahLogData.FramesObserved);
         Assert.AreEqual(7704, fahLogData.ProjectID);
         Assert.AreEqual(4, fahLogData.ProjectRun);
         Assert.AreEqual(7, fahLogData.ProjectClone);
         Assert.AreEqual(1, fahLogData.ProjectGen);
         Assert.AreEqual(WorkUnitResult.Unknown, fahLogData.UnitResult);
      }
Esempio n. 21
0
      public void Client_v7_13()
      {
         // Scan
         IList<LogLine> logLines = LogReader.GetLogLines(File.ReadAllLines("..\\..\\..\\TestFiles\\Client_v7_13\\log.txt"), LogFileType.FahClient).ToList();
         IList<ClientRun> clientRuns = LogReader.GetClientRuns(logLines, LogFileType.FahClient);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(0);
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 74, 212));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 79, 271));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 178, 522));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 236, 581));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 488, 831));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 546, 890));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 797, 1141));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 855, 1200));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 1107, 1451));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 1165, 1510));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 1417, 1760));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 1475, 1819));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 1726, 2070));
         expectedRun.UnitIndexes.Add(new UnitIndex(0, 1784, 2129));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 2095, -1));
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 2036, -1));
         expectedRun.StartTime = new DateTime(2014, 7, 25, 13, 57, 36, DateTimeKind.Utc);
         expectedRun.Arguments = "";
         expectedRun.ClientVersion = "";
         expectedRun.FoldingID = String.Empty;
         expectedRun.Team = 0;
         expectedRun.UserID = "";
         expectedRun.MachineID = 0;
         expectedRun.CompletedUnits = 14;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 0;
         expectedRun.Status = SlotStatus.Unknown;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         var logInterpreter = new LogInterpreter(logLines, clientRuns);
         Assert.AreEqual(1, logInterpreter.LogLineParsingErrors.Count());

         logLines = logInterpreter.GetLogLinesForQueueIndex(2, new ProjectInfo { ProjectID = 13001, ProjectRun = 430, ProjectClone = 2, ProjectGen = 48 });
         Assert.AreEqual(147, logLines.Count);
         FahLogUnitData fahLogData = LogReader.GetFahLogDataFromLogLines(logLines);
         Assert.AreEqual(new TimeSpan(16, 59, 51), fahLogData.UnitStartTimeStamp);
         Assert.AreEqual(0.0f, fahLogData.CoreVersion);
         Assert.AreEqual(101, fahLogData.FrameDataList.Count);
         Assert.AreEqual(101, fahLogData.FramesObserved);
         Assert.AreEqual(13001, fahLogData.ProjectID);
         Assert.AreEqual(430, fahLogData.ProjectRun);
         Assert.AreEqual(2, fahLogData.ProjectClone);
         Assert.AreEqual(48, fahLogData.ProjectGen);
         Assert.AreEqual(WorkUnitResult.FinishedUnit, fahLogData.UnitResult);

         logLines = logInterpreter.GetLogLinesForQueueIndex(2, new ProjectInfo { ProjectID = 13000, ProjectRun = 671, ProjectClone = 1, ProjectGen = 50 });
         Assert.AreEqual(104, logLines.Count);
         fahLogData = LogReader.GetFahLogDataFromLogLines(logLines);
         Assert.AreEqual(new TimeSpan(4, 41, 56), fahLogData.UnitStartTimeStamp);
         Assert.AreEqual(0.0f, fahLogData.CoreVersion);
         Assert.AreEqual(86, fahLogData.FrameDataList.Count);
         Assert.AreEqual(86, fahLogData.FramesObserved);
         Assert.AreEqual(13000, fahLogData.ProjectID);
         Assert.AreEqual(671, fahLogData.ProjectRun);
         Assert.AreEqual(1, fahLogData.ProjectClone);
         Assert.AreEqual(50, fahLogData.ProjectGen);
         Assert.AreEqual(WorkUnitResult.Unknown, fahLogData.UnitResult);
      }
Esempio n. 22
0
      private static void DoClientRunCheck(ClientRun expectedRun, ClientRun run)
      {
         Assert.AreEqual(expectedRun.ClientStartIndex, run.ClientStartIndex);
         Assert.AreEqual(expectedRun.ClientVersion, run.ClientVersion);
         Assert.AreEqual(expectedRun.UnitIndexes.Count, run.UnitIndexes.Count);
         for (int i = 0; i < expectedRun.UnitIndexes.Count; i++)
         {
            Assert.AreEqual(expectedRun.UnitIndexes[i].QueueIndex, run.UnitIndexes[i].QueueIndex);
            Assert.AreEqual(expectedRun.UnitIndexes[i].StartIndex, run.UnitIndexes[i].StartIndex);
            Assert.AreEqual(expectedRun.UnitIndexes[i].EndIndex, run.UnitIndexes[i].EndIndex);
         }

         Assert.AreEqual(expectedRun.StartTime, run.StartTime);
         Assert.AreEqual(expectedRun.Arguments, run.Arguments);
         Assert.AreEqual(expectedRun.FoldingID, run.FoldingID);
         Assert.AreEqual(expectedRun.Team, run.Team);
         Assert.AreEqual(expectedRun.UserID, run.UserID);
         Assert.AreEqual(expectedRun.MachineID, run.MachineID);
         Assert.AreEqual(expectedRun.CompletedUnits, run.CompletedUnits);
         Assert.AreEqual(expectedRun.FailedUnits, run.FailedUnits);
         Assert.AreEqual(expectedRun.TotalCompletedUnits, run.TotalCompletedUnits);
         Assert.AreEqual(expectedRun.Status, run.Status);
      }
Esempio n. 23
0
      public void Standard_5_FAHlog() // verbosity 9
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\Standard_5\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 3 Positions
         var expectedRun = new ClientRun(788);
         expectedRun.UnitIndexes.Add(new UnitIndex(4, 820));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 3, 24, 0, 28, 52, DateTimeKind.Utc);
         expectedRun.Arguments = "-oneunit -forceasm -verbosity 9";
         expectedRun.ClientVersion = "6.23";
         expectedRun.FoldingID = "borden.b";
         expectedRun.Team = 131;
         expectedRun.UserID = "722723950C6887C2";
         expectedRun.MachineID = 3;
         expectedRun.CompletedUnits = 0;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 0;
         expectedRun.Status = SlotStatus.RunningNoFrameTimes;

         DoClientRunCheck(expectedRun, clientRuns[3]);
         
         // Check Run 4 Positions
         expectedRun = new ClientRun(927);
         expectedRun.UnitIndexes.Add(new UnitIndex(4, 961));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 3, 24, 0, 41, 07, DateTimeKind.Utc);
         expectedRun.Arguments = "-forceasm -verbosity 9 -oneunit";
         expectedRun.ClientVersion = "6.23";
         expectedRun.FoldingID = "borden.b";
         expectedRun.Team = 131;
         expectedRun.UserID = "722723950C6887C2";
         expectedRun.MachineID = 3;
         expectedRun.CompletedUnits = 0;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 0;
         expectedRun.Status = SlotStatus.RunningNoFrameTimes;

         DoClientRunCheck(expectedRun, clientRuns[4]);

         // Verify LogLine Properties
         Assert.IsNull(logInterpreter.PreviousWorkUnitLogLines); // No Previous Log Lines for this Run
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 4 - Unit Index 0)
         Assert.AreEqual(4, logLines[967].LineData);
         Assert.AreEqual(23f, logLines[978].LineData);
         Assert.That(logLines[963].ToString().Contains("Project: 6501 (Run 13, Clone 0, Gen 0)"));
         Assert.That(logLines[971].ToString().Contains("Project: 6501 (Run 15, Clone 0, Gen 0)"));
         Assert.That(logLines[1006].ToString().Contains("Project: 10002 (Run 19, Clone 0, Gen 51)"));

         var unitData = LogReader.GetFahLogDataFromLogLines(logInterpreter.CurrentWorkUnitLogLines);
         Assert.AreEqual(new TimeSpan(0, 41, 7), unitData.UnitStartTimeStamp);
         Assert.AreEqual(5, unitData.FrameDataList.Count);
         Assert.AreEqual(5, unitData.FramesObserved);
         Assert.AreEqual(23f, unitData.CoreVersion);
         Assert.AreEqual(-1, unitData.ProjectInfoIndex);
         Assert.AreEqual(3, unitData.ProjectInfoList.Count);
         Assert.AreEqual(10002, unitData.ProjectID);
         Assert.AreEqual(19, unitData.ProjectRun);
         Assert.AreEqual(0, unitData.ProjectClone);
         Assert.AreEqual(51, unitData.ProjectGen);
         Assert.AreEqual(unitData.ProjectID, unitData.ProjectInfoList[unitData.ProjectInfoList.Count - 1].ProjectID);
         Assert.AreEqual(unitData.ProjectRun, unitData.ProjectInfoList[unitData.ProjectInfoList.Count - 1].ProjectRun);
         Assert.AreEqual(unitData.ProjectClone, unitData.ProjectInfoList[unitData.ProjectInfoList.Count - 1].ProjectClone);
         Assert.AreEqual(unitData.ProjectGen, unitData.ProjectInfoList[unitData.ProjectInfoList.Count - 1].ProjectGen);
         Assert.AreEqual(WorkUnitResult.Unknown, unitData.UnitResult);
      }
Esempio n. 24
0
      public void GPU3_2_FAHlog() // verbosity 9 / OPENMMGPU v2.19
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\GPU3_2\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(2);
         expectedRun.UnitIndexes.Add(new UnitIndex(3, 27));
         expectedRun.UnitIndexes.Add(new UnitIndex(4, 170));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 2, 17, 17, 19, 31, DateTimeKind.Utc);
         expectedRun.Arguments = "-gpu 0 -verbosity 9 -local -verbosity 9";
         expectedRun.ClientVersion = "6.41r2";
         expectedRun.FoldingID = "HayesK";
         expectedRun.Team = 32;
         expectedRun.UserID = "37114EB5198643C1";
         expectedRun.MachineID = 2;
         expectedRun.CompletedUnits = 1;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 847;
         expectedRun.Status = SlotStatus.RunningNoFrameTimes;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         // Verify LogLine Properties
         Assert.IsNotNull(logInterpreter.PreviousWorkUnitLogLines);
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 0 - Unit Index 0)
         Assert.AreEqual(3, logLines[34].LineData);
         Assert.AreEqual(2.19f, logLines[41].LineData);
         Assert.That(logLines[56].ToString().Contains("Project: 10634 (Run 11, Clone 24, Gen 14)"));

         var unitData = LogReader.GetFahLogDataFromLogLines(logInterpreter.CurrentWorkUnitLogLines);
         Assert.AreEqual(new TimeSpan(17, 31, 22), unitData.UnitStartTimeStamp);
         Assert.AreEqual(12, unitData.FrameDataList.Count);
         Assert.AreEqual(12, unitData.FramesObserved);
         Assert.AreEqual(2.19f, unitData.CoreVersion);
         Assert.AreEqual(-1, unitData.ProjectInfoIndex);
         Assert.AreEqual(1, unitData.ProjectInfoList.Count);
         Assert.AreEqual(10634, unitData.ProjectID);
         Assert.AreEqual(8, unitData.ProjectRun);
         Assert.AreEqual(24, unitData.ProjectClone);
         Assert.AreEqual(24, unitData.ProjectGen);
         Assert.AreEqual(unitData.ProjectID, unitData.ProjectInfoList[unitData.ProjectInfoList.Count - 1].ProjectID);
         Assert.AreEqual(unitData.ProjectRun, unitData.ProjectInfoList[unitData.ProjectInfoList.Count - 1].ProjectRun);
         Assert.AreEqual(unitData.ProjectClone, unitData.ProjectInfoList[unitData.ProjectInfoList.Count - 1].ProjectClone);
         Assert.AreEqual(unitData.ProjectGen, unitData.ProjectInfoList[unitData.ProjectInfoList.Count - 1].ProjectGen);
         Assert.AreEqual(WorkUnitResult.Unknown, unitData.UnitResult);
      }
Esempio n. 25
0
      public void SMP_10_FAHlog() // -smp 8 -bigadv verbosity 9 / Corrupted Log Section in Client Run Index 5
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\SMP_10\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 5 Positions
         var expectedRun = new ClientRun(401);
         expectedRun.UnitIndexes.Add(new UnitIndex(-1, 426));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 12, 11, 13, 20, 57, DateTimeKind.Utc);
         expectedRun.Arguments = "-configonly";
         expectedRun.ClientVersion = "6.24R3";
         expectedRun.FoldingID = "sneakysnowman";
         expectedRun.Team = 32;
         expectedRun.UserID = "5D2DCEF06CE524B3";
         expectedRun.MachineID = 1;
         expectedRun.CompletedUnits = 0;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 0;
         expectedRun.Status = SlotStatus.RunningNoFrameTimes;

         DoClientRunCheck(expectedRun, clientRuns[5]);

         // Verify LogLine Properties
         Assert.IsNull(logInterpreter.PreviousWorkUnitLogLines);
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 8 - Unit Index 0)
         Assert.AreEqual(6, logLines[610].LineData);
         Assert.AreEqual(2.10f, logLines[617].LineData);
         Assert.That(logLines[628].ToString().Contains("Project: 2683 (Run 4, Clone 11, Gen 18)"));
         Assert.AreEqual(WorkUnitResult.FinishedUnit, logLines[660].LineData);
      }
Esempio n. 26
0
        /// <summary>
        /// Aggregate Data and return UnitInfo Dictionary.
        /// </summary>
        public DataAggregatorResult AggregateData(ClientRun clientRun, UnitCollection unitCollection, Info info, Options options,
                                                  SlotOptions slotOptions, UnitInfo currentUnitInfo, int slotId)
        {
            if (clientRun == null)
            {
                throw new ArgumentNullException(nameof(clientRun));
            }
            if (unitCollection == null)
            {
                throw new ArgumentNullException(nameof(unitCollection));
            }
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            if (slotOptions == null)
            {
                throw new ArgumentNullException(nameof(slotOptions));
            }
            if (currentUnitInfo == null)
            {
                throw new ArgumentNullException(nameof(currentUnitInfo));
            }

            var result = new DataAggregatorResult();

            result.CurrentUnitIndex = -1;

            SlotRun slotRun = null;

            if (clientRun.SlotRuns.ContainsKey(slotId))
            {
                slotRun = clientRun.SlotRuns[slotId];
            }
            result.StartTime = clientRun.Data.StartTime;

            if (Logger.IsDebugEnabled)
            {
                foreach (var s in LogLineEnumerable.Create(clientRun).Where(x => x.Data is LogLineDataParserError))
                {
                    Logger.DebugFormat(Constants.ClientNameFormat, ClientName, String.Format("Failed to parse log line: {0}", s));
                }
            }

            GenerateUnitInfoDataFromQueue(result, slotRun, unitCollection, options, slotOptions, currentUnitInfo, slotId);
            result.Queue = BuildQueueDictionary(unitCollection, info, slotOptions, slotId);

            if (result.UnitInfos.ContainsKey(result.CurrentUnitIndex) && result.UnitInfos[result.CurrentUnitIndex].LogLines != null)
            {
                result.CurrentLogLines = result.UnitInfos[result.CurrentUnitIndex].LogLines;
            }
            else if (slotRun != null)
            {
                result.CurrentLogLines = LogLineEnumerable.Create(slotRun).ToList();
            }
            else
            {
                result.CurrentLogLines = LogLineEnumerable.Create(clientRun).ToList();
            }

            return(result);
        }
Esempio n. 27
0
      public void Standard_1_FAHlog() // verbosity 9
      {
         // Scan
         var logLines = LogReader.GetLogLines("..\\..\\..\\TestFiles\\Standard_1\\FAHlog.txt").ToList();
         var clientRuns = LogReader.GetClientRuns(logLines);
         var logInterpreter = new LogInterpreterLegacy(logLines, clientRuns);

         // Check Run 0 Positions
         var expectedRun = new ClientRun(2);
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 8, 18, 2, 15, 30, DateTimeKind.Utc);
         expectedRun.Arguments = "-configonly";
         expectedRun.ClientVersion = "6.23";
         expectedRun.FoldingID = "harlam357";
         expectedRun.Team = 32;
         expectedRun.UserID = "4E34332601E26450";
         expectedRun.MachineID = 5;
         expectedRun.CompletedUnits = 0;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 0;

         DoClientRunCheck(expectedRun, clientRuns[0]);

         // Check Run 1 Positions
         expectedRun = new ClientRun(30);
         expectedRun.UnitIndexes.Add(new UnitIndex(1, 179));
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 593));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 8, 18, 2, 17, 46, DateTimeKind.Utc);
         expectedRun.Arguments = "-verbosity 9 -forceasm";
         expectedRun.ClientVersion = "6.23";
         expectedRun.FoldingID = "harlam357";
         expectedRun.Team = 32;
         expectedRun.UserID = "4E34332601E26450";
         expectedRun.MachineID = 5;
         expectedRun.CompletedUnits = 1;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 0; //TODO: not capturing line "+ Starting local stats count at 1"
         expectedRun.Status = SlotStatus.Stopped;

         DoClientRunCheck(expectedRun, clientRuns[1]);

         // Check Run 2 Positions
         expectedRun = new ClientRun(839);
         expectedRun.UnitIndexes.Add(new UnitIndex(2, 874));
         expectedRun.StartTime = new DateTime(DateTime.UtcNow.Year, 8, 20, 4, 17, 29, DateTimeKind.Utc);
         expectedRun.Arguments = "-verbosity 9 -forceasm -oneunit";
         expectedRun.ClientVersion = "6.23";
         expectedRun.FoldingID = "harlam357";
         expectedRun.Team = 32;
         expectedRun.UserID = "4E34332601E26450";
         expectedRun.MachineID = 5;
         expectedRun.CompletedUnits = 1;
         expectedRun.FailedUnits = 0;
         expectedRun.TotalCompletedUnits = 2;
         expectedRun.Status = SlotStatus.Stopped;

         DoClientRunCheck(expectedRun, clientRuns[2]);

         // Verify LogLine Properties
         Assert.IsNull(logInterpreter.PreviousWorkUnitLogLines); // No Previous Log Lines for this Run
         Assert.IsNotNull(logInterpreter.CurrentWorkUnitLogLines);

         // Spot Check Work Unit Data (Run Index 1 - Unit Index 0)
         Assert.AreEqual(1, logLines[182].LineData);
         Assert.AreEqual(1.90f, logLines[189].LineData);
         Assert.That(logLines[197].ToString().Contains("Project: 4456 (Run 173, Clone 0, Gen 31)"));
         Assert.AreEqual(WorkUnitResult.FinishedUnit, logLines[433].LineData);
      }