Jenkins User Conference - Twitter4J, Jenkins and regression
Upcoming SlideShare
Loading in...5
×
 

Jenkins User Conference - Twitter4J, Jenkins and regression

on

  • 2,866 views

 

Statistics

Views

Total Views
2,866
Views on SlideShare
2,045
Embed Views
821

Actions

Likes
4
Downloads
26
Comments
0

10 Embeds 821

http://samuraism.jp 803
http://paper.li 4
http://a0.twimg.com 3
http://freerss.net 3
http://translate.google.com 2
http://http.samuraism.jp 2
http://www.slideshare.net 1
http://twitter.com 1
http://webcache.googleusercontent.com 1
https://twitter.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Jenkins User Conference - Twitter4J, Jenkins and regression Jenkins User Conference - Twitter4J, Jenkins and regression Presentation Transcript

  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf Twitter4J, Jenkins and Regression Yusuke Yamamoto Twitter4J.org / Twitter, Inc. http://twitter4j.org/
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf Who Am I? 10+ years experience in Java Author of open-source tools including: – Samurai http://samuraism.jp/samurai/ – Twitter4J http://twitter4j.org/
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf What is Twitter4J Open-source library for the Twitter API Compatible with – Java 1.4.2+ – Android – Google App Engine Available since Jun 2007 View slide
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf Tools Powering Twitter4J Maven Central repo View slide
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconfThe release flow release:perform git push origin master oss.sonatype.org service hook promote dev twitter4j.org github.com repo1.maven.org
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf Test-driven Development 1. Write a test case which fails 2. Implement and commit 3. Run test cases 4. J NO regression
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf The Timeline May 2007: Started Twitter4J project Mar 2009: Applied Hudson
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf The Timeline May 2007: Started Twitter4J project Mar 2009: Applied HudsonWith Jenkins applied, your software should be regression free…
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf The Timeline May 2007: Started Twitter4J project Mar 2009: Applied Hudson Oct 2010: Critical regression found
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf The Timeline May 2007: Started Twitter4J project Mar 2009: Applied Hudson Oct 2010: Critical regression found The how and why
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconfThe Issue Version: Twitter4J 2.1.5 Symptom: certain method calls fail with 401401:Authentication credentials were missing or incorrect.
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconfDirect Cause of the Issue bug in StringUtil – introduced in v2.1.5 – leads invalid OAuth signature in certain conditionpublic static String[] split(String str, String separator){ String[] returnValue; int index; if(-1 == str.indexOf(separator)){ returnValue = new String[0]; }else{... expected actual split(“foo,bar”,”,”) {“foo”, “bar”} √ {“foo”, “bar”} split(“foobar”,”,”) {“foobar”} L {}
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf Why StringUtil.split() String#split() - @since Java1.4 Found of a compatibility issue with CLDC – CLDC doesn’t support String#split()Caused by: java.lang.NoSuchMethodError: java.lang.String: method split (Ljava/lang/String;)[Ljava/lang/String; not found at twitter4j.conf.PropertyConfiguration.setFieldsWithTreePath(Ljava/ util/Properties;Ljava/lang/String;)V(PropertyConfiguration.java:196) at twitter4j.conf.PropertyConfiguration.<init>(Ljava/lang/String;)V (PropertyConfiguration.java:121)
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconfGeneral Cause of Software RegressionsW/ test cases W/O test cases not enough test implementation coverage wrongly modified external resource test failure(s) ignored became incompatible
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconfGeneral Cause of Software RegressionsW/ test cases W/O test cases not enough test implementation coverage wrongly modified external resource test failure(s) ignored became incompatible
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconfGeneral Cause of Software RegressionsW/ test cases W/O test cases not enough test implementation coverage wrongly modified external resource test failure(s) ignored became incompatible
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconfIgnoring Failed Test Cases Generally not recommended but Sometimes you need to, because – external resource not available or – test failure caused by a component managed by other committer
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconfGeneral Cause of Software RegressionsW/ test cases W/O test cases not enough test implementation coverage wrongly modified external resource test failure(s) ignored became incompatible
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconfGeneral Cause of Software Regressions W/ test cases W/O test cases not enough test implementation coverage wrongly modified external resource test failure(s) ignored became incompatible test case wrongly modified
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconfRuined Tests with Basic Auth Deprecation TwitterTestUnitbefore refactoring: test base class Basic auth & OAuth BasicTest OAuthTest Basic auth OAuth after refactoring: OAuth only not recognized by Maven TwitterTestUnit
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconfRuined Tests with Basic Auth Deprecation TwitterTestUnitbefore refactoring: test base class Basic auth & OAuth BasicTest OAuthTest Basic auth OAuth after refactoring: OAuth only not recognized by Maven TwitterTestUnit
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconfLessons Learned - 1 check the Ages of failed tests
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconfLessons Learned - 2 be very careful when you refactor test cases make sure that – number of test cases doesn’t change many – code coverage doesn’t decrease smelly trend
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf Thank You To Our Sponsors Platinum Sponsor Gold Sponsor Silver Sponsor Bronze SponsorsComing Soon: The CloudBees Newsletter for Jenkinsü Please complete the Jenkins survey to help us better serve the community (bonus: a chance to win an Apple TV!)
  • Jenkins User Conference San Francisco, Oct 2nd 2011 #jenkinsconf Who Am I?