// TODO use userData to do this, and make initbuilder an example for
  // something else.
  @BeforeTest
  void makeScript() {

    mkEbsBoot =
        new InitBuilder(
                "mkebsboot", // name of the script
                "/tmp", // working directory
                "/tmp/logs", // location of stdout.log and stderr.log
                ImmutableMap.of(
                    "imageDir", "/mnt/tmp", "ebsDevice", "/dev/sdh", "ebsMountPoint", "/mnt/ebs"),
                ImmutableList.<Statement>of(
                    Statements.interpret(
                        "echo creating a filesystem and mounting the ebs volume",
                        "{md} {varl}IMAGE_DIR{varr} {varl}EBS_MOUNT_POINT{varr}",
                        "rm -rf {varl}IMAGE_DIR{varr}/*",
                        "yes| mkfs -t ext3 {varl}EBS_DEVICE{varr} 2>&-",
                        "mount {varl}EBS_DEVICE{varr} {varl}EBS_MOUNT_POINT{varr}",
                        "echo making a local working copy of the boot disk",
                        "rsync -ax --exclude /ubuntu/.bash_history --exclude /home/*/.bash_history --exclude /etc/ssh/ssh_host_* --exclude /etc/ssh/moduli --exclude /etc/udev/rules.d/*persistent-net.rules --exclude /var/lib/* --exclude=/mnt/* --exclude=/proc/* --exclude=/tmp/* --exclude=/dev/log / {varl}IMAGE_DIR{varr}",
                        "echo preparing the local working copy",
                        "touch {varl}IMAGE_DIR{varr}/etc/init.d/ec2-init-user-data",
                        "echo copying the local working copy to the ebs mount",
                        "{cd} {varl}IMAGE_DIR{varr}",
                        "tar -cSf - * | tar xf - -C {varl}EBS_MOUNT_POINT{varr}",
                        "echo size of ebs",
                        "du -sk {varl}EBS_MOUNT_POINT{varr}",
                        "echo size of source",
                        "du -sk {varl}IMAGE_DIR{varr}",
                        "rm -rf {varl}IMAGE_DIR{varr}/*",
                        "umount {varl}EBS_MOUNT_POINT{varr}",
                        "echo " + SCRIPT_END)))
            .render(OsFamily.UNIX);
  }
 @Test
 public void testBuildEBS() throws MalformedURLException, IOException {
   assertEquals(
       new InitBuilder(
               "mkebsboot", // name of the script
               "/tmp", // working directory
               "/tmp/logs", // location of stdout.log and stderr.log
               ImmutableMap.of(
                   "IMAGE_DIR",
                   "/mnt/tmp",
                   "EBS_DEVICE",
                   "/dev/sdh",
                   "EBS_MOUNT_POINT",
                   "/mnt/ebs"), // variables
               // used
               // inside
               // of
               // the
               // script
               ImmutableList.<Statement>of(
                   Statements.interpret(
                       "echo creating a filesystem and mounting the ebs volume", // what
                       // to
                       // execute
                       "{md} {varl}IMAGE_DIR{varr} {varl}EBS_MOUNT_POINT{varr}",
                       "rm -rf {varl}IMAGE_DIR{varr}/*",
                       "yes| mkfs -t ext3 {varl}EBS_DEVICE{varr} 2>&-",
                       "mount {varl}EBS_DEVICE{varr} {varl}EBS_MOUNT_POINT{varr}",
                       "echo making a local working copy of the boot disk",
                       "rsync -ax --exclude /ubuntu/.bash_history --exclude /home/*/.bash_history --exclude /etc/ssh/ssh_host_* --exclude /etc/ssh/moduli --exclude /etc/udev/rules.d/*persistent-net.rules --exclude /var/lib/ec2/* --exclude=/mnt/* --exclude=/proc/* --exclude=/tmp/* --exclude=/dev/log / {varl}IMAGE_DIR{varr}",
                       "echo preparing the local working copy",
                       "touch {varl}IMAGE_DIR{varr}/etc/init.d/ec2-init-user-data",
                       "echo copying the local working copy to the ebs mount",
                       "{cd} {varl}IMAGE_DIR{varr}",
                       "tar -cSf - * | tar xf - -C {varl}EBS_MOUNT_POINT{varr}",
                       "echo size of ebs",
                       "du -sk {varl}EBS_MOUNT_POINT{varr}",
                       "echo size of source",
                       "du -sk {varl}IMAGE_DIR{varr}",
                       "rm -rf {varl}IMAGE_DIR{varr}/*",
                       "umount {varl}EBS_MOUNT_POINT{varr}",
                       "echo ----COMPLETE----")))
           .render(OsFamily.UNIX),
       Resources.toString(
           Resources.getResource("test_ebs." + ShellToken.SH.to(OsFamily.UNIX)), Charsets.UTF_8));
 }