set WEB_URL and DBG_LEVEL from INSTALL file
[curl-de-sac.git] / webtest / cds_test01.php
1 #!/usr/bin/php
2 <?php
3
4 define('WEB_URL', 'http://localhost/curl-de-sac');
5 define('DBG_LEVEL', 0);
6
7 require_once('Obj/curl-de-sac.phh');
8
9 class short_cmd extends CDS_cmd {
10     var $short_data;
11
12     function short_cmd($cmd_cls, $ch, $short_data)
13     {
14         parent::__construct($cmd_cls, $ch);
15         $this->short_data = $short_data;
16     }
17 }
18
19 class short_cmd_cls extends CDS_cmd_cls {
20     function short_cmd_cls()
21     {
22         parent::__construct("short", 10);
23     }
24
25     function create($cds, $url)
26     {
27         if ($cds->dbg_get() > 0) {
28             printf("'short'::create url:[%s]\n", $url);
29         }
30
31         do {
32             if (($ch = parent::pre_create($cds, $url)) == FALSE)
33                 break;
34
35             if (parent::create($cds, $ch) == FALSE)
36                 break;
37
38             $cmd = new short_cmd($this, $ch, "none currently");
39
40             return $cmd;
41         } while (FALSE);
42         
43         return FALSE;
44     }
45
46     function process($cmd, $ret)
47     {
48         if ($this->dbg_get() > 2) { printf("CURL: 'short' process: curl_multi_getcontent\n"); }
49
50         $content = curl_multi_getcontent($cmd->ch_get());
51         if ($this->dbg_get() > 0) { printf("'short' process: [%s]\n", $content); }
52
53         return TRUE;
54     }
55
56     function timeout($cmd)
57     {
58         printf("'Short' timeout function reached\n");
59     }
60 }
61
62 class long_cmd extends CDS_cmd {
63     var $long_data;
64
65     function long_cmd($cmd_cls, $ch, $long_data)
66     {
67         parent::__construct($cmd_cls, $ch);
68         $this->long_data = $long_data;
69     }
70 }
71
72 class long_cmd_cls extends CDS_cmd_cls {
73     function long_cmd_cls()
74     {
75         parent::__construct("long", 5);
76     }
77
78     function create($cds, $url)
79     {
80         if ($cds->dbg_get() > 0) {
81             printf("'long'::create url:[%s]\n", $url);
82         }
83
84         do {
85             if (($ch = parent::pre_create($cds, $url)) == FALSE)
86                 break;
87
88             if (parent::create($cds, $ch) == FALSE)
89                 break;
90
91             $cmd = new long_cmd($this, $ch, "none currently");
92
93             return $cmd;
94         } while (FALSE);
95         
96         return FALSE;
97     }
98
99     function process($cmd, $ret)
100     {
101         if ($this->dbg_get() > 2) { printf("CURL: 'long' process: curl_multi_getcontent\n"); }
102
103         $content = curl_multi_getcontent($cmd->ch_get());
104         if ($this->dbg_get() > 0) { printf("'long' process: [%s]\n", $content); }
105
106         return TRUE;
107     }
108
109     function timeout($cmd)
110     {
111         printf("'Long' timeout function reached\n");
112     }
113 }
114
115
116 function main()
117 {
118     $debug = DBG_LEVEL;
119     // create cds
120     $cds = new Curl_de_sac($debug);
121
122     // create short_cls
123     $short_cls = new short_cmd_cls();
124
125     // registrer short_cls
126     printf("MAIN: Register 'short_cls'\n");
127     if (($cds->cmd_cls_register($short_cls)) == FALSE) {
128         fprintf(STDERR, "MAIN: 'short_cls' registration failed\n");
129         exit(1);
130     }
131
132     // create long_cls
133     $long_cls = new long_cmd_cls();
134
135     // register long_cls
136     printf("MAIN: Register 'long_cls'\n");
137     if (($cds->cmd_cls_register($long_cls)) == FALSE) {
138         fprintf(STDERR, "MAIN: 'long_cls' registration failed\n");
139         exit(2);
140     }
141
142     // register long_cls (retry)
143     printf("MAIN: Re-register 'long_cls' (must go wrong)\n");
144     if (($cds->cmd_cls_register($long_cls)) != FALSE) {
145         fprintf(STDERR, "MAIN: 'long_cls' re-registration success\n");
146         exit(3);
147     }
148
149     printf("MAIN: CDS:\n");
150     if (($debug & 1) == 1)
151         print_r($cds);
152     printf("MAIN: Deregister 'long_cls'\n");
153     if (($cds->cmd_cls_deregister($long_cls)) == FALSE) {
154         fprintf(STDERR, "MAIN: 'long_cls' deregistration failed\n");
155         exit(4);
156     }
157     printf("MAIN:");
158     if (($debug & 1) == 1) {
159         printf(" CDS:\n");
160         print_r($cds);
161     }
162     printf("\n");
163     // re-re-register long_cls
164     printf("MAIN: Re-re-register 'long_cls'\n");
165     if (($cds->cmd_cls_register($long_cls)) == FALSE) {
166         fprintf(STDERR, "MAIN: 'long_cls' re-re-registration failed\n");
167         exit(5);
168     }
169
170     printf("MAIN: Deregister all\n");
171     $cds->cmd_cls_deregister_all();
172
173     // registrer short_cls
174     printf("MAIN: register 'short_cls'\n");
175     if (($cds->cmd_cls_register($short_cls, 10)) == FALSE) {
176         fprintf(STDERR, "MAIN: 'short_cls' registration failed\n");
177         exit(1);
178     }
179
180     // register long_cls
181     printf("MAIN: register 'long_cls'\n");
182     if (($cds->cmd_cls_register($long_cls, 4)) == FALSE) {
183         fprintf(STDERR, "MAIN: 'long_cls' registration failed\n");
184         exit(2);
185     }
186     printf("MAIN:");
187     if (($debug & 1) == 1) {
188         printf(" CDS:\n");
189         print_r($cds);
190     }
191     printf("\n");
192
193     // for ($i = -15 ; $i < 30 ; $i++) {
194     for ($i = 0 ; $i < 20 ; $i++) {
195         printf("MAIN: START ITERATION %d\n", $i);
196
197          if ($i == 2) {
198             printf("MAIN: load 'short'\n");
199             if ($cds->execute("short", WEB_URL.'/short.php') == FALSE) {
200                 printf("MAIN: push 'short' command failed\n");
201                 exit(123);
202             }
203         }
204
205          if ($i == 3) {
206             printf("MAIN: load 'short'\n");
207             if ($cds->execute("short", WEB_URL.'/short.php') == FALSE) {
208                 printf("MAIN: push 'short' command failed\n");
209                 exit(123);
210             }
211         }
212
213         if ($i == 4) {
214             printf("MAIN: load 'long'\n");
215             if ($cds->execute("long", WEB_URL.'/long.php') == FALSE) {
216                 printf("MAIN: push 'long' command failed\n");
217                 exit(123);
218             }
219         }
220
221         printf("MAIN:");
222         if (($debug & 1) == 1) {
223             printf(" CDS:\n");
224             print_r($cds);
225         }
226         printf("\n");
227
228         printf("MAIN: Call process\n");
229         $cds->process();
230         sleep(1);
231     }
232     printf("MAIN: finished, dump cds:\n");
233     print_r($cds);
234     // start loop
235     //   print status
236     //   if input data execute some command
237     //   if end => clean exit
238     exit(0);
239 }
240
241 main();
242
243 ?>