<< オープンソースへの貢献のススメ | top | Issue32について(4096の壁) >>

スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク | - | | - | - | - | - |

trunkのライブラリ差し替え(Lucene/Solr3.6.0)とランダムテストの失敗について

久々にlucene-gosenを触っています。
trunkのlibにある、jarファイルが3.5ベースだったので、3.6ベースにしてテストをしたところ、
いくつかある、ランダムテストで結果の不整合が検出されたので、調査していました。
先程、trunkに対応版をコミットしました。もう少しテストケースを追加してからリリースします。
おそらく、通常の使い方では問題無いと思います。

Luceneでは、ランダムな文字列を利用したテストが実装されています。
lucene-gosenでもこのテストを利用してランダムなテストをしています。
実際にはtest/以下のorg.apache.luceneパッケージにテストケースがあります。
今回、jarファイルを差し替えた時に、このランダムなテスト実施にて、assertが失敗するケースが発生しました。

原因究明までに、いくつかフェーズがあったので、忘れないように書いておきます。

1.ランダムテストのテストケースにてエラーがassertが失敗するケースが発生
※ただし、成功する場合もあり。

2.該当のテストを再現しつつデバッグ+該当のテストがどんなものかを解読(勉強不足。。。)
※テストは、失敗した場合につぎのようなメッセージが表示され、同じテストが再現可能です。
以下、エラーの出力例。「NOTE: reproduce with: 」のあとにあるantコマンドを実行すれば、同じテストが再現可能です。
    [junit] ------------- Standard Error -----------------
    [junit] TEST FAIL: useCharFilter=false text='wgxznwk'
    [junit] 
    [junit] ===>
    [junit] Uncaught exception by thread: Thread[Thread-3,5,main]
    [junit] org.junit.ComparisonFailure: term 0 expected: but was:
    [junit] 	at org.junit.Assert.assertEquals(Assert.java:125)
    [junit] 	at org.apache.lucene.analysis.BaseTokenStreamTestCase.assertTokenStreamContents(BaseTokenStreamTestCase.java:146)
    [junit] 	at org.apache.lucene.analysis.BaseTokenStreamTestCase.checkAnalysisConsistency(BaseTokenStreamTestCase.java:565)
    [junit] 	at org.apache.lucene.analysis.BaseTokenStreamTestCase.checkRandomData(BaseTokenStreamTestCase.java:396)
    [junit] 	at org.apache.lucene.analysis.BaseTokenStreamTestCase.access$000(BaseTokenStreamTestCase.java:51)
    [junit] 	at org.apache.lucene.analysis.BaseTokenStreamTestCase$AnalysisThread.run(BaseTokenStreamTestCase.java:337)
    [junit] <===
    [junit] 
    [junit] NOTE: reproduce with: ant test -Dtestcase=TestGosenAnalyzer -Dtestmethod=testReliability -Dtests.seed=4ad9618caecb9fb2:d5476c03b8172df:-9c569f70013ffbb -Dargs="-Dfile.encoding=SJIS"
    [junit] ------------- ---------------- ---------------
    [junit] Testcase: testReliability(org.apache.lucene.analysis.gosen.TestGosenAnalyzer):	Caused an ERROR


3.デバッグの結果、Luceneのtest-frameworkにある「MockReaderWrapper」というクラスの影響を確認
LuceneのJIRAのLUCENE-3894にて追加されたクラスであるとわかる。
このクラス、Readerのreadメソッド内部で、ランダムな値を元に長さを途中で返すという実装のReaderになっている。
(全部で18文字の文字列なのだが、ランダムな値を元に、12文字として結果を一旦返すという仕組みが実装されている)

4.lucene-gosenの問題箇所を特定。
Readerが途切れた部分を分節として扱ってしまう実装になっていた。
該当の部分に修正をいれてコミット。

という具合です。
一応、テストを数回走らせてランダムテストが問題なく終了するのを確認はしてあります。
今回の問題に対する、個別のテストケースを追加してから近日中リリースする予定です。
対応が遅くなって申し訳ないです。。。
johtani | lucene-gosen | 01:29 | comments(0) | trackbacks(0) | - | - |

スポンサーサイト

スポンサードリンク | - | 01:29 | - | - | - | - |
Comment









Trackback
URL:

07
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
PR
RECOMMEND
[改訂新版] Apache Solr入門 ~オープンソース全文検索エンジン (Software Design plus)
[改訂新版] Apache Solr入門 ~オープンソース全文検索エンジン (Software Design plus) (JUGEMレビュー »)
大谷 純,阿部 慎一朗,大須賀 稔,北野 太郎,鈴木 教嗣,平賀 一昭
Solr 4系に対応した改訂版を出しました!興味ある方はぜひ。
RECOMMEND
Apache Solr入門 ―オープンソース全文検索エンジン
Apache Solr入門 ―オープンソース全文検索エンジン (JUGEMレビュー »)
関口 宏司,三部 靖夫,武田 光平,中野 猛,大谷 純
RECOMMEND
RECENT COMMENT
  • ポモドーロ回してます。(ポモドーロテクニック入門読みました)
    おーたに (05/07)
  • Lucene 4.3.0のChangesにあるChanges in backwards compatibility policyが気になったので訳してみた。
    おーたに (04/26)
  • メインMBAをMountain Lionにアップデート(いろいろ確認中)
    おーたに (09/04)
  • メインMBAをMountain Lionにアップデート(いろいろ確認中)
    m_nori (09/03)
  • メインMBAをMountain Lionにアップデート(いろいろ確認中)
    おーたに (09/03)
  • メインMBAをMountain Lionにアップデート(いろいろ確認中)
    ho4kawa (09/03)
  • メインMBAをMountain Lionにアップデート(いろいろ確認中)
    おーたに (09/03)
  • メインMBAをMountain Lionにアップデート(いろいろ確認中)
    まろか (09/03)
  • Lucene/Solr 3.6.0リリース / 「Apache Solr入門」のサンプルのKuromojiとlucene-gosen対応(1章)
    おーたに (08/07)
  • Lucene/Solr 3.6.0リリース / 「Apache Solr入門」のサンプルのKuromojiとlucene-gosen対応(1章)
    moco (08/07)
RECENT TRACKBACK
MOBILE
qrcode
OTHERS