Blueprint dependency tree

This is the sequence in which blueprints related to this one must be implemented.

Blueprints that must be implemented first

Add a main script that describes and eventually launches sandbox scripts (Giuseppe Maxia)
Definition status: Approved, Priority: High, Delivery: Implemented in MySQL Sandbox.

create a script, named 'sandbox' that lists the available scripts and eventually executes them
Clear all databases and objects with "clear" script (Giuseppe Maxia)
Definition status: Approved, Priority: Medium, Delivery: Implemented in MySQL Sandbox.

the current "clear" script does not remove objects (routines, events) associated with a database. It does not remove databases other than "test". To make "clear" more efficient, we need either to have a running server or to remove the data directory altogether and re-create it modified "clear" script. It first attempts at clearing all with SQL, if the server is on. Then it deletes all directories under './data' except mysql
create a library of functions to use across scripts (Giuseppe Maxia)
Definition status: Approved, Priority: Medium, Delivery: Implemented in MySQL Sandbox.

different scripts in the sandbox use repeated functions or code chunks, which could be collected in a library and shared among all the scripts. (the help is the first that comes to mind) for version 2
create replication systems with circular dependencies (Giuseppe Maxia)
Definition status: Approved, Priority: Medium, Delivery: Implemented in MySQL Sandbox.

in addition to the master-slave topology, create circular replication systems implemented as part of "make_multiple_sandbox" with options --circular or --master_master (= --circular --how_many_nodes=2) TODO: call this script from "make_replication_sandbox" with option "--topology=circular"
give the sandbox scripts more intuitive names (Giuseppe Maxia)
Definition status: Approved, Priority: High, Delivery: Implemented in MySQL Sandbox.

The scripts in version 1.x are misleading. A casual user may believe that "install" and "express_install" are referring to the Sandbox application itself, rather than to a sandboxed server. The right concept could be "deploy", but also "make" conveys the right meaning. "make_sandbox", "make_replication_sandbox" or "deploy_sandbox", "deploy_replication_sandbox" should be more intuitive than the old ones stabilized all scripts to make_*. The detail installer (what used to be install.pl) is now low_level_make_sandbox, to discourage users from invoking it directly.
implement portable sandbox test suite (Giuseppe Maxia)
Definition status: Approved, Priority: High, Delivery: Implemented in MySQL Sandbox.

create several dummy packages that act like MySQL server tarballs, and run a comprehensive set of tests on those packages. The main goal is to have such a test suite in the development site. The ambitious goal is to make it distributable Currently implemented as a single Perl script, making multiple Sandbox installations from binary expanded trees under $HOME/opt. For each version, the test suite will build a single sandbox, a replication sandbox, and a multiple server sandbox. Then it will build a composite group sandbox using all the versions, and finally it will test some fine tuning options (skipping an engine, setting SQL_MODE).
replace current "sleep" commands with a check + timeout (Giuseppe Maxia)
Definition status: Approved, Priority: High, Delivery: Implemented in MySQL Sandbox.

currently, the Sandbox uses a "sleep" command to wait for a server to start. This may fail on a slow machine. A proper implementation would be using a loop that checks if the server is up and eventually fails after a timeout period.
create a script to kill unresponsive servers (Giuseppe Maxia)
Definition status: Approved, Priority: Medium, Delivery: Implemented in MySQL Sandbox.

create a script at sandbox and SANDBOX_HOME level to kill unresponsive servers. when called, this script collects PID from the .PID files, calls "kill -n PID" and removes the .PID file
set a different group directory name and port for circular replication systems (Giuseppe Maxia)
Definition status: Approved, Priority: Medium, Delivery: Implemented in MySQL Sandbox.

circular replication systems should have a separated name and port
start circular replication from make_replication_sandbox (Giuseppe Maxia)
Definition status: Approved, Priority: Medium, Delivery: Implemented in MySQL Sandbox.

Currently, circular replication is implemented with make_multiple_sandbox. This is the easiest way of implementing it, but it is not intuitive for users. It would be better to have the make_replication_sandbox script do the work, by calling "make_multiple_sandbox" with the appropriate options
make the sandbox use a default option file if exists (Giuseppe Maxia)
Definition status: Approved, Priority: High, Delivery: Implemented in MySQL Sandbox.

instruct the sandbox to look for $HOME/.msandboxrc, and if present, use its options. Options passed on the command line must override the ones in the options file.

This blueprint

Release MySL Sandbox 2.0 (Giuseppe Maxia)
Definition status: Approved, Priority: High, Delivery: Implemented in MySQL Sandbox.

release MySQL Sandbox 2.0 when all the tasks are completed

Blueprints that can then be implemented

No blueprints depend on this one.