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 Sprints: |
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 Sprints: |
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 Sprints: |
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" Sprints: |
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. Sprints: |
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). Sprints: |
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. Sprints: |
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 Sprints: |
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 Sprints: |
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 Sprints: |
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. Sprints: |
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 Sprints: |
Blueprints that can then be implemented
No blueprints depend on this one.