1 16 package scriptella.driver.csv; 17 18 import scriptella.AbstractTestCase; 19 import scriptella.configuration.MockConnectionEl; 20 import scriptella.configuration.StringResource; 21 import scriptella.spi.ConnectionParameters; 22 import scriptella.spi.MockDriverContext; 23 import scriptella.spi.MockParametersCallbacks; 24 import scriptella.spi.ParametersCallback; 25 import scriptella.spi.QueryCallback; 26 import scriptella.util.RepeatingInputStream; 27 28 import java.io.ByteArrayOutputStream ; 29 import java.io.InputStream ; 30 import java.io.OutputStream ; 31 import java.io.UnsupportedEncodingException ; 32 import java.net.URL ; 33 import java.util.HashMap ; 34 import java.util.Map ; 35 36 42 public class CsvConnectionPerfTest extends AbstractTestCase { 43 private int rows; 44 45 private ByteArrayOutputStream out; 46 47 protected void setUp() throws Exception { 48 super.setUp(); 49 testURLHandler = new TestURLHandler() { 50 byte[] rows = "c1,c2,c3\nc4,c5,c6\n".getBytes(); 51 52 public InputStream getInputStream(final URL u) { 53 return new RepeatingInputStream(rows, 10000); 54 } 55 56 public OutputStream getOutputStream(final URL u) { 57 if (out == null) { 58 out = new ByteArrayOutputStream (); 59 } 60 return out; 61 } 62 63 public int getContentLength(final URL u) { 64 return -1; 65 } 66 }; 67 68 } 69 70 75 public void testQuery() { 76 Map <String , String > props = new HashMap <String , String >(); 78 ConnectionParameters cp = new ConnectionParameters(new MockConnectionEl(props, "tst://file"), MockDriverContext.INSTANCE); 79 80 CsvConnection con = new CsvConnection(cp); 81 for (int i=0;i<10;i++) { 83 rows = 0; 84 con.executeQuery(new StringResource(" ,.*2, "), MockParametersCallbacks.NULL, new QueryCallback() { 85 public void processRow(final ParametersCallback parameters) { 86 rows++; 87 parameters.getParameter("c1"); 88 parameters.getParameter("2"); 89 parameters.getParameter("nosuchcolumn"); 90 91 } 92 }); 93 assertEquals(10000-1, rows); assertNull("No output should be produced by a query", out); 95 } 96 97 98 } 99 100 106 public void testScript() throws UnsupportedEncodingException { 107 Map <String , String > props = new HashMap <String , String >(); 109 ConnectionParameters cp = new ConnectionParameters(new MockConnectionEl(props, "tst://file"), MockDriverContext.INSTANCE); 110 111 CsvConnection con = new CsvConnection(cp); 112 String expected = "\"*col1*\",\"col2\",\"col3\"\n\"*col21*\",\"col22\",\"col23\"\n"; 113 for (int i = 0; i < 10000; i++) { 114 con.executeScript(new StringResource("$col1,\"col2\",col3\n${col21},col22,col23"), 115 MockParametersCallbacks.SIMPLE); 116 out.reset(); 117 } 118 119 con.close(); 120 String actual = out.toString(); assertTrue(actual.indexOf(expected) >= 0); 124 } 125 126 127 } 128 | Popular Tags |