1- /*
1+ /**
22 * Copyright 2019 Philipp Salvisberg <philipp.salvisberg@trivadis.com>
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
1313 * See the License for the specific language governing permissions and
1414 * limitations under the License.
1515 */
16- package org .utplsql .sqldev .test .dal
16+ package org .utplsql .sqldev .test .dal ;
1717
18- import java .util .UUID
19- import java .util .logging .Logger
20- import org .junit .AfterClass
21- import org .junit .Assert
22- import org .junit .BeforeClass
23- import org .junit .Test
24- import org .springframework .jdbc .BadSqlGrammarException
25- import org .springframework .jdbc .datasource .SingleConnectionDataSource
26- import org .utplsql .sqldev .dal .RealtimeReporterDao
27- import org .utplsql .sqldev .test .AbstractJdbcTest
18+ import java .sql .Connection ;
19+ import java .util .Collections ;
20+ import java .util .UUID ;
21+ import java .util .logging .Logger ;
22+ import org .eclipse .xtend2 .lib .StringConcatenation ;
23+ import org .eclipse .xtext .xbase .lib .CollectionLiterals ;
24+ import org .eclipse .xtext .xbase .lib .Exceptions ;
25+ import org .junit .AfterClass ;
26+ import org .junit .Assert ;
27+ import org .junit .BeforeClass ;
28+ import org .junit .Test ;
29+ import org .springframework .jdbc .BadSqlGrammarException ;
30+ import org .springframework .jdbc .datasource .SingleConnectionDataSource ;
31+ import org .utplsql .sqldev .dal .RealtimeReporterDao ;
32+ import org .utplsql .sqldev .test .AbstractJdbcTest ;
33+ import org .utplsql .sqldev .test .dal .TestRealtimerReporterEventTimedConsumer ;
2834
29- class RealtimeReporterFetchSizeTest extends AbstractJdbcTest {
30-
31- static val Logger logger = Logger .getLogger (RealtimeReporterFetchSizeTest .name );
32-
33- @ BeforeClass
34- def static void setup () {
35-
36- jdbcTemplate .execute ('''
37- CREATE OR REPLACE PACKAGE junit_utplsql_fetch_size_pkg is
38- --%suite (JUnit testing )
39-
40- --%test (test 1 - 0 seconds )
41- PROCEDURE test_1_0 ;
42-
43- --%test (test 2 - 1 seconds )
44- PROCEDURE test_2_1 ;
45-
46- --%test (test 3 - 2 seconds )
47- PROCEDURE test_3_2 ;
48-
49- --%test (test 4 - 0 seconds )
50- PROCEDURE test_4_0 ;
51-
52- --%test (test 5 - 0 seconds )
53- PROCEDURE test_5_0 ;
54- END ;
55- ''')
56- jdbcTemplate .execute ('''
57- CREATE OR REPLACE PACKAGE BODY junit_utplsql_fetch_size_pkg is
58- PROCEDURE test_1_0 IS
59- BEGIN
60- NULL ;
61- END ;
62-
63- PROCEDURE test_2_1 IS
64- BEGIN
65- dbms_session .sleep (1 );
66- END ;
67-
68- PROCEDURE test_3_2 IS
69- BEGIN
70- dbms_session .sleep (2 );
71- END ;
72-
73- PROCEDURE test_4_0 IS
74- BEGIN
75- NULL ;
76- END ;
77-
78- PROCEDURE test_5_0 IS
79- BEGIN
80- NULL ;
81- END ;
82- END ;
83- ''')
84- }
85-
86- @ AfterClass
87- def static void teardown () {
88- try {
89- jdbcTemplate .execute ("DROP PACKAGE junit_utplsql_fetch_size_pkg" )
90- } catch (BadSqlGrammarException e ) {
91- // ignore
92- }
93- }
94-
95- private def delayFreeStreamingConsumtionProducer (String reporterId ) {
96- var ds = new SingleConnectionDataSource ()
97- ds .driverClassName = "oracle.jdbc.OracleDriver"
98- ds .url = dataSource .url
99- ds .username = dataSource .username
100- ds .password = dataSource .password
101- val dao = new RealtimeReporterDao (ds .connection )
102- dao .produceReport (reporterId , #["junit_utplsql_fetch_size_pkg" ])
103- }
104-
105- @ Test
106- def void delayFreeStreamingConsumtion () {
107- val long TOLERANCE_MS = 600
108- var ds = new SingleConnectionDataSource ()
109- ds .driverClassName = "oracle.jdbc.OracleDriver"
110- ds .url = dataSource .url
111- ds .username = dataSource .username
112- ds .password = dataSource .password
113- val consumer = new TestRealtimerReporterEventTimedConsumer
114- val reporterId = UUID .randomUUID ().toString .replace ("-" , "" );
115- val dao = new RealtimeReporterDao (ds .connection )
116- val Runnable runnable = [|delayFreeStreamingConsumtionProducer (reporterId )]
117- val thread = new Thread (runnable )
118- thread .name = "utPLSQL run test"
119- thread .start
120- dao .consumeReport (reporterId , consumer )
121- logger .fine (consumer .postTestEvents .toString )
122- Assert .assertEquals (5 , consumer .postTestEvents .entrySet .size )
123- val test_1_0 = consumer .postTestEvents .get ("junit_utplsql_fetch_size_pkg.test_1_0" )
124- val test_2_1 = consumer .postTestEvents .get ("junit_utplsql_fetch_size_pkg.test_2_1" )
125- val test_3_2 = consumer .postTestEvents .get ("junit_utplsql_fetch_size_pkg.test_3_2" )
126- val test_4_0 = consumer .postTestEvents .get ("junit_utplsql_fetch_size_pkg.test_4_0" )
127- val test_5_0 = consumer .postTestEvents .get ("junit_utplsql_fetch_size_pkg.test_5_0" )
128- val test_2_1_time = test_2_1 - test_1_0
129- logger .fine ("test_2_1 time [ms]: " + test_2_1_time )
130- Assert .assertTrue ("test_2_1 runtime was too long" , test_2_1_time < 1000 + TOLERANCE_MS )
131- Assert .assertTrue ("test_2_1 runtime was too short" , test_2_1_time > 1000 - TOLERANCE_MS )
132- val test_3_2_time = test_3_2 - test_2_1
133- logger .fine ("test_3_2 time [ms]: " + test_3_2_time )
134- Assert .assertTrue ("test_3_2 runtime was too long" , test_3_2_time < 2000 + TOLERANCE_MS )
135- Assert .assertTrue ("test_3_2 runtime was too short" , test_3_2_time > 2000 - TOLERANCE_MS )
136- val test_4_0_time = test_4_0 - test_3_2
137- logger .fine ("test_4_0 time [ms]: " + test_4_0_time )
138- Assert .assertTrue ("test_4_0 runtime was too long" , test_4_0_time < TOLERANCE_MS )
139- val test_5_0_time = test_5_0 - test_4_0
140- logger .fine ("test_5_0 time [ms]: " + test_5_0_time )
141- Assert .assertTrue ("test_5_0 runtime was too long" , test_5_0_time < TOLERANCE_MS )
142- }
143-
144- }
35+ @ SuppressWarnings ("all" )
36+ public class RealtimeReporterFetchSizeTest extends AbstractJdbcTest {
37+ private static final Logger logger = Logger .getLogger (RealtimeReporterFetchSizeTest .class .getName ());
38+
39+ @ BeforeClass
40+ public static void setup () {
41+ StringConcatenation _builder = new StringConcatenation ();
42+ _builder .append ("CREATE OR REPLACE PACKAGE junit_utplsql_fetch_size_pkg is" );
43+ _builder .newLine ();
44+ _builder .append (" " );
45+ _builder .append ("--%suite(JUnit testing)" );
46+ _builder .newLine ();
47+ _builder .newLine ();
48+ _builder .append (" " );
49+ _builder .append ("--%test(test 1 - 0 seconds) " );
50+ _builder .newLine ();
51+ _builder .append (" " );
52+ _builder .append ("PROCEDURE test_1_0;" );
53+ _builder .newLine ();
54+ _builder .newLine ();
55+ _builder .append (" " );
56+ _builder .append ("--%test(test 2 - 1 seconds) " );
57+ _builder .newLine ();
58+ _builder .append (" " );
59+ _builder .append ("PROCEDURE test_2_1;" );
60+ _builder .newLine ();
61+ _builder .newLine ();
62+ _builder .append (" " );
63+ _builder .append ("--%test(test 3 - 2 seconds) " );
64+ _builder .newLine ();
65+ _builder .append (" " );
66+ _builder .append ("PROCEDURE test_3_2;" );
67+ _builder .newLine ();
68+ _builder .newLine ();
69+ _builder .append (" " );
70+ _builder .append ("--%test(test 4 - 0 seconds) " );
71+ _builder .newLine ();
72+ _builder .append (" " );
73+ _builder .append ("PROCEDURE test_4_0;" );
74+ _builder .newLine ();
75+ _builder .newLine ();
76+ _builder .append (" " );
77+ _builder .append ("--%test(test 5 - 0 seconds) " );
78+ _builder .newLine ();
79+ _builder .append (" " );
80+ _builder .append ("PROCEDURE test_5_0;" );
81+ _builder .newLine ();
82+ _builder .append ("END;" );
83+ _builder .newLine ();
84+ AbstractJdbcTest .jdbcTemplate .execute (_builder .toString ());
85+ StringConcatenation _builder_1 = new StringConcatenation ();
86+ _builder_1 .append ("CREATE OR REPLACE PACKAGE BODY junit_utplsql_fetch_size_pkg is" );
87+ _builder_1 .newLine ();
88+ _builder_1 .append (" " );
89+ _builder_1 .append ("PROCEDURE test_1_0 IS" );
90+ _builder_1 .newLine ();
91+ _builder_1 .append (" " );
92+ _builder_1 .append ("BEGIN" );
93+ _builder_1 .newLine ();
94+ _builder_1 .append (" " );
95+ _builder_1 .append ("NULL;" );
96+ _builder_1 .newLine ();
97+ _builder_1 .append (" " );
98+ _builder_1 .append ("END;" );
99+ _builder_1 .newLine ();
100+ _builder_1 .newLine ();
101+ _builder_1 .append (" " );
102+ _builder_1 .append ("PROCEDURE test_2_1 IS" );
103+ _builder_1 .newLine ();
104+ _builder_1 .append (" " );
105+ _builder_1 .append ("BEGIN" );
106+ _builder_1 .newLine ();
107+ _builder_1 .append (" " );
108+ _builder_1 .append ("dbms_session.sleep(1);" );
109+ _builder_1 .newLine ();
110+ _builder_1 .append (" " );
111+ _builder_1 .append ("END;" );
112+ _builder_1 .newLine ();
113+ _builder_1 .newLine ();
114+ _builder_1 .append (" " );
115+ _builder_1 .append ("PROCEDURE test_3_2 IS" );
116+ _builder_1 .newLine ();
117+ _builder_1 .append (" " );
118+ _builder_1 .append ("BEGIN" );
119+ _builder_1 .newLine ();
120+ _builder_1 .append (" " );
121+ _builder_1 .append ("dbms_session.sleep(2);" );
122+ _builder_1 .newLine ();
123+ _builder_1 .append (" " );
124+ _builder_1 .append ("END;" );
125+ _builder_1 .newLine ();
126+ _builder_1 .newLine ();
127+ _builder_1 .append (" " );
128+ _builder_1 .append ("PROCEDURE test_4_0 IS" );
129+ _builder_1 .newLine ();
130+ _builder_1 .append (" " );
131+ _builder_1 .append ("BEGIN" );
132+ _builder_1 .newLine ();
133+ _builder_1 .append (" " );
134+ _builder_1 .append ("NULL;" );
135+ _builder_1 .newLine ();
136+ _builder_1 .append (" " );
137+ _builder_1 .append ("END;" );
138+ _builder_1 .newLine ();
139+ _builder_1 .newLine ();
140+ _builder_1 .append (" " );
141+ _builder_1 .append ("PROCEDURE test_5_0 IS" );
142+ _builder_1 .newLine ();
143+ _builder_1 .append (" " );
144+ _builder_1 .append ("BEGIN" );
145+ _builder_1 .newLine ();
146+ _builder_1 .append (" " );
147+ _builder_1 .append ("NULL;" );
148+ _builder_1 .newLine ();
149+ _builder_1 .append (" " );
150+ _builder_1 .append ("END;" );
151+ _builder_1 .newLine ();
152+ _builder_1 .append ("END;" );
153+ _builder_1 .newLine ();
154+ AbstractJdbcTest .jdbcTemplate .execute (_builder_1 .toString ());
155+ }
156+
157+ @ AfterClass
158+ public static void teardown () {
159+ try {
160+ AbstractJdbcTest .jdbcTemplate .execute ("DROP PACKAGE junit_utplsql_fetch_size_pkg" );
161+ } catch (final Throwable _t ) {
162+ if (_t instanceof BadSqlGrammarException ) {
163+ } else {
164+ throw Exceptions .sneakyThrow (_t );
165+ }
166+ }
167+ }
168+
169+ private void delayFreeStreamingConsumtionProducer (final String reporterId ) {
170+ try {
171+ SingleConnectionDataSource ds = new SingleConnectionDataSource ();
172+ ds .setDriverClassName ("oracle.jdbc.OracleDriver" );
173+ ds .setUrl (AbstractJdbcTest .dataSource .getUrl ());
174+ ds .setUsername (AbstractJdbcTest .dataSource .getUsername ());
175+ ds .setPassword (AbstractJdbcTest .dataSource .getPassword ());
176+ Connection _connection = ds .getConnection ();
177+ final RealtimeReporterDao dao = new RealtimeReporterDao (_connection );
178+ dao .produceReport (reporterId , Collections .<String >unmodifiableList (CollectionLiterals .<String >newArrayList ("junit_utplsql_fetch_size_pkg" )));
179+ } catch (Throwable _e ) {
180+ throw Exceptions .sneakyThrow (_e );
181+ }
182+ }
183+
184+ @ Test
185+ public void delayFreeStreamingConsumtion () {
186+ try {
187+ final long TOLERANCE_MS = 600 ;
188+ SingleConnectionDataSource ds = new SingleConnectionDataSource ();
189+ ds .setDriverClassName ("oracle.jdbc.OracleDriver" );
190+ ds .setUrl (AbstractJdbcTest .dataSource .getUrl ());
191+ ds .setUsername (AbstractJdbcTest .dataSource .getUsername ());
192+ ds .setPassword (AbstractJdbcTest .dataSource .getPassword ());
193+ final TestRealtimerReporterEventTimedConsumer consumer = new TestRealtimerReporterEventTimedConsumer ();
194+ final String reporterId = UUID .randomUUID ().toString ().replace ("-" , "" );
195+ Connection _connection = ds .getConnection ();
196+ final RealtimeReporterDao dao = new RealtimeReporterDao (_connection );
197+ final Runnable _function = () -> {
198+ this .delayFreeStreamingConsumtionProducer (reporterId );
199+ };
200+ final Runnable runnable = _function ;
201+ final Thread thread = new Thread (runnable );
202+ thread .setName ("utPLSQL run test" );
203+ thread .start ();
204+ dao .consumeReport (reporterId , consumer );
205+ RealtimeReporterFetchSizeTest .logger .fine (consumer .getPostTestEvents ().toString ());
206+ Assert .assertEquals (5 , consumer .getPostTestEvents ().entrySet ().size ());
207+ final Long test_1_0 = consumer .getPostTestEvents ().get ("junit_utplsql_fetch_size_pkg.test_1_0" );
208+ final Long test_2_1 = consumer .getPostTestEvents ().get ("junit_utplsql_fetch_size_pkg.test_2_1" );
209+ final Long test_3_2 = consumer .getPostTestEvents ().get ("junit_utplsql_fetch_size_pkg.test_3_2" );
210+ final Long test_4_0 = consumer .getPostTestEvents ().get ("junit_utplsql_fetch_size_pkg.test_4_0" );
211+ final Long test_5_0 = consumer .getPostTestEvents ().get ("junit_utplsql_fetch_size_pkg.test_5_0" );
212+ final long test_2_1_time = ((test_2_1 ).longValue () - (test_1_0 ).longValue ());
213+ RealtimeReporterFetchSizeTest .logger .fine (("test_2_1 time [ms]: " + Long .valueOf (test_2_1_time )));
214+ Assert .assertTrue ("test_2_1 runtime was too long" , (test_2_1_time < (1000 + TOLERANCE_MS )));
215+ Assert .assertTrue ("test_2_1 runtime was too short" , (test_2_1_time > (1000 - TOLERANCE_MS )));
216+ final long test_3_2_time = ((test_3_2 ).longValue () - (test_2_1 ).longValue ());
217+ RealtimeReporterFetchSizeTest .logger .fine (("test_3_2 time [ms]: " + Long .valueOf (test_3_2_time )));
218+ Assert .assertTrue ("test_3_2 runtime was too long" , (test_3_2_time < (2000 + TOLERANCE_MS )));
219+ Assert .assertTrue ("test_3_2 runtime was too short" , (test_3_2_time > (2000 - TOLERANCE_MS )));
220+ final long test_4_0_time = ((test_4_0 ).longValue () - (test_3_2 ).longValue ());
221+ RealtimeReporterFetchSizeTest .logger .fine (("test_4_0 time [ms]: " + Long .valueOf (test_4_0_time )));
222+ Assert .assertTrue ("test_4_0 runtime was too long" , (test_4_0_time < TOLERANCE_MS ));
223+ final long test_5_0_time = ((test_5_0 ).longValue () - (test_4_0 ).longValue ());
224+ RealtimeReporterFetchSizeTest .logger .fine (("test_5_0 time [ms]: " + Long .valueOf (test_5_0_time )));
225+ Assert .assertTrue ("test_5_0 runtime was too long" , (test_5_0_time < TOLERANCE_MS ));
226+ } catch (Throwable _e ) {
227+ throw Exceptions .sneakyThrow (_e );
228+ }
229+ }
230+ }
0 commit comments