/[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.17 by sysadm, Fri May 23 14:04:05 2025 UTC Revision 1.26 by sysadm, Tue May 27 01:53:42 2025 UTC
# Line 15  Line 15 
15   ***************************************************************************/   ***************************************************************************/
16    
17  #include "section_list.h"  #include "section_list.h"
18    #include "trie_dict.h"
19  #include "bbs.h"  #include "bbs.h"
20  #include "log.h"  #include "log.h"
21  #include <stdio.h>  #include <stdio.h>
# Line 23  Line 24 
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"
27    #define TRIE_DICT_SHM_FILE "~trie_dict_shm.dat"
28    
29  const char *sname[] = {  const char *sname[] = {
30          "Test",          "Test",
# Line 50  int main(int argc, char *argv[]) Line 52  int main(int argc, char *argv[])
52          ARTICLE article;          ARTICLE article;
53          int block_count;          int block_count;
54          int i, j;          int i, j;
55            int sid;
56          int last_aid;          int last_aid;
57          int current_tid;          int current_tid;
58          int section_first_aid;          int section_first_aid;
# Line 87  int main(int argc, char *argv[]) Line 90  int main(int argc, char *argv[])
90          }          }
91          fclose(fp);          fclose(fp);
92    
93            if ((fp = fopen(TRIE_DICT_SHM_FILE, "w")) == NULL)
94            {
95                    log_error("fopen(%s) error\n", TRIE_DICT_SHM_FILE);
96                    return -1;
97            }
98            fclose(fp);
99    
100            if (trie_dict_init(TRIE_DICT_SHM_FILE, TRIE_NODE_PER_POOL) < 0)
101            {
102                    printf("trie_dict_init failed\n");
103                    return -1;
104            }
105    
106          if (article_block_init(ARTICLE_BLOCK_SHM_FILE, block_count) < 0)          if (article_block_init(ARTICLE_BLOCK_SHM_FILE, block_count) < 0)
107          {          {
108                  log_error("section_data_pool_init(%s, %d) error\n", ARTICLE_BLOCK_SHM_FILE, block_count);                  log_error("article_block_init(%s, %d) error\n", ARTICLE_BLOCK_SHM_FILE, block_count);
109                  return -2;                  return -2;
110          }          }
111    
112          if (section_list_pool_init(SECTION_LIST_SHM_FILE) < 0)          if (section_list_init(SECTION_LIST_SHM_FILE) < 0)
113          {          {
114                  log_error("section_list_pool_init(%s) error\n", SECTION_LIST_SHM_FILE);                  log_error("section_list_pool_init(%s) error\n", SECTION_LIST_SHM_FILE);
115                  return -2;                  return -2;
# Line 103  int main(int argc, char *argv[]) Line 119  int main(int argc, char *argv[])
119    
120          last_aid = 0;          last_aid = 0;
121    
122            if (section_list_rw_lock(NULL) < 0)
123            {
124                    printf("section_list_rw_lock(sid = %d) error\n", 0);
125            }
126    
127          for (i = 0; i < section_count; i++)          for (i = 0; i < section_count; i++)
128          {          {
129                  p_section[i] = section_list_create(i + 1,                  sid = i * 3 + 1;
130                    p_section[i] = section_list_create(sid,
131                                                                                     sname[i % section_conf_count],                                                                                     sname[i % section_conf_count],
132                                                                                     stitle[i % section_conf_count],                                                                                     stitle[i % section_conf_count],
133                                                                                     master_name[i % section_conf_count]);                                                                                     master_name[i % section_conf_count]);
134                  if (p_section[i] == NULL)                  if (p_section[i] == NULL)
135                  {                  {
136                          log_error("section_data_create(i=%d) error\n", i);                          printf("section_list_create(i = %d) error\n", i);
137                            return -3;
138                    }
139    
140                    if (get_section_index(p_section[i]) != i)
141                    {
142                            printf("get_section_index(i = %d) error\n", i);
143                          return -3;                          return -3;
144                  }                  }
145          }          }
# Line 120  int main(int argc, char *argv[]) Line 148  int main(int argc, char *argv[])
148          {          {
149                  if (section_list_find_by_name(sname[i]) == NULL)                  if (section_list_find_by_name(sname[i]) == NULL)
150                  {                  {
151                          printf("section_data_find_section_by_name(%s) error\n", sname[i]);                          printf("section_list_find_by_name(%s) error\n", sname[i]);
152                          return -3;                          return -3;
153                  }                  }
154          }          }
155    
156            for (i = 0; i < section_count; i++)
157            {
158                    sid = i * 3 + 1;
159                    if (section_list_find_by_sid(sid) == NULL || section_list_find_by_sid(sid)->sid != sid)
160                    {
161                            printf("section_list_find_by_sid(%d) error\n", sid);
162                            return -3;
163                    }
164            }
165    
166            if (section_list_rw_unlock(NULL) < 0)
167            {
168                    printf("section_list_rw_unlock(sid = %d) error\n", 0);
169            }
170    
171          for (j = 0; j < BBS_article_limit_per_section; j++)          for (j = 0; j < BBS_article_limit_per_section; j++)
172          {          {
173                  for (i = 0; i < section_count; i++)                  for (i = 0; i < section_count; i++)
# Line 133  int main(int argc, char *argv[]) Line 176  int main(int argc, char *argv[])
176    
177                          // Set article data                          // Set article data
178                          article.aid = last_aid;                          article.aid = last_aid;
                         article.cid = article.aid;  
179                          article.tid = 0;                          article.tid = 0;
180                            article.sid = i * 3 + 1;
181                            article.cid = article.aid;
182                          article.uid = 1; // TODO: randomize                          article.uid = 1; // TODO: randomize
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    
188                            if (section_list_rw_lock(p_section[i]) < 0)
189                            {
190                                    printf("section_list_rw_lock(sid = %d) error\n", p_section[i]->sid);
191                                    break;
192                            }
193    
194                          if (section_list_append_article(p_section[i], &article) < 0)                          if (section_list_append_article(p_section[i], &article) < 0)
195                          {                          {
196                                  printf("append article (aid = %d) error at section %d index %d\n", article.aid, i, j);                                  printf("append article (aid = %d) error at section %d index %d\n", article.aid, i, j);
197                                  break;                                  break;
198                          }                          }
199    
200                            if (section_list_rw_unlock(p_section[i]) < 0)
201                            {
202                                    printf("section_list_rw_unlock(sid = %d) error %d\n", p_section[i]->sid, errno);
203                                    break;
204                            }
205                  }                  }
206          }          }
207    
# Line 154  int main(int argc, char *argv[]) Line 210  int main(int argc, char *argv[])
210                  // 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);
211          }          }
212    
213          last_aid = 0;          if (last_aid != article_block_last_aid())
214            {
215                    printf("last_aid != %d\n", article_block_last_aid());
216            }
217    
218          for (i = 0; i < section_count; i++)          if (article_block_article_count() != section_count * BBS_article_limit_per_section)
219          {          {
220                  if (p_section[i]->article_count == 0)                  printf("article_block_article_count() error %d != %d * %d\n",
221                  {                             article_block_article_count(), section_count, BBS_article_limit_per_section);
222                          continue;          }
                 }  
223    
224                  for (j = 0; j < p_section[i]->article_count; j++)          last_aid = 0;
225    
226            for (j = 0; j < BBS_article_limit_per_section; j++)
227            {
228                    for (i = 0; i < section_count; i++)
229                  {                  {
230                          last_aid++;                          last_aid++;
231    
# Line 173  int main(int argc, char *argv[]) Line 235  int main(int argc, char *argv[])
235                                  printf("article_block_find_by_aid() at section %d index %d, %d != %d\n", i, j, p_article->aid, last_aid);                                  printf("article_block_find_by_aid() at section %d index %d, %d != %d\n", i, j, p_article->aid, last_aid);
236                          }                          }
237    
238                          p_article = article_block_find_by_index(last_aid - 1);                          if (section_list_rw_lock(p_section[i]) < 0)
                         if (p_article == NULL || p_article->aid != last_aid)  
239                          {                          {
240                                  printf("article_block_find_by_index() at section %d index %d, %d != %d\n", i, j, p_article->aid, last_aid);                                  printf("section_list_rw_lock(sid = %d) error\n", p_section[i]->sid);
241                                    break;
242                          }                          }
243    
244                          if (section_list_set_article_visible(p_section[i], p_article->aid, 0) != 1)                          if (section_list_set_article_visible(p_section[i], p_article->aid, 0) != 1)
245                          {                          {
246                                  printf("section_list_set_article_visible(aid = %d) error\n", p_article->aid);                                  printf("section_list_set_article_visible(aid = %d) error\n", p_article->aid);
247                          }                          }
248    
249                            if (section_list_rw_unlock(p_section[i]) < 0)
250                            {
251                                    printf("section_list_rw_unlock(sid = %d) error\n", p_section[i]->sid);
252                                    break;
253                            }
254                  }                  }
255    
256                  // printf("Verified %d articles in section %d\n", p_section[i]->article_count, i);                  // printf("Verified %d articles in section %d\n", p_section[i]->article_count, i);
# Line 190  int main(int argc, char *argv[]) Line 258  int main(int argc, char *argv[])
258    
259          printf("Testing #2 ...\n");          printf("Testing #2 ...\n");
260    
261            if (section_list_rw_lock(NULL) < 0)
262            {
263                    printf("section_list_rw_lock(sid = %d) error\n", 0);
264            }
265    
266          if (article_block_reset() != 0)          if (article_block_reset() != 0)
267          {          {
268                  log_error("section_data_free_block(i=%d) error\n", i);                  log_error("article_block_reset() error\n");
269                  return -4;                  return -4;
270          }          }
271    
# Line 201  int main(int argc, char *argv[]) Line 274  int main(int argc, char *argv[])
274                  section_list_reset_articles(p_section[i]);                  section_list_reset_articles(p_section[i]);
275          }          }
276    
277            if (section_list_rw_unlock(NULL) < 0)
278            {
279                    printf("section_list_rw_unlock(sid = %d) error\n", 0);
280            }
281    
282          last_aid = 0;          last_aid = 0;
283    
284          for (i = 0; i < section_count; i++)          for (i = 0; i < section_count; i++)
285          {          {
286                  section_first_aid = last_aid + 1;                  section_first_aid = last_aid + 1;
287    
288                    if (section_list_rw_lock(p_section[i]) < 0)
289                    {
290                            printf("section_list_rw_lock(sid = %d) error\n", p_section[i]->sid);
291                            break;
292                    }
293    
294                  for (j = 0; j < BBS_article_limit_per_section; j++)                  for (j = 0; j < BBS_article_limit_per_section; j++)
295                  {                  {
296                          last_aid++;                          last_aid++;
297    
298                          // Set article data                          // Set article data
299                          article.aid = last_aid;                          article.aid = last_aid;
                         article.cid = article.aid;  
300                          // Group articles into group_count topics                          // Group articles into group_count topics
301                          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));
302                            article.sid = i * 3 + 1;
303                            article.cid = article.aid;
304                          article.uid = 1; // TODO: randomize                          article.uid = 1; // TODO: randomize
305                          article.visible = 1;                          article.visible = 1;
306                          article.excerption = 0;                          article.excerption = 0;
# Line 229  int main(int argc, char *argv[]) Line 314  int main(int argc, char *argv[])
314                          }                          }
315                  }                  }
316    
317                    if (section_list_rw_unlock(p_section[i]) < 0)
318                    {
319                            printf("section_list_rw_unlock(sid = %d) error\n", p_section[i]->sid);
320                            break;
321                    }
322    
323                  // 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);
324          }          }
325    
# Line 242  int main(int argc, char *argv[]) Line 333  int main(int argc, char *argv[])
333                  article_count = 0;                  article_count = 0;
334                  last_aid = 0;                  last_aid = 0;
335    
336                    if (section_list_rd_lock(p_section[i]) < 0)
337                    {
338                            printf("section_list_rd_lock(sid = %d) error\n", p_section[i]->sid);
339                            break;
340                    }
341    
342                  p_article = p_section[i]->p_article_head;                  p_article = p_section[i]->p_article_head;
343    
344                  do                  do
# Line 264  int main(int argc, char *argv[]) Line 361  int main(int argc, char *argv[])
361                          break;                          break;
362                  }                  }
363    
364                    if (section_list_rd_unlock(p_section[i]) < 0)
365                    {
366                            printf("section_list_rd_unlock(sid = %d) error\n", p_section[i]->sid);
367                            break;
368                    }
369    
370                  // printf("Verified %d articles in section %d\n", group_count, i);                  // printf("Verified %d articles in section %d\n", group_count, i);
371          }          }
372    
# Line 274  int main(int argc, char *argv[]) Line 377  int main(int argc, char *argv[])
377                          continue;                          continue;
378                  }                  }
379    
380                    if (section_list_rd_lock(p_section[i]) < 0)
381                    {
382                            printf("section_list_rd_lock(sid = %d) error\n", p_section[i]->sid);
383                            break;
384                    }
385    
386                  if (p_section[i]->topic_count != group_count)                  if (p_section[i]->topic_count != group_count)
387                  {                  {
388                          printf("Inconsistent topic count in section %d, %d != %d\n", i, p_section[i]->topic_count, group_count);                          printf("Inconsistent topic count in section %d, %d != %d\n", i, p_section[i]->topic_count, group_count);
# Line 335  int main(int argc, char *argv[]) Line 444  int main(int argc, char *argv[])
444                          }                          }
445                  }                  }
446    
447                    if (section_list_rd_unlock(p_section[i]) < 0)
448                    {
449                            printf("section_list_rd_unlock(sid = %d) error\n", p_section[i]->sid);
450                            break;
451                    }
452    
453                  // printf("Verified %d topics in section %d\n", group_count, i);                  // printf("Verified %d topics in section %d\n", group_count, i);
454          }          }
455    
# Line 344  int main(int argc, char *argv[]) Line 459  int main(int argc, char *argv[])
459          {          {
460                  last_aid = 0;                  last_aid = 0;
461    
462                    if (section_list_rd_lock(p_section[i]) < 0)
463                    {
464                            printf("section_list_rd_lock(sid = %d) error\n", p_section[i]->sid);
465                            break;
466                    }
467    
468                  for (j = 0; j < p_section[i]->page_count; j++)                  for (j = 0; j < p_section[i]->page_count; j++)
469                  {                  {
470                          if (p_section[i]->p_page_first_article[j]->aid <= last_aid)                          if (p_section[i]->p_page_first_article[j]->aid <= last_aid)
# Line 368  int main(int argc, char *argv[]) Line 489  int main(int argc, char *argv[])
489                                  }                                  }
490                          }                          }
491                  }                  }
492    
493                    if (section_list_rd_unlock(p_section[i]) < 0)
494                    {
495                            printf("section_list_rd_unlock(sid = %d) error\n", p_section[i]->sid);
496                            break;
497                    }
498          }          }
499    
500          printf("Testing #4 ...\n");          printf("Testing #4 ...\n");
501    
502          for (i = 0; i < section_count; i++)          for (i = 0; i < section_count; i++)
503          {          {
504                    if (section_list_rw_lock(p_section[i]) < 0)
505                    {
506                            printf("section_list_rw_lock(sid = %d) error\n", p_section[i]->sid);
507                            break;
508                    }
509    
510                  step = i % 10 + 1;                  step = i % 10 + 1;
511                  for (j = group_count; j < BBS_article_limit_per_section; j += step)                  for (j = group_count; j < BBS_article_limit_per_section; j += step)
512                  {                  {
# Line 503  int main(int argc, char *argv[]) Line 636  int main(int argc, char *argv[])
636                                     p_section[i]->last_page_visible_article_count);                                     p_section[i]->last_page_visible_article_count);
637                          break;                          break;
638                  }                  }
639    
640                    if (section_list_rw_unlock(p_section[i]) < 0)
641                    {
642                            printf("section_list_rw_unlock(sid = %d) error\n", p_section[i]->sid);
643                            break;
644                    }
645          }          }
646    
647          for (i = 0; i < BBS_max_section; i++)          for (i = 0; i < BBS_max_section; i++)
648          {          {
649                    if (section_list_rw_lock(p_section[i]) < 0)
650                    {
651                            printf("section_list_rw_lock(sid = %d) error\n", p_section[i]->sid);
652                            break;
653                    }
654    
655                  affected_count = 0;                  affected_count = 0;
656    
657                  for (j = 0; j < BBS_article_limit_per_section; j += 1)                  for (j = 0; j < BBS_article_limit_per_section; j += 1)
# Line 560  int main(int argc, char *argv[]) Line 705  int main(int argc, char *argv[])
705                                     p_section[i]->last_page_visible_article_count);                                     p_section[i]->last_page_visible_article_count);
706                          break;                          break;
707                  }                  }
708    
709                    if (section_list_rw_unlock(p_section[i]) < 0)
710                    {
711                            printf("section_list_rw_unlock(sid = %d) error\n", p_section[i]->sid);
712                            break;
713                    }
714          }          }
715    
716          printf("Testing #5 ...\n");          printf("Testing #5 ...\n");
717    
718            if (section_list_rw_lock(NULL) < 0)
719            {
720                    printf("section_list_rw_lock(sid = %d) error\n", 0);
721            }
722    
723          if (article_block_reset() != 0)          if (article_block_reset() != 0)
724          {          {
725                  log_error("section_data_free_block(i=%d) error\n", i);                  log_error("article_block_reset() error\n");
726                  return -4;                  return -4;
727          }          }
728    
# Line 575  int main(int argc, char *argv[]) Line 731  int main(int argc, char *argv[])
731                  section_list_reset_articles(p_section[i]);                  section_list_reset_articles(p_section[i]);
732          }          }
733    
734            if (section_list_rw_unlock(NULL) < 0)
735            {
736                    printf("section_list_rw_unlock(sid = %d) error\n", 0);
737            }
738    
739          last_aid = 0;          last_aid = 0;
740    
741          for (i = 0; i < section_count / 2; i++)          for (i = 0; i < section_count / 2; i++)
742          {          {
743                    if (section_list_rw_lock(p_section[i]) < 0)
744                    {
745                            printf("section_list_rw_lock(sid = %d) error\n", p_section[i]->sid);
746                            break;
747                    }
748    
749                  section_first_aid = last_aid + 1;                  section_first_aid = last_aid + 1;
750    
751                  for (j = 0; j < BBS_article_limit_per_section; j++)                  for (j = 0; j < BBS_article_limit_per_section; j++)
# Line 587  int main(int argc, char *argv[]) Line 754  int main(int argc, char *argv[])
754    
755                          // Set article data                          // Set article data
756                          article.aid = last_aid;                          article.aid = last_aid;
                         article.cid = article.aid;  
757                          // Group articles into group_count topics                          // Group articles into group_count topics
758                          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));
759                            article.sid = i * 3 + 1;
760                            article.cid = article.aid;
761                          article.uid = 1; // TODO: randomize                          article.uid = 1; // TODO: randomize
762                          article.visible = 1;                          article.visible = 1;
763                          article.excerption = 0;                          article.excerption = 0;
# Line 603  int main(int argc, char *argv[]) Line 771  int main(int argc, char *argv[])
771                          }                          }
772                  }                  }
773    
774                    if (section_list_rw_unlock(p_section[i]) < 0)
775                    {
776                            printf("section_list_rw_unlock(sid = %d) error\n", p_section[i]->sid);
777                            break;
778                    }
779    
780                  // 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);
781          }          }
782    
783          for (i = 0; i < section_count / 2; i++)          for (i = 0; i < section_count / 2; i++)
784          {          {
785                    if (section_list_rw_lock(p_section[i]) < 0)
786                    {
787                            printf("section_list_rw_lock(sid = %d) error\n", p_section[i]->sid);
788                            break;
789                    }
790    
791                  section_first_aid = p_section[i]->p_article_head->aid;                  section_first_aid = p_section[i]->p_article_head->aid;
792    
793                  for (j = 0; j < group_count; j += 2)                  for (j = 0; j < group_count; j += 2)
# Line 625  int main(int argc, char *argv[]) Line 805  int main(int argc, char *argv[])
805                                  printf("section_list_set_article_visible(aid = %d) error\n", p_article->aid);                                  printf("section_list_set_article_visible(aid = %d) error\n", p_article->aid);
806                          }                          }
807                  }                  }
808    
809                    if (section_list_rw_unlock(p_section[i]) < 0)
810                    {
811                            printf("section_list_rw_unlock(sid = %d) error\n", p_section[i]->sid);
812                            break;
813                    }
814          }          }
815    
816          for (i = 0; i < section_count / 2; i++)          for (i = 0; i < section_count / 2; i++)
817          {          {
818                    if (section_list_rw_lock(p_section[i]) < 0)
819                    {
820                            printf("section_list_rw_lock(sid = %d) error\n", p_section[i]->sid);
821                            break;
822                    }
823    
824                    if (section_list_rw_lock(p_section[section_count / 2 + i]) < 0)
825                    {
826                            printf("section_list_rw_lock(sid = %d) error\n", p_section[section_count / 2 + i]->sid);
827    
828                            if (section_list_rw_unlock(p_section[i]) < 0)
829                            {
830                                    printf("section_list_rw_unlock(sid = %d) error\n", p_section[i]->sid);
831                            }
832                            break;
833                    }
834    
835                  section_first_aid = p_section[i]->p_article_head->aid;                  section_first_aid = p_section[i]->p_article_head->aid;
836    
837                  for (j = 0; j < group_count; j++)                  for (j = 0; j < group_count; j++)
# Line 649  int main(int argc, char *argv[]) Line 852  int main(int argc, char *argv[])
852                                  // break;                                  // break;
853                          }                          }
854                  }                  }
855    
856                    if (section_list_rw_unlock(p_section[i]) < 0)
857                    {
858                            printf("section_list_rw_unlock(sid = %d) error\n", p_section[i]->sid);
859                            break;
860                    }
861    
862                    if (section_list_rw_unlock(p_section[section_count / 2 + i]) < 0)
863                    {
864                            printf("section_list_rw_unlock(sid = %d) error\n", p_section[section_count / 2 + i]->sid);
865    
866                            if (section_list_rw_unlock(p_section[i]) < 0)
867                            {
868                                    printf("section_list_rw_unlock(sid = %d) error\n", p_section[i]->sid);
869                            }
870                            break;
871                    }
872          }          }
873    
874          for (i = 0; i < section_count; i++)          for (i = 0; i < section_count; i++)
875          {          {
876                    if (section_list_rd_lock(p_section[i]) < 0)
877                    {
878                            printf("section_list_rd_lock(sid = %d) error\n", p_section[i]->sid);
879                            break;
880                    }
881    
882                  if (p_section[i]->topic_count != (i < section_count / 2 ? 0 : group_count))                  if (p_section[i]->topic_count != (i < section_count / 2 ? 0 : group_count))
883                  {                  {
884                          printf("Topic count error in section %d, %d != %d\n", i,                          printf("Topic count error in section %d, %d != %d\n", i,
# Line 687  int main(int argc, char *argv[]) Line 913  int main(int argc, char *argv[])
913                                     p_section[i]->page_count, (i < section_count / 2 ? 0 : BBS_article_limit_per_section / 2 / BBS_article_limit_per_page));                                     p_section[i]->page_count, (i < section_count / 2 ? 0 : BBS_article_limit_per_section / 2 / BBS_article_limit_per_page));
914                          break;                          break;
915                  }                  }
916    
917                    if (section_list_rd_unlock(p_section[i]) < 0)
918                    {
919                            printf("section_list_rd_unlock(sid = %d) error\n", p_section[i]->sid);
920                            break;
921                    }
922            }
923    
924            printf("Testing #6 ...\n");
925    
926            for (i = 0; i < section_count; i++)
927            {
928                    if (section_list_rd_lock(p_section[i]) < 0)
929                    {
930                            printf("section_list_rd_lock(sid = %d) error\n", p_section[i]->sid);
931                            break;
932                    }
933            }
934    
935            printf("Try rw_lock for 5 sec...\n");
936            if (section_list_try_rw_lock(NULL, 5) == 0)
937            {
938                    printf("section_list_try_rw_lock(sid = %d) error, expectation is timeout\n", p_section[i]->sid);
939            }
940    
941            for (i = 0; i < section_count; i++)
942            {
943                    if (section_list_rd_unlock(p_section[i]) < 0)
944                    {
945                            printf("section_list_rd_unlock(sid = %d) error\n", p_section[i]->sid);
946                            break;
947                    }
948            }
949    
950            if (section_list_try_rw_lock(NULL, 5) < 0)
951            {
952                    printf("section_list_rd_lock(sid = %d) error\n", p_section[i]->sid);
953            }
954    
955            for (i = 0; i < section_count; i++)
956            {
957                    if (section_list_try_rd_lock(p_section[i], 0) == 0)
958                    {
959                            printf("section_list_try_rd_lock(sid = %d) error, expectation is timeout\n", p_section[i]->sid);
960                            break;
961                    }
962            }
963    
964            if (section_list_rw_unlock(NULL) < 0)
965            {
966                    printf("section_list_rw_unlock(sid = %d) error\n", p_section[i]->sid);
967          }          }
968    
969          printf("Press ENTER to exit...");          printf("Press ENTER to exit...");
970          getchar();          getchar();
971    
972            section_list_cleanup();
973          article_block_cleanup();          article_block_cleanup();
974          section_list_pool_cleanup();          trie_dict_cleanup();
975    
976            if (unlink(TRIE_DICT_SHM_FILE) < 0)
977            {
978                    log_error("unlink(%s) error\n", TRIE_DICT_SHM_FILE);
979                    return -1;
980            }
981    
982          if (unlink(ARTICLE_BLOCK_SHM_FILE) < 0)          if (unlink(ARTICLE_BLOCK_SHM_FILE) < 0)
983          {          {


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

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