App-VirtualBoxUtils

 view release on metacpan or  search on metacpan

lib/App/VirtualBoxUtils.pm  view on Meta::CPAN

#             }
#         } else { # restart
#             my $res_term;
#           TERMINATE: {
#                 last unless $has_processes;
#                 if ($args{-dry_run}) {
#                     log_info "[DRY] Terminating $browser ...";
#                     $terminated{$browser}++;
#                     last;
#                 }

#                 $res_term = _do_browser('terminate', $browser, users=>[$>]);
#                 if ($res_term->[0] != 200) {
#                     log_error "Can't terminate $browser: $res_term->[0] - $res_term->[1], skipped";
#                     $fail{$browser} //= "Can't terminate";
#                     next;
#                 }

#                 sleep 3;

#                 $res_hp = _do_browser('has_processes', $browser, users=>[$>]);
#                 if ($res_hp->[0] != 200) {
#                     log_error "Can't check whether $browser has processes (after terminatign): $res_hp->[0] - $res_hp->[1], skipped";
#                     $fail{$browser} //= "Can't check for processes (after terminating)";
#                     next;
#                 }
#                 $has_processes = $res_hp->[2];
#                 if ($has_processes) {
#                     log_error "$browser still has processes after terminating, skipped";
#                     $fail{$browser} //= "Still has process after terminating";
#                     next;
#                 }
#                 $terminated{$browser}++;
#             } # TERMINATE
#         }

#       START: {
#             my $cmd = $args{"${browser}_cmd"} //
#                 $argsopt_browser_start{"${browser}_cmd"}{default};

#             if ($args{-dry_run}) {
#                 log_info "[DRY] Starting %s (cmd: %s) ...", $browser, $cmd;
#                 $started{$browser}++;
#                 last;
#             }

#             log_info "Starting %s (cmd: %s) ...", $browser, $cmd;
#             $outputs{$browser} = Capture::Tiny::capture_merged(
#                 sub { $pbs{$browser} = Proc::Background->new($cmd) });
#             $started{$browser}++;
#         }
#     }

#     my $num_started = keys %started;
#     if ($num_started == 0) {
#         return [304,
#                 $num_start_requests ? "All browsers already have processes" :
#                     "Not ${which_action}ing any browsers"];
#     }

#     my (%alive, %not_alive);
#     if ($args{-dry_run}) {
#         %alive = %started;
#     } else {
#         for my $wait_time (2, 5, 10) {
#             %alive = ();
#             %not_alive = ();
#             log_trace "Checking if the started browsers are alive ...";
#             for my $browser (keys %pbs) {
#                 if ($pbs{$browser}->alive) {
#                     $alive{$browser}++;
#                 } else {
#                     $not_alive{$browser}++;
#                 }
#             }
#             last if scalar(keys %alive) == $num_started;
#         }
#     }

#     my $num_alive = keys %alive;
#     my $num_not_alive = keys %not_alive;

#     my $status;
#     my $reason;
#     my $msg;
#     my $verb_started = $which_action eq 'restart' ? 'Started/restarted' : 'Started';
#     if ($num_alive == $num_started) {
#         $status = 200;
#         $reason = "OK";
#         $msg = "$verb_started ".join(", ", sort keys %alive);
#     } elsif ($num_alive == 0) {
#         $status = 500;
#         $reason = $msg = "Can't start any browser (".join(", ", %not_alive).")";
#     } else {
#         $status = 200;
#         $reason = "OK";
#         $msg = "$verb_started ".join(", ", sort keys %alive)."; but failed to start ".
#             join(", ", sort keys %not_alive);
#     }

#     $fail{$_} //= "Can't start" for keys %not_alive;

#     [$status, $msg, undef, {
#         'func.outputs' => \%outputs,
#         ($which_action eq 'start' ? ('func.has_processes' => [sort keys %has_processes]) : ()),
#         'func.started' => [sort grep {!$terminated{$_}} keys %alive],
#         ($which_action eq 'restart' ? ('func.restarted' => [sort grep {$terminated{$_}} keys %alive]) : ()),
#         'func.fail' => [sort keys %fail],
#     }];
# }

# $SPEC{start_browsers} = {
#     v => 1.1,
#     summary => "Start browsers",
#     description => <<'MARKDOWN',

# For each of the requested browser, check whether browser processes (that run as
# the current user) exist and if not then start the browser. If browser processes
# exist, even if all are paused, then no new instance of the browser will be
# started.

# when starting each browser, console output will be captured and returned in
# function metadata. Will wait for 2/5/10 seconds and check if the browsers have
# been started. If all browsers can't be started, will return 500; otherwise will
# return 200 but report the browsers that failed to start to the STDERR.

# Example on the CLI:

#     % start-browsers --start-firefox

# To customize command to use to start:

#     % start-browsers --start-firefox --firefox-cmd 'firefox -P myprofile'

# MARKDOWN
#     args => {
#         # args_common is not relevant here, for now (unless we want to start
#         # browsers as other users)

#         %argsopt_start,
#         %argsopt_cmd,
#         %argopt_quiet,
#     },
#     features => {
#         dry_run => 1,
#     },
# };
# sub start_browsers {
#     _start_or_restart_browsers('start', @_);
# }

# $SPEC{restart_browsers} = {
#     v => 1.1,
#     summary => "Restart browsers",
#     description => <<'MARKDOWN',

# For each of the requested browser, first check whether browser processes (that
# run the current user) exist. If they do then terminate the browser first. After
# that, start the browser again.

# Example on the CLI:



( run in 1.398 second using v1.01-cache-2.11-cpan-13bb782fe5a )