Calculating the Average Time to Build RoboSwarm’s Load Test Infrastructure Using PostgreSQL’s EXTRACT and EPOCH FROM

One of the ways that RoboSwarm keeps it’s costs down is by spinning up infrastructure to run load tests on-demand. While great for our customers and us, it does lead to some annoying behavior when it comes to startup times. Very recently we released a feature to help customers understand when their load test will start.

Infrastructure Time Remaining Screenshot

To get the “~121 seconds” and descending number we do a little bit of fancy SQL to determine the average time to create a load testing cluster.

        EPOCH FROM (
            ready_at - created_at
) as avg_time
FROM swarm
    ready_at IS NOT NULL
    destroyed_at IS NOT NULL
    AND id < ?
    AND id >= (? - 10)

The above code subtracts the created_at datetime from the ready_at datetime, generates the time in seconds, and averages that across the previous 10 load tests from the point where this current load test was created. So why not averaging the last 50 or 100 test startup times? Mainly because the time to create tests has trended down in the past year and we want to give you the most accurate representation.

Generating this with a single query to PostgreSQL is fantastic and removes a lot of overhead and complication from the code base.