A month of heavy coding

Here are some highlights from the last month of heavy coding:

Bugfixes

  • ‘MacAddress’ datatypes are now correctly converted to hex
  • Insecure temporary file use in DiagramController fixed
  • If Graphviz doesn’t exist, a warning is generated rather than a nasty error
  • ADSL rate/usage calculation is done correctly now

Improvements

  • The ‘All Interfaces’ page has a new link to show the interface status of all interfaces
  • Major reworking of device inventorying to become more modular
  • Better testing, of course!

Usability

So far, one of my big itches has been on usability and stability of NetHorus. There are so many things that could go wrong that go untrapped.

This weekend, I’ve concentrated on improving robustness and polishing the user interface. The commits are still pending - there’s plenty changing, which I hope to get finished during the week.

End of April Update

Thanks to the lovely people at Atlassian, I’m now using Jira to track bugs, features and improvements in NetHorus.  So far, it’s working well and I’ve fixed several low-level issues over the past week - the most important is that the application will now start up, and not crash hideously, when no configuration file is present.

State of the World

I’ve been beavering away.  I’m much happier with the state of the codebase now - it’s a lot more robust now I’ve implemented SNMP proxy checks.

So, what’s happening?

  • I’ve put RMON support on hold for a little bit, as I need to rewrite SNMP support.  I have a number of ways in I might want to retrieve data - an OID and instance, and a whole table are easy.  The hard part is retrieving just one row from a table, or just a few columns from the whole table.
  • A really useful feature I’ve yet to code is relating IP addresses, MAC address and hostnames.  Several things need to come together for this, notably VLAN awareness.  I may start by importing the IEEE’s OUI database.
  • SNMP traps and informs will be handled by a separate daemon.  Informs are an important addition, as they’re ‘guaranteed’ to be delivered to an NMS.

I’m off on holiday later this week, with some long train journeys and several hours a day free - expect more code!

Copying Cisco Configurations

A little over a week ago, I promised support for copying Cisco router configurations.  I’m really pleased to say it’s working now, albeit with less error checking than I’d like.

The ‘Functions’ link in ‘Device Management’ will show a ‘Copy off configuration’ link.  From there, you can select the type of configuration to copy, where to put it, and optionally enter a username and password for authentication.

Onward!  Next on the list is support for background tasks.  I’m going to start with ADSL monitoring…

What’s new…?

Sure, we had a bit of a development hiatus for a few months whilst I moved flat and changed machines, but things are back on track now.

I’ve just implemented a few UI and logic tidyups, in preparation for starting work on some important new features.  Here’s what’s planned:

  • Support for copying and examining Cisco router configurations offline.  This will also bring SNMP ’set’ support, and as a result, the ability to change interface statuses (ouch!) and interface descriptions.
  • Background polling, which will also result in NetHorus being able to deal with SNMP traps and poll OIDs on devices and alert on thresholds being exceeded.
  • RMON support - see http://en.wikipedia.org/wiki/RMON.  Not everything supports RMON, but for devices that do, it’s powerful.

There’s not too much on the cards for an important reason - I want NetHorus to work, and not be an endless sea of “not quite there”.

On Testing

How’re we doing?

Several days of not having to commute to London for work has freed up some time to work on migrating unit tests to stories, with great results.  RCov reports 100% coverage of all but a few models.

Roll on functional testing, then we can begin with some new features.

End of Summer

Summer is over, and to mark the end of it, I’m refactoring a load of NetHorus code.  Some of it has grown and needs to be minimised - Don’t Repeat Yourself.  Other parts need review and testing.  Peepcode has a screencast on RSpec which I invested some time in viewing this afternoon, so some user stories and better tests will be cropping up.

My focus right now is on improving the quality of NetHorus’ code.  There likely won’t be anything noticable for several weeks as I get up to speed with testing methologies - but keep checking the SVN repository.

Twenty Checkins

Crikey.  In the past three weeks, I’ve worked so much and found so many bugs that I can’t believe NetHorus doesn’t look much different.

I won’t go in to all of the twenty checkins I’ve done over the last few hours, but here are some highlights:

  • Thanks to Heckle, a mutation tester for Ruby, there are lots more test cases written.  Rcov is coming up with 100% coverage for some code - my target is for 100% coverage for everything.
  • I’ve split the Manage controller in two - Interfaces and Devices are now managed separately.
  • A multitude of little code cleanups.

It’s not big, it’s not impressive, but now I’m in to the swing of unit and functional tests, the robustness of NetHorus should increase substantially.

Heckling

After discovering Heckle, a fuzz-tester for Ruby, I’ve decided to take some time out to really clean up the codebase.  Heckle has found all sorts of conditions, and I’ve been meaning to beef up testing anyway, so… no more new code for a while until I’ve gotten a decent set of tests for the current codebase.

Next Page »