Tuesday, 21 February 2012

Sane Threads Fail

This weekend I decided to run the new test suit, across a 'range of machines' and all my 'testing OS's virtual machines'. These test runs showed a number of failures - segfaults on exit. Investigations showed that this is related to the calling of sane functions while within an httpd thread.

I knew that sane is not thread safe, but I thought I'd be OK if I did a 'sane_init ... sane work ... sane_exit', all within a single thread. But alas not.

So, I'm going to have to do a bit of refactoring to solve this problem. The current plan is to:
  • Move the sane_init and sane_exit in the main startup/shutdown methods.
  • Create a 'command socket' within the main block of the program.
  • Isolate sane activity from the current methods that do sane work and replace them with calls into the command socket.
  • Use a listening loop on the command socket to dispatch sane work - that will be done within the main part of the program (and not a thread).
Hopefully this will solve the problems, and has the added advantage of making 'sane and/or device' locking to be easier to implement. Therefore I'll be doing both of these at the same time.

Friday, 17 February 2012

Testing is back up to scratch

The marathon that is 'better.teting' is over!

The old testing was based mainly around using the frontend to exercise the backend. This was a logical approach, but was flawed in a few ways.

  • First, it left little room for edge case testing - 'happy path' testing does not find issues.
  • Second, using the frontend and a valgrind run backend was painfully slow.
So, I've updating things a bit. First the current tests have been split into 'service starting/stopping scenarios', and the current frontend tests with valgrind removed.

A new set of tests have been created, that fire HTTP request at the services just as an AJAX request would do. The responses are checked for what is expected and the database compared to ensure the action have been performed correctly. These tests are also checked under valgrind, to give confidence with regard to memory violations. 

This changes not only cover a greater range, but also allows greater control for the tets we have and flexibility for new testing in the future. 

Will be available in the 0.8 releases.

Thursday, 26 January 2012

Swiftly moving on.

The document linking work sent really well, and I've got something pushed (to dev) that I'm fairly happy with. (document linking will be available in the 0.8 releases.)
While that settles in my mind, I've started on the 'better testing' branch - Loooong overdue.

Saturday, 21 January 2012

Started work on 'document linking'

Created development branches and started the initial work for the document linking solution. Things are going well so far.

Wednesday, 11 January 2012

Wow - It's finally here - 0.7.3.

Wow !

It's finally here - 0.7.3.
Go get it people, enjoy:



  • Issue #10 - Scan images display is not permission checked
  • Remove the de-skew functionality
  • Improve OCR operations accuracy
  • Allow documents to be opened full screen
  • Revamp doc list and filter functionality
  • Added and 'action required' flag to documents
  • Added an "ideas" link and fixed typos/spelling error, on the application homepage.
  • Removed the dependency on glib
  • Added new admin app to easily set config options
  • Improved the selection and assignment of tags
  • Fix an issue with bad setting of SANE options. (some user could not set the resolution)
  • Added language selection for OCR operations
  • Fix install problem if installation is already found
  • Improved build instructions
  • Fix build problem on Fedora
  • Layed the groundwork for device locking
  • Various tidy-ups
  • Unified the backed response structure and defined an API

Sunday, 8 January 2012

New Project Website

The new openDias project portal website has been uploaded.
Check it out : http://opendias.essentialcollections.co.uk/

Sunday, 1 January 2012

Release 0.7 out for testing

All open issues for the 0.7 branch have now been closed and I've tagged the codebase (0.7.2).
Testers are giving the new release a thrashing, so the full public release will be cut shortly.