Posts Tagged Tools

Making Hudson (Jenkins) update it self

A funny thing happens when you start delivering software through an automated system. You need to find a way to upgrade the automated system, and yet it is in use all of a sudden.

Luckily for us we have everything checked into Git!

So we create a job that does a Git pull in the root hudson directory, and the use curl to tell hudson to reload the configuration from disk.

image

Some tweaks to doing this is to create a restart job, and have the update job call that job instead of doing the reload in the same job as the Git pull operation. The reason for this is that the reload doesn’t wait for the job to finish, so the build history starts to lag by one build for the job that does the reload.

Some thoughts on triggers

Having Hudson checked in into GIT gives you a distributed build system. We have our system set up so we have a master CI server that hosts the latest version of our system on github. We can have build triggers set up to update the CI every time we push. However, due to the reload configuration we aren’t doing that instead we ask the system to update it self at specific periods. We don’t want to interrupt current builds to do an update.

Any tips on getting the restart job to wait for all other builds to finish are appreciated.

Next, we use the system for deployment as well. This means that there is a version up and running in our production environment as well. For us the manual updating by running a job works great for the production system, since we do not have to open up access to Hudson in the production environment instead letting the system update itself from github.

, ,

No Comments

Bananas!

During Android Only Erik Hellman from Sony Ericsson explained how they create their Android Phones.

During his talk he mentioned that they put all phones through a monkey test. Where a phone has to sit for days with random input on the phone, without crashing.

Naturally the thought is, I wondered how the applications I’m working on would stand against such a test. A monkey test should find all places where the input validation fails, and thus crash.

So I started searching around for tools that did this for Windows Applications. However All I could find was the Hopper Windows Mobile stress test tool, and nothing for desktop Windows Applications.

The thought is if I should write my own, focusing on .Net desktop applications. A tool that sends keystroke and mouse move messages to an application generating random user input. The tool could constrain only to use certain keys or prevent certain patterns from occurring. It could restart the application when it crashes, and log all crashes to a log-file.

It could be quite easy to create a command-line interface for it and execute it in a build system. Naturally a good name for a monkey testing tool would be “Bananas!” :)

So far it’s just an idea.

, , , ,

No Comments

My presentation at AS2010

I held a presentation at AS2010 about handling defects. The slides are up, unfortunately there is not text in the slides and there’s no audio track… but for those who wish to see my slides you can find the at:

http://www.slideshare.net/agilasverige/hantera-felhantering

, , , , ,

No Comments

Presenting JS-Analytics

With the success we had with EQATEC Analytics at RemoteX I started looking around for something similar, but for JavaScript. I didn’t find anything that satisfied my needs.

Thus I created my own error collecting and analysis tool, and named it JS-Analytics.

You use it similar to how you use Google Analytics, you add a few given script tags to your website and JS-Analytics will try to collect any unhandled JavaScript error that occurs, and send information about it back to JS-Analytics website.

JS-Analytics uses a combination of window events to collect errors. These events aren’t available on all browsers so JS-Analytics will use JQuery to provide cross browser support. This means that cross browser support is only available for JQuery code.

For more information about how it works I recommend this page.

Right now this JS-Analytics provides just some basic analysis. But I felt that it was better to announce it and hopefully get some feedback on it, than to carry on without any feedback.

, , , , , , ,

No Comments

Measuring defects

I was working on performance tuning for the mobile client of RemoteX Applications when I found a tool called EQATEC Analytics. Six month later I added it to our clients for the first time.

EQATEC Analytics is quite interesting, for RemoteX it solves an interesting issue. Error reports are hard to collect from Compact Framework devices, especially since all error messages state that “we’re missing the translation pack to translate these errors, thus you get this crappy errors message instead”.

EQATEC Analytics captures all unhandled exceptions and report them back to a server application for analysis. This means that all crashes are reported so they can be analyzed by us, without involving the user in the information collection process. (no personal information is sent to the server)

The benefits of this enormous. We can see the quality trends of our applications (at least when it comes to crashes), and fix the errors that occur the most.

Traditionally the errors are fixed based on the information received by customers, manual error reports and what not. Relying on this type of information means that you fix the errors that most people report, or the errors you can reproduce. With EQATEC Analytics you, you can get an exact stack trace indicating the problem area, and depending on how you configure it to work you can also request information regarding what was happening during the crash.,

It also provides an excellent way to see if our efforts of improving the quality of the product is helping or not.

Now it also has features to collect information about what kind of system our applications are run on, and also collect statistics of which features are used in the applications.

We’ve used EQATEC Analytics in production since January 2010 and so far we are very happy with the results.

An interesting note here is that the next version of Shuffle will use a similar tool for Android, called Flurry.

, , , ,

2 Comments

Running Django tests automatically on save in Eclipse

I’m re-installing my environment, while doing so I’m fixing a few things I’ve been missing in my environment.

Running tests using Python is really fast, so I wanted to add something like Autospec but for my tests. So I did the following:

  1. Right click the project you want to use
  2. Click properties
  3. Click on the builders item in the left pane
  4. Press New
  5. Select to add a Program builder
  6. Set python as program to run, your workspace as working directory and the command to run the tests as arguments. In my case I run tests using “manage.py test” from Django.image
  7. On the Build Options page check all the options for when to run the builderimage
  8. Now every time I save a file, my test command is run in the console. I get the output in the console window which I’ve moved to the right of my editor,window.image
    Hope it helps someone, the are probably improvements to this. You are welcome to suggest them in the comments section.

,

1 Comment

Interesting issue on GAE issue list

I was browsing around the issue lists on Google AppEngine, just some midnight light reading before going to bed…

I stumbled on the following issue, marked as critical:

http://code.google.com/p/googleappengine/issues/detail?id=1970

What’s interesting about it is that this is also what is causing all the problems with running Grails development on Windows machines. If this is fixed, then building Grails for GAE on Windows machines might work without any workarounds. Lets hope the Critical focus remains on this issue, and that it is resolved.

, , ,

No Comments

SEO thoughts

I’ve been playing around with the website grader by hubspot (nice toy), and there is one thing I never quite understood. That is the reason to list a site in the directory service DMOZ or similar directories. I mean how often do you go there and check for new interesting sites?

I spent some time looking at Yahoo’s Site Explorer, configuring my Morkeleb.com so that the siteindex.xml is published to Yahoo every time I update the post. From there I found a link explaining the reason.

Yahoo’s search engine wont index you if your not in DMOZ (or at least reduces the chance unless your not registered). Yahoo has their own directory service as well, that one costs 300 dollar per year. I hope they add the site to the index if you subscribe to their directory.

No Comments

Twitterer

Looks like I signed up on Twitter just now, my account name is: “anshrak” if you wish to follow me. Top reasons, more playtime with my phone, cant sleep, and someone said I should.

Reasons I’ve been avoiding Twitter thus far?

Fear of Information overload. Since I have a limited amount of time to handle all the information I process, I’m selective in which information I subscribe too.

I also installed live writer to give it a test run, we’ll see how it goes.

No Comments

Google Appengine SDK 1.2.6

Today they released a new version of the SDK for Google AppEngine.

Personally I’m very excited about the ability to recieve email.

Here is a link to the Java release notes. The blog post at Google only links to the python release notes.

http://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes

, ,

No Comments