2
0

tcanalyst.pas 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. unit tcanalyst;
  2. {$mode ObjFPC}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, fpcunit, testregistry, sqldb, digestanalyst, pqconnection, tcsetup, tctestsql, tsutils, tsdb, tstypes;
  6. type
  7. { TTestAnalyst }
  8. TTestAnalyst = class(TTestBaseSQLCase)
  9. private
  10. FAnalyst: TDBDigestAnalyzer;
  11. FSQL: TTestSQL;
  12. protected
  13. function GetSQL: TTestSQL; override;
  14. public
  15. Procedure SetUp; override;
  16. Procedure TearDown; override;
  17. Property Analyst : TDBDigestAnalyzer read FAnalyst;
  18. Published
  19. Procedure TestHookup;
  20. procedure TestSaveResultsIdentical;
  21. procedure TestSaveResultsDifferSameDate;
  22. procedure TestSaveResultsDifferOlderDate;
  23. procedure TestSaveResultsDifferNewerDate;
  24. end;
  25. implementation
  26. { TTestAnalyst }
  27. function TTestAnalyst.GetSQL: TTestSQL;
  28. begin
  29. Result:=FSQL;
  30. end;
  31. procedure TTestAnalyst.SetUp;
  32. begin
  33. inherited SetUp;
  34. if not Assigned(TDBHelper.SQL) then
  35. TDBHelper.Setup;
  36. FSQL:=TDBHelper.SQL;
  37. FAnalyst:=TDBDigestAnalyzer.Create(FSQL,'');
  38. TDBHelper.ClearAllTables;
  39. end;
  40. procedure TTestAnalyst.TearDown;
  41. begin
  42. FreeAndNil(FAnalyst);
  43. FSQL:=Nil;
  44. inherited TearDown;
  45. end;
  46. procedure TTestAnalyst.TestHookup;
  47. begin
  48. AssertNotNull('SQL',SQL);
  49. AssertNotNull('Analyst',Analyst);
  50. AssertSame('Analyst SQL',SQL,Analyst.DB);
  51. end;
  52. procedure TTestAnalyst.TestSaveResultsDifferSameDate;
  53. var
  54. lData : TTestRunData;
  55. lResults2,lResults : TTestResultData;
  56. lResultID : Int64;
  57. begin
  58. lResultID:=CreateResultData(lData,lResults,1);
  59. SQL.AddLastResult(lResults.TestID,lData.PlatformID,lResultID);
  60. AssertEquals('count TESTRESULTS before',1,TDBHelper.CountRecords('TESTRESULTS'));
  61. AssertEquals('count TESTLASTRESULTS before',1,TDBHelper.CountRecords('TESTLASTRESULTS'));
  62. AssertEquals('count TESTPREVIOUSRESULTS before',0,TDBHelper.CountRecords('TESTPREVIOUSRESULTS'));
  63. AssertTrue('Have iD',lResultID>0);
  64. lResults.ID:=0;
  65. lResults.TestResult:=TTestStatus.stFailedToRun;
  66. AssertFalse('No new record for identical date',Analyst.SaveTestResult(lResults));
  67. AssertEquals('count TESTRESULTS after identical date ',1,TDBHelper.CountRecords('TESTRESULTS'));
  68. AssertEquals('count TESTLASTRESULTS before',1,TDBHelper.CountRecords('TESTLASTRESULTS'));
  69. AssertEquals('count TESTPREVIOUSRESULTS before',0,TDBHelper.CountRecords('TESTPREVIOUSRESULTS'));
  70. lResults2:=SQL.GetLastTestResult(lResults.TestID,lData.PlatformID);
  71. AssertTrue('Existing record was updated',lResults2.TestResult=lResults.TestResult);
  72. end;
  73. procedure TTestAnalyst.TestSaveResultsDifferOlderDate;
  74. var
  75. lData : TTestRunData;
  76. lResults2,lResults : TTestResultData;
  77. lResultID : Int64;
  78. begin
  79. lResultID:=CreateResultData(lData,lResults,1);
  80. SQL.AddLastResult(lResults.TestID,lData.PlatformID,lResultID);
  81. AssertEquals('count TESTRESULTS before',1,TDBHelper.CountRecords('TESTRESULTS'));
  82. AssertEquals('count TESTLASTRESULTS before',1,TDBHelper.CountRecords('TESTLASTRESULTS'));
  83. AssertEquals('count TESTPREVIOUSRESULTS before',0,TDBHelper.CountRecords('TESTPREVIOUSRESULTS'));
  84. AssertTrue('Have iD',lResultID>0);
  85. // Simulate new run, but on older date
  86. lData.Date:=Date-2;
  87. lData.RunID:=SQL.AddRun(lData);
  88. // test result
  89. lResults.ID:=0;
  90. lResults.RunID:=lData.RunID;
  91. lResults.TestResult:=TTestStatus.stFailedToRun;
  92. lResults.Date:=Date-2;
  93. AssertFalse('No new record for identical date',Analyst.SaveTestResult(lResults));
  94. AssertEquals('count TESTRESULTS after identical date ',1,TDBHelper.CountRecords('TESTRESULTS'));
  95. AssertEquals('count TESTLASTRESULTS before',1,TDBHelper.CountRecords('TESTLASTRESULTS'));
  96. AssertEquals('count TESTPREVIOUSRESULTS before',0,TDBHelper.CountRecords('TESTPREVIOUSRESULTS'));
  97. lResults2:=SQL.GetLastTestResult(lResults.TestID,lData.PlatformID);
  98. AssertTrue('Existing record was not updated',lResults2.TestResult<>lResults.TestResult);
  99. end;
  100. procedure TTestAnalyst.TestSaveResultsDifferNewerDate;
  101. var
  102. lData : TTestRunData;
  103. lResults2,lResults : TTestResultData;
  104. lResultID : Int64;
  105. begin
  106. lResultID:=CreateResultData(lData,lResults,1);
  107. SQL.AddLastResult(lResults.TestID,lData.PlatformID,lResultID);
  108. AssertEquals('count TESTRESULTS before',1,TDBHelper.CountRecords('TESTRESULTS'));
  109. AssertEquals('count TESTLASTRESULTS before',1,TDBHelper.CountRecords('TESTLASTRESULTS'));
  110. AssertEquals('count TESTPREVIOUSRESULTS before',0,TDBHelper.CountRecords('TESTPREVIOUSRESULTS'));
  111. AssertTrue('Have iD',lResultID>0);
  112. // Simulate new run
  113. lData.Date:=Date;
  114. lData.RunID:=SQL.AddRun(lData);
  115. // test result
  116. lResults.ID:=0;
  117. lResults.RunID:=lData.RunID;
  118. lResults.TestResult:=TTestStatus.stFailedToRun;
  119. lResults.Date:=Date;
  120. AssertTrue('new record for identical date',Analyst.SaveTestResult(lResults));
  121. AssertEquals('count TESTRESULTS after ',2,TDBHelper.CountRecords('TESTRESULTS'));
  122. // these remain the same, the platform/test is the same...
  123. AssertEquals('count TESTLASTRESULTS after',1,TDBHelper.CountRecords('TESTLASTRESULTS'));
  124. AssertEquals('count TESTPREVIOUSRESULTS after',1,TDBHelper.CountRecords('TESTPREVIOUSRESULTS'));
  125. lResults2:=SQL.GetLastTestResult(lResults.TestID,lData.PlatformID);
  126. AssertEquals('Existing record was updated (id)',lResults.ID,lResults2.ID);
  127. AssertTrue('New record was marked as last (status)',lResults2.TestResult=lResults.TestResult);
  128. end;
  129. procedure TTestAnalyst.TestSaveResultsIdentical;
  130. var
  131. lData : TTestRunData;
  132. lResults : TTestResultData;
  133. lResultID : Int64;
  134. begin
  135. lResultID:=CreateResultData(lData,lResults,1);
  136. SQL.AddLastResult(lResults.TestID,lData.PlatformID,lResultID);
  137. AssertEquals('count TESTRESULTS before',1,TDBHelper.CountRecords('TESTRESULTS'));
  138. AssertEquals('count TESTLASTRESULTS before',1,TDBHelper.CountRecords('TESTLASTRESULTS'));
  139. AssertEquals('count TESTPREVIOUSRESULTS before',0,TDBHelper.CountRecords('TESTPREVIOUSRESULTS'));
  140. AssertTrue('Have iD',lResultID>0);
  141. lResults.ID:=0;
  142. AssertFalse('No new record for identical',Analyst.SaveTestResult(lResults));
  143. AssertEquals('count TESTRESULTS after identical',1,TDBHelper.CountRecords('TESTRESULTS'));
  144. AssertEquals('count TESTLASTRESULTS before',1,TDBHelper.CountRecords('TESTLASTRESULTS'));
  145. AssertEquals('count TESTPREVIOUSRESULTS before',0,TDBHelper.CountRecords('TESTPREVIOUSRESULTS'));
  146. end;
  147. begin
  148. Registertest(TTestAnalyst);
  149. end.