tctestsql.pas 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714
  1. unit tctestsql;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, fpcunit, testregistry, tsutils, tsdb, tstypes, sqldb, pqconnection;
  6. type
  7. { TTestSQLCase }
  8. { TTestBaseSQLCase }
  9. TTestBaseSQLCase = class(TTestCase)
  10. Protected
  11. function CreateResultData(out aData: TTestRunData; out aResult: TTestResultData; DateOffset: Integer = 0): Int64;
  12. function PreparePlatform(var aData: TTestRunData): Integer;
  13. procedure CreateSource(const aFileName : String);
  14. procedure DeleteSource(const aFileName: String);
  15. procedure AssertTestRunData(aQry: TSQLQuery; aData: TTestRunData);
  16. function GetSQL: TTestSQL; virtual; abstract;
  17. property SQL : TTestSQL Read GetSQL;
  18. end;
  19. TTestSQLCase = class(TTestBaseSQLCase)
  20. const
  21. SQLTestResultFilter = '(TR_ID=%d) and (TR_TESTRUN_FK=%d) and (TR_TEST_FK=%d) and (TR_OK=''%s'') and (TR_SKIP=''%s'') and (TR_RESULT=%d) and (TR_LOG=''%s'')';
  22. private
  23. protected
  24. function GetSQL: TTestSQL; override;
  25. protected
  26. procedure SetUp; override;
  27. procedure TearDown; override;
  28. published
  29. procedure TestHookUp;
  30. procedure TestAddCPU;
  31. procedure TestAddOS;
  32. procedure TestAddVersion;
  33. procedure TestAddCategory;
  34. procedure TestAddTest;
  35. Procedure TestUpdateTest;
  36. procedure TestAddPlatform;
  37. Procedure TestAddRun;
  38. procedure TestUpdateRun;
  39. Procedure TestAddTestResult;
  40. Procedure TestAddTestResultTwice;
  41. Procedure TestUpdateTestResult;
  42. Procedure TestAddLastResult;
  43. Procedure TestAddLastResultTwice;
  44. Procedure TestGetLastTestResult;
  45. Procedure TestAddPreviousResult;
  46. Procedure TestAddPreviousResultTwice;
  47. procedure TestGetCPUID;
  48. procedure TestGetOSID;
  49. procedure TestGetCategoryID;
  50. procedure TestGetVersionID;
  51. procedure TestGetTestID;
  52. procedure TestGetRunID;
  53. procedure TestHistoryNoHistory;
  54. procedure TestHistoryWithHistory;
  55. Procedure TestGetPreviousTestRun;
  56. Procedure TestGetNextTestRun;
  57. procedure TestAddCheckAllRtl;
  58. end;
  59. implementation
  60. uses tsstring, tcsetup;
  61. { TTestBaseSQLCase }
  62. procedure TTestBaseSQLCase.DeleteSource(const aFileName: String);
  63. begin
  64. if FileExists(aFilename+'.pp') then
  65. if not DeleteFile(aFilename+'.pp') then
  66. Fail('Failed to delete '+aFileName+'.pp');
  67. end;
  68. procedure TTestBaseSQLCase.CreateSource(const aFileName: String);
  69. var
  70. Src : TStrings;
  71. begin
  72. Src:=TStringList.Create;
  73. try
  74. Src.Add('program '+aFileName+';');
  75. Src.Add('begin');
  76. Src.Add('end.');
  77. Src.SaveToFile(afileName+'.pp');
  78. finally
  79. Src.Free;
  80. end;
  81. end;
  82. function TTestBaseSQLCase.PreparePlatform(var aData : TTestRunData) : Integer;
  83. begin
  84. aData.CategoryID:=SQL.GetCategoryID('x');
  85. if aData.CategoryID=-1 then
  86. aData.CategoryID:=SQL.AddCategory('x');
  87. aData.OSID:=SQL.GetOSID('y');
  88. if aData.OSID=-1 then
  89. aData.OSID:=SQL.AddOS('y');
  90. aData.CPUID:=SQL.GetCPUID('z');
  91. if aData.CPUID=-1 then
  92. aData.CPUID:=SQL.AddCPU('z');
  93. aData.VersionID:=SQL.GetVersionID('w');
  94. if aData.VersionID=-1 then
  95. aData.VersionID:=SQL.AddVersion('w',Date);
  96. aData.config:='v';
  97. aData.machine:='w';
  98. Result:=SQL.GetPlatformID(aData,False);
  99. if Result=-1 then
  100. Result:=SQL.AddPlatform(aData);
  101. end;
  102. procedure TTestBaseSQLCase.AssertTestRunData(aQry : TSQLQuery; aData : TTestRunData);
  103. var
  104. St : TTestStatus;
  105. begin
  106. With aQry,aData do
  107. begin
  108. AssertEquals('Date',DATE,FieldByName('TU_DATE').AsDateTime);
  109. AssertEquals('Platform',PlatformID,FieldByName('TU_PLATFORM_FK').AsInteger);
  110. AssertEquals('Submitter',Submitter,FieldByName('TU_SUBMITTER').AsString);
  111. For St in TValidTestStatus do
  112. AssertEquals(StatusText[St],StatusCount[st],FieldByName(SQLField[ST]).AsInteger);
  113. AssertEquals('CompilerDate',CompilerDate,FieldByName('TU_COMPILERDATE').AsString);
  114. AssertEquals('CompilerFullVersion',CompilerFullVersion,FieldByName('TU_COMPILERFULLVERSION').AsString);
  115. AssertEquals('CompilerRevision',CompilerRevision,FieldByName('TU_COMPILERREVISION').AsString);
  116. AssertEquals('TestsRevision',TestsRevision,FieldByName('TU_TESTSREVISION').AsString);
  117. AssertEquals('RTLRevision',RTLRevision,FieldByName('TU_RTLREVISION').AsString);
  118. AssertEquals('PackagesRevision',PackagesRevision,FieldByName('TU_PACKAGESREVISION').AsString);
  119. end;
  120. end;
  121. function TTestBaseSQLCase.CreateResultData(out aData: TTestRunData; out aResult: TTestResultData; DateOffset: Integer): Int64;
  122. begin
  123. aData:=Default(TTestRunData);
  124. aData.PlatformID:=PreparePlatform(aData);
  125. aData.Date:=Date-DateOffset;
  126. aData.RunID:=SQL.AddRun(aData);
  127. aResult:=Default(TTestResultData);
  128. aResult.RunID:=aData.RunID;
  129. aResult.PlatformID:=aData.PlatformID;
  130. aResult.Date:=Date-DateOffset;
  131. CreateSource('x');
  132. if SQL.GetTestID('x.pp')=-1 then
  133. aResult.TestID:=SQL.AddTest('x.pp',False)
  134. else
  135. aResult.TestID:=SQL.GetTestID('x.pp');
  136. aResult.TestResult:=stSuccessCompilationFailed;
  137. aResult.Log:='xyz';
  138. With aData do
  139. begin
  140. Result:=SQL.AddTestResult(aResult);
  141. aResult.ID:=Result;
  142. end;
  143. end;
  144. { TTestSQLCase }
  145. procedure TTestSQLCase.TestHookUp;
  146. begin
  147. AssertEquals('Empty testos',0,TDBHelper.CountRecords('TESTOS'));
  148. AssertEquals('Empty TESTCPU',0,TDBHelper.CountRecords('TESTCPU'));
  149. AssertEquals('Empty TESTCATEGORY',0,TDBHelper.CountRecords('TESTCATEGORY'));
  150. AssertEquals('Empty TESTVERSION',0,TDBHelper.CountRecords('TESTVERSION'));
  151. AssertEquals('Empty TESTPLATFORM',0,TDBHelper.CountRecords('TESTPLATFORM'));
  152. AssertEquals('Empty TESTRUN',0,TDBHelper.CountRecords('TESTRUN'));
  153. AssertEquals('Empty TESTS',0,TDBHelper.CountRecords('TESTS'));
  154. AssertEquals('Empty TESTRESULTS',0,TDBHelper.CountRecords('TESTRESULTS'));
  155. AssertEquals('Empty TESTLASTRESULTS',0,TDBHelper.CountRecords('TESTLASTRESULTS'));
  156. AssertEquals('Empty TESTPREVIOUSRESULTS',0,TDBHelper.CountRecords('TESTPREVIOUSRESULTS'));
  157. end;
  158. procedure TTestSQLCase.TestAddCPU;
  159. var
  160. lID : Int64;
  161. begin
  162. lID:=SQL.AddCPU('x');
  163. AssertEquals('exists',1,TDBHelper.CountRecords('TESTCPU',Format('(TC_ID=%d) and (tc_name=''x'')',[lID])));
  164. end;
  165. procedure TTestSQLCase.TestAddOS;
  166. var
  167. lID : Int64;
  168. begin
  169. lID:=SQL.AddOS('x');
  170. AssertEquals('exists',1,TDBHelper.CountRecords('TESTOS',Format('(TO_ID=%d) and (to_name=''x'')',[lID])));
  171. end;
  172. procedure TTestSQLCase.TestAddVersion;
  173. var
  174. lID : Int64;
  175. begin
  176. lID:=SQL.AddVersion('x',date);
  177. AssertEquals('exists',1,TDBHelper.CountRecords('TESTVERSION',Format('(Tv_ID=%d) and (tv_version=''x'')',[lID])));
  178. end;
  179. procedure TTestSQLCase.TestAddCategory;
  180. var
  181. lID : Int64;
  182. begin
  183. lID:=SQL.AddCategory('x');
  184. AssertEquals('exists',1,TDBHelper.CountRecords('TESTCATEGORY',Format('(TA_ID=%d) and (ta_name=''x'')',[lID])));
  185. end;
  186. procedure TTestSQLCase.TestAddTest;
  187. var
  188. lID : Integer;
  189. begin
  190. CreateSource('x');
  191. lID:=SQL.AddTest('x.pp',False);
  192. AssertEquals('exists',1,TDBHelper.CountRecords('TESTS',Format('(T_ID=%d) and (t_name=''x.pp'')',[lID])));
  193. end;
  194. procedure TTestSQLCase.TestUpdateTest;
  195. var
  196. lInfo : TTestInfo;
  197. lID : Integer;
  198. lFilter : string;
  199. begin
  200. lID:=SQL.AddTest('x.pp',False);
  201. lInfo:=Default(TTestInfo);
  202. With lInfo do
  203. begin
  204. Name:='name'; // Will not be changed
  205. CPU:='cpu';
  206. OS:='os';
  207. Version:='version';
  208. AddDate:=Date-1; // Will not be changed
  209. Graph:=True;
  210. Interactive:=True;
  211. Result:=123;
  212. Fail:=True;
  213. ReCompile:=True;
  214. NoRun:=True;
  215. NeedLibrary:=True;
  216. KnownRunError:=456;
  217. Known:=True;
  218. Note:='note';
  219. Description:='description';
  220. Source:='source';
  221. Opts:='opts';
  222. DelOptions:='deloptions';
  223. SkipCPU:='skipcpu';
  224. SkipEmu:='skipemu';
  225. NeedTarget:='needtarget';
  226. SkipTarget:='skiptarget';
  227. MaxVersion:='maxversion';
  228. KnownRunNote:='knownrunnote';
  229. KnownCompileNote:='knowncompilenote';
  230. RecompileOpt:='recompileopt';
  231. KnownCompileError:=789;
  232. NeededAfter:=True;
  233. IsKnownRunError:=True;
  234. Timeout:=543;
  235. Category:='category';
  236. Files:='files';
  237. ConfigFileSrc:='configfilesrc';
  238. ConfigFileDst:='configfiledst';
  239. WpoParas:='wpoparas';
  240. WpoPasses:=321;
  241. DelFiles:='delfiles';
  242. ExpectMsgs:=[1,2,3];
  243. end;
  244. SQL.UpdateTest(lID,lInfo,'xyz');
  245. // Construct filter with the values we expect.
  246. lFilter := Format('(T_ID = %d) AND ',[lID])
  247. + '(T_Name = ''x.pp'') AND '
  248. + '(T_CPU = ''cpu'') AND '
  249. + '(T_OS = ''os'') AND '
  250. + '(T_Version = ''version'') AND '
  251. + '(T_AddDate = '''+TTestSQL.SQLDate(Date)+''') AND '
  252. + '(T_Graph = ''t'') AND '
  253. + '(T_Interactive = ''t'') AND '
  254. + '(T_Result = 123) AND '
  255. + '(T_Fail = ''t'') AND '
  256. + '(T_ReCompile = ''t'') AND '
  257. + '(T_NoRun = ''t'') AND '
  258. + '(T_NeedLibrary = ''t'') AND '
  259. + '(T_KnownRunError = 456) AND '
  260. + '(T_Known = ''t'') AND '
  261. + '(T_Note = ''note'') AND '
  262. + '(T_Description = ''description'') AND '
  263. + '(T_Source = ''source'') AND '
  264. + '(T_Opts = ''opts'') AND '
  265. + '(T_DELOPTS =''deloptions'') AND '
  266. + '(T_SKIPCPU = ''skipcpu'') AND '
  267. + '(T_NEEDTARGET = ''needtarget'') AND '
  268. + '(T_MAXVERSION = ''maxversion'') AND '
  269. + '(T_KNOWNRUNNOTE = ''knownrunnote'') AND '
  270. + '(T_KNOWNCOMPILENOTE = ''knowncompilenote'') AND '
  271. + '(T_RECOMPILEOPT = ''recompileopt'') AND '
  272. + '(T_KNOWNCOMPILEERROR = 789) AND '
  273. + '(T_NEEDEDAFTER = ''t'') AND '
  274. + '(T_ISKNOWNRUNERROR = ''t'') AND '
  275. + '(T_Timeout = 543) AND '
  276. + '(T_CATEGORY = ''category'') AND '
  277. + '(T_FILES = ''files'') AND '
  278. + '(T_CONFIGFILESRC = ''configfilesrc'') AND '
  279. + '(T_CONFIGFILEDST = ''configfiledst'') AND '
  280. + '(T_WPOPARAS = ''wpoparas'') AND '
  281. + '(T_WPOPASSES = 321) AND '
  282. + '(T_DELFILES = ''delfiles'') AND '
  283. + '(T_EXPECTMSGS = ''1,2,3'')' ;
  284. // We should have 1 record with this filter
  285. AssertEquals('Updated',1,TDBHelper.CountRecords('TESTS',lFilter));
  286. end;
  287. procedure TTestSQLCase.TestAddPlatform;
  288. const
  289. SQLFilter = '(TP_ID=%d) and (TP_OS_FK=%d) and (TP_CPU_FK=%d) '+
  290. 'and (TP_VERSION_FK=%d) and (TP_CONFIG=''%s'') and (TP_MACHINE=''%s'')';
  291. var
  292. lData : TTestRunData;
  293. lID : integer;
  294. Flt : String;
  295. begin
  296. lData:=Default(TTestRunData);
  297. lID:=PreparePlatform(lData);
  298. With lData do
  299. flt:=Format(SQLFilter,[lID,OSID,CPUID,VersionID,Config,Machine]);
  300. AssertEquals('Platform',1,TDBHelper.CountRecords('TESTPLATFORM',Flt));
  301. end;
  302. procedure TTestSQLCase.TestAddRun;
  303. var
  304. lData : TTestRunData;
  305. lID : Int64;
  306. Qry : TSQLQuery;
  307. begin
  308. lData:=Default(TTestRunData);
  309. lData.PlatformID:=PreparePlatform(lData);
  310. With lData do
  311. begin
  312. machine:='a';
  313. submitter:='b';
  314. description:='c';
  315. Date:=Sysutils.Date;
  316. CompilerDate:='ymd';
  317. CompilerFullVersion:='1.2';
  318. CompilerRevision:='1.3';
  319. TestsRevision:='1.4';
  320. RTLRevision:='1.5';
  321. PackagesRevision:='1.6';
  322. end;
  323. lID:=SQL.AddRun(lData);
  324. Qry:=TDBHelper.CreateQuery(Format('Select * from testrun where (tu_id=%d)',[lID]));
  325. try
  326. Qry.Open;
  327. AssertFalse('Have data',Qry.IsEmpty);
  328. AssertTestRunData(Qry,lData);
  329. finally
  330. Qry.Free;
  331. end;
  332. end;
  333. procedure TTestSQLCase.TestAddTestResult;
  334. var
  335. lData : TTestRunData;
  336. lResult : TTestResultData;
  337. lID : Int64;
  338. flt : String;
  339. OK,Skip : Boolean;
  340. begin
  341. lID:=CreateResultData(lData,lResult);
  342. OK:=TestOK[lResult.TestResult];
  343. Skip:=TestSkipped[lResult.TestResult];
  344. With lResult do
  345. flt:=Format(SQLTestResultFilter,[lID,RunID,TestID,Bools[OK],Bools[Skip],Ord(TestResult),Log]);
  346. AssertEquals('Platform',1,TDBHelper.CountRecords('TESTRESULTS',Flt));
  347. end;
  348. procedure TTestSQLCase.TestAddTestResultTwice;
  349. var
  350. lData : TTestRunData;
  351. lResult : TTestResultData;
  352. lID,lID2 : Int64;
  353. flt : String;
  354. OK,Skip : Boolean;
  355. begin
  356. CreateResultData(lData,lResult);
  357. OK:=TestOK[lResult.TestResult];
  358. Skip:=TestSkipped[lResult.TestResult];
  359. lID:=SQL.AddTestResult(lResult);
  360. // Change result
  361. lResult.TestResult:=stFailedToCompile;
  362. lResult.Log:='xyza';
  363. OK:=TestOK[lResult.TestResult];
  364. Skip:=TestSkipped[lResult.TestResult];
  365. // Insert again...
  366. lID2:=SQL.AddTestResult(lResult);
  367. AssertEquals('Same ID',lID,lID2);
  368. flt:=Format(SQLTestResultFilter,[lID,lResult.RunID,lResult.TestID,Bools[OK],Bools[Skip],Ord(lResult.TestResult),lResult.Log]);
  369. AssertEquals('Result',1,TDBHelper.CountRecords('TESTRESULTS',Flt));
  370. end;
  371. procedure TTestSQLCase.TestUpdateTestResult;
  372. var
  373. lData : TTestRunData;
  374. lResult : TTestResultData;
  375. lID2,lID : Int64;
  376. flt : String;
  377. OK,Skip : Boolean;
  378. begin
  379. lID:=CreateResultData(lData,lResult);
  380. // Change result
  381. lResult.ID:=lID;
  382. lResult.TestResult:=stFailedToCompile;
  383. lResult.Log:='xyza';
  384. OK:=TestOK[lResult.TestResult];
  385. Skip:=TestSkipped[lResult.TestResult];
  386. // Update
  387. lID2:=SQL.UpdateTestResult(lResult);
  388. AssertEquals('Same ID',lID,lID2);
  389. flt:=Format(SQLTestResultFilter,[lID,lResult.RunID,lResult.TestID,Bools[OK],Bools[Skip],Ord(lResult.TestResult),lResult.Log]);
  390. AssertEquals('Result',1,TDBHelper.CountRecords('TESTRESULTS',Flt));
  391. end;
  392. procedure TTestSQLCase.TestAddLastResult;
  393. var
  394. lData : TTestRunData;
  395. lResult : TTestResultData;
  396. lID : Int64;
  397. flt : String;
  398. begin
  399. lID:=CreateResultData(lData,lResult);
  400. AssertTrue('Add',SQL.AddLastResult(lResult.TestID,lData.PlatformID,lID));
  401. flt:=Format('(TL_TEST_FK=%d) and (TL_PLATFORM_FK=%d) and (TL_TESTRESULTS_FK=%d)',[lResult.TestID,lData.PlatformID,lID]);
  402. AssertEquals('Result',1,TDBHelper.CountRecords('TESTLASTRESULTS',Flt));
  403. end;
  404. procedure TTestSQLCase.TestAddLastResultTwice;
  405. var
  406. lData : TTestRunData;
  407. lResult : TTestResultData;
  408. lID,lID2 : Integer;
  409. flt : string;
  410. begin
  411. lID:=CreateResultData(lData,lResult,1);
  412. AssertTrue('Add',SQL.AddLastResult(lResult.TestID,lData.PlatformID,lID));
  413. lID2:=CreateResultData(lData,lResult,0);
  414. AssertTrue('Add',SQL.AddLastResult(lResult.TestID,lData.PlatformID,lID2));
  415. flt:=Format('(TL_TEST_FK=%d) and (TL_PLATFORM_FK=%d) and (TL_TESTRESULTS_FK=%d)',[lResult.TestID,lData.PlatformID,lID2]);
  416. AssertEquals('Result',1,TDBHelper.CountRecords('TESTLASTRESULTS',Flt));
  417. end;
  418. procedure TTestSQLCase.TestGetLastTestResult;
  419. var
  420. lData : TTestRunData;
  421. lResult2,lResult : TTestResultData;
  422. lID : Integer;
  423. begin
  424. lID:=CreateResultData(lData,lResult,1);
  425. AssertTrue('Add',SQL.AddLastResult(lResult.TestID,lData.PlatformID,lID));
  426. lResult2:=SQL.GetLastTestResult(lResult.TestID,lData.PlatformID);
  427. AssertEquals('ID',lID,lResult2.ID);
  428. AssertEquals('Run',lResult.RunID,lResult2.RunID);
  429. AssertTrue('Status',lResult.TestResult=lResult2.TestResult);
  430. AssertEquals('Log',lResult.Log,lResult2.Log);
  431. AssertEquals('Date',Date-1,lResult2.Date);
  432. end;
  433. procedure TTestSQLCase.TestAddPreviousResult;
  434. var
  435. lData : TTestRunData;
  436. lResult : TTestResultData;
  437. lID : Int64;
  438. flt : String;
  439. begin
  440. lID:=CreateResultData(lData,lResult);
  441. AssertTrue('Add',SQL.AddPreviousResult(lResult.TestID,lData.PlatformID,lID));
  442. flt:=Format('(TPR_TEST_FK=%d) and (TPR_PLATFORM_FK=%d) and (TPR_TESTRESULTS_FK=%d)',[lResult.TestID,lData.PlatformID,lID]);
  443. AssertEquals('Result',1,TDBHelper.CountRecords('TESTPREVIOUSRESULTS',Flt));
  444. end;
  445. procedure TTestSQLCase.TestAddPreviousResultTwice;
  446. var
  447. lData : TTestRunData;
  448. lResult : TTestResultData;
  449. lID,lID2 : Integer;
  450. flt : string;
  451. begin
  452. lID:=CreateResultData(lData,lResult,1);
  453. AssertTrue('Add',SQL.AddPreviousResult(lResult.TestID,lData.PlatformID,lID));
  454. lID2:=CreateResultData(lData,lResult,0);
  455. AssertTrue('Add',SQL.AddPreviousResult(lResult.TestID,lData.PlatformID,lID2));
  456. flt:=Format('(TPR_TEST_FK=%d) and (TPR_PLATFORM_FK=%d) and (TPR_TESTRESULTS_FK=%d)',[lResult.TestID,lData.PlatformID,lID2]);
  457. AssertEquals('Result',1,TDBHelper.CountRecords('TESTPREVIOUSRESULTS',Flt));
  458. end;
  459. procedure TTestSQLCase.TestUpdateRun;
  460. var
  461. lData : TTestRunData;
  462. St : TTestStatus;
  463. Qry : TSQLQuery;
  464. begin
  465. lData:=Default(TTestRunData);
  466. lData.PlatformID:=PreparePlatform(lData);
  467. lData.RunID:=SQL.AddRun(lData);
  468. for St in TValidTestStatus do
  469. lData.StatusCount[st]:=(Ord(st)+1)*100;
  470. AssertTrue('Update',SQL.UpdateTestRun(lData));
  471. Qry:=TDBHelper.CreateQuery(Format('Select * from testrun where (tu_id=%d)',[lData.RunID]));
  472. try
  473. Qry.Open;
  474. AssertFalse('Have data',Qry.IsEmpty);
  475. AssertTestRunData(Qry,lData);
  476. finally
  477. Qry.Free;
  478. end;
  479. end;
  480. procedure TTestSQLCase.TestGetCPUID;
  481. begin
  482. TDBHelper.ExecSQL('INSERT INTO TESTCPU VALUES (1,''x'')');
  483. TDBHelper.ExecSQL('INSERT INTO TESTCPU VALUES (2,''y'')');
  484. AssertEquals('Count',2,TDBHelper.CountRecords('TESTCPU'));
  485. AssertEquals('Get x',1,SQL.GetCPUID('x'));
  486. AssertEquals('Get y',2,SQL.GetCPUID('y'));
  487. AssertEquals('Get z',-1,SQL.GetCPUID('z'));
  488. end;
  489. procedure TTestSQLCase.TestGetOSID;
  490. begin
  491. TDBHelper.ExecSQL('INSERT INTO TESTOS VALUES (1,''x'')');
  492. TDBHelper.ExecSQL('INSERT INTO TESTOS VALUES (2,''y'')');
  493. AssertEquals('Count',2,TDBHelper.CountRecords('TESTOS'));
  494. AssertEquals('Get x',1,SQL.GetOSID('x'));
  495. AssertEquals('Get y',2,SQL.GetOSID('y'));
  496. AssertEquals('Get z',-1,SQL.GetOSID('z'));
  497. end;
  498. procedure TTestSQLCase.TestGetCategoryID;
  499. begin
  500. TDBHelper.ExecSQL('INSERT INTO TESTCategory VALUES (1,''x'')');
  501. TDBHelper.ExecSQL('INSERT INTO TESTCategory VALUES (2,''y'')');
  502. AssertEquals('Count',2,TDBHelper.CountRecords('TESTCategory'));
  503. AssertEquals('Get x',1,SQL.GetCategoryID('x'));
  504. AssertEquals('Get y',2,SQL.GetCategoryID('y'));
  505. AssertEquals('Get z',-1,SQL.GetCategoryID('z'));
  506. end;
  507. procedure TTestSQLCase.TestGetVersionID;
  508. begin
  509. TDBHelper.ExecSQL('INSERT INTO TESTVERSION (TV_ID,TV_VERSION) VALUES (1,''x'')');
  510. TDBHelper.ExecSQL('INSERT INTO TESTVERSION (TV_ID,TV_VERSION) VALUES (2,''y'')');
  511. AssertEquals('Count',2,TDBHelper.CountRecords('TESTVERSION'));
  512. AssertEquals('Get x',1,SQL.GetVersionID('x'));
  513. AssertEquals('Get y',2,SQL.GetVersionID('y'));
  514. AssertEquals('Get z',-1,SQL.GetVersionID('z'));
  515. end;
  516. procedure TTestSQLCase.TestGetTestID;
  517. begin
  518. TDBHelper.ExecSQL('INSERT INTO TESTS (T_ID,T_NAME,T_ADDDATE) VALUES (1,''x.pp'',CURRENT_TIMESTAMP)');
  519. TDBHelper.ExecSQL('INSERT INTO TESTS (T_ID,T_NAME,T_ADDDATE) VALUES (2,''y.pp'',CURRENT_TIMESTAMP)');
  520. AssertEquals('Count',2,TDBHelper.CountRecords('TESTS'));
  521. AssertEquals('Get x',1,SQL.GetTestID('x.pp'));
  522. AssertEquals('Get y',2,SQL.GetTestID('y.pp'));
  523. AssertEquals('Get z',-1,SQL.GetCategoryID('z.pp'));
  524. end;
  525. procedure TTestSQLCase.TestGetRunID;
  526. var
  527. lData : TTestRunData;
  528. lPlatformID : integer;
  529. lRunID : Int64;
  530. begin
  531. lData:=Default(TTestRunData);
  532. lPlatformID:=PreparePlatform(lData);
  533. lData.PlatformID:=lPlatFormID;
  534. lData.Date:=Date;
  535. lRunID:=SQL.AddRun(lData);
  536. AssertEquals('Get run id',lRunID,SQL.GetRunID(lData));
  537. end;
  538. function TTestSQLCase.GetSQL: TTestSQL;
  539. begin
  540. Result:=TDBHelper.SQL;
  541. end;
  542. procedure TTestSQLCase.SetUp;
  543. begin
  544. TDBHelper.ClearAllTables;
  545. SQL.TestSrcDir:='./';
  546. end;
  547. procedure TTestSQLCase.TearDown;
  548. begin
  549. TDBHelper.MaybeRollback;
  550. DeleteSource('x');
  551. end;
  552. procedure TTestSQLCase.TestHistoryNoHistory;
  553. Var
  554. lData : TTestRunData;
  555. lResultID : Int64;
  556. begin
  557. AssertEquals('count TESTRUNHISTORY before',0,TDBHelper.CountRecords('TESTRUNHISTORY'));
  558. lData:=Default(TTestRunData);
  559. lData.PlatformID:=PreparePlatform(lData);
  560. lData.Date:=Date;
  561. lResultID:=SQL.AddRun(lData);
  562. AssertEquals('count TESTRUN', 1, TDBHelper.CountRecords('TESTRUN',Format('(TU_ID=%d)',[lResultID])));
  563. AssertEquals('count TESTRUNHISTORY after',0,TDBHelper.CountRecords('TESTRUNHISTORY'));
  564. end;
  565. procedure TTestSQLCase.TestHistoryWithHistory;
  566. Var
  567. lData : TTestRunData;
  568. lResult1ID,lResult2ID : Int64;
  569. lFilter : String;
  570. begin
  571. AssertEquals('count TESTRUNHISTORY before',0,TDBHelper.CountRecords('TESTRUNHISTORY'));
  572. lData:=Default(TTestRunData);
  573. lData.PlatformID:=PreparePlatform(lData);
  574. lData.Date:=Date-1;
  575. lResult1ID:=SQL.AddRun(lData);
  576. AssertEquals('count TESTRUN', 1, TDBHelper.CountRecords('TESTRUN',Format('(TU_ID=%d)',[lResult1ID])));
  577. AssertEquals('count TESTRUNHISTORY after',0,TDBHelper.CountRecords('TESTRUNHISTORY'));
  578. lData.Date:=Date;
  579. lResult2ID:=SQL.AddRun(lData);
  580. AssertEquals('count TESTRUN', 1, TDBHelper.CountRecords('TESTRUN',Format('(TU_ID=%d)',[lResult2ID])));
  581. lFilter:=Format('(TH_ID_FK=%d) and (TH_PREVIOUS_FK=%d)',[lResult2ID,lResult1ID]);
  582. AssertEquals('count TESTRUNHISTORY after',1,TDBHelper.CountRecords('TESTRUNHISTORY',lFilter));
  583. end;
  584. procedure TTestSQLCase.TestGetPreviousTestRun;
  585. begin
  586. TDBHelper.ExecSQL('INSERT INTO TESTRUNHISTORY VALUES (2,1)');
  587. TDBHelper.ExecSQL('INSERT INTO TESTRUNHISTORY VALUES (3,2)');
  588. TDBHelper.ExecSQL('INSERT INTO TESTRUNHISTORY VALUES (4,3)');
  589. AssertEquals('First',-1,SQL.GetPreviousRunID(1));
  590. AssertEquals('Second',1,SQL.GetPreviousRunID(2));
  591. AssertEquals('third',2,SQL.GetPreviousRunID(3));
  592. AssertEquals('last',3,SQL.GetPreviousRunID(4));
  593. end;
  594. procedure TTestSQLCase.TestGetNextTestRun;
  595. begin
  596. TDBHelper.ExecSQL('INSERT INTO TESTRUNHISTORY VALUES (2,1)');
  597. TDBHelper.ExecSQL('INSERT INTO TESTRUNHISTORY VALUES (3,2)');
  598. TDBHelper.ExecSQL('INSERT INTO TESTRUNHISTORY VALUES (4,3)');
  599. AssertEquals('First',2,SQL.GetNextRunID(1));
  600. AssertEquals('Second',3,SQL.GetNextRunID(2));
  601. AssertEquals('third',4,SQL.GetNextRunID(3));
  602. AssertEquals('last',-1,SQL.GetNextRunID(4));
  603. end;
  604. procedure TTestSQLCase.TestAddCheckAllRtl;
  605. var
  606. lData : TCheckAllRTL;
  607. lTestRunData: TTestRunData;
  608. I : integer;
  609. begin
  610. lTestRunData:=Default(TTestRunData);
  611. lData:=Default(TCheckAllRTL);
  612. lData.Platform:=PreparePlatform(lTestRunData);
  613. lData.Date:=Date;
  614. for I:=Low(TCheckStage) to High(TCheckStage) do
  615. begin
  616. lData.Steps[i]:=(I mod 2)=0;
  617. lData.Logs[i]:='Step '+IntToStr(i)+' log';
  618. end;
  619. lData.ID:=SQL.AddCheckAllRtl(lData);
  620. AssertEquals('count CheckAllRTL', 1, TDBHelper.CountRecords('CHECKALLRTL',Format('(CA_ID=%d)',[lData.ID])));
  621. AssertEquals('count CheckAllRTLLog', 3, TDBHelper.CountRecords('CHECKALLRTLLOG',Format('CAL_CHECKALLRTL_FK=%d',[lData.ID])));
  622. end;
  623. initialization
  624. RegisterTestDecorator(TDBDecorator,TTestSQLCase);
  625. end.