/[LeafOK_CVS]/lbbs/src/test_section_list.c
ViewVC logotype

Diff of /lbbs/src/test_section_list.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.23 by sysadm, Mon May 26 03:20:39 2025 UTC Revision 1.31 by sysadm, Sat Jun 21 02:15:18 2025 UTC
# Line 1  Line 1 
1  /***************************************************************************  /***************************************************************************
2                                          file_section_list.c  -  description                                          test_section_list.c  -  description
3                                                           -------------------                                                           -------------------
4          Copyright            : (C) 2004-2025 by Leaflet          Copyright            : (C) 2004-2025 by Leaflet
5          Email                : leaflet@leafok.com          Email                : leaflet@leafok.com
# Line 14  Line 14 
14   *                                                                         *   *                                                                         *
15   ***************************************************************************/   ***************************************************************************/
16    
 #include "section_list.h"  
 #include "trie_dict.h"  
17  #include "bbs.h"  #include "bbs.h"
18  #include "log.h"  #include "log.h"
19    #include "section_list.h"
20    #include "trie_dict.h"
21    #include <errno.h>
22  #include <stdio.h>  #include <stdio.h>
23  #include <unistd.h>  #include <unistd.h>
 #include <errno.h>  
24    
25  #define ARTICLE_BLOCK_SHM_FILE "~article_block_shm.dat"  #define ARTICLE_BLOCK_SHM_FILE "~article_block_shm.dat"
26  #define SECTION_LIST_SHM_FILE "~section_list_shm.dat"  #define SECTION_LIST_SHM_FILE "~section_list_shm.dat"
# Line 70  int main(int argc, char *argv[]) Line 70  int main(int argc, char *argv[])
70                  return -1;                  return -1;
71          }          }
72    
73          log_std_redirect(STDOUT_FILENO);          log_common_redir(STDOUT_FILENO);
74          log_err_redirect(STDERR_FILENO);          log_error_redir(STDERR_FILENO);
75    
76          // - 1 to make blocks allocated is less than required, to trigger error handling          // - 1 to make blocks allocated is less than required, to trigger error handling
77          block_count = BBS_article_limit_per_section * BBS_max_section / ARTICLE_PER_BLOCK;          block_count = BBS_article_limit_per_section * BBS_max_section / ARTICLE_PER_BLOCK;
# Line 179  int main(int argc, char *argv[]) Line 179  int main(int argc, char *argv[])
179                          article.tid = 0;                          article.tid = 0;
180                          article.sid = i * 3 + 1;                          article.sid = i * 3 + 1;
181                          article.cid = article.aid;                          article.cid = article.aid;
182                          article.uid = 1; // TODO: randomize                          article.uid = 1;
183                          article.visible = 1;                          article.visible = 1;
184                          article.excerption = 0;                          article.excerption = 0;
185                          article.ontop = 0;                          article.ontop = 0;
186                          article.lock = 0;                          article.lock = 0;
187                            article.transship = 0;
188    
189                          if (section_list_rw_lock(p_section[i]) < 0)                          if (section_list_rw_lock(p_section[i]) < 0)
190                          {                          {
# Line 210  int main(int argc, char *argv[]) Line 211  int main(int argc, char *argv[])
211                  // printf("Loaded %d articles into section %d\n", p_section[i]->article_count, i);                  // printf("Loaded %d articles into section %d\n", p_section[i]->article_count, i);
212          }          }
213    
214            if (last_aid != article_block_last_aid())
215            {
216                    printf("last_aid != %d\n", article_block_last_aid());
217            }
218    
219            if (article_block_article_count() != section_count * BBS_article_limit_per_section)
220            {
221                    printf("article_block_article_count() error %d != %d * %d\n",
222                               article_block_article_count(), section_count, BBS_article_limit_per_section);
223            }
224    
225          last_aid = 0;          last_aid = 0;
226    
227          for (j = 0; j < BBS_article_limit_per_section; j++)          for (j = 0; j < BBS_article_limit_per_section; j++)
# Line 290  int main(int argc, char *argv[]) Line 302  int main(int argc, char *argv[])
302                          article.tid = ((article.aid < section_first_aid + group_count) ? 0 : (section_first_aid + j % group_count));                          article.tid = ((article.aid < section_first_aid + group_count) ? 0 : (section_first_aid + j % group_count));
303                          article.sid = i * 3 + 1;                          article.sid = i * 3 + 1;
304                          article.cid = article.aid;                          article.cid = article.aid;
305                          article.uid = 1; // TODO: randomize                          article.uid = 1;
306                          article.visible = 1;                          article.visible = 1;
307                          article.excerption = 0;                          article.excerption = 0;
308                          article.ontop = 0;                          article.ontop = 0;
309                          article.lock = 0;                          article.lock = 0;
310                            article.transship = 0;
311    
312                          if (section_list_append_article(p_section[i], &article) < 0)                          if (section_list_append_article(p_section[i], &article) < 0)
313                          {                          {
# Line 747  int main(int argc, char *argv[]) Line 760  int main(int argc, char *argv[])
760                          article.tid = ((article.aid < section_first_aid + group_count) ? 0 : (section_first_aid + j % group_count));                          article.tid = ((article.aid < section_first_aid + group_count) ? 0 : (section_first_aid + j % group_count));
761                          article.sid = i * 3 + 1;                          article.sid = i * 3 + 1;
762                          article.cid = article.aid;                          article.cid = article.aid;
763                          article.uid = 1; // TODO: randomize                          article.uid = 1;
764                          article.visible = 1;                          article.visible = 1;
765                          article.excerption = 0;                          article.excerption = 0;
766                          article.ontop = 0;                          article.ontop = 0;
767                          article.lock = 0;                          article.lock = 0;
768                            article.transship = 0;
769    
770                          if (section_list_append_article(p_section[i], &article) < 0)                          if (section_list_append_article(p_section[i], &article) < 0)
771                          {                          {
# Line 910  int main(int argc, char *argv[]) Line 924  int main(int argc, char *argv[])
924                  }                  }
925          }          }
926    
927            printf("Testing #6 ...\n");
928    
929            for (i = 0; i < section_count; i++)
930            {
931                    if (section_list_rd_lock(p_section[i]) < 0)
932                    {
933                            printf("section_list_rd_lock(sid = %d) error\n", p_section[i]->sid);
934                            break;
935                    }
936            }
937    
938            printf("Try rw_lock for 5 sec...\n");
939            if (section_list_try_rw_lock(NULL, 5) == 0)
940            {
941                    printf("section_list_try_rw_lock(sid = %d) error, expectation is timeout\n", p_section[i]->sid);
942            }
943    
944            for (i = 0; i < section_count; i++)
945            {
946                    if (section_list_rd_unlock(p_section[i]) < 0)
947                    {
948                            printf("section_list_rd_unlock(sid = %d) error\n", p_section[i]->sid);
949                            break;
950                    }
951            }
952    
953            if (section_list_try_rw_lock(NULL, 5) < 0)
954            {
955                    printf("section_list_rd_lock(sid = %d) error\n", p_section[i]->sid);
956            }
957    
958            for (i = 0; i < section_count; i++)
959            {
960                    if (section_list_try_rd_lock(p_section[i], 0) == 0)
961                    {
962                            printf("section_list_try_rd_lock(sid = %d) error, expectation is timeout\n", p_section[i]->sid);
963                            break;
964                    }
965            }
966    
967            if (section_list_rw_unlock(NULL) < 0)
968            {
969                    printf("section_list_rw_unlock(sid = %d) error\n", p_section[i]->sid);
970            }
971    
972          printf("Press ENTER to exit...");          printf("Press ENTER to exit...");
973          getchar();          getchar();
974    


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1