db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Houx Zhang <houx.zh...@gmail.com>
Subject [GSOC IDEA] Derby Test and Fix
Date Thu, 07 Apr 2011 17:58:06 GMT
Hi, all. I would like to apply for this GSOC on Derby and hope to get your
advice on my proposal. Thanks!

What have I done on Derby?
I have joined Derby on March 3. In the past month, I have set up my building
and testing environment for Derby by the instructions in wiki, read the
source code and created and assigned some issues on JIRA[1]. I have provided
some patches for them, some of which have been commited to the Deryby
repository, and some others are in discussion. In my work on Derby, I have
received great help from other developers the mailing list and JIRA, such as
Kathey, Myrna, Bryan, Knut..... Sometimes I actively launched a discussion
in mailing list, for example, "how to deal with test failure in Chinese
locale" and created  issues related, which is also one source of my GSOC

What will I do this GSOC?

My Task can be divided into 3 parts, and milestones are given accordingly:

1.Make testcases pass in non-English locale(April 20 to June 10)
As descripted in [2], there are a lot of derby testing depending on the
English locale, which will fail in a non-English locale. There is a admitted
way to resolve this problem. Firstly, find the junit test cases that fails
in non-English locale. For each of them, if it fails just because the
content of message is different from expected, a assertion based on SQLState
will be adopted; otherwise, a hard-code locale will be used. If we find a
test fails in non-English locale not caused by locale itself, then we
discover a good usage scenario.

I have basicly finished the first step "find the junit test cases that fails
in non-English locale". When running test cases in Chinese Locale, I have
got dozes of failure. Afeter checking the output, I make sure most of them
are caused by non-English Locale environment. They concentrate in the two
packages----org.apache.derbyTesting.functionTests.tests.tools and
org.apache.derbyTesting.functionTests.tests.lang, and each test classes may
throw more than 5 exceptions. They are ImportExportIJTest,
SysinfoCPCheckTest in org.apache.derbyTesting.functionTests.tests.tools, and
DynamicLikeOptimizationTest, GrantRevokeTest, InbetweenTest, JoinTest,
LangScripts, StalePlansTest, DistinctTest, GroupByTest, ForUpdateTest,
ScrollCursors1Test, ErrorCodeTest, TableFunctionTest, PredicatePushdownTest,
XplainStatisticsTest, XplainStatisticsTest, XplainStatisticsTest,
NistScripts(has dozes of failure), LangHarnessJavaTest,
OrderByAndSortAvoidance, OptimizerOverridesTest, OffsetFetchNextTest,
OrderByAndOffsetFetchInSubqueries in
org.apache.derbyTesting.functionTests.tests.lang. I plan to make the 24 test
classes pass in non-English locale. The resolution is just mentioned above
"if it fails just because the content of message is different from expected,
a assertion based on SQLState will be adopted; otherwise, a hard-code locale
will be used."

Though these subtasks are very similar, and not so hard, considering I'm not
so free before summer holiday, 7 weeks are planned for them, 3-4 per week.
Serial of patches will be given, each for one test class, and each is in a
separate issue.

2.Convert remaining store SQL tests into JUnit tests(June 11 to July 25)
In the package , some sql scripts need to be converted into JUnit. They are
RowLockBasic.sql, TableLockBasic.sql, longColumn.sql, updatelocksJDBC30.sql,
and updatelocks.sql. ScriptTestCase is not so suitable for the new test
cases, it will be better to re-write the test by hand using standard JDBC
calls and the utility methods and decorators available[3].

Each of the five converting is not a easy work, so 7 weeks is planned for
these tasks. Issues will be created for each of them.

3.Converting ij[1-4].sqls to ScripTestCase (July 26-August 15)
In the package org.apache.derbyTesting.functionTests.tests.tools, there are
ij.sql, ij1,sql, ij2.sql, ij3.sql, ij4.sql, ij5.sql, ij6.sql and ij7.sql,
which are very suitable to converted to JUnit by extending ScripTestCase[4].

Considering my experience on converting IJConnectionName.sql, the work is
not so easy. So 3 weeks is planned for it, and I just choose 4 of them to
realise. If time is OK, I will certainly try to do more.

[1] https://issues.apache.org/jira/browse/DERBY-5084
[2] https://issues.apache.org/jira/browse/DERBY-5155
[3] http://wiki.apache.org/db-derby/KillDerbyTestHarness
[4] http://wiki.apache.org/db-derby/ConvertSqlScriptTestsToJunit

Houx Zhang

View raw message