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 idea. 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 https://issues.apache.org/jira/browse/DERBY-5155 https://issues.apache.org/jira/browse/DERBY-4260 https://issues.apache.org/jira/browse/DERBY-4443 https://issues.apache.org/jira/browse/DERBY-5155 [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
