1
2
3
4
5
6
7 package net.sourceforge.addam.ddlrun.runners;
8
9 import junit.framework.TestCase;
10
11 import java.util.HashMap;
12 import java.util.Map;
13 import java.util.Iterator;
14
15 import net.sourceforge.addam.ddlrun.grammars.OracleGrammar;
16 import net.sourceforge.addam.ddlrun.runners.JDBCScriptRunner;
17 import net.sourceforge.addam.ddlrun.runners.Runner;
18 import net.sourceforge.addam.ddlrun.utils.MockReaderFactory;
19
20 public class JDBCScriptRunnerUTEST extends TestCase {
21
22 public void testComments() throws Exception {
23 Map<String,String> contentMap = new HashMap<String,String>();
24 contentMap.put("script1.sql", "-- comment line then blank\n" +
25 "\n" +
26 "--select * from foo\n" +
27 " --/\n" +
28 "--select * from \n--foo;" +
29 " --select * from \n--foo;\n" +
30 "select * from foo;" +
31 "");
32 MockReaderFactory readerFactory = new MockReaderFactory(contentMap);
33 MockRunner statementRunner = new MockRunner();
34 Runner scriptRunner = new JDBCScriptRunner(readerFactory, new OracleGrammar(), statementRunner);
35 scriptRunner.run("script1.sql");
36 assertEquals("select * from foo", statementRunner.getResourcesRun().get(0));
37 }
38
39 public void testSimpleStatements() throws Exception {
40 Map<String,String> contentMap = new HashMap<String,String>();
41 contentMap.put("script1.sql", "-- comment line then blank\n" +
42 "\n" +
43 "select * from foo;\n" +
44 "select * from foo; \n" +
45 "select * from foo\n" +
46 ";\n" +
47 "select * from \nfoo;");
48 MockReaderFactory readerFactory = new MockReaderFactory(contentMap);
49 MockRunner statementRunner = new MockRunner();
50 Runner scriptRunner = new JDBCScriptRunner(readerFactory, new OracleGrammar(), statementRunner);
51 scriptRunner.run("script1.sql");
52 assertEquals(4, statementRunner.getResourcesRun().size());
53 assertEquals("select * from foo", statementRunner.getResourcesRun().get(0));
54 assertEquals("select * from foo", statementRunner.getResourcesRun().get(1));
55 assertEquals("select * from foo\n", statementRunner.getResourcesRun().get(2));
56 assertEquals("select * from \nfoo", statementRunner.getResourcesRun().get(3));
57 }
58
59 public void testComplexStatementWithBeginAndEnd() throws Exception {
60 Map<String,String> contentMap = new HashMap<String,String>();
61 contentMap.put("script1.sql", "-- comment line then blank\n" +
62 "\n" +
63 "BEGIN something\n" +
64 "some more stuff\n" +
65 "END;\n" +
66 "/");
67 MockReaderFactory readerFactory = new MockReaderFactory(contentMap);
68 MockRunner statementRunner = new MockRunner();
69 Runner scriptRunner = new JDBCScriptRunner(readerFactory, new OracleGrammar(), statementRunner);
70 scriptRunner.run("script1.sql");
71 assertEquals(1, statementRunner.getResourcesRun().size());
72 assertEquals("BEGIN something\nsome more stuff\nEND;", statementRunner.getResourcesRun().get(0));
73 }
74
75 public void testComplexStatementWithDeclareBeginAndEnd() throws Exception {
76 Map<String,String> contentMap = new HashMap<String,String>();
77 contentMap.put("script1.sql", "-- comment line then blank\n" +
78 "\n" +
79 "DECLARE\n" +
80 "v_cache_size\n" +
81 "BEGIN something\n" +
82 "some more stuff\n" +
83 "END;\n" +
84 "/");
85 MockReaderFactory readerFactory = new MockReaderFactory(contentMap);
86 MockRunner statementRunner = new MockRunner();
87 Runner scriptRunner = new JDBCScriptRunner(readerFactory, new OracleGrammar(), statementRunner);
88 scriptRunner.run("script1.sql");
89 assertEquals(1, statementRunner.getResourcesRun().size());
90 assertEquals("DECLARE\nv_cache_size\nBEGIN something\nsome more stuff\nEND;", statementRunner.getResourcesRun().get(0));
91 }
92
93 public void testComplexStatementWithCreateOrReplace() throws Exception {
94 Map<String,String> contentMap = new HashMap<String,String>();
95 contentMap.put("script1.sql", "-- comment line then blank\n" +
96 "\n" +
97 "CREATE OR REPLACE someFunction\n" +
98 "v_cache_size\n" +
99 "BEGIN something\n" +
100 "BEGIN somethingElse\n" +
101 "END;\n" +
102 "some more stuff\n" +
103 "END somefunction;\n" +
104 "/");
105 MockReaderFactory readerFactory = new MockReaderFactory(contentMap);
106 MockRunner statementRunner = new MockRunner();
107 Runner scriptRunner = new JDBCScriptRunner(readerFactory, new OracleGrammar(), statementRunner);
108 scriptRunner.run("script1.sql");
109 assertEquals(1, statementRunner.getResourcesRun().size());
110 assertEquals("CREATE OR REPLACE someFunction\nv_cache_size\nBEGIN something\nBEGIN somethingElse\nEND;\nsome more stuff\nEND somefunction;", statementRunner.getResourcesRun().get(0));
111 }
112
113 public void testCreateOrReplaceView() throws Exception {
114 Map<String,String> contentMap = new HashMap<String,String>();
115 contentMap.put("script1.sql", "-- comment line then blank\n" +
116 "\n" +
117 "CREATE OR REPLACE VIEW AV_ASSET\n" +
118 "as\n" +
119 "SELECT * \n" +
120 "FROM av_asset_all\n" +
121 "WHERE ownerofrecordid IS NULL and STATUSHISTORY not in ('LW_DISPOSED')\n" +
122 "/\n" +
123 "\n" +
124 "select 'test SQL' from dual;");
125 MockReaderFactory readerFactory = new MockReaderFactory(contentMap);
126 MockRunner statementRunner = new MockRunner();
127 Runner scriptRunner = new JDBCScriptRunner(readerFactory, new OracleGrammar(), statementRunner);
128 scriptRunner.run("script1.sql");
129 assertEquals(2, statementRunner.getResourcesRun().size());
130 assertEquals("CREATE OR REPLACE VIEW AV_ASSET\nas\nSELECT * \nFROM av_asset_all\nWHERE ownerofrecordid IS NULL and STATUSHISTORY not in ('LW_DISPOSED')",statementRunner.getResourcesRun().get(0));
131 assertEquals("select 'test SQL' from dual",statementRunner.getResourcesRun().get(1));
132 }
133
134 public void testComplexStatementsWithCreateOrReplace() throws Exception {
135 Map<String,String> contentMap = new HashMap<String,String>();
136 contentMap.put("script1.sql", "-- comment line then blank\n" +
137 "\n" +
138 "CREATE OR REPLACE someFunction\n" +
139 "v_cache_size\n" +
140 "BEGIN something\n" +
141 "BEGIN somethingElse\n" +
142 "END;\n" +
143 "some more stuff\n" +
144 "END somefunction;\n" +
145 "/" +
146 "\n\n" +
147 "CREATE OR REPLACE someOtherFunction\n" +
148 "v_cache_size\n" +
149 "BEGIN something\n" +
150 "BEGIN somethingElse\n" +
151 "END;\n" +
152 "some more stuff\n" +
153 "END somefunction;\n" +
154 "/");
155 MockReaderFactory readerFactory = new MockReaderFactory(contentMap);
156 MockRunner statementRunner = new MockRunner();
157 Runner scriptRunner = new JDBCScriptRunner(readerFactory, new OracleGrammar(), statementRunner);
158 scriptRunner.run("script1.sql");
159 assertEquals(2, statementRunner.getResourcesRun().size());
160 assertEquals("CREATE OR REPLACE someFunction\nv_cache_size\nBEGIN something\nBEGIN somethingElse\nEND;\nsome more stuff\nEND somefunction;", statementRunner.getResourcesRun().get(0));
161 assertEquals("CREATE OR REPLACE someOtherFunction\nv_cache_size\nBEGIN something\nBEGIN somethingElse\nEND;\nsome more stuff\nEND somefunction;", statementRunner.getResourcesRun().get(1));
162 }
163
164 public void testMixOfComplexAndSimpleStatements() throws Exception {
165 Map<String,String> contentMap = new HashMap<String,String>();
166 contentMap.put("script1.sql", "-- comment line then blank\n" +
167 "\n" +
168 "select * from foo;\n" +
169 "CREATE OR REPLACE someFunction\n" +
170 "v_cache_size\n" +
171 "BEGIN something\n" +
172 "BEGIN somethingElse\n" +
173 "END;\n" +
174 "some more stuff\n" +
175 "END somefunction;\n" +
176 "/\n\n" +
177 "select * from foo;\n" +
178 "select * from foo;\n" +
179 "\n" +
180 "DECLARE\n" +
181 "v_cache_size\n" +
182 "BEGIN something\n" +
183 "some more stuff\n" +
184 "END;\n" +
185 "/\n" +
186 "DECLARE\n" +
187 "v_cache_size\n" +
188 "BEGIN something\n" +
189 "some more stuff\n" +
190 "END;\n" +
191 "/\n" +
192 "select * from foo;\n"
193 );
194 MockReaderFactory readerFactory = new MockReaderFactory(contentMap);
195 MockRunner statementRunner = new MockRunner();
196 Runner scriptRunner = new JDBCScriptRunner(readerFactory, new OracleGrammar(), statementRunner);
197 scriptRunner.run("script1.sql");
198 Iterator statements = statementRunner.getResourcesRun().iterator();
199 assertEquals("select * from foo", statements.next());
200 assertEquals("CREATE OR REPLACE someFunction\nv_cache_size\nBEGIN something\nBEGIN somethingElse\nEND;\nsome more stuff\nEND somefunction;", statements.next());
201 assertEquals("select * from foo", statements.next());
202 assertEquals("select * from foo", statements.next());
203 assertEquals("DECLARE\nv_cache_size\nBEGIN something\nsome more stuff\nEND;", statements.next());
204 assertEquals("DECLARE\nv_cache_size\nBEGIN something\nsome more stuff\nEND;", statements.next());
205 assertEquals("select * from foo", statements.next());
206 assertEquals(false, statements.hasNext());
207 }
208
209 public void testComplexStatementsWithSetServerOutput() throws Exception {
210 Map<String,String> contentMap = new HashMap<String,String>();
211 contentMap.put("script1.sql", "-- comment line then blank\n" +
212 "\n" +
213 "set serveroutput on\n\n" +
214 "CREATE OR REPLACE someFunction\n" +
215 "v_cache_size\n" +
216 "BEGIN something\n" +
217 "BEGIN somethingElse\n" +
218 "END;\n" +
219 "some more stuff\n" +
220 "END somefunction;\n" +
221 "/");
222 MockReaderFactory readerFactory = new MockReaderFactory(contentMap);
223 MockRunner statementRunner = new MockRunner();
224 Runner scriptRunner = new JDBCScriptRunner(readerFactory, new OracleGrammar(), statementRunner);
225 scriptRunner.run("script1.sql");
226 assertEquals(1, statementRunner.getResourcesRun().size());
227 assertEquals("CREATE OR REPLACE someFunction\nv_cache_size\nBEGIN something\nBEGIN somethingElse\nEND;\nsome more stuff\nEND somefunction;", statementRunner.getResourcesRun().get(0));
228 }
229
230 }