Skip to content

Commit 780be14

Browse files
test initial version of utplsql runner
1 parent 8f0a752 commit 780be14

File tree

2 files changed

+107
-5
lines changed

2 files changed

+107
-5
lines changed

sqldev/src/main/java/org/utplsql/sqldev/runner/UtPlsqlRunner.xtend renamed to sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.xtend

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,16 @@ import org.utplsql.sqldev.dal.RealtimeReporterDao
2424
import org.utplsql.sqldev.dal.RealtimeReporterEventConsumer
2525
import org.utplsql.sqldev.model.runner.RealtimeReporterEvent
2626

27-
class UtPlsqlRunner implements RealtimeReporterEventConsumer {
27+
class UtplsqlRunner implements RealtimeReporterEventConsumer {
2828

29-
static val Logger logger = Logger.getLogger(UtPlsqlRunner.name);
29+
static val Logger logger = Logger.getLogger(UtplsqlRunner.name);
3030

3131
var List<String> pathList
3232
var Connection producerConn
3333
var Connection consumerConn
34-
var String reporterId = UUID.randomUUID().toString.replace("-", "");
34+
val String reporterId = UUID.randomUUID().toString.replace("-", "")
35+
var Thread producerThread
36+
var Thread consumerThread
3537

3638
new(List<String> pathList, String connectionName) {
3739
this.pathList = pathList
@@ -90,13 +92,22 @@ class UtPlsqlRunner implements RealtimeReporterEventConsumer {
9092
def runAsync() {
9193
// the producer
9294
val Runnable producer = [|produce]
93-
val producerThread = new Thread(producer)
95+
producerThread = new Thread(producer)
9496
producerThread.name = "realtime producer"
9597
producerThread.start
9698
// the consumer
9799
val Runnable consumer = [|consume]
98-
val consumerThread = new Thread(consumer)
100+
consumerThread = new Thread(consumer)
99101
consumerThread.name = "realtime consumer"
100102
consumerThread.start
101103
}
104+
105+
def getProducerThread() {
106+
return producerThread
107+
}
108+
109+
def getConsumerThread() {
110+
return consumerThread
111+
}
112+
102113
}
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/*
2+
* Copyright 2018 Philipp Salvisberg <philipp.salvisberg@trivadis.com>
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.utplsql.sqldev.test.runner
17+
18+
import org.junit.AfterClass
19+
import org.junit.BeforeClass
20+
import org.junit.Test
21+
import org.springframework.jdbc.BadSqlGrammarException
22+
import org.springframework.jdbc.datasource.SingleConnectionDataSource
23+
import org.utplsql.sqldev.runner.UtplsqlRunner
24+
import org.utplsql.sqldev.test.AbstractJdbcTest
25+
26+
class UtplsqlRunnerTest extends AbstractJdbcTest {
27+
28+
@BeforeClass
29+
def static void setup() {
30+
jdbcTemplate.execute('''
31+
CREATE OR REPLACE PACKAGE junit_utplsql_test1_pkg is
32+
--%suite(JUnit testing)
33+
--%suitepath(a)
34+
35+
--%context(test context)
36+
37+
--%test(test 1 - OK)
38+
PROCEDURE test_1_ok;
39+
40+
--%test(test 2 - NOK)
41+
PROCEDURE test_2_nok;
42+
43+
--%endcontext
44+
END;
45+
''')
46+
jdbcTemplate.execute('''
47+
CREATE OR REPLACE PACKAGE BODY junit_utplsql_test1_pkg IS
48+
PROCEDURE test_1_ok IS
49+
BEGIN
50+
dbms_session.sleep(1);
51+
ut.expect(1).to_equal(1);
52+
END;
53+
54+
PROCEDURE test_2_nok IS
55+
BEGIN
56+
dbms_session.sleep(2);
57+
ut.expect(1).to_equal(2);
58+
END;
59+
END;
60+
''')
61+
}
62+
63+
@AfterClass
64+
def static void teardown() {
65+
try {
66+
jdbcTemplate.execute("DROP PACKAGE junit_utplsql_test1_pkg")
67+
} catch (BadSqlGrammarException e) {
68+
// ignore
69+
}
70+
}
71+
72+
@Test
73+
def void runSlowTests() {
74+
var ds1 = new SingleConnectionDataSource()
75+
ds1.driverClassName = "oracle.jdbc.OracleDriver"
76+
ds1.url = dataSource.url
77+
ds1.username = dataSource.username
78+
ds1.password = dataSource.password
79+
var ds2 = new SingleConnectionDataSource()
80+
ds2.driverClassName = "oracle.jdbc.OracleDriver"
81+
ds2.url = dataSource.url
82+
ds2.username = dataSource.username
83+
ds2.password = dataSource.password
84+
var runner = new UtplsqlRunner(#[":a"], ds1.connection, ds2.connection)
85+
runner.runAsync
86+
runner.producerThread.join(20000)
87+
runner.consumerThread.join(20000)
88+
runner.dispose
89+
}
90+
91+
}

0 commit comments

Comments
 (0)