LCOV - code coverage report
Current view: top level - test - suite_clusterlst.c (source / functions) Hit Total Coverage
Test: mkernel.info Lines: 394 412 95.6 %
Date: 2024-11-14 00:59:13 Functions: 18 18 100.0 %

          Line data    Source code
       1             : /**   @file  suite_clusterlst.c
       2             :  *   @brief  Check testsuite for clusterlst functions
       3             :  *  @author  François Cerbelle (Fanfan), francois@cerbelle.net
       4             :  *
       5             :  *  @internal
       6             :  *       Created:  20/03/2022
       7             :  *      Revision:  none
       8             :  * Last modified:  2024-11-13 18:51
       9             :  *      Compiler:  gcc
      10             :  *  Organization:  Cerbelle.net
      11             :  *     Copyright:  Copyright (c) 2024, François Cerbelle
      12             :  *
      13             :  *  This source code is released for free distribution under the terms of the
      14             :  *  GNU General Public License as published by the Free Software Foundation.
      15             :  */
      16             : 
      17             : #ifdef HAVE_CONFIG_H
      18             : #include "config.h"
      19             : #endif
      20             : 
      21             : #include <check.h>
      22             : #include <stdlib.h>
      23             : #include "checktools.inc"
      24             : 
      25             : #include "clusterlst.c"
      26             : 
      27             : /** Dummy test to trigger fixtures
      28             :  *
      29             :  * This test is defined and added to all testcases in order to execute at
      30             :  * least one test test in each testcase of the testsuite, trigger the
      31             :  * fixtures and have a decent coverage report.
      32             :  */
      33           9 : START_TEST(clusterlst_test) {
      34             :     /* This test is supposed to trigger a SIGABRT(6) and will crash the
      35             :      * whole testsuite if not caught or not in a child process */
      36           9 :     forktest_only;
      37             : 
      38           6 :     abort();
      39             : }
      40             : END_TEST
      41             : 
      42           3 : START_TEST(clusterlst_uninitialized_init) {
      43           3 :     clusterrecord_t* first=clusterlistfirst;
      44           3 :     clusterrecord_t* last=clusterlistlast;
      45           3 :     clusterrecord_t* cursor=clusterlistcursor;
      46           3 :     void       (*f_add)(cluster_t* cluster)=clusterlist_add;
      47           3 :     cluster_t* (*f_find) (const char* host)=clusterlist_find;
      48           3 :     cluster_t* (*f_first)()=clusterlist_first;
      49           3 :     cluster_t* (*f_next)()=clusterlist_next;
      50           3 :     cluster_t* (*f_get)()=clusterlist_get;
      51             : 
      52           3 :     clusterlist_init();
      53             : 
      54           3 :     ck_assert(first!=clusterlistfirst);
      55           3 :     ck_assert(last!=clusterlistlast);
      56           3 :     ck_assert(cursor!=clusterlistcursor);
      57           3 :     ck_assert(f_add!=clusterlist_add);
      58           3 :     ck_assert(f_find!=clusterlist_find);
      59           3 :     ck_assert(f_first!=clusterlist_first);
      60           3 :     ck_assert(f_next!=clusterlist_next);
      61           3 :     ck_assert(f_get!=clusterlist_get);
      62             : 
      63           3 :     ck_assert(clusterlistfirst==clusterlistlast);
      64           3 :     ck_assert(NULL==clusterlistfirst->cluster);
      65           3 :     ck_assert(NULL==clusterlistlast->cluster);
      66           3 :     ck_assert(NULL==clusterlistcursor->cluster);
      67           3 : }
      68             : END_TEST
      69             : 
      70           3 : START_TEST(clusterlst_uninitialized_add) {
      71             :     /* Need to have a forked env to start uninitialized */
      72           3 :     forktest_only;
      73             : 
      74           2 :     clusterrecord_t* first=clusterlistfirst;
      75           2 :     clusterrecord_t* last=clusterlistlast;
      76           2 :     clusterrecord_t* cursor=clusterlistcursor;
      77           2 :     void       (*f_add)(cluster_t* cluster)=clusterlist_add;
      78           2 :     cluster_t* (*f_find) (const char* host)=clusterlist_find;
      79           2 :     cluster_t* (*f_first)()=clusterlist_first;
      80           2 :     cluster_t* (*f_next)()=clusterlist_next;
      81           2 :     cluster_t* (*f_get)()=clusterlist_get;
      82             :     cluster_t* cluster;
      83             : 
      84             :     /* Currently leaked */
      85           2 :     if (NULL==(cluster=malloc(sizeof(struct cluster_s)))) {
      86           0 :         perror("clusterlst_uninitialized_add");
      87           0 :         abort();
      88             :     }
      89           2 :     cluster->host=NULL;
      90           2 :     cluster->user=NULL;
      91           2 :     cluster->pass=NULL;
      92           2 :     cluster->insecure=NULL;
      93           2 :     cluster->cacert=NULL;
      94           2 :     clusterlist_add(cluster);
      95             : 
      96           2 :     ck_assert(clusterlistfirst->cluster);
      97           2 :     ck_assert(NULL==clusterlistlast->cluster);
      98           2 :     ck_assert(clusterlistcursor->cluster);
      99             : 
     100           2 :     ck_assert(first!=clusterlistfirst);
     101           2 :     ck_assert(last!=clusterlistlast);
     102           2 :     ck_assert(cursor!=clusterlistcursor);
     103           2 :     ck_assert(f_add!=clusterlist_add);
     104           2 :     ck_assert(f_find!=clusterlist_find);
     105           2 :     ck_assert(f_first!=clusterlist_first);
     106           2 :     ck_assert(f_next!=clusterlist_next);
     107           2 :     ck_assert(f_get!=clusterlist_get);
     108             : 
     109           2 :     ck_assert(clusterlistfirst!=clusterlistlast);
     110           2 :     ck_assert(NULL==clusterlistfirst->cluster->host);
     111             : 
     112             :     /* Second run should not invoke init and change the pointers and functors */
     113           2 :     first=clusterlistfirst;
     114           2 :     last=clusterlistlast;
     115           2 :     cursor=clusterlistcursor;
     116           2 :     f_add=clusterlist_add;
     117           2 :     f_find=clusterlist_find;
     118           2 :     f_first=clusterlist_first;
     119           2 :     f_next=clusterlist_next;
     120           2 :     f_get=clusterlist_get;
     121             : 
     122             :     /* Currently leaked */
     123           2 :     if (NULL==(cluster=malloc(sizeof(struct cluster_s)))) {
     124           0 :         perror("clusterlst_uninitialized_add");
     125           0 :         abort();
     126             :     }
     127           2 :     cluster->host=NULL;
     128           2 :     cluster->user=NULL;
     129           2 :     cluster->pass=NULL;
     130           2 :     cluster->insecure=NULL;
     131           2 :     cluster->cacert=NULL;
     132           2 :     clusterlist_add(cluster);
     133             : 
     134           2 :     ck_assert(clusterlistfirst->cluster);
     135             : 
     136           2 :     ck_assert(first==clusterlistfirst);
     137           2 :     ck_assert(last!=clusterlistlast);
     138           2 :     ck_assert(cursor==clusterlistcursor);
     139           2 :     ck_assert(f_add==clusterlist_add);
     140           2 :     ck_assert(f_find==clusterlist_find);
     141           2 :     ck_assert(f_first==clusterlist_first);
     142           2 :     ck_assert(f_next==clusterlist_next);
     143           2 :     ck_assert(f_get==clusterlist_get);
     144             : 
     145           2 :     ck_assert(clusterlistfirst!=clusterlistlast);
     146           2 :     ck_assert(NULL!=clusterlistfirst->cluster);
     147           2 :     ck_assert(NULL==clusterlistfirst->cluster->host);
     148           2 :     ck_assert(NULL!=clusterlistfirst->next);
     149           2 :     ck_assert(NULL!=clusterlistfirst->next->cluster);
     150           2 :     ck_assert(NULL==clusterlistfirst->next->cluster->host);
     151           2 :     ck_assert(NULL==clusterlistlast->cluster);
     152           2 :     ck_assert(NULL!=clusterlistcursor->cluster);
     153             : }
     154             : END_TEST
     155             : 
     156           3 : START_TEST(clusterlst_uninitialized_find) {
     157             :     /* Need to have a forked env to start uninitialized */
     158           3 :     forktest_only;
     159             : 
     160           2 :     clusterrecord_t* first=clusterlistfirst;
     161           2 :     clusterrecord_t* last=clusterlistlast;
     162           2 :     clusterrecord_t* cursor=clusterlistcursor;
     163           2 :     void       (*f_add)(cluster_t* cluster)=clusterlist_add;
     164           2 :     cluster_t* (*f_find) (const char* host)=clusterlist_find;
     165           2 :     cluster_t* (*f_first)()=clusterlist_first;
     166           2 :     cluster_t* (*f_next)()=clusterlist_next;
     167           2 :     cluster_t* (*f_get)()=clusterlist_get;
     168             :     cluster_t* cluster;
     169             : 
     170           2 :     cluster = clusterlist_find("");
     171             : 
     172           2 :     ck_assert(first!=clusterlistfirst);
     173           2 :     ck_assert(last!=clusterlistlast);
     174           2 :     ck_assert(cursor!=clusterlistcursor);
     175           2 :     ck_assert(f_add!=clusterlist_add);
     176           2 :     ck_assert(f_find!=clusterlist_find);
     177           2 :     ck_assert(f_first!=clusterlist_first);
     178           2 :     ck_assert(f_next!=clusterlist_next);
     179           2 :     ck_assert(f_get!=clusterlist_get);
     180             : 
     181           2 :     ck_assert(clusterlistfirst==clusterlistlast);
     182           2 :     ck_assert(NULL==clusterlistfirst->cluster);
     183           2 :     ck_assert(NULL==clusterlistlast->cluster);
     184           2 :     ck_assert(NULL==clusterlistcursor->cluster);
     185           2 :     ck_assert(NULL==cluster);
     186             : 
     187             :     /* Second run should not invoke init and change the pointers and functors */
     188           2 :     first=clusterlistfirst;
     189           2 :     last=clusterlistlast;
     190           2 :     cursor=clusterlistcursor;
     191           2 :     f_add=clusterlist_add;
     192           2 :     f_find=clusterlist_find;
     193           2 :     f_first=clusterlist_first;
     194           2 :     f_next=clusterlist_next;
     195           2 :     f_get=clusterlist_get;
     196             : 
     197           2 :     cluster = clusterlist_find("");
     198             : 
     199           2 :     ck_assert(first==clusterlistfirst);
     200             :     /* Change expected ck_assert(last==clusterlistlast);*/
     201           2 :     ck_assert(cursor==clusterlistcursor);
     202           2 :     ck_assert(f_add==clusterlist_add);
     203           2 :     ck_assert(f_find==clusterlist_find);
     204           2 :     ck_assert(f_first==clusterlist_first);
     205           2 :     ck_assert(f_next==clusterlist_next);
     206           2 :     ck_assert(f_get==clusterlist_get);
     207             : 
     208           2 :     ck_assert(clusterlistfirst==clusterlistlast);
     209           2 :     ck_assert(NULL==clusterlistfirst->cluster);
     210           2 :     ck_assert(NULL==clusterlistlast->cluster);
     211           2 :     ck_assert(NULL==clusterlistcursor->cluster);
     212           2 :     ck_assert(NULL==cluster);
     213             : }
     214             : END_TEST
     215             : 
     216           3 : START_TEST(clusterlst_uninitialized_first) {
     217             :     /* Need to have a forked env to start uninitialized */
     218           3 :     forktest_only;
     219             : 
     220           2 :     clusterrecord_t* first=clusterlistfirst;
     221           2 :     clusterrecord_t* last=clusterlistlast;
     222           2 :     clusterrecord_t* cursor=clusterlistcursor;
     223           2 :     void       (*f_add)(cluster_t* cluster)=clusterlist_add;
     224           2 :     cluster_t* (*f_find) (const char* host)=clusterlist_find;
     225           2 :     cluster_t* (*f_first)()=clusterlist_first;
     226           2 :     cluster_t* (*f_next)()=clusterlist_next;
     227           2 :     cluster_t* (*f_get)()=clusterlist_get;
     228             :     cluster_t* cluster;
     229             : 
     230           2 :     cluster = clusterlist_first();
     231             : 
     232           2 :     ck_assert(first!=clusterlistfirst);
     233           2 :     ck_assert(last!=clusterlistlast);
     234           2 :     ck_assert(cursor!=clusterlistcursor);
     235             : 
     236           2 :     ck_assert(f_add!=clusterlist_add);
     237           2 :     ck_assert(f_find!=clusterlist_find);
     238           2 :     ck_assert(f_first!=clusterlist_first);
     239           2 :     ck_assert(f_next!=clusterlist_next);
     240           2 :     ck_assert(f_get!=clusterlist_get);
     241             : 
     242           2 :     ck_assert(clusterlistfirst==clusterlistlast);
     243           2 :     ck_assert(NULL==clusterlistfirst->cluster);
     244           2 :     ck_assert(NULL==clusterlistlast->cluster);
     245           2 :     ck_assert(NULL==clusterlistcursor->cluster);
     246           2 :     ck_assert(NULL==cluster);
     247             : 
     248             :     /* Second run should not invoke init and change the pointers and functors */
     249           2 :     first=clusterlistfirst;
     250           2 :     last=clusterlistlast;
     251           2 :     cursor=clusterlistcursor;
     252           2 :     f_add=clusterlist_add;
     253           2 :     f_find=clusterlist_find;
     254           2 :     f_first=clusterlist_first;
     255           2 :     f_next=clusterlist_next;
     256           2 :     f_get=clusterlist_get;
     257             : 
     258           2 :     cluster = clusterlist_first();
     259             : 
     260           2 :     ck_assert(first==clusterlistfirst);
     261             :     /* Change expected ck_assert(last==clusterlistlast);*/
     262           2 :     ck_assert(cursor==clusterlistcursor);
     263           2 :     ck_assert(f_add==clusterlist_add);
     264           2 :     ck_assert(f_find==clusterlist_find);
     265           2 :     ck_assert(f_first==clusterlist_first);
     266           2 :     ck_assert(f_next==clusterlist_next);
     267           2 :     ck_assert(f_get==clusterlist_get);
     268             : 
     269           2 :     ck_assert(clusterlistfirst==clusterlistlast);
     270           2 :     ck_assert(NULL==clusterlistfirst->cluster);
     271           2 :     ck_assert(NULL==clusterlistlast->cluster);
     272           2 :     ck_assert(NULL==clusterlistcursor->cluster);
     273           2 :     ck_assert(NULL==cluster);
     274             : }
     275             : END_TEST
     276             : 
     277           3 : START_TEST(clusterlst_uninitialized_next) {
     278             :     /* Need to have a forked env to start uninitialized */
     279           3 :     forktest_only;
     280             : 
     281           2 :     clusterrecord_t* first=clusterlistfirst;
     282           2 :     clusterrecord_t* last=clusterlistlast;
     283           2 :     clusterrecord_t* cursor=clusterlistcursor;
     284           2 :     void       (*f_add)(cluster_t* cluster)=clusterlist_add;
     285           2 :     cluster_t* (*f_find) (const char* host)=clusterlist_find;
     286           2 :     cluster_t* (*f_first)()=clusterlist_first;
     287           2 :     cluster_t* (*f_next)()=clusterlist_next;
     288           2 :     cluster_t* (*f_get)()=clusterlist_get;
     289             :     cluster_t* cluster;
     290             : 
     291           2 :     cluster = clusterlist_next();
     292             : 
     293           2 :     ck_assert(first!=clusterlistfirst);
     294           2 :     ck_assert(last!=clusterlistlast);
     295           2 :     ck_assert(cursor!=clusterlistcursor);
     296           2 :     ck_assert(f_add!=clusterlist_add);
     297           2 :     ck_assert(f_find!=clusterlist_find);
     298           2 :     ck_assert(f_first!=clusterlist_first);
     299           2 :     ck_assert(f_next!=clusterlist_next);
     300           2 :     ck_assert(f_get!=clusterlist_get);
     301             : 
     302           2 :     ck_assert(clusterlistfirst==clusterlistlast);
     303           2 :     ck_assert(NULL==clusterlistfirst->cluster);
     304           2 :     ck_assert(NULL==clusterlistlast->cluster);
     305           2 :     ck_assert(NULL==clusterlistcursor->cluster);
     306           2 :     ck_assert(NULL==cluster);
     307             : 
     308             :     /* Second run should not invoke init and change the pointers and functors */
     309           2 :     first=clusterlistfirst;
     310           2 :     last=clusterlistlast;
     311           2 :     cursor=clusterlistcursor;
     312           2 :     f_add=clusterlist_add;
     313           2 :     f_find=clusterlist_find;
     314           2 :     f_first=clusterlist_first;
     315           2 :     f_next=clusterlist_next;
     316           2 :     f_get=clusterlist_get;
     317             : 
     318           2 :     cluster = clusterlist_next();
     319             : 
     320           2 :     ck_assert(first==clusterlistfirst);
     321             :     /* Change expected ck_assert(last==clusterlistlast);*/
     322           2 :     ck_assert(cursor==clusterlistcursor);
     323           2 :     ck_assert(f_add==clusterlist_add);
     324           2 :     ck_assert(f_find==clusterlist_find);
     325           2 :     ck_assert(f_first==clusterlist_first);
     326           2 :     ck_assert(f_next==clusterlist_next);
     327           2 :     ck_assert(f_get==clusterlist_get);
     328             : 
     329           2 :     ck_assert(clusterlistfirst==clusterlistlast);
     330           2 :     ck_assert(NULL==clusterlistfirst->cluster);
     331           2 :     ck_assert(NULL==clusterlistlast->cluster);
     332           2 :     ck_assert(NULL==clusterlistcursor->cluster);
     333           2 :     ck_assert(NULL==cluster);
     334             : }
     335             : END_TEST
     336             : 
     337           3 : START_TEST(clusterlst_uninitialized_get) {
     338             :     /* Need to have a forked env to start uninitialized */
     339           3 :     forktest_only;
     340             : 
     341           2 :     clusterrecord_t* first=clusterlistfirst;
     342           2 :     clusterrecord_t* last=clusterlistlast;
     343           2 :     clusterrecord_t* cursor=clusterlistcursor;
     344           2 :     void       (*f_add)(cluster_t* cluster)=clusterlist_add;
     345           2 :     cluster_t* (*f_find) (const char* host)=clusterlist_find;
     346           2 :     cluster_t* (*f_first)()=clusterlist_first;
     347           2 :     cluster_t* (*f_next)()=clusterlist_next;
     348           2 :     cluster_t* (*f_get)()=clusterlist_get;
     349             :     cluster_t* cluster;
     350             : 
     351           2 :     cluster = clusterlist_get();
     352             : 
     353           2 :     ck_assert(first!=clusterlistfirst);
     354           2 :     ck_assert(last!=clusterlistlast);
     355           2 :     ck_assert(cursor!=clusterlistcursor);
     356           2 :     ck_assert(f_add!=clusterlist_add);
     357           2 :     ck_assert(f_find!=clusterlist_find);
     358           2 :     ck_assert(f_first!=clusterlist_first);
     359           2 :     ck_assert(f_next!=clusterlist_next);
     360           2 :     ck_assert(f_get!=clusterlist_get);
     361             : 
     362           2 :     ck_assert(clusterlistfirst==clusterlistlast);
     363           2 :     ck_assert(NULL==clusterlistfirst->cluster);
     364           2 :     ck_assert(NULL==clusterlistlast->cluster);
     365           2 :     ck_assert(NULL==clusterlistcursor->cluster);
     366           2 :     ck_assert(NULL==cluster);
     367             : 
     368             :     /* Second run should not invoke init and change the pointers and functors */
     369           2 :     first=clusterlistfirst;
     370           2 :     last=clusterlistlast;
     371           2 :     cursor=clusterlistcursor;
     372           2 :     f_add=clusterlist_add;
     373           2 :     f_find=clusterlist_find;
     374           2 :     f_first=clusterlist_first;
     375           2 :     f_next=clusterlist_next;
     376           2 :     f_get=clusterlist_get;
     377             : 
     378           2 :     cluster = clusterlist_get();
     379             : 
     380           2 :     ck_assert(first==clusterlistfirst);
     381             :     /* Change expected ck_assert(last==clusterlistlast);*/
     382           2 :     ck_assert(cursor==clusterlistcursor);
     383           2 :     ck_assert(f_add==clusterlist_add);
     384           2 :     ck_assert(f_find==clusterlist_find);
     385           2 :     ck_assert(f_first==clusterlist_first);
     386           2 :     ck_assert(f_next==clusterlist_next);
     387           2 :     ck_assert(f_get==clusterlist_get);
     388             : 
     389           2 :     ck_assert(clusterlistfirst==clusterlistlast);
     390           2 :     ck_assert(NULL==clusterlistfirst->cluster);
     391           2 :     ck_assert(NULL==clusterlistlast->cluster);
     392           2 :     ck_assert(NULL==clusterlistcursor->cluster);
     393           2 :     ck_assert(NULL==cluster);
     394             : }
     395             : END_TEST
     396             : 
     397           6 : START_TEST(clusterlst_initialized_add) {
     398           6 :     clusterrecord_t* first=clusterlistfirst;
     399           6 :     clusterrecord_t* last=clusterlistlast;
     400           6 :     clusterrecord_t* cursor=clusterlistcursor;
     401           6 :     void       (*f_add)(cluster_t* cluster)=clusterlist_add;
     402           6 :     cluster_t* (*f_find) (const char* host)=clusterlist_find;
     403           6 :     cluster_t* (*f_first)()=clusterlist_first;
     404           6 :     cluster_t* (*f_next)()=clusterlist_next;
     405           6 :     cluster_t* (*f_get)()=clusterlist_get;
     406             :     cluster_t* cluster;
     407             : 
     408             :     /* Currently leaked */
     409           6 :     if (NULL==(cluster=malloc(sizeof(struct cluster_s)))) {
     410           0 :         perror("clusterlst_uninitialized_add");
     411           0 :         abort();
     412             :     }
     413           6 :     cluster->host=NULL;
     414           6 :     cluster->user=NULL;
     415           6 :     cluster->pass=NULL;
     416           6 :     cluster->insecure=NULL;
     417           6 :     cluster->cacert=NULL;
     418           6 :     clusterlist_add(cluster);
     419             : 
     420           6 :     ck_assert(first==clusterlistfirst);
     421           6 :     ck_assert(last!=clusterlistlast);
     422           6 :     ck_assert(cursor==clusterlistcursor);
     423           6 :     ck_assert(f_add==clusterlist_add);
     424           6 :     ck_assert(f_find==clusterlist_find);
     425           6 :     ck_assert(f_first==clusterlist_first);
     426           6 :     ck_assert(f_next==clusterlist_next);
     427           6 :     ck_assert(f_get==clusterlist_get);
     428             : 
     429           6 :     ck_assert(clusterlistfirst!=clusterlistlast);
     430           6 :     ck_assert(NULL!=clusterlistfirst->cluster);
     431           6 :     ck_assert(NULL==clusterlistfirst->cluster->host);
     432           6 :     ck_assert(NULL!=clusterlistfirst->next);
     433           6 :     ck_assert(NULL==clusterlistlast->cluster);
     434           6 :     ck_assert(NULL!=clusterlistcursor->cluster);
     435           6 : }
     436             : END_TEST
     437             : 
     438           3 : START_TEST(clusterlst_initialized_find) {
     439             :     /* Find in empty list */
     440           3 :     ck_assert(NULL==clusterlist_find(NULL));
     441           3 :     ck_assert(NULL==clusterlist_find(""));
     442           3 :     ck_assert(NULL==clusterlist_find("a"));
     443           3 : }
     444             : END_TEST
     445             : 
     446           3 : START_TEST(clusterlst_populated_find) {
     447             :     /* Find in NULL,"","a","b","",NULL */
     448             :     /* Find first, middle, last, nonexistant, duplicate */
     449           3 :     ck_assert(clusterlistfirst->cluster==clusterlist_find(NULL));
     450           3 :     ck_assert(clusterlistfirst->next->cluster==clusterlist_find(""));
     451           3 :     ck_assert(clusterlistfirst->next->next->cluster==clusterlist_find("a"));
     452           3 :     ck_assert(NULL==clusterlist_find("c"));
     453           3 : }
     454             : END_TEST
     455             : 
     456           6 : START_TEST(clusterlst_initialized_firstnextget) {
     457           6 :     clusterrecord_t* i = clusterlistfirst;
     458           6 :     ck_assert(i->cluster==clusterlist_first());
     459           6 :     ck_assert(clusterlistfirst==clusterlistcursor);
     460          30 :     while (i) {
     461          24 :         ck_assert(i==clusterlistcursor);
     462          24 :         ck_assert(i->cluster==clusterlist_get());
     463          24 :         ck_assert( (i->next==NULL)||(i->next->cluster == clusterlist_next()));
     464          24 :         ck_assert((i->next!=NULL)||(i==clusterlistlast));
     465          24 :         i = i->next;
     466             :     }
     467           6 : }
     468             : END_TEST
     469             : 
     470             : /************************************************************************/
     471             : /* Begining of test (potentially in child) */
     472          21 : void clusterlst_checked_uninitialized_setup() {
     473          21 :     signals_catch();
     474          21 :     forktest_gprofdir();
     475          21 : }
     476             : 
     477             : /* Begining of test (potentially in child) */
     478          12 : void clusterlst_checked_initialized_setup() {
     479          12 :     signals_catch();
     480          12 :     forktest_gprofdir();
     481          12 :     clusterlist_init();
     482          12 : }
     483             : 
     484             : /* Begining of test (potentially in child) */
     485          12 : void clusterlst_checked_populated_setup() {
     486             :     cluster_t* cluster;
     487             : 
     488          12 :     signals_catch();
     489          12 :     forktest_gprofdir();
     490          12 :     clusterlist_init();
     491             : 
     492             :     /* Currently leaked */
     493          12 :     if (NULL==(cluster=malloc(sizeof(struct cluster_s)))) {
     494           0 :         perror("clusterlst_uninitialized_add");
     495           0 :         abort();
     496             :     }
     497          12 :     cluster->host=NULL;
     498          12 :     clusterlist_add(cluster);
     499             : 
     500             :     /* Currently leaked */
     501          12 :     if (NULL==(cluster=malloc(sizeof(struct cluster_s)))) {
     502           0 :         perror("clusterlst_uninitialized_add");
     503           0 :         abort();
     504             :     }
     505          12 :     cluster->host=strdup("");
     506          12 :     clusterlist_add(cluster);
     507             : 
     508             :     /* Currently leaked */
     509          12 :     if (NULL==(cluster=malloc(sizeof(struct cluster_s)))) {
     510           0 :         perror("clusterlst_uninitialized_add");
     511           0 :         abort();
     512             :     }
     513          12 :     cluster->host=strdup("a");
     514          12 :     clusterlist_add(cluster);
     515             : 
     516             :     /* Currently leaked */
     517          12 :     if (NULL==(cluster=malloc(sizeof(struct cluster_s)))) {
     518           0 :         perror("clusterlst_uninitialized_add");
     519           0 :         abort();
     520             :     }
     521          12 :     cluster->host=strdup("b");
     522          12 :     clusterlist_add(cluster);
     523             : 
     524             :     /* Currently leaked */
     525          12 :     if (NULL==(cluster=malloc(sizeof(struct cluster_s)))) {
     526           0 :         perror("clusterlst_uninitialized_add");
     527           0 :         abort();
     528             :     }
     529          12 :     cluster->host=strdup("");
     530          12 :     clusterlist_add(cluster);
     531             : 
     532             :     /* Currently leaked */
     533          12 :     if (NULL==(cluster=malloc(sizeof(struct cluster_s)))) {
     534           0 :         perror("clusterlst_uninitialized_add");
     535           0 :         abort();
     536             :     }
     537          12 :     cluster->host=NULL;
     538          12 :     clusterlist_add(cluster);
     539          12 : }
     540             : 
     541             : /* End of test (potentially in child) */
     542          39 : void clusterlst_checked_uninitialized_teardown() {
     543          39 :     signals_release();
     544          39 : }
     545             : /************************************************************************/
     546          63 : void clusterlst_unchecked_common_setup() {
     547          63 :     forktest_init();
     548          63 : }
     549          33 : void clusterlst_unchecked_common_teardown() {
     550          33 : }
     551             : /************************************************************************/
     552          34 : Suite* clusterlst_suite() {
     553             :     Suite *s;
     554             :     TCase *tc;
     555             : 
     556          34 :     s = suite_create("Clusterlst");
     557             : 
     558          34 :     tc = tcase_create("ClusterlstUninitialized");
     559          34 :     tcase_set_tags(tc,"ClusterlstTag ClusterlstTag2");
     560             :     /* tcase_set_timeout(tc,5); */ /* seconds */
     561          34 :     tcase_add_checked_fixture(tc, clusterlst_checked_uninitialized_setup, clusterlst_checked_uninitialized_teardown);
     562          34 :     tcase_add_unchecked_fixture(tc, clusterlst_unchecked_common_setup, clusterlst_unchecked_common_teardown);
     563          34 :     suite_add_tcase(s, tc);
     564          34 :     tcase_add_test_raise_signal(tc, clusterlst_test,6);
     565          34 :     tcase_add_test(tc, clusterlst_uninitialized_init);
     566          34 :     tcase_add_test(tc, clusterlst_uninitialized_add);
     567          34 :     tcase_add_test(tc, clusterlst_uninitialized_find);
     568          34 :     tcase_add_test(tc, clusterlst_uninitialized_first);
     569          34 :     tcase_add_test(tc, clusterlst_uninitialized_next);
     570          34 :     tcase_add_test(tc, clusterlst_uninitialized_get);
     571             : 
     572          34 :     tc = tcase_create("ClusterlstInitialized");
     573          34 :     tcase_set_tags(tc,"ClusterlstTag ClusterlstTag2");
     574             :     /* tcase_set_timeout(tc,5); */ /* seconds */
     575          34 :     tcase_add_checked_fixture(tc, clusterlst_checked_initialized_setup, clusterlst_checked_uninitialized_teardown);
     576          34 :     tcase_add_unchecked_fixture(tc, clusterlst_unchecked_common_setup, clusterlst_unchecked_common_teardown);
     577          34 :     suite_add_tcase(s, tc);
     578          34 :     tcase_add_test_raise_signal(tc, clusterlst_test,6);
     579          34 :     tcase_add_test(tc, clusterlst_initialized_add);
     580          34 :     tcase_add_test(tc, clusterlst_initialized_find);
     581          34 :     tcase_add_test(tc, clusterlst_initialized_firstnextget);
     582             : 
     583          34 :     tc = tcase_create("ClusterlstPopulated");
     584          34 :     tcase_set_tags(tc,"ClusterlstTag ClusterlstTag2");
     585             :     /* tcase_set_timeout(tc,5); */ /* seconds */
     586          34 :     tcase_add_checked_fixture(tc, clusterlst_checked_populated_setup, clusterlst_checked_uninitialized_teardown);
     587          34 :     tcase_add_unchecked_fixture(tc, clusterlst_unchecked_common_setup, clusterlst_unchecked_common_teardown);
     588          34 :     suite_add_tcase(s, tc);
     589          34 :     tcase_add_test_raise_signal(tc, clusterlst_test,6);
     590          34 :     tcase_add_test(tc, clusterlst_initialized_add);
     591          34 :     tcase_add_test(tc, clusterlst_populated_find);
     592          34 :     tcase_add_test(tc, clusterlst_initialized_firstnextget);
     593             : 
     594          34 :     return s;
     595             : }
     596             : /* vim: set tw=80: */

Generated by: LCOV version 1.16