C++test 結果表示時のエラー

628 views
Skip to first unread message

takeiti

unread,
May 12, 2011, 4:28:41 AM5/12/11
to 日本Jenkinsユーザー会

お世話になっております。takeitiと申します。
こういった場を利用させていただくのは初めてなため、失礼がありましたら申し訳ございません。

現在JenkinsにてC++testの実行を自動化させようとしているのですが、2点の問題に直面しており、非常に困っております。
ご助言頂けましたら幸いです。

まず1点目、標記の件になります。
『Hudson Cpptest plugin』を導入し、[ジョブの設定画面>ビルド後の処理>Publish Cpptest analysis
results] にチェックを入れて保存したところ、『Status Code: 500』と表示されました。

------------------------------------------------------------
以下、エラーメッセージです。

java.lang.NoSuchMethodError:
hudson.plugins.analysis.core.HealthAwarePublisher.(Ljava/lang/
String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/
lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/
String;ZLjava/lang/String;)V
at hudson.plugins.cpptest.CpptestPublisher.(CpptestPublisher.java:74)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.kohsuke.stapler.RequestImpl.invokeConstructor(RequestImpl.java:
419)
at org.kohsuke.stapler.RequestImpl.access$300(RequestImpl.java:75)
at org.kohsuke.stapler.RequestImpl
$TypePair.convertJSON(RequestImpl.java:626)
at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:372)
at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:368)
at hudson.model.Descriptor.newInstance(Descriptor.java:534)
at hudson.util.DescribableList.rebuild(DescribableList.java:155)
at hudson.model.Project.submit(Project.java:198)
at hudson.model.Job.doConfigSubmit(Job.java:970)
at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:
631)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:
282)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:149)
at
org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:
88)
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:103)
at
org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:
53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:561)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:646)
at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:233)
at
org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:
53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:561)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:646)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:477)
at org.kohsuke.stapler.Stapler.service(Stapler.java:159)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
at winstone.ServletConfiguration.execute(ServletConfiguration.java:
249)
at winstone.RequestDispatcher.forward(RequestDispatcher.java:335)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:378)
at hudson.util.PluginServletFilter
$1.doFilter(PluginServletFilter.java:94)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:
86)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
at hudson.security.ChainedServletFilter
$1.doFilter(ChainedServletFilter.java:84)
at
hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:
76)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
at
hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:
81)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
at
winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:
244)
at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
at java.lang.Thread.run(Unknown Source)

------------------------------------------------------------

使用している環境は以下のものです。

 Jenkins 1.411
 Hudson Cpptest plugin 0.8

同プラグインの Open Issues にも同様の問題が挙げられていましたが、解決はしていない模様でした。
上記、解決の方法はあるのでしょうか。



2点目、同様にビルド後の処理についてです。
今度は [Publish testing tools result report] にチェックを入れ、[CppTest-7.x] を選択し、
ジョブを実行したところ、コンソールに以下のような出力がなされました。

------------------------------------------------------------

[xUnit] [INFO] - Starting to record.
[xUnit] [INFO] - Processing CppTest-7.x
[xUnit] [WARNING] - Can't create the path C:\Program Files\Jenkins\jobs
\cpptest_ATM\workspace\generatedJUnitFiles. Maybe the directory
already exists.
[xUnit] [INFO] - [CppTest-7.x] - 1 test report file(s) were found with
the pattern 'report/Example Configuration/result.xml' relative to 'C:
\Program Files\Jenkins\jobs\cpptest_ATM\workspace' for the testing
framework 'CppTest-7.x'.
[xUnit] [ERROR] - The converted file for the result file 'C:\Program
Files\Jenkins\jobs\cpptest_ATM\workspace\report\Example Configuration
\result.xml' (during conversion process for the metric 'CppTest-7.x')
is not valid. The report file has been skipped.
[xUnit] [INFO] - Stopping recording.
Finished: FAILURE

------------------------------------------------------------

こちらはxmlファイルのフォーマットがサポートされたものではないということなのでしょうが、指定しているファイルはC++testが出力したもので
何ら人手は入っておりません。
尚、使用しているC++testはver7.3で、レポートのタイプを [CppTest-7.3(デフォルト)] にしても結果は同じでした。


以上、何卒よろしくお願いいたします。

K96

unread,
May 12, 2011, 7:35:20 AM5/12/11
to 日本Jenkinsユーザー会
こんばんは.K96 です(仮名ですいません).

Parasoft C++test はうちでも使っていて,わたしも多少調べていました.
以下,現在公開されている Cpptest plugin v0.8 の調査結果です.
100% 確信があるわけではないけど…

・Cpptest plugin は親(依存)プラグインが2つあってややこしい
・analysis-core plugin ~ これは静的解析レポート用
・xUnit pluign ~ これはユニットテストレポート用

1.Publish Cpptest analysis results

これは C++test の静的解析レポート結果用ですが,最近の Jenkins では古くてまったく動きません.
・主原因: analysis-core の特に config.jelly が結構頻繁に変更されているため
・対策: Cpptest plugin の修正が必要(※1)

2. Publish testing tools result report

これは C++test のユニットテストレポート用.

[CppTest-7.x] これは Cpptest plugin がサポート(たぶん)
[CppTest-7.3(デフォルト)] これは xUnit plugin がサポート(たぶん)

いずれも以下の致命バグあり.
・「テストケース数]扱いが悪い.特に全テストが成功するとテスト数=0
でエラーになっていまう!

★なおこのバグは(たしか昨日公開された)xUnit plugin v1.17 では修正されているようです.ざっとですが動作確認済み.

-----
※1 細かいことを除けば,修正自体はまったく簡単です.
トライされてみるなら修正方法を教えます.

当然うちで修正したものはあるのですが,会社で修正してしまったので
ソースの公開手続きがとっても面倒で…

C++test の代理店はテクマトリックスでしょうか?
その方面からつついてみようかとも思っています.

とりあえず以上です.参考になれば幸いです.

三柴喜悠

unread,
May 12, 2011, 8:34:57 AM5/12/11
to jenkin...@googlegroups.com

K96さん

こんな詳細に書いてくださり本当にありがとうございます!
サポート元が2系統あるんですね。
確かにこれはややこしい。

今はもう帰路についてしまったので、明日出社次第確認させていただきたいと思います。

代理店は仰るとおりテクマトリックスです。
私もそちらで少々アドバイス頂こうかと思います。

 

K96

unread,
May 14, 2011, 10:08:16 AM5/14/11
to 日本Jenkinsユーザー会
とりあえず頼んで関連ページを追加してもらいました.

@see https://wiki.jenkins-ci.org/display/JENKINS/Cpptest+Request

他の方も含めて応援してやってください.
英語が苦手な方は +1 とか +100 とかコメントするだけで応援になります.

ではまた.

takeiti

unread,
May 23, 2011, 2:04:56 AM5/23/11
to jenkin...@googlegroups.com
1つ情報が入りましたので共有させていただきます。

> いずれも以下の致命バグあり.
> ・「テストケース数]扱いが悪い.特に全テストが成功するとテスト数=0
> でエラーになっていまう!

こちらの件につきましてはC++testの設定によるもののようです。
メニュー>[C++test]>[設定]>[C++test]>[レポート]にある「チェックされたファイルおよび実行されたテストの概要」にチェックを入れると正しい件数が表示されました。

以上、ご確認頂ければ幸いです。

--
View this message in context: http://jenkins.361315.n4.nabble.com/jenkinsci-ja-148-C-test-tp3516751p3543274.html
Sent from the Jenkins ja mailing list archive at Nabble.com.

K96

unread,
May 26, 2011, 8:31:55 AM5/26/11
to jenkin...@googlegroups.com
こんばんは.情報ありがとうございます.

ただちゃんと調べたわけではないですが, Cpptest プラグインはちゃんとテスト数を数えているのですが,
その出力のしかた(Jenkins 組み込みの JUnit 形式レポートへの変換)が間違っている気がしました.

・Cpptest は集計結果を示す1つのxml要素の属性でテスト数を直接出力しているが
・Jenkins/JUnit のほうは,各テストケースを示すxml要素の数を数えている?
・xUnit plugin v1.17 ではこの形に C++test レポートを変換するようになったみたい

C++test はテスト実行やレポート出力にオプションがいっぱいあるようで,いろいろ混乱しますよね…

ではまた.

takeiti wrote:
>
> 1つ情報が入りましたので共有させていただきます。
>
>> いずれも以下の致命バグあり.
>> ・「テストケース数]扱いが悪い.特に全テストが成功するとテスト数=0
>> でエラーになっていまう!
>
> こちらの件につきましてはC++testの設定によるもののようです。
> メニュー>[C++test]>[設定]>[C++test]>[レポート]にある「チェックされたファイルおよび実行されたテストの概要」にチェックを入れると正しい件数が表示されました。
>
> 以上、ご確認頂ければ幸いです。
>


--
View this message in context: http://jenkins.361315.n4.nabble.com/jenkinsci-ja-148-C-test-tp3516751p3552421.html

K96

unread,
May 26, 2011, 8:49:27 AM5/26/11
to jenkin...@googlegroups.com
こんばんは.情報ありがとうございます.

ただちゃんと調べたわけではないですが, Cpptest プラグインはちゃんとテスト数を数えているのですが,
その出力のしかた(Jenkins 組み込みの JUnit 形式レポートへの変換)が間違っている気がしました.

・Cpptest は集計結果を示す1つのxml要素の属性でテスト数を直接出力しているが
・Jenkins/JUnit のほうは,各テストケースを示すxml要素の数を数えている?
・xUnit plugin v1.17 ではこの形に C++test レポートを変換するようになったみたい

C++test はテスト実行やレポート出力にオプションがいっぱいあるようで,いろいろ混乱しますよね…

ではまた.

takeiti wrote:
>
> 1つ情報が入りましたので共有させていただきます。
>
>> いずれも以下の致命バグあり.
>> ・「テストケース数]扱いが悪い.特に全テストが成功するとテスト数=0
>> でエラーになっていまう!
>
> こちらの件につきましてはC++testの設定によるもののようです。
> メニュー>[C++test]>[設定]>[C++test]>[レポート]にある「チェックされたファイルおよび実行されたテストの概要」にチェックを入れると正しい件数が表示されました。
>
> 以上、ご確認頂ければ幸いです。
>


--
View this message in context: http://jenkins.361315.n4.nabble.com/jenkinsci-ja-148-C-test-tp3516751p3552476.html

K96

unread,
May 31, 2011, 8:17:17 AM5/31/11
to jenkin...@googlegroups.com
こんばんは.

ご存知と思いますが,Cpptest plugin v0.09 がリリースされています.
さきほど(5/31 夕 JST?) より http://your-jenkins/updateCenter
からのアップデートも可能になっていると思います.

https://wiki.jenkins-ci.org/display/JENKINS/Cpptest+Plugin

お急ぎの方は動作チェックしてみてください.
# わたしはちょっと忙しくて,今週中は手を出せそうにありません…
ではまた.

K96

--
View this message in context: http://jenkins.361315.n4.nabble.com/jenkinsci-ja-148-C-test-tp3516751p3562927.html
Reply all
Reply to author
Forward
0 new messages