SlideShare a Scribd company logo
1 of 24
Download to read offline
Smolder


                   - @JEEN_LEE ( silex )
ALL OF YOUR TEST RESULTS ARE BELONG
                           TO SMOLDER.
Smolder
               • Web-based Continuous Integration
                   Smoke Server
               • Reporting Format - TAP
                • Test Anything Protocol
               • Multiple Notification Channels
                • Email / ATOM
	    	    	 
               • Perl (Customizable?)
Built With...

               • CGI::Application
               • Template Toolkit2
               • SQLite | MySQL
               • Prototype.js
Installation
               • $ cpanm Smolder

               • $ git clone git://github.com/mpeters/
                 smolder.git
                 • $ perl Makefile.PL && make test &&
                   make install
Run on Plack

               • CGI::Application::Emulate::PSGI
                • @kazuho++
               • http://d.hatena.ne.jp/tokuhirom/
                 20100111/1263224765
               • @tokuhirom++
Usage


               •   Write some test codes
t/002_hairless.t
     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/003_30-solo-ceo.t
Run Tests!
Run Tests!
     $ prove -Ilib t/*.t --archive tap-archive.tar.gz
     t/001_requires.t .. skipped: Test requires module 'Yuni::Hair' but it's not found
     t/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
TAP Archive?
               $ tree
               .                           $ cat meta.yml
                                           ---
                        meta.yml           file_attributes:
                                            -
                        t                     description: t/001_requires.t
                          001_requires.t      end_time: 1306210679.30879
                                              start_time: 1306210678.7085
                          002_hairless.t    -
                                              description: t/002_hairless.t
                                              end_time: 1306210679.9355
                                              start_time: 1306210679.32536
               1 directory, 3 files         file_order:
                                            - t/001_requires.t
                                            - t/002_hairless.t
                                           start_time: 1306210678
                                           stop_time: 1306210679
TAP Archive?
               $ tree
               .                           $ cat t/002_requires.t
                                           1..7
                        meta.yml           ok 1 - use Yuni;
                                           ok 2 - ... Actually, some hairs...
                        t                  ok 3 - Don't you know that?
                          001_requires.t   ok 4
                                           ok 5 - 30s
                          002_hairless.t   ok 6 # skip is this Confirmized?
                                           not ok 7 - Chaebol? # TODO My Hairs!!!

                                           # Failed (TODO) test 'Chaebol?'
               1 directory, 3 files         # at t/002_hairless.t line 20.
Uploading to Smolder
               $ smolder_smoke_signal --server smolder.silex.kr
               --port 80 
               --username jeen --password [dkfdktjanjgo?] 
               --file result-arch.tar.gz --project Blahblah 
               --architecture [ARCH] --platform [PLAT]
* write uploading code
             ( + comments, architecture, platform )
               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'],    ]
               );
Recent Reports
Report Details
Progress Graphs
WTF?
               $ git diff Graphs.pm
               diff --git a/lib/Smolder/Control/Graphs.pm b/lib/Smolder/Control/Graphs.pm
               index 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;
                  }
                }
DEMO
QA
QA++
Q/
                A
THX

More Related Content

What's hot

Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101hendrikvb
 
2005_Structures and functions of Makefile
2005_Structures and functions of Makefile2005_Structures and functions of Makefile
2005_Structures and functions of MakefileNakCheon Jung
 
What you need to remember when you upload to CPAN
What you need to remember when you upload to CPANWhat you need to remember when you upload to CPAN
What you need to remember when you upload to CPANcharsbar
 
On UnQLite
On UnQLiteOn UnQLite
On UnQLitecharsbar
 
Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014Eric Hogue
 
Continuous testing In PHP
Continuous testing In PHPContinuous testing In PHP
Continuous testing In PHPEric Hogue
 
I, For One, Welcome Our New Perl6 Overlords
I, For One, Welcome Our New Perl6 OverlordsI, For One, Welcome Our New Perl6 Overlords
I, For One, Welcome Our New Perl6 Overlordsheumann
 
Introducing PHP Latest Updates
Introducing PHP Latest UpdatesIntroducing PHP Latest Updates
Introducing PHP Latest UpdatesIftekhar Eather
 
AnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time webAnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time webclkao
 
ZeroMQ Is The Answer
ZeroMQ Is The AnswerZeroMQ Is The Answer
ZeroMQ Is The AnswerIan Barber
 
Zend Framework Study@Tokyo vol1
Zend Framework Study@Tokyo vol1Zend Framework Study@Tokyo vol1
Zend Framework Study@Tokyo vol1Shinya Ohyanagi
 
What's new in PHP 5.5
What's new in PHP 5.5What's new in PHP 5.5
What's new in PHP 5.5Tom Corrigan
 
Redis & ZeroMQ: How to scale your application
Redis & ZeroMQ: How to scale your applicationRedis & ZeroMQ: How to scale your application
Redis & ZeroMQ: How to scale your applicationrjsmelo
 
10 Catalyst Tips
10 Catalyst Tips10 Catalyst Tips
10 Catalyst TipsJay Shirley
 
Zen: Building Maintainable Catalyst Applications
Zen: Building Maintainable Catalyst ApplicationsZen: Building Maintainable Catalyst Applications
Zen: Building Maintainable Catalyst ApplicationsJay Shirley
 
BSDM with BASH: Command Interpolation
BSDM with BASH: Command InterpolationBSDM with BASH: Command Interpolation
BSDM with BASH: Command InterpolationWorkhorse Computing
 

What's hot (20)

Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101
 
dotCloud and go
dotCloud and godotCloud and go
dotCloud and go
 
2005_Structures and functions of Makefile
2005_Structures and functions of Makefile2005_Structures and functions of Makefile
2005_Structures and functions of Makefile
 
What you need to remember when you upload to CPAN
What you need to remember when you upload to CPANWhat you need to remember when you upload to CPAN
What you need to remember when you upload to CPAN
 
On UnQLite
On UnQLiteOn UnQLite
On UnQLite
 
Memory Manglement in Raku
Memory Manglement in RakuMemory Manglement in Raku
Memory Manglement in Raku
 
Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014
 
Continuous testing In PHP
Continuous testing In PHPContinuous testing In PHP
Continuous testing In PHP
 
I, For One, Welcome Our New Perl6 Overlords
I, For One, Welcome Our New Perl6 OverlordsI, For One, Welcome Our New Perl6 Overlords
I, For One, Welcome Our New Perl6 Overlords
 
Mojo as a_client
Mojo as a_clientMojo as a_client
Mojo as a_client
 
Introducing PHP Latest Updates
Introducing PHP Latest UpdatesIntroducing PHP Latest Updates
Introducing PHP Latest Updates
 
AnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time webAnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time web
 
ZeroMQ Is The Answer
ZeroMQ Is The AnswerZeroMQ Is The Answer
ZeroMQ Is The Answer
 
Zend Framework Study@Tokyo vol1
Zend Framework Study@Tokyo vol1Zend Framework Study@Tokyo vol1
Zend Framework Study@Tokyo vol1
 
What's new in PHP 5.5
What's new in PHP 5.5What's new in PHP 5.5
What's new in PHP 5.5
 
Symfony 2.0 on PHP 5.3
Symfony 2.0 on PHP 5.3Symfony 2.0 on PHP 5.3
Symfony 2.0 on PHP 5.3
 
Redis & ZeroMQ: How to scale your application
Redis & ZeroMQ: How to scale your applicationRedis & ZeroMQ: How to scale your application
Redis & ZeroMQ: How to scale your application
 
10 Catalyst Tips
10 Catalyst Tips10 Catalyst Tips
10 Catalyst Tips
 
Zen: Building Maintainable Catalyst Applications
Zen: Building Maintainable Catalyst ApplicationsZen: Building Maintainable Catalyst Applications
Zen: Building Maintainable Catalyst Applications
 
BSDM with BASH: Command Interpolation
BSDM with BASH: Command InterpolationBSDM with BASH: Command Interpolation
BSDM with BASH: Command Interpolation
 

Viewers also liked

EIS Smackdown 2012
EIS Smackdown 2012EIS Smackdown 2012
EIS Smackdown 2012grhartman
 
Presentatie Slechthorendheid
Presentatie SlechthorendheidPresentatie Slechthorendheid
Presentatie SlechthorendheidPhoef
 
Perlmania_Study - CPAN
Perlmania_Study - CPANPerlmania_Study - CPAN
Perlmania_Study - CPANJeen Lee
 
YASPS OPENNING
YASPS OPENNINGYASPS OPENNING
YASPS OPENNINGJeen Lee
 
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...Geshan Manandhar
 
Things I wished I knew while doing my tech bachelor / undergraduate
Things I wished I knew while doing my tech bachelor / undergraduateThings I wished I knew while doing my tech bachelor / undergraduate
Things I wished I knew while doing my tech bachelor / undergraduateGeshan Manandhar
 

Viewers also liked (7)

EIS Smackdown 2012
EIS Smackdown 2012EIS Smackdown 2012
EIS Smackdown 2012
 
Presentatie Slechthorendheid
Presentatie SlechthorendheidPresentatie Slechthorendheid
Presentatie Slechthorendheid
 
MuséE De Cire
MuséE De CireMuséE De Cire
MuséE De Cire
 
Perlmania_Study - CPAN
Perlmania_Study - CPANPerlmania_Study - CPAN
Perlmania_Study - CPAN
 
YASPS OPENNING
YASPS OPENNINGYASPS OPENNING
YASPS OPENNING
 
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...
 
Things I wished I knew while doing my tech bachelor / undergraduate
Things I wished I knew while doing my tech bachelor / undergraduateThings I wished I knew while doing my tech bachelor / undergraduate
Things I wished I knew while doing my tech bachelor / undergraduate
 

Similar to Smolder @Silex

Debugging and Error handling
Debugging and Error handlingDebugging and Error handling
Debugging and Error handlingSuite Solutions
 
Performance tweaks and tools for Linux (Joe Damato)
Performance tweaks and tools for Linux (Joe Damato)Performance tweaks and tools for Linux (Joe Damato)
Performance tweaks and tools for Linux (Joe Damato)Ontico
 
Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識維泰 蔡
 
Debugging Ruby Systems
Debugging Ruby SystemsDebugging Ruby Systems
Debugging Ruby SystemsEngine Yard
 
SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)Robert Swisher
 
Actor Concurrency
Actor ConcurrencyActor Concurrency
Actor ConcurrencyAlex Miller
 
CONFidence 2015: DTrace + OSX = Fun - Andrzej Dyjak
CONFidence 2015: DTrace + OSX = Fun - Andrzej Dyjak   CONFidence 2015: DTrace + OSX = Fun - Andrzej Dyjak
CONFidence 2015: DTrace + OSX = Fun - Andrzej Dyjak PROIDEA
 
Zabbix LLD from a C Module by Jan-Piet Mens
Zabbix LLD from a C Module by Jan-Piet MensZabbix LLD from a C Module by Jan-Piet Mens
Zabbix LLD from a C Module by Jan-Piet MensNETWAYS
 
Hacking parse.y (RubyConf 2009)
Hacking parse.y (RubyConf 2009)Hacking parse.y (RubyConf 2009)
Hacking parse.y (RubyConf 2009)ujihisa
 
PuppetCamp SEA 1 - Use of Puppet
PuppetCamp SEA 1 - Use of PuppetPuppetCamp SEA 1 - Use of Puppet
PuppetCamp SEA 1 - Use of PuppetWalter Heck
 
PuppetCamp SEA 1 - Use of Puppet
PuppetCamp SEA 1 - Use of PuppetPuppetCamp SEA 1 - Use of Puppet
PuppetCamp SEA 1 - Use of PuppetOlinData
 
TYPO3 Extension development using new Extbase framework
TYPO3 Extension development using new Extbase frameworkTYPO3 Extension development using new Extbase framework
TYPO3 Extension development using new Extbase frameworkChristian Trabold
 
Rooted 2010 ppp
Rooted 2010 pppRooted 2010 ppp
Rooted 2010 pppnoc_313
 
Como encontrar uma agulha num palheiro de logs
Como encontrar uma agulha num palheiro de logsComo encontrar uma agulha num palheiro de logs
Como encontrar uma agulha num palheiro de logsDickson S. Guedes
 
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation CenterDUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation CenterAndrey Kudryavtsev
 
D Trace Support In My Sql Guide To Solving Reallife Performance Problems
D Trace Support In My Sql Guide To Solving Reallife Performance ProblemsD Trace Support In My Sql Guide To Solving Reallife Performance Problems
D Trace Support In My Sql Guide To Solving Reallife Performance ProblemsMySQLConference
 
How to admin
How to adminHow to admin
How to adminyalegko
 

Similar to Smolder @Silex (20)

Debugging and Error handling
Debugging and Error handlingDebugging and Error handling
Debugging and Error handling
 
Performance tweaks and tools for Linux (Joe Damato)
Performance tweaks and tools for Linux (Joe Damato)Performance tweaks and tools for Linux (Joe Damato)
Performance tweaks and tools for Linux (Joe Damato)
 
Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識
 
Osol Pgsql
Osol PgsqlOsol Pgsql
Osol Pgsql
 
Debugging Ruby Systems
Debugging Ruby SystemsDebugging Ruby Systems
Debugging Ruby Systems
 
SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)
 
Actor Concurrency
Actor ConcurrencyActor Concurrency
Actor Concurrency
 
CONFidence 2015: DTrace + OSX = Fun - Andrzej Dyjak
CONFidence 2015: DTrace + OSX = Fun - Andrzej Dyjak   CONFidence 2015: DTrace + OSX = Fun - Andrzej Dyjak
CONFidence 2015: DTrace + OSX = Fun - Andrzej Dyjak
 
Zabbix LLD from a C Module by Jan-Piet Mens
Zabbix LLD from a C Module by Jan-Piet MensZabbix LLD from a C Module by Jan-Piet Mens
Zabbix LLD from a C Module by Jan-Piet Mens
 
Hacking parse.y (RubyConf 2009)
Hacking parse.y (RubyConf 2009)Hacking parse.y (RubyConf 2009)
Hacking parse.y (RubyConf 2009)
 
A22 Introduction to DTrace by Kyle Hailey
A22 Introduction to DTrace by Kyle HaileyA22 Introduction to DTrace by Kyle Hailey
A22 Introduction to DTrace by Kyle Hailey
 
PuppetCamp SEA 1 - Use of Puppet
PuppetCamp SEA 1 - Use of PuppetPuppetCamp SEA 1 - Use of Puppet
PuppetCamp SEA 1 - Use of Puppet
 
PuppetCamp SEA 1 - Use of Puppet
PuppetCamp SEA 1 - Use of PuppetPuppetCamp SEA 1 - Use of Puppet
PuppetCamp SEA 1 - Use of Puppet
 
TYPO3 Extension development using new Extbase framework
TYPO3 Extension development using new Extbase frameworkTYPO3 Extension development using new Extbase framework
TYPO3 Extension development using new Extbase framework
 
Rooted 2010 ppp
Rooted 2010 pppRooted 2010 ppp
Rooted 2010 ppp
 
Como encontrar uma agulha num palheiro de logs
Como encontrar uma agulha num palheiro de logsComo encontrar uma agulha num palheiro de logs
Como encontrar uma agulha num palheiro de logs
 
Malcon2017
Malcon2017Malcon2017
Malcon2017
 
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation CenterDUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
 
D Trace Support In My Sql Guide To Solving Reallife Performance Problems
D Trace Support In My Sql Guide To Solving Reallife Performance ProblemsD Trace Support In My Sql Guide To Solving Reallife Performance Problems
D Trace Support In My Sql Guide To Solving Reallife Performance Problems
 
How to admin
How to adminHow to admin
How to admin
 

Recently uploaded

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Recently uploaded (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

Smolder @Silex

  • 1. Smolder - @JEEN_LEE ( silex )
  • 2. ALL OF YOUR TEST RESULTS ARE BELONG TO SMOLDER.
  • 3. Smolder • Web-based Continuous Integration Smoke Server • Reporting Format - TAP • Test Anything Protocol • Multiple Notification Channels • Email / ATOM • Perl (Customizable?)
  • 4. Built With... • CGI::Application • Template Toolkit2 • SQLite | MySQL • Prototype.js
  • 5. Installation • $ cpanm Smolder • $ git clone git://github.com/mpeters/ smolder.git • $ perl Makefile.PL && make test && make install
  • 6. Run on Plack • CGI::Application::Emulate::PSGI • @kazuho++ • http://d.hatena.ne.jp/tokuhirom/ 20100111/1263224765 • @tokuhirom++
  • 7. Usage • Write some test codes
  • 8. t/002_hairless.t 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();
  • 11. Run Tests! $ prove -Ilib t/*.t --archive tap-archive.tar.gz t/001_requires.t .. skipped: Test requires module 'Yuni::Hair' but it's not found t/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
  • 12. TAP Archive? $ tree . $ cat meta.yml --- meta.yml file_attributes: - t description: t/001_requires.t 001_requires.t end_time: 1306210679.30879 start_time: 1306210678.7085 002_hairless.t - description: t/002_hairless.t end_time: 1306210679.9355 start_time: 1306210679.32536 1 directory, 3 files file_order: - t/001_requires.t - t/002_hairless.t start_time: 1306210678 stop_time: 1306210679
  • 13. TAP Archive? $ tree . $ cat t/002_requires.t 1..7 meta.yml ok 1 - use Yuni; ok 2 - ... Actually, some hairs... t ok 3 - Don't you know that? 001_requires.t ok 4 ok 5 - 30s 002_hairless.t ok 6 # skip is this Confirmized? not ok 7 - Chaebol? # TODO My Hairs!!! # Failed (TODO) test 'Chaebol?' 1 directory, 3 files # at t/002_hairless.t line 20.
  • 14. Uploading to Smolder $ smolder_smoke_signal --server smolder.silex.kr --port 80 --username jeen --password [dkfdktjanjgo?] --file result-arch.tar.gz --project Blahblah --architecture [ARCH] --platform [PLAT]
  • 15. * write uploading code ( + comments, architecture, platform ) 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'], ] );
  • 19. WTF? $ git diff Graphs.pm diff --git a/lib/Smolder/Control/Graphs.pm b/lib/Smolder/Control/Graphs.pm index 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; } }
  • 20. DEMO
  • 21. QA
  • 22. QA++
  • 23. Q/ A
  • 24. THX