Statistics
| Revision:

root / trunk / libraries / libRaster / src-test / org / gvsig / raster / buffer / cache / TestSaveAndLoadPages.java @ 11074

History | View | Annotate | Download (3.12 KB)

1
package org.gvsig.raster.buffer.cache;
2

    
3
import java.io.IOException;
4
import java.util.Date;
5

    
6
import junit.framework.TestCase;
7

    
8
import org.gvsig.raster.RasterLibrary;
9
import org.gvsig.raster.buffer.BufferFactory;
10
import org.gvsig.raster.buffer.cache.CacheDataServer;
11
import org.gvsig.raster.buffer.cache.PageBandBuffer;
12
import org.gvsig.raster.dataset.IBuffer;
13
import org.gvsig.raster.dataset.NotSupportedExtensionException;
14
import org.gvsig.raster.dataset.RasterDataset;
15
import org.gvsig.raster.dataset.RasterDriverException;
16

    
17

    
18
/**
19
 * @author Nacho Brodin (nachobrodin@gmail.com)
20
 */
21
public class TestSaveAndLoadPages extends TestCase {
22
        private String baseDir = "./test-images/";
23
        private String path = baseDir + "03AUG23153350-M2AS-000000122423_01_P001-BROWSE.jpg";
24
        private RasterDataset f = null;
25
        private BufferFactory ds = null;
26
        private int pages = 10;
27
                
28
        static{
29
                RasterLibrary.wakeUp();
30
        }
31
        
32
        public void start() {
33
                this.setUp();
34
                this.testStack();
35
        }
36
        
37
        public void setUp() {
38
                System.err.println("TestSaveAndLoadPages running...");
39
                try {
40
                        f = RasterDataset.open(null, path);
41
                } catch (NotSupportedExtensionException e) {
42
                        e.printStackTrace();
43
                } catch (RasterDriverException e) {
44
                        e.printStackTrace();
45
                }
46
        }
47
        
48
        public void testStack() {
49
                int[] drawableBands = {0, 1, 2};
50
                
51
                ds = new BufferFactory(f);
52
                ds.addDrawableBands(drawableBands);
53
                ds.setAreaOfInterest(0, 0, f.getWidth(), f.getHeight());
54
                
55
                int h =  f.getHeight() / pages;
56
                PageBandBuffer[] pbWriterList = new PageBandBuffer[h];
57
                CacheDataServer[] cds = new CacheDataServer[h];
58
                                
59
                long t2, t3, t4;
60
        long t1 = new Date().getTime();
61
        
62
                //Salvamos los PageBuffer
63
                IBuffer buf = ds.getRasterBuf();
64
                byte[] data = new byte[3];
65
                for (int i = 0; i < pages; i++) {
66
                        pbWriterList[i] = new PageBandBuffer(ds.getDataType(), f.getWidth(), h, 3, true, i);
67
                        cds[i] = new CacheDataServer(null, 0, i);
68
                        for (int k = 0; k < f.getWidth(); k++) {
69
                                for (int j = 0; j < h; j++) {
70
                                        buf.getElemByte((i * h) + j, k, data);
71
                                        pbWriterList[i].setElemByte(j, k, data);
72
                                }        
73
                        }
74
                        try {
75
                                cds[i].savePage(pbWriterList[i]);
76
                        } catch (IOException e) {
77
                                e.printStackTrace();
78
                        }
79
                }
80
                
81
                t2 = new Date().getTime();
82
        System.out.println("Time: Cargar PageBuffers y salvar a disco: " + ((t2 - t1) / 1000D) + ", secs.");
83
                
84
                //Recuperamos las p?ginas
85
                PageBandBuffer[] pbReaderList = new PageBandBuffer[h];
86
                for (int i = 0; i < pages; i++) {
87
                        pbReaderList[i] = new PageBandBuffer(ds.getDataType(), f.getWidth(), h, 3, true, i);
88
                        cds[i].loadPage(pbReaderList[i]);
89
                }
90
                
91
                t3 = new Date().getTime();
92
        System.out.println("Time: Recuperar p?ginas de disco: " + ((t3 - t2) / 1000D) + ", secs.");
93
                
94
                //Comparamos
95
                byte[] a = new byte[3];
96
                byte[] b = new byte[3];
97
                for (int i = 0; i < pages; i++) {
98
                        for (int k = 0; k < f.getWidth(); k++) {
99
                                for (int j = 0; j < h; j++) {
100
                                        pbReaderList[i].getElemByte(j, k, a);
101
                                        pbWriterList[i].getElemByte(j, k, b);
102
                                        for (int t = 0; t < 3; t++) 
103
                                                assertEquals(a[t], b[t]);
104
                                }
105
                        }
106
                }
107
                
108
                t4 = new Date().getTime();
109
        System.out.println("Time: Comparaciones: " + ((t4 - t3) / 1000D) + ", secs.");
110
                
111
        }
112
}