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

Annotation of /lbbs/src/test_file_loader.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.9 - (hide annotations)
Sat Jun 21 02:15:18 2025 UTC (8 months, 3 weeks ago) by sysadm
Branch: MAIN
Changes since 1.8: +2 -2 lines
Content type: text/x-csrc
Re-order included order files

1 sysadm 1.1 /***************************************************************************
2 sysadm 1.8 test_file_loader.c - description
3 sysadm 1.1 -------------------
4     Copyright : (C) 2004-2025 by Leaflet
5     Email : leaflet@leafok.com
6     ***************************************************************************/
7    
8     /***************************************************************************
9     * *
10     * This program is free software; you can redistribute it and/or modify *
11     * it under the terms of the GNU General Public License as published by *
12     * the Free Software Foundation; either version 3 of the License, or *
13     * (at your option) any later version. *
14     * *
15     ***************************************************************************/
16    
17     #include "file_loader.h"
18 sysadm 1.9 #include "log.h"
19 sysadm 1.5 #include "trie_dict.h"
20 sysadm 1.9 #include <errno.h>
21 sysadm 1.1 #include <stdio.h>
22     #include <unistd.h>
23 sysadm 1.2 #include <sys/shm.h>
24 sysadm 1.1
25 sysadm 1.5 #define TRIE_DICT_SHM_FILE "~trie_dict_shm.dat"
26    
27 sysadm 1.1 const char *files[] = {
28     "../data/welcome.txt",
29     "../data/copyright.txt",
30     "../data/register.txt",
31     "../data/license.txt",
32 sysadm 1.2 "../data/login_error.txt",
33     "../data/read_help.txt"};
34 sysadm 1.1
35 sysadm 1.2 int files_cnt = 6;
36 sysadm 1.1
37     int main(int argc, char *argv[])
38     {
39     int ret;
40     int i;
41 sysadm 1.3 const void *p_shm;
42     size_t data_len;
43     long line_total;
44     const void *p_data;
45     const long *p_line_offsets;
46 sysadm 1.5 FILE *fp;
47 sysadm 1.1
48     if (log_begin("../log/bbsd.log", "../log/error.log") < 0)
49     {
50     printf("Open log error\n");
51     return -1;
52     }
53    
54 sysadm 1.7 log_common_redir(STDOUT_FILENO);
55     log_error_redir(STDERR_FILENO);
56 sysadm 1.1
57 sysadm 1.5 if ((fp = fopen(TRIE_DICT_SHM_FILE, "w")) == NULL)
58     {
59     log_error("fopen(%s) error\n", TRIE_DICT_SHM_FILE);
60     return -1;
61     }
62     fclose(fp);
63    
64 sysadm 1.6 if (trie_dict_init(TRIE_DICT_SHM_FILE, TRIE_NODE_PER_POOL) < 0)
65 sysadm 1.5 {
66     printf("trie_dict_init failed\n");
67     return -1;
68     }
69    
70 sysadm 1.2 ret = file_loader_init();
71 sysadm 1.1 if (ret < 0)
72     {
73     printf("file_loader_init() error (%d)\n", ret);
74     return ret;
75     }
76    
77 sysadm 1.2 ret = file_loader_init();
78 sysadm 1.1 if (ret == 0)
79     {
80     printf("Rerun file_loader_init() error\n");
81     }
82    
83     printf("Testing #1\n");
84    
85 sysadm 1.2 for (i = 0; i < files_cnt; i++)
86 sysadm 1.1 {
87 sysadm 1.5 if (load_file(files[i]) < 0)
88 sysadm 1.1 {
89     printf("Load file %s error\n", files[i]);
90     }
91     }
92    
93 sysadm 1.2 for (i = 0; i < files_cnt; i++)
94 sysadm 1.1 {
95 sysadm 1.5 if ((p_shm = get_file_shm_readonly(files[i], &data_len, &line_total, &p_data, &p_line_offsets)) == NULL)
96 sysadm 1.1 {
97 sysadm 1.2 printf("Get file shm %s error\n", files[i]);
98 sysadm 1.1 }
99     else
100     {
101 sysadm 1.3 printf("File: %s size: %ld lines: %ld\n", files[i], data_len, line_total);
102 sysadm 1.4
103     for (int j = 0; j < line_total; j++)
104     {
105     printf("Line %d: %ld ~ %ld\n", j, p_line_offsets[j], p_line_offsets[j + 1]);
106     }
107 sysadm 1.5
108     if (detach_file_shm(p_shm) < 0)
109     {
110     log_error("detach_file_shm(%s) error\n", files[i]);
111     }
112 sysadm 1.1 }
113     }
114    
115 sysadm 1.2 printf("Testing #2\n");
116    
117     for (i = 0; i < files_cnt; i++)
118 sysadm 1.1 {
119 sysadm 1.5 if (unload_file(files[i]) < 0)
120 sysadm 1.1 {
121     printf("Unload file %s error\n", files[i]);
122     }
123     }
124    
125     for (i = 0; i < files_cnt; i++)
126     {
127 sysadm 1.5 if (load_file(files[i]) < 0)
128 sysadm 1.1 {
129     printf("Load file %s error\n", files[i]);
130     }
131     }
132    
133     printf("Testing #3\n");
134    
135     for (i = 0; i < files_cnt; i++)
136     {
137 sysadm 1.2 if (i % 2 == 0)
138 sysadm 1.1 {
139 sysadm 1.5 if (unload_file(files[i]) < 0)
140 sysadm 1.2 {
141     printf("Unload file %s error\n", files[i]);
142     }
143 sysadm 1.1 }
144 sysadm 1.2 }
145    
146     for (i = 0; i < files_cnt; i++)
147     {
148     if (i % 2 != 0)
149 sysadm 1.1 {
150 sysadm 1.5 if ((p_shm = get_file_shm_readonly(files[i], &data_len, &line_total, &p_data, &p_line_offsets)) == NULL)
151 sysadm 1.2 {
152     printf("Get file shm %s error\n", files[i]);
153     }
154     else
155     {
156 sysadm 1.3 printf("File: %s size: %ld lines: %ld\n", files[i], data_len, line_total);
157 sysadm 1.5
158     if (detach_file_shm(p_shm) < 0)
159     {
160     log_error("detach_file_shm(%s) error\n", files[i]);
161     }
162 sysadm 1.2 }
163 sysadm 1.1 }
164     }
165    
166     file_loader_cleanup();
167     file_loader_cleanup();
168    
169 sysadm 1.5 trie_dict_cleanup();
170    
171     if (unlink(TRIE_DICT_SHM_FILE) < 0)
172     {
173     log_error("unlink(%s) error\n", TRIE_DICT_SHM_FILE);
174     return -1;
175     }
176    
177 sysadm 1.1 log_end();
178    
179     return 0;
180     }

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