Skip to main content

Posts

Showing posts from January, 2011

How To Speed Up Django Tests on Postgresql

I had a problem with a Django project that took forever to run its unit tests. The test database took an enormous amount of time to run, upwards of ten to fifteen minutes each. I didn't have a lot of ways around this, because I had to use a base Model that pulled in lots of cascading requirements and I couldn't avoid the dozens of applications it needed to build tables for. This was really hindering my ability to develop, as I rely heavily on constantly running tests in my own pathetic attempt at Continuous Integration.

After some poking around the PG forums, I eventually worked out this script, which I now run on startup.

#!/usr/bin/env bash
service postgresql stopmount -t tmpfs -o size=500m tmpfs /mnt/pg_data_mem/
cp -R /var/lib/postgresql/8.4/main/ /mnt/pg_data_mem/
mount --bind /var/lib/postgresql/8.4/main/pg_xlog /mnt/pg_data_mem/main/pg_xlog
chown -R postgres:postgres /mnt/pg_data_mem/
sudo -u postgres /usr/lib/postgresql/8.4/bin/pg_resetxlog -f /mnt/pg_data_mem/main/service po…

Soft Announcement: Trapdoor Prototype

Previously I made a little preview of something I'm announcing today, but it is a soft announcement as I've had it on github for some time, but I haven't done anything with the project.

This is just a prototype, an experiment, and it is called Trapdoor. I don't remember why I named it Trapdoor.
Trapdoor has a simple concept, along the lines of Mozilla Prism. I wanted to take things I use to build web applications and test how they could be applied to building desktop applications. This meant two things:
1) I need to wrap up a web application in something that can be run locally.
2) I need some way to extend a web application in ways that normally only desktop applications can provide.
This has been done in the simplest way I could find, at the time, and is available on github.
extensions: -calculator.Calculator js: -calculator.js plugins: -trapdoor.contrib.windowmanager
Applications are configured through this simply manifest, where they are given extensions, plugins, and ja…