24
Smolder - @JEEN_LEE ( silex ) 2011년 5월 24일 화요일

Smolder @Silex

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Smolder @Silex

Smolder

- @JEEN_LEE ( silex )

2011년 5월 24일 화요일

Page 2: Smolder @Silex

ALL OF YOUR TEST RESULTS ARE BELONG TO SMOLDER.

2011년 5월 24일 화요일

Page 3: Smolder @Silex

Smolder• Web-based Continuous Integration

Smoke Server

• Reporting Format - TAP

• Test Anything Protocol

• Multiple Notification Channels

• Email / ATOM

•Perl (Customizable?)2011년 5월 24일 화요일

Page 4: Smolder @Silex

Built With...

• CGI::Application

• Template Toolkit2

• SQLite | MySQL

• Prototype.js

2011년 5월 24일 화요일

Page 5: Smolder @Silex

Installation

• $ cpanm Smolder

• $ git clone git://github.com/mpeters/smolder.git

• $ perl Makefile.PL && make test && make install

2011년 5월 24일 화요일

Page 6: Smolder @Silex

Run on Plack

• CGI::Application::Emulate::PSGI

• @kazuho++

• http://d.hatena.ne.jp/tokuhirom/20100111/1263224765

• @tokuhirom++

2011년 5월 24일 화요일

Page 7: Smolder @Silex

Usage

•Write some test codes

2011년 5월 24일 화요일

Page 8: Smolder @Silex

use Test::More tests => 7;BEGIN { use_ok("Yuni");}

my $guy = Yuni->new;ok($guy->has_hairs, "... Actually, some hairs...");is($guy->is_solo, 1, "Don't you know that?");isnt($guy->is_married, "huh?");

like($guy->age, qr/^3[0-9]$/, "30s");

SKIP: { skip "is this Confirmized?", 1; ok($guy->part_from_austin, "OTL");};

TODO: { local $TODO = "My Hairs!!!"; ok($guy->restore_hairs, "Chaebol?");};

done_testing();

t/002_hairless.t

2011년 5월 24일 화요일

Page 9: Smolder @Silex

t/003_30-solo-ceo.t

2011년 5월 24일 화요일

Page 10: Smolder @Silex

Run Tests!

2011년 5월 24일 화요일

Page 11: Smolder @Silex

$ prove -Ilib t/*.t --archive tap-archive.tar.gzt/001_requires.t .. skipped: Test requires module 'Yuni::Hair' but it's not foundt/002_hairless.t .. ok All tests successful.Files=2, Tests=7, 1 wallclock secs ( 0.04 usr 0.01 sys + 1.14 cusr 0.08 csys = 1.27 CPU)Result: PASS

TAP Archive created at /Users/jeen/Office/seminar-test/tap-archive.tar.gz

Run Tests!

2011년 5월 24일 화요일

Page 12: Smolder @Silex

TAP Archive?

$ tree.├── meta.yml└── t ├── 001_requires.t └── 002_hairless.t

1 directory, 3 files

$ cat meta.yml ---file_attributes: - description: t/001_requires.t end_time: 1306210679.30879 start_time: 1306210678.7085 - description: t/002_hairless.t end_time: 1306210679.9355 start_time: 1306210679.32536file_order: - t/001_requires.t - t/002_hairless.tstart_time: 1306210678stop_time: 1306210679

2011년 5월 24일 화요일

Page 13: Smolder @Silex

TAP Archive?

$ tree.├── meta.yml└── t ├── 001_requires.t └── 002_hairless.t

1 directory, 3 files

$ cat t/002_requires.t1..7ok 1 - use Yuni;ok 2 - ... Actually, some hairs...ok 3 - Don't you know that?ok 4ok 5 - 30sok 6 # skip is this Confirmized?not ok 7 - Chaebol? # TODO My Hairs!!!

# Failed (TODO) test 'Chaebol?'# at t/002_hairless.t line 20.

2011년 5월 24일 화요일

Page 14: Smolder @Silex

$ smolder_smoke_signal --server smolder.silex.kr --port 80 \--username jeen --password [dkfdktjanjgo?] \--file result-arch.tar.gz --project Blahblah \--architecture [ARCH] --platform [PLAT]

Uploading to Smolder

2011년 5월 24일 화요일

Page 15: Smolder @Silex

LWP::UserAgent->new()->post( 'http://smolder.project.org/app/developer_projects/add_report/$project_id', Content_Type => 'form-data', Content => [ architecture => '386', platform => 'Linux', comments => $comments, username => 'my-user', password => 's3cr3t', report_file => ['tap_archive.tar.gz'], ] );

* write uploading code ( + comments, architecture, platform )

2011년 5월 24일 화요일

Page 16: Smolder @Silex

Recent Reports2011년 5월 24일 화요일

Page 17: Smolder @Silex

Report Details2011년 5월 24일 화요일

Page 18: Smolder @Silex

Progress Graphs

2011년 5월 24일 화요일

Page 19: Smolder @Silex

$ git diff Graphs.pmdiff --git a/lib/Smolder/Control/Graphs.pm b/lib/Smolder/Control/Graphs.pmindex c41dbe9..e97abb8 100644--- a/lib/Smolder/Control/Graphs.pm+++ b/lib/Smolder/Control/Graphs.pm@@ -162,7 +162,7 @@ sub image { open($NO_DATA_FH, '<', $file) or die "Could not open '$file' for reading: $!"; local $/ = undef;- print <$NO_DATA_FH>;+ <$NO_DATA_FH>; close($NO_DATA_FH) or die "Could not close file '$file': $!"; } else { @@ -181,7 +181,7 @@ sub image { legend => \@legend, title => $title, );- print $gd->png;+ $gd->png; } }

WTF?

2011년 5월 24일 화요일

Page 20: Smolder @Silex

DEMO

2011년 5월 24일 화요일

Page 21: Smolder @Silex

QA

2011년 5월 24일 화요일

Page 22: Smolder @Silex

QA++

2011년 5월 24일 화요일

Page 23: Smolder @Silex

Q/A

2011년 5월 24일 화요일

Page 24: Smolder @Silex

THX

2011년 5월 24일 화요일