Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libRemoteServices / test / org / gvsig / remoteClient / taskplanning / retrieving / URLRetrieveTest.java @ 5230

History | View | Annotate | Download (8.38 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41

    
42
/* CVS MESSAGES:
43
 *
44
 * $Id: URLRetrieveTest.java 5230 2006-05-16 17:10:27Z jaume $
45
 * $Log$
46
 * Revision 1.3  2006-05-16 17:10:27  jaume
47
 * *** empty log message ***
48
 *
49
 * Revision 1.2  2006/05/15 09:39:52  jaume
50
 * *** empty log message ***
51
 *
52
 * Revision 1.1  2006/05/12 07:45:49  jaume
53
 * some warnings removed
54
 *
55
 * Revision 1.1  2006/05/12 07:15:45  jaume
56
 * *** empty log message ***
57
 *
58
 *
59
 */
60
package org.gvsig.remoteClient.taskplanning.retrieving;
61

    
62
import java.io.File;
63

    
64
import junit.framework.TestCase;
65

    
66
import org.gvsig.remoteClient.taskplanning.IQueue;
67
import org.gvsig.remoteClient.taskplanning.IRunnableTask;
68
/**
69
 * 
70
 * @author jaume
71
 *
72
 */
73
public class URLRetrieveTest extends TestCase {
74
        private final static String tempDirectoryPath = System.getProperty("java.io.tmpdir")+"tmp-andami";
75
        IQueue queue;
76
        IRunnableTask task1, task2, task3, task4;
77
        boolean finished1, finished2, finished3, finished4;
78
        RetrieveListener listener1 = new RetrieveListener() {
79
                public void transferEventReceived(RetrieveEvent event) {
80
                        int e = event.getType();
81
                        printMessage("listener1", event.getType());
82
                        if (e==RetrieveEvent.REQUEST_FINISHED || e == RetrieveEvent.REQUEST_FAILED || e == RetrieveEvent.REQUEST_CANCELLED )
83
                                finished1 = true;
84
                }
85
        };
86
        
87
        String protocol = URLRequest.HTTP;
88
        String host1 = "192.168.0.223";
89
        String page1 = "cgi-bin/mapserv_46.exe?map=c:\\ms4w\\Apache\\cgi-bin\\demo.map&&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&LAYERS=comunidades&SRS=EPSG:23030&BBOX=507522.0,4154976.282477341,942309.0,4552983.717522658&WIDTH=332&HEIGHT=305&FORMAT=image/png&STYLES=&TRANSPARENT=TRUE";
90
        URLRequest request1;
91
        
92
        String host2 = "localhost";
93
        String page2 = "aegCapabilities1.3.xml";
94
        URLRequest request2;
95
        RetrieveListener listener2 = new RetrieveListener() {
96
                public void transferEventReceived(RetrieveEvent event) {
97
                        int e = event.getType();
98
                        printMessage("listener2", event.getType());
99
                        if (e==RetrieveEvent.REQUEST_FINISHED || e == RetrieveEvent.REQUEST_FAILED || e==RetrieveEvent.REQUEST_CANCELLED )
100
                                finished2 = true;
101

    
102
                }
103
        };
104
        
105
        String host3 = "localhost";
106
        String page3 = "avalencia.ecw";
107
        URLRequest request3;
108
        RetrieveListener listener3 = new RetrieveListener() {
109
                public void transferEventReceived(RetrieveEvent event) {
110
                        int e = event.getType();
111
                        printMessage("listener3", event.getType());
112
                        if (e==RetrieveEvent.REQUEST_FINISHED || e == RetrieveEvent.REQUEST_FAILED  || e == RetrieveEvent.REQUEST_CANCELLED )
113
                                finished3 = true;
114

    
115
                }
116
        };
117
        
118
        String host4 = "192.168.0.223";
119
        String page4 = "prueba.rar";
120
        URLRequest request4;
121
        RetrieveListener listener4 = new RetrieveListener() {
122
                public void transferEventReceived(RetrieveEvent event) {
123
                        int e = event.getType();
124
                        printMessage("listener4", event.getType());
125
                        if (e==RetrieveEvent.REQUEST_FINISHED || e == RetrieveEvent.REQUEST_FAILED  || e == RetrieveEvent.REQUEST_CANCELLED )
126
                                finished4 = true;
127

    
128
                }
129
        };
130
        {
131
                cleanFiles();
132
        }
133
        private static void cleanFiles(){
134
                try{
135
                        File tempDirectory = new File(tempDirectoryPath);
136
                        
137
                        File[] files = tempDirectory.listFiles();
138
                        if (files!=null) {
139
                                for (int i = 0; i < files.length; i++) {
140
                                        // s?lo por si en un futuro se necesitan crear directorios temporales
141
                                        files[i].delete();
142
                                }
143
                        }
144
                        tempDirectory.delete();
145
                } catch (Exception e) {        }
146
        }
147
        
148
        
149
        public void setUp() {
150
                File tmpDir = new File(tempDirectoryPath);
151
                if (!tmpDir.exists())
152
                        tmpDir.mkdir();
153
                finished1 = finished2 = finished3 = finished4 = false;
154
                System.out.println("\n\n\nSetting up test..");
155
                queue = new RetrieveQueue("http://192.168.0.223/cgi-bin/mapserv_46.exe?map=c:\\ms4w\\Apache\\cgi-bin\\demo.map");
156
                
157
                request1 = new URLRequest();
158
                // http://192.168.0.223/cgi-bin/mapserv_46.exe?map=c:\\ms4w\\Apache\\cgi-bin\\demo.map&&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&LAYERS=comunidades&SRS=EPSG:23030&BBOX=507522.0,4154976.282477341,942309.0,4552983.717522658&WIDTH=332&HEIGHT=305&FORMAT=image/png&STYLES=&TRANSPARENT=TRUE
159
                request1.setProtocol(protocol);
160
                request1.setHost(host1);
161
                request1.setFile(page1);
162
                request1.setFileName(tempDirectoryPath+File.separator+"task1");
163
                request1.setRequestType(URLRequest.GET);
164
                task1 = new URLRetrieveTask(request1, listener1); 
165
                
166
                request2 = new URLRequest();
167
                // http://localhost/aegCapabilities1.3.xml
168
                request2.setProtocol(protocol);
169
                request2.setHost(host2);
170
                request2.setFile(page2);
171
                request2.setFileName(tempDirectoryPath+File.separator+"task2");
172
                request2.setRequestType(URLRequest.GET);
173
                task2 = new URLRetrieveTask(request2, listener2);
174
                
175
                request3 = new URLRequest();
176
                // http://localhost/avalencia.ecw
177
                request3.setProtocol(protocol);
178
                request3.setHost(host3);
179
                request3.setFile(page3);
180
                request3.setFileName(tempDirectoryPath+File.separator+"task3");
181
                request3.setRequestType(URLRequest.GET);
182
                task3 = new URLRetrieveTask(request3, listener3);
183
                
184
                request4 = new URLRequest();
185
                // http://192.168.0.223/prueba.rar
186
                request4.setProtocol(protocol);
187
                request4.setHost(host4);
188
                request4.setFile(page4);
189
                request4.setFileName(tempDirectoryPath+File.separator+"task4");
190
                request4.setRequestType(URLRequest.GET);
191
                
192
                task4 = new URLRetrieveTask(request4, listener4);
193
                
194
        }
195
        
196
        public void testRetrieve() {
197
                queue.put(task1);
198
                queue.put(task2);
199
                
200
                while(!queue.isEmpty()) {                
201
                }
202
        }
203
        
204
        public void testCancelling() {
205
                long time = System.currentTimeMillis();
206
                
207
                queue.put(task1);
208
                queue.put(task2);
209
                boolean more = true;
210
                while (!queue.isEmpty()) {
211
                        if (more && System.currentTimeMillis()-time > 1000) { // wait 1 seconds and cancel
212
                                task2.cancel();
213
                                more = false;
214
                        }
215
                }
216
        }
217
        
218
        public void testRequestManager() {
219
                System.out.println("tests parallel downloading from different servers");
220
                request3.setFileName("task3");
221
                // http://localhost/avalencia.ecw
222
                
223
                request4.setFileName("task4");
224
                // http://192.168.0.223/prueba.rar
225
                RequestManager manager = RequestManager.getInstance();
226
                manager.addURLRequest(request3, listener3);
227
                manager.addURLRequest(request4, listener4);
228
                manager.addURLRequest(request4, listener1);
229
                while (!(finished1 && finished3 && finished4)) { 
230
                        
231
                }
232
        }
233
        
234
        public void testCocurrentTransfers() {
235
                finished1 = finished2 = finished3 = finished4 = false;
236
                System.out.println("tests to merge two or more equivalent transfers into one");
237
                RequestManager manager = RequestManager.getInstance();
238
                //manager.removeURLRequest(request3);
239
                request3.setFileName("task3");
240
                
241
                manager.addURLRequest(request3, listener1);
242
                manager.addURLRequest(request3, listener2);
243
                manager.addURLRequest(request3, listener3);
244
                
245
                manager.addURLRequest(request3, listener4);
246
                while (!(finished1 && finished2 && finished3 && finished4)) { 
247
                        
248
                }
249
        }
250
        
251
        public void printMessage(String who, int code) {
252
                switch (code) {
253
                case RetrieveEvent.CONNECTING:
254
                        System.out.println(who+": connecting");
255
                        break;
256
                case RetrieveEvent.TRANSFERRING:
257
                        System.out.println(who+": transferring");
258
                        break;
259
                case RetrieveEvent.REQUEST_CANCELLED:
260
                        System.out.println(who+": cancelled");
261
                        break;
262
                case RetrieveEvent.REQUEST_FINISHED:
263
                        System.out.println(who+": finished");
264
                        break;
265
                case RetrieveEvent.REQUEST_FAILED:
266
                        System.err.println(who+": failed");
267
                        break;
268
                case RetrieveEvent.NOT_STARTED:
269
                        System.out.println(who+": not started");
270
                        break;
271
                case RetrieveEvent.POSTPROCESSING:
272
                        System.out.println(who+": postprocessing");
273
                        break;
274
                }
275
        }
276
}