Ukigumo-Server [master](75e6483782) SUCCESS
Compare: https://github.com/ukigumo/Ukigumo-Server/compare/8b413eefb105...75e64837829e
Elapsed Time: 29 sec
- 75e6483 moznion: Checking in changes prior to tagging of version v2.1.3.
_ [2014-04-30 15:46] [master] ukigumo-client 0.30 _ [2014-04-30 15:46] [master] start testing : https://github.com/ukigumo/Ukigumo-Server master _ [2014-04-30 15:46] [master] working directory : /tmp/Ukigumo-Server/master _ [2014-04-30 15:46] [master] run vc : Ukigumo::Client::VC::Git _ [2014-04-30 15:46] [master] workdir is /tmp/Ukigumo-Server/master _ [2014-04-30 15:46] [master] command: git pull -f origin master _ From https://github.com/ukigumo/Ukigumo-Server _ * branch master -> FETCH_HEAD _ 8b413ee..75e6483 master -> origin/master _ Updating 8b413ee..75e6483 _ Fast-forward _ Changes | 8 ++++++++ _ META.json | 5 +++-- _ lib/Ukigumo/Server.pm | 2 +- _ share/po/ja.po | 26 +++++++++++++------------- _ 4 files changed, 25 insertions(+), 16 deletions(-) _ [2014-04-30 15:46] [master] command: git submodule init _ [2014-04-30 15:46] [master] command: git submodule update _ [2014-04-30 15:46] [master] command: git clean -dxf _ Removing extlib _ [2014-04-30 15:46] [master] command: git status _ # On branch master _ nothing to commit, working directory clean _ [2014-04-30 15:46] [master] [before_install] cpanm -L $HOME/.ukigumo/ukigumo-server/extlib --installdeps --with-develop -n . _ [2014-04-30 15:46] [master] [install] ln -s $HOME/.ukigumo/ukigumo-server/extlib ./extlib _ [2014-04-30 15:46] [master] run executor : Ukigumo::Client::Executor::Command _ [2014-04-30 15:46] [master] command: prove -lrv -Iextlib/lib/perl5 t _ _ [15:46:51] ==> t/00_compile.t <====== _ _ ✓ use Ukigumo::Server; _ ✓ use Ukigumo::Server::Web; _ ✓ use Ukigumo::Server::Web::Dispatcher; _ ✓ use Ukigumo::Server::Command::Docs; _ _ ok _ ok 1443 ms _ _ [15:46:53] ==> t/01_root.t <========= _ _ ✓ L15: is $res->code, 200; _ _ ok _ ok 706 ms _ _ [15:46:54] ==> t/02_mech.t <========= _ _ ✓ GET / _ _ ok _ ok 535 ms _ _ [15:46:54] ==> t/03-branch.t <======= _ _ exist _ ✓ L25: is($res->code, 200); _ not found _ ✓ L30: is($res->code, 404); _ _ ok _ ok 464 ms _ _ [15:46:55] ==> t/03-compression.t <== _ _ compress large data _ ✓ L27: isnt $row->{body}, 'body' x 100; _ ✓ L28: isnt $row->{vc_log}, 'vc_log' x 100; _ ✓ L31: is $report->{body}, 'body' x 100; _ ✓ L32: is $report->{vc_log}, 'vc_log' x 100; _ ✓ L33: ok utf8::is_utf8($report->{body}); _ ✓ L34: ok utf8::is_utf8($report->{vc_log}); _ not compress small data _ ✓ L49: is $row->{body}, 'body あいやー'; _ ✓ L50: is $row->{vc_log}, 'vc_log そいやー'; _ ✓ L53: is $report->{body}, 'body あいやー'; _ ✓ L54: is $report->{vc_log}, 'vc_log そいやー'; _ ✓ L55: ok utf8::is_utf8($report->{body}); _ ✓ L56: ok utf8::is_utf8($report->{vc_log}); _ enable_compression option is false _ ✓ L71: is $row->{body}, 'body' x 100; _ ✓ L72: is $row->{vc_log}, 'vc_log' x 100; _ ✓ L75: is $report->{body}, 'body' x 100; _ ✓ L76: is $report->{vc_log}, 'vc_log' x 100; _ ✓ L77: ok utf8::is_utf8($report->{body}); _ ✓ L78: ok utf8::is_utf8($report->{vc_log}); _ multibytes _ ✓ L93: isnt $row->{body}, 'あいやー' x 100; _ ✓ L94: isnt $row->{vc_log}, 'そいやー' x 100; _ ✓ L97: is $report->{body}, 'あいやー' x 100; _ ✓ L98: is $report->{vc_log}, 'そいやー' x 100; _ ✓ L99: ok utf8::is_utf8($report->{body}); _ ✓ L100: ok utf8::is_utf8($report->{vc_log}); _ with no warnings of Encode.pm _ ✓ L119: ok !$warned; _ _ ok _ ok 344 ms _ _ [15:46:55] ==> t/04-report.t <======= _ _ raw _ exist _ ✓ L27: is($res->code, 200); _ not found _ ✓ L32: is($res->code, 404); _ compressed _ exist _ ✓ L50: is($res->code, 200); _ not found _ ✓ L55: is($res->code, 404); _ _ ok _ ok 405 ms _ _ [15:46:55] ==> t/05-api-post.t <===== _ _ no body _ ✓ L33: ok($res->is_success) or die $res->status_line; _ on body _ ✓ L49: ok($res->is_success) or die $res->status_line; _ ✓ L52: is($c->dbh->selectrow_array(q{SELECT COUNT(*) FROM report WHERE body="OKXXX"}), 1); _ _ ok _ ok 384 ms _ _ [15:46:56] ==> t/06-api-search.t <=== _ _ zero report _ ✓ L27: ok($res->is_success) or die $res->status_line; _ ✓ L29: is_deeply($dat, { reports => [] }) or diag(Dumper $dat); _ one report _ ✓ L44: ok($res->is_success) or die $res->status_line; _ ✓ L46: is(ref $dat->{reports}, 'ARRAY') or BAIL_OUT; _ ✓ L47: is(0+@{$dat->{reports}}, 1) or BAIL_OUT; _ ✓ L48: is(join(',', sort keys(%{$dat->{reports}->[0]})), 'ctime,report_id,status') or BAIL_OUT; _ ✓ L49: like($dat->{reports}->[0]->{ctime}, qr/^[0-9]+$/) or BAIL_OUT; _ _ ok _ ok 353 ms _ _ [15:46:56] ==> t/07-mysqld.t <======= _ _ ✓ L33: is($branch_num, 1); _ ✓ L35: is($report_num, 1); _ ✓ L40: is($dat->{body}, 'いやいや'); _ ✓ L42: ok($branch_id); _ ✓ L49: is($branch_num, 0); _ ✓ report was deleted _ _ ok _ ok 6540 ms _ _ [15:47:03] ==> t/Command/Report.t <== _ _ remove old report _ ✓ deleted by max_num_of_reports_by_branch _ ✓ L31: ok +Ukigumo::Server::Command::Report->find(report_id => $reports_1->[1]); _ ✓ L32: ok +Ukigumo::Server::Command::Report->find(report_id => $reports_1->[2]); _ ✓ L33: ok +Ukigumo::Server::Command::Report->find(report_id => $reports_1->[3]); _ ✓ deleted by max_num_of_reports_by_branch _ ✓ L46: ok +Ukigumo::Server::Command::Report->find(report_id => $reports_2->[1]); _ ✓ L47: ok +Ukigumo::Server::Command::Report->find(report_id => $reports_2->[2]); _ ✓ L48: ok +Ukigumo::Server::Command::Report->find(report_id => $reports_2->[3]); _ ✓ deleted by max_num_of_reports _ ✓ L51: ok +Ukigumo::Server::Command::Report->find(report_id => $reports_1->[2]); _ ✓ L52: ok +Ukigumo::Server::Command::Report->find(report_id => $reports_1->[3]); _ _ ok _ ok 364 ms _ _ [15:47:03] ==> t/Util.t <============ _ _ ✓ L18: like(Ukigumo::Server::Util::make_line_link($code), qr{$re}); _ _ ok _ ok 70 ms _ _ [15:47:03] ==> t/api-post.t <======== _ _ add report _ basic _ ✓ L31: is $res->code, 200; _ # {"report":{"url":"http://localhost/report/1","report_id":1,"last_status":null}} _ ✓ L35: like $report_id, qr{^[0-9]+$}; _ ✓ L36: like $dat->{report}->{url}, qr{^http://}; _ ✓ L37: is $dat->{report}->{last_status}, undef; _ ✓ L40: is $got->body, '....'; _ get ok _ ✓ http://localhost/report/1 _ not found _ ✓ http://localhost/report/9999999999 _ got last status successfully _ ✓ L65: is $res->code, 200; _ # {"report":{"url":"http://localhost/report/2","report_id":2,"last_status":1}} _ ✓ L68: is $dat->{report}->{last_status}, 1; _ with uploaded body _ ✓ L87: is $res->code, 200; _ # {"report":{"url":"http://localhost/report/3","report_id":3,"last_status":2}} _ ✓ L96: is $got->body, $expected_body; _ validation error _ ✓ L108: is $res->code, 400; _ # {"error":{"message":"Missing parameter: 'project'"}} _ ✓ L111: like $dat->{error}->{message}, qr{Missing parameter: 'project'}; _ api list _ ✓ L119: is $res->code, 200; _ # {"reports":[{"ctime":1398840424,"status":1,"report_id":3},{"ctime":1398840423,"status":2,"report_id":2},{"ctime":1398840423,"status":1,"report_id":1}]} _ ✓ L123: is_deeply $dat, _ api branch list _ ✓ L146: is $res->code, 200; _ # {"branches":[{"ctime":1398840424,"elapsed_time_sec":null,"revision":"3","project":"TestingProject","status":1,"branch":"master","report_id":3}]} _ ✓ L149: is ref($dat->{branches}), 'ARRAY'; _ ✓ L150: is 0+@{$dat->{branches}}, 1; _ ✓ L151: is $dat->{branches}->[0]->{branch}, 'master'; _ api branch delete _ ✓ L158: is $res->code, 200; _ # {} _ ✓ L161: is_deeply $dat, +{ }; _ api branch list _ ✓ L168: is $res->code, 200; _ # {"branches":[]} _ ✓ L171: is ref($dat->{branches}), 'ARRAY'; _ ✓ removed _ _ ok _ ok 522 ms _ _ [15:47:04] ==> t/docs.t <============ _ _ ✓ L11: like $html, qr{<h1>}; _ ✓ L12: like $html, qr{<pre class="prettyprint">}; _ # <h1>About Ukigumo server</h1> _ # _ # <p>Ukigumo server is a yet another minimalistic "Continious testing server".</p> _ # _ # <p>Ukigumo server is a:</p> _ # _ # <ul> _ # <li>storage of the continious testing result</li> _ # <li>provides JSON APIs</li> _ # <li>beautifule views</li> _ # <li>simply setup</li> _ # <li>supports dotcloud</li> _ # </ul> _ # _ # <p>Ukigumo server is <em>not</em> a:</p> _ # _ # <ul> _ # <li>test runner</li> _ # <li>beautiful views</li> _ # </ul> _ # _ # <p>You can send a test results to Ukigumo server. Ukigumo server stores the result, and display it. _ # (Ukigumo server find_or_create's 'project', 'branch' automatically.)</p> _ # _ # <h2>Client code</h2> _ # _ # <p>This is a example code of Ukigumo client code. You can run the code by cron(1). The client code have few deps. very easy.</p> _ # _ # <p>You can add a notification on the bottom of client code. I notify to Ikachan server on working.</p> _ # _ # <pre class="prettyprint"><code>#!/usr/bin/perl _ # use strict; _ # use warnings; _ # use utf8; _ # use Capture::Tiny qw(tee_merged); _ # use LWP::UserAgent; _ # _ # my $UKIGUMO_SERVER = 'http://localhost:9052'; _ # _ # my $failed = 0; _ # sub run { _ # system(@_)==0 or die "FAIL: @_"; _ # } _ # _ # my $body = tee_merged { _ # eval { _ # run("git pull"); _ # run("git status"); _ # run("perl Makefile.PL"); _ # run("make test"); _ # }; _ # if ($@) { _ # $failed++; _ # warn $@; _ # } _ # }; _ # _ # my $revision = substr( `git rev-parse HEAD`, 0, 10 ) || 'Unknown'; _ # my $branch = `git branch|grep '^*'`; _ # $branch =~ s/^\* //; _ # $branch =~ s/\s*$//; _ # my $repository = `git remote -v | head -1| awk '{print \$2}'`; _ # $repository =~ s/\n//; _ # _ # print "'$revision', '$repository', '$branch'\n"; _ # _ # my $ua = LWP::UserAgent->new(); _ # my $res = $ua->post( _ # "$UKIGUMO_SERVER/api/v1/report/add", _ # [ _ # status => $failed ? 2 : 1, # status code: SUCCESS:1, FAIL:2, N/A:3 _ # project => 'MyProj', # project name _ # branch => $branch, # branch name _ # revision => $revision, _ # repo => $repository, _ # ] _ # ); _ # $res->is_success or die $res->as_string; _ # _ # # and you can send a report to the developers. _ # # by ikachan, im.kayac.com, mail, etc. _ # </code></pre> _ _ ok _ ok 182 ms _ _ [15:47:04] ==> t/jshint.t <========== _ _ 1..0 # SKIP Test requires module 'Text::SimpleTable' but it's not found _ skipped: Test requires module 'Text::SimpleTable' but it's not found _ _ [15:47:04] ==> t/rss.t <============= _ _ ✓ L15: is $res->code, 200; _ ✓ RSS _ _ ok _ ok 347 ms _ _ [15:47:04] ==> t/sqlite.t <========== _ _ ✓ L22: is($branch_num, 1); _ ✓ L24: is($report_num, 1); _ ✓ L29: is($dat->{body}, 'いやいや'); _ ✓ L31: ok($branch_id); _ ✓ L38: is($branch_num, 0); _ ✓ report was deleted _ _ ok _ ok 307 ms _ [15:47:05] _ All tests successful. _ Files=16, Tests=15, 14 wallclock secs ( 0.10 usr 0.04 sys + 4.10 cusr 0.78 csys = 5.02 CPU) _ Result: PASS _ [2014-04-30 15:47] [master] finished testing : 1