[
https://issues.apache.org/jira/browse/DERBY-2304?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jean T. Anderson updated DERBY-2304:
------------------------------------
Attachment: derby-2304-preview.diff
I'm working on a CallableTest.java to convert derbynet/callable.java to junit.
derby-2304-preview.diff is way incomplete, but I'm looking for feedback on the
overall structure and implementation so far. I summarized issues down below.
So far, CallableTest.java implements just 3 tests (and only runs 2 tests -- see
issue #4 down below).
The code tries to model itself after DatabaseMetaDataTest.java for reducing try
{} clutter, and after ProcedureTest.java for its basic setup, which creates all
the SQL objects up front and doesn't tear them down -- and also enables one of
the tests to run in the client framework (see issue #1). I may have gone
overboard in some cases and misunderstood stuff so please be picky!
I'm reorganizing the original test in the following ways:
- Move it from derbynet to jdbcacpi because I think it should be able to run
under both embedded and client frameworks.
- Carve it up into smaller tests.
- Create more descriptive function/procedure/method/table names like
ProcedureTest.java does; for example, instead of "CREATE FUNCTION method2"
calling "method2" I have "CREATE FUNCTION ONE_IN_ONE_OUT_FUNC" which calls
"OneInOneOutFunc" and the method that tests it is "testOneInOneOutFunc".
I ran into these issues:
1) derbynet/callable.java
Line 92 of the original test comments out the cleanup:
// stmt.execute("DROP FUNCTION method2");
I discovered that this DROP statement works fine in embedded, but raises this
exception in the client:
'DROP ROUTINE' cannot be performed on object 'ONE_IN_INE_OUT_FUNC' because
there is an open resultSet dependent on that object."
Does this error ring a bell with anyone?
ProcedureTest.java sets up everything at the start and there is no teardown, so
that's the approach I adopted with CallableTest.java. That approach enables
this test to run without error (the error did occur with my first attempt that
implemented create/drops in setup() and tearDown() methods). But I'm
uncomfortable about masking the DROP error, wonder if the current strategy will
be solid for all test scenarios.
2) Because of the client problem in #1 I initially set up baseSuite() to not
run that test in client; however, I discovered that usingEmbedded() is always
true, so I did a "Hack!" doing a string compare on embedded / client. Is this
the wrong place to exclude the run of a specific test for a given framework?
3) I created a local assertEquals(byte[] b1, byte[] b2) for the byte comparison
in testUpdateLongBinaryProc() . Is there already a way to get support for byte
comparisons? I didn't spot any. If not, is this something I should move to
BaseJDBCTestCase.java (and also completely implement)?
4) testBigDecimalInAndOutParameters() doesn't get called yet -- I need to spin
up on how to do assertEquals with BigDecimal.
For example, this assert:
assertEquals("OUT 2", new BigDecimal(33.3330), cs.getBigDecimal(2));
generates this:
OUT 2 expected:<33.33299999999999999840838> but was:<33.3330>
I'll probably start a thread on derby-dev to ask about the original objectives
of that test. I grew a little puzzled looking at it.
> Convert derbynet/callable.java to junit
> ---------------------------------------
>
> Key: DERBY-2304
> URL: https://issues.apache.org/jira/browse/DERBY-2304
> Project: Derby
> Issue Type: Improvement
> Components: Test
> Reporter: Jean T. Anderson
> Assigned To: Jean T. Anderson
> Priority: Minor
> Attachments: derby-2304-preview.diff
>
>
> Convert the derbynet.callable.java test to the junit framework.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.