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 |
} |